Name: series-workflowhkltr Phase: Succeeded StartedAt: 2026-09-09 13:04:45 +0000 UTC FinishedAt: 2026-09-09 16:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[0] Phase: Succeeded StartedAt: 2026-09-09 13:04:45 +0000 UTC FinishedAt: 2026-09-09 13:07:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 13:04:45 +0000 UTC FinishedAt: 2026-09-09 13:07:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "893e11787f78e43b534e252249ac3fff4d1333f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "EVENTFD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "893e11787f78e43b534e252249ac3fff4d1333f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "EVENTFD" ], "series_id": "4dc70d0d-10f9-412e-a60f-05edd56d52d1" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "drm_syncobj_eventfd_ioctl", "eventfd_ctx_put" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2xlYW51cCBhdHRyaWJ1dGUgaGVscGVyIGBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pYCBhbmQgdXBkYXRlcyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIGNsZWFudXAgKGBfX2ZyZWUoZXZlbnRmZClgKSBhbG9uZyB3aXRoIGBub19mcmVlX3B0cigpYCwgYW5kIGFkZHMgYSBOVUxMIGNoZWNrIHRvIGBldmVudGZkX2N0eF9wdXQoKWAuXG5cblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlNzMzOWY5ZDNiYTQwYWMwNjNjYmViOWUxZTUxOGY1MThlMmUxYjYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowNjoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5pbmRleCBjMjNhNWRlMjdlZmZhLi4yNjFkNTYwNmU4YmQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5AQCAtMTQ2Miw5ICYjNDM7MTQ2Miw5IEBAIGludFxuIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbiBcdFx0XHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ4NCwxNiAmIzQzOzE0ODQsMTcgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuIFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cdTAwM2VmZCk7XG4gXHRpZiAoSVNfRVJSKGV2X2ZkX2N0eCkpIHtcbiBcdFx0cmV0ID0gUFRSX0VSUihldl9mZF9jdHgpO1xuJiM0MztcdFx0ZXZfZmRfY3R4ID0gTlVMTDtcbiBcdFx0Z290byBlcnJfZmRnZXQ7XG4gXHR9XG4gXG4gXHRlbnRyeSA9IGt6YWxsb2Nfb2JqKCplbnRyeSk7XG4gXHRpZiAoIWVudHJ5KSB7XG4gXHRcdHJldCA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZXJyX2t6YWxsb2M7XG4mIzQzO1x0XHRnb3RvIGVycl9mZGdldDtcbiBcdH1cbiBcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuLVx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gZXZfZmRfY3R4O1xuJiM0MztcdGVudHJ5LVx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XG4gXHRlbnRyeS1cdTAwM2Vwb2ludCA9IGFyZ3MtXHUwMDNlcG9pbnQ7XG4gXHRlbnRyeS1cdTAwM2VmbGFncyA9IGFyZ3MtXHUwMDNlZmxhZ3M7XG4gXG5AQCAtMTUwMiw4ICYjNDM7MTUwMyw2IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbiBcbiBcdHJldHVybiAwO1xuIFxuLWVycl9remFsbG9jOlxuLVx0ZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7XG4gZXJyX2ZkZ2V0OlxuIFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xuIFx0cmV0dXJuIHJldDtcbmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmNcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjI0MTExYTE2Mjg0ZjEgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudGZkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuY1xuQEAgLTEwMiw2ICYjNDM7MTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuICAqL1xuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIHtcbiYjNDM7XHRpZiAoIWN0eClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRrcmVmX3B1dChcdTAwMjZjdHgtXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5AQCAtMTAsNiAmIzQzOzEwLDcgQEBcbiAjZGVmaW5lIF9MSU5VWF9FVkVOVEZEX0hcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xlYW51cC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtZGVmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbkBAIC04OSw1ICYjNDM7OTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gfVxuIFxuJiM0MztERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSlcbiYjNDM7XG4gI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUk0mIzM0OywKICAgICYjMzQ7RVZFTlRGRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9jdHhfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBOVUxMIGNoZWNrIGluIGV2ZW50ZmRfY3R4X3B1dCgpLCBkZWZpbmVzIGEgX19mcmVlKGV2ZW50ZmQpIGNsZWFudXAgaGFuZGxlciwgYW5kIHJlZmFjdG9ycyByZXNvdXJjZSBsaWZlY3ljbGUgaGFuZGxpbmcgaW4gdGhlIHJlYWNoYWJsZSBEUk0gaW9jdGwgaGFuZGxlciBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIEZ1enppbmcgd2lsbCB0ZXN0IHdoZXRoZXIgdGhlIGFsdGVyZWQgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBjbGVhbnVwIGZsb3cgaW4gZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCBiZWhhdmUgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTczMzlmOWQzYmE0MGFjMDYzY2JlYjllMWU1MThmNTE4ZTJlMWI2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDkgMTM6MDY6MjAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCmluZGV4IGMyM2E1ZGUyN2VmZmEuLjI2MWQ1NjA2ZThiZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCkBAIC0xNDYyLDkgJiM0MzsxNDYyLDkgQEAgaW50CiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQogewomIzQzOwlzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMOwogCXN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7Ci0Jc3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7CiAJc3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnk7CiAJaW50IHJldDsKIApAQCAtMTQ4NCwxNiAmIzQzOzE0ODQsMTcgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWV2X2ZkX2N0eCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGFyZ3MtJmd0O2ZkKTsKIAlpZiAoSVNfRVJSKGV2X2ZkX2N0eCkpIHsKIAkJcmV0ID0gUFRSX0VSUihldl9mZF9jdHgpOwomIzQzOwkJZXZfZmRfY3R4ID0gTlVMTDsKIAkJZ290byBlcnJfZmRnZXQ7CiAJfQogCiAJZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpOwogCWlmICghZW50cnkpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBlcnJfa3phbGxvYzsKJiM0MzsJCWdvdG8gZXJyX2ZkZ2V0OwogCX0KIAllbnRyeS0mZ3Q7c3luY29iaiA9IHN5bmNvYmo7Ci0JZW50cnktJmd0O2V2X2ZkX2N0eCA9IGV2X2ZkX2N0eDsKJiM0MzsJZW50cnktJmd0O2V2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7CiAJZW50cnktJmd0O3BvaW50ID0gYXJncy0mZ3Q7cG9pbnQ7CiAJZW50cnktJmd0O2ZsYWdzID0gYXJncy0mZ3Q7ZmxhZ3M7CiAKQEAgLTE1MDIsOCAmIzQzOzE1MDMsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlyZXR1cm4gMDsKIAotZXJyX2t6YWxsb2M6Ci0JZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7CiBlcnJfZmRnZXQ6CiAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmMKaW5kZXggOWQzM2EwMjc1N2Q1Mi4uMjQxMTFhMTYyODRmMSAxMDA2NDQKLS0tIGEvZnMvZXZlbnRmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuYwpAQCAtMTAyLDYgJiM0MzsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAgKi8KIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogewomIzQzOwlpZiAoIWN0eCkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlrcmVmX3B1dCgmYW1wO2N0eC0mZ3Q7a3JlZiwgZXZlbnRmZF9mcmVlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCmluZGV4IGUzMmJlZTQzNDVmYjkuLjY4OTM1OGMyYjBhZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2RlZmluZSBfTElOVVhfRVZFTlRGRF9ICiAKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NsZWFudXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUtZGVmcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwpAQCAtODksNSAmIzQzOzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogCWV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTsKIH0KIAomIzQzO0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKQomIzQzOwogI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjY4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIHBhdGNoIGRvd24uIFRoZSBmb2N1cyBoZXJlIHNlZW1zIHRvIGJlIG9uIGNsZWFudXAgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSByZWxhdGluZyB0byBgZXZlbnRmZGAgY29udGV4dHMgd2l0aGluIHRoZSBEUk0gc3luY29iaiBmcmFtZXdvcmsuIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgYWNyb3NzIHRocmVlIGZpbGVzOiBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgLCBgZnMvZXZlbnRmZC5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAuCgpGaXJzdCwgdGhlIGBldmVudGZkLmNgIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQg4oCTIGEgbnVsbCBjaGVjayBpbiBgZXZlbnRmZF9jdHhfcHV0YC4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFsd2F5cyBhIGdvb2QgaWRlYS4gVGhlIGhlYWRlciBmaWxlIGludHJvZHVjZXMgYSBgREVGSU5FX0ZSRUVgIG1hY3JvIGZvciBgZXZlbnRmZGAsIGVzc2VudGlhbGx5IGF1dG9tYXRpbmcgdGhlIGNsZWFudXAgcHJvY2VzcyB3aXRoIGBldmVudGZkX2N0eF9wdXRgLiBUaGlzIGlzIGEgdXNlZnVsIGFic3RyYWN0aW9uIGFuZCBsaWtlbHkgaW1wcm92ZXMgY29kZSByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LgoKVGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMsIGhvd2V2ZXIsIHNlZW0gdG8gYmUgaW4gYGRybV9zeW5jb2JqLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYC4gIFdlJiMzOTtyZSB1c2luZyB0aGUgYF9fZnJlZShldmVudGZkKWAgYXR0cmlidXRlIGZvciBjbGVhbnVwIG9mIGBldl9mZF9jdHhgLCBhbmQgYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBzZXQgdG8gYE5VTExgIHdoZW4gYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuIFRoaXMgbG9va3MgbGlrZSBhIGNsZWFyIGF0dGVtcHQgdG8gZW5zdXJlIHRoYXQgdGhlIGV2ZW50ZmQgY29udGV4dCBpcyByZWxlYXNlZCBwcm9wZXJseSBpbiBhbGwgY29kZSBwYXRocywgZXNwZWNpYWxseSBlcnJvciBwYXRocy4gVGhlIHJlbW92YWwgb2YgdGhlIG1hbnVhbCBgZXZlbnRmZF9jdHhfcHV0YCBhbmQgdGhlIGBlcnJfa3phbGxvY2AgbGFiZWwgZnVydGhlciByZWluZm9yY2UgdGhpcyBjbGVhbnVwLWZvY3VzZWQgYXBwcm9hY2guICBUaGUgYG5vX2ZyZWVfcHRyYCB1c2FnZSB3aGVuIGFzc2lnbmluZyB0byBgZW50cnktJmd0O2V2X2ZkX2N0eGAgaXMgaW50ZXJlc3Rpbmc7IGl0IHN1Z2dlc3RzIHRoYXQgdGhlIG93bmVyc2hpcCBhbmQgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiBgZXZfZmRfY3R4YCBpcyBjYXJlZnVsbHkgaGFuZGxlZC4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGJyb2FkZXIgY29udGV4dC4gIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IERSTSBzeW5jb2JqLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBEUk0gY29yZSBhbmQgZXhwb3NlZCB2aWEgdGhlIHVzdWFsIERSTSBkZXZpY2UgaW9jdGxzLiBUaGlzIG1lYW5zIGFjY2Vzc2liaWxpdHkgaXMgdmlhIGRldmljZXMgbGlrZSBgL2Rldi9kcmkvY2FyZCpgLCBgL2Rldi9kcmkvcmVuZGVyRCpgLCBhbmQgZXZlbiB0aHJvdWdoIG1vY2sgZGV2aWNlcyBsaWtlIGB2Z2VtYCBvciBgdmttc2AuICBHaXZlbiB0aGUgbmF0dXJlIG9mIHRob3NlIGludGVyZmFjZXMsIHN5emthbGxlciB0ZXN0cyB0aGUgRFJNIGlvY3RscyBoZWF2aWx5LCBpbmNsdWRpbmcgYERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkRgLiBgZXZlbnRmZGAgaXRzZWxmIGlzIGEgY29yZSBrZXJuZWwgZmVhdHVyZS4KClNvLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIGZldyBxdWljayBgZ3JlcGAgc2VhcmNoZXMgYW5kIEtjb25maWcgY2hlY2tzIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgc3ltYm9scyBhdCBwbGF5IGhlcmUuIFRoaXMgcGF0Y2ggc2VlbXMgc291bmQgYXQgZmlyc3QgZ2xhbmNlLCBidXQgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5dGhpbmcgaXMgYXMgZXhwZWN0ZWQuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNvbnRyaWJ1dGlvbiBpbXByb3ZpbmcgZXJyb3IgaGFuZGxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBieSBlbXBsb3lpbmcgbW9yZSBtb2Rlcm4gdG9vbHMgdG8gZG8gc28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0RSTXxjb25maWcgRFJNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4NDE5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03LSNcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjg6bWVudWNvbmZpZyBEUk1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIgKFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlciBEUkkgc3VwcG9ydClcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0zND1pZiBEUk1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM1LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MzY6Y29uZmlnIERSTV9NSVBJX0RCSVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMzctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQwLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NDE6Y29uZmlnIERSTV9NSVBJX0RTSVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNDItXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNDQtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo0NTpjb25maWcgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQ2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01MS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjUyOmNvbmZpZyBEUk1fRFJBV1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTMtXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTUtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo1Njpjb25maWcgRFJNX1BBTklDXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7RGlzcGxheSBhIHVzZXItZnJpZW5kbHkgbWVzc2FnZSB3aGVuIGEga2VybmVsIHBhbmljIG9jY3Vyc1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTY4LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Njk6Y29uZmlnIERSTV9QQU5JQ19GT1JFR1JPVU5EX0NPTE9SXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03MC1cdGhleCBcJiMzNDtEcm0gcGFuaWMgc2NyZWVuIGZvcmVncm91bmQgY29sb3IsIGluIFJHQlwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTczLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NzQ6Y29uZmlnIERSTV9QQU5JQ19CQUNLR1JPVU5EX0NPTE9SXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03NS1cdGhleCBcJiMzNDtEcm0gcGFuaWMgc2NyZWVuIGJhY2tncm91bmQgY29sb3IsIGluIFJHQlwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTc4LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Nzk6Y29uZmlnIERSTV9QQU5JQ19ERUJVR1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODAtXHRib29sIFwmIzM0O0FkZCBhIGRlYnVnIGZzIGVudHJ5IHRvIHRyaWdnZXIgZHJtX3BhbmljXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODctXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo4ODpjb25maWcgRFJNX1BBTklDX1NDUkVFTlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODktXHRzdHJpbmcgXCYjMzQ7UGFuaWMgc2NyZWVuIGZvcm1hdHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEwMC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjEwMTpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMDItXHRib29sIFwmIzM0O0FkZCBhIHBhbmljIHNjcmVlbiB3aXRoIGEgUVIgY29kZVwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTExMS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjExMjpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFX1VSTFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTEzLVx0c3RyaW5nIFwmIzM0O0Jhc2UgVVJMIG9mIHRoZSBRUiBjb2RlIGluIHRoZSBwYW5pYyBzY3JlZW5cJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMjItXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMjM6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfVkVSU0lPTlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTI0LVx0aW50IFwmIzM0O01heGltdW0gdmVyc2lvbiAoc2l6ZSkgb2YgdGhlIFFSIGNvZGUuXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTMyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTMzOmNvbmZpZyBEUk1fUkFTXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMzQtXHRib29sIFwmIzM0O0RSTSBSQVMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE0Mi1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE0Mzpjb25maWcgRFJNX0RFQlVHX0RQX01TVF9UT1BPTE9HWV9SRUZTXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNDQtICAgICAgICBib29sIFwmIzM0O0VuYWJsZSByZWZjb3VudCBiYWNrdHJhY2UgaGlzdG9yeSBpbiB0aGUgRFAgTVNUIGhlbHBlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNTctXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNTg6Y29uZmlnIERSTV9ERUJVR19NT0RFU0VUX0xPQ0tcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE1OS1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJhY2t0cmFjZSBoaXN0b3J5IGZvciBsb2NrIGNvbnRlbnRpb25cJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzItXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNzM6Y29uZmlnIERSTV9DTElFTlRcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE3NC1cdGJvb2xcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0xODI9c291cmNlIFwmIzM0O2RyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE4My1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE4NDpjb25maWcgRFJNX0xPQURfRURJRF9GSVJNV0FSRVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTg1LVx0Ym9vbCBcJiMzNDtBbGxvdyB0byBzcGVjaWZ5IGFuIEVESUQgZGF0YSBzZXQgaW5zdGVhZCBvZiBwcm9iaW5nIGZvciBpdFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTE5Nj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTk3LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTk4OmNvbmZpZyBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xOTktXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIwNi1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIwNzpjb25maWcgRFJNX0VYRUNcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIwOC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjEyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjEzOmNvbmZpZyBEUk1fR1BVVk1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIxNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjIxPWNvbmZpZyBSVVNUX0RSTV9HUFVWTVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIyNy1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIyODpjb25maWcgRFJNX0dQVVNWTVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjI5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMzYtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMzc6Y29uZmlnIERSTV9CVUREWVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjM4LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDMtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNDQ6Y29uZmlnIERSTV9WUkFNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQ1LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDktXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNTA6Y29uZmlnIERSTV9UVE1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNTEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1OS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI2MDpjb25maWcgRFJNX0dFTV9ETUFfSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNjEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI2OC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI2OTpjb25maWcgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI3MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9Mjc4PWNvbmZpZyBSVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjg0LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjg1OmNvbmZpZyBEUk1fU1VCQUxMT0NfSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4OC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI4OTpjb25maWcgRFJNX1NDSEVEXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5My0jIFNlcGFyYXRlIG9wdGlvbiBhcyBub3QgYWxsIERSTSBkcml2ZXJzIHVzZSBpdFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjk0OmNvbmZpZyBEUk1fUEFORUxfQkFDS0xJR0hUX1FVSVJLU1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjk1LVx0dHJpc3RhdGVcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5Ni1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI5Nzpjb25maWcgRFJNX1BSSVZBQ1lfU0NSRUVOXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTgtXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MzY4PWVuZGlmXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMzcwLSMgU2VwYXJhdGUgb3B0aW9uIGJlY2F1c2UgZHJtX3BhbmVsX29yaWVudGF0aW9uX3F1aXJrcy5jIGlzIHNoYXJlZCB3aXRoIGZiZGV2XG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzozNzE6Y29uZmlnIERSTV9QQU5FTF9PUklFTlRBVElPTl9RVUlSS1NcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3Mi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6MTpjb25maWcgRFJNX1VTRV9EWU5BTUlDX0RFQlVHXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0yLVx0Ym9vbCBcJiMzNDt1c2UgZHluYW1pYyBkZWJ1ZyB0byBpbXBsZW1lbnQgZHJtLmRlYnVnXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTMtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1ZzoxNDpjb25maWcgRFJNX1dFUlJPUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTUtXHRib29sIFwmIzM0O0NvbXBpbGUgdGhlIGRybSBzdWJzeXN0ZW0gd2l0aCB3YXJuaW5ncyBhcyBlcnJvcnNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0yNy1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjI4OmNvbmZpZyBEUk1fSEVBREVSX1RFU1RcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTI5LVx0Ym9vbCBcJiMzNDtFbnN1cmUgRFJNIGhlYWRlcnMgYXJlIHNlbGYtY29udGFpbmVkIGFuZCBwYXNzIGtlcm5lbC1kb2NcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0zOC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjM5OmNvbmZpZyBEUk1fREVCVUdfTU1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTQwLVx0Ym9vbCBcJiMzNDtJbnNlcnQgZXh0cmEgY2hlY2tzIGFuZCBkZWJ1ZyBpbmZvIGludG8gdGhlIERSTSByYW5nZSBtYW5hZ2Vyc1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTUyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6NTM6Y29uZmlnIERSTV9LVU5JVF9URVNUX0hFTFBFUlNcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTU0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy01OS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjYwOmNvbmZpZyBEUk1fS1VOSVRfVEVTVFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgRFJNXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy04NS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjg2OmNvbmZpZyBEUk1fVFRNX0tVTklUX1RFU1RcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTg3LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFRUTVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTAxLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6MTAyOmNvbmZpZyBEUk1fU0NIRURfS1VOSVRfVEVTVFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTAzLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIHRoZSBEUk0gc2NoZWR1bGVyXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0xMTMtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1ZzoxMTQ6Y29uZmlnIERSTV9FWFBPUlRfRk9SX1RFU1RTXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0xMTUtXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTUtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6NjpDRkxBR1MtJChDT05GSUdfRFJNX1VTRV9EWU5BTUlDX0RFQlVHKVx0JiM0Mzs9IC1ERFlOQU1JQ19ERUJVR19NT0RVTEVcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yOT1lbmRpZlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0zMi0jIEVuYWJsZSAtV2Vycm9yIGluIENJIGFuZCBkZXZlbG9wbWVudFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjMzOnN1YmRpci1jY2ZsYWdzLSQoQ09ORklHX0RSTV9XRVJST1IpICYjNDM7PSAtV2Vycm9yXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMzQtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MzU9ZHJtLXkgOj0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNzUtXHRkcm1fd3JpdGViYWNrLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo3Njpkcm0tJChDT05GSUdfRFJNX0NMSUVOVCkgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNzctXHRkcm1fY2xpZW50Lm8gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9ODE9ZHJtLSQoQ09ORklHX0NPTVBBVCkgJiM0Mzs9IGRybV9pb2MzMi5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6ODI6ZHJtLSQoQ09ORklHX0RSTV9QQU5FTCkgJiM0Mzs9IGRybV9wYW5lbC5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtODMtZHJtLSQoQ09ORklHX09GKSAmIzQzOz0gZHJtX29mLm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9ODU9ZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtODctXHRkcm1fZGVidWdmc19jcmMub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjg4OmRybS0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSAmIzQzOz0gZHJtX2VkaWRfbG9hZC5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6ODk6ZHJtLSQoQ09ORklHX0RSTV9QUklWQUNZX1NDUkVFTikgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtOTAtXHRkcm1fcHJpdmFjeV9zY3JlZW4ubyBcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTkxLVx0ZHJtX3ByaXZhY3lfc2NyZWVuX3g4Ni5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTI6ZHJtLSQoQ09ORklHX0RSTV9BQ0NFTCkgJiM0Mzs9IC4uLy4uL2FjY2VsL2RybV9hY2NlbC5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTM6ZHJtLSQoQ09ORklHX0RSTV9QQU5JQykgJiM0Mzs9IGRybV9wYW5pYy5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTQ6ZHJtLSQoQ09ORklHX0RSTV9EUkFXKSAmIzQzOz0gZHJtX2RyYXcub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjk1OmRybS0kKENPTkZJR19EUk1fUEFOSUNfU0NSRUVOX1FSX0NPREUpICYjNDM7PSBkcm1fcGFuaWNfcXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjk2OmRybS0kKENPTkZJR19EUk1fUkFTKSAmIzQzOz0gZHJtX3Jhcy5vIGRybV9yYXNfbmwubyBkcm1fcmFzX2dlbmxfZmFtaWx5Lm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo5NzpvYmotJChDT05GSUdfRFJNKVx0JiM0Mzs9IGRybS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtOTgtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTk6b2JqLSQoQ09ORklHX0RSTV9QQU5FTF9PUklFTlRBVElPTl9RVUlSS1MpICYjNDM7PSBkcm1fcGFuZWxfb3JpZW50YXRpb25fcXVpcmtzLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMDA6b2JqLSQoQ09ORklHX0RSTV9QQU5FTF9CQUNLTElHSFRfUVVJUktTKSAmIzQzOz0gZHJtX3BhbmVsX2JhY2tsaWdodF9xdWlya3Mub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEwMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTA1LSNcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMDY6b2JqLSQoQ09ORklHX0RSTV9FWEVDKSAmIzQzOz0gZHJtX2V4ZWMub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEwNzpvYmotJChDT05GSUdfRFJNX0dQVVZNKSAmIzQzOz0gZHJtX2dwdXZtLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMDgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTExMT1kcm1fZ3B1c3ZtX2hlbHBlci0kKENPTkZJR19aT05FX0RFVklDRSkgJiM0Mzs9IFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExNC1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMTU6b2JqLSQoQ09ORklHX0RSTV9HUFVTVk0pICYjNDM7PSBkcm1fZ3B1c3ZtX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTE2LVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjExNzpvYmotJChDT05GSUdfRFJNX0JVRERZKSAmIzQzOz0gZHJtX2J1ZGR5Lm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTgtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTE5PWRybV9kbWFfaGVscGVyLXkgOj0gZHJtX2dlbV9kbWFfaGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMjA6ZHJtX2RtYV9oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgJiM0Mzs9IGRybV9mYmRldl9kbWEub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyMTpkcm1fZG1hX2hlbHBlci0kKENPTkZJR19EUk1fS01TX0hFTFBFUikgJiM0Mzs9IGRybV9mYl9kbWFfaGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMjI6b2JqLSQoQ09ORklHX0RSTV9HRU1fRE1BX0hFTFBFUikgJiM0Mzs9IGRybV9kbWFfaGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMjMtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTI0PWRybV9zaG1lbV9oZWxwZXIteSA6PSBkcm1fZ2VtX3NobWVtX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTI1OmRybV9zaG1lbV9oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgJiM0Mzs9IGRybV9mYmRldl9zaG1lbS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTI2Om9iai0kKENPTkZJR19EUk1fR0VNX1NITUVNX0hFTFBFUikgJiM0Mzs9IGRybV9zaG1lbV9oZWxwZXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEyNy1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMjg9ZHJtX3N1YmFsbG9jX2hlbHBlci15IDo9IGRybV9zdWJhbGxvYy5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTI5Om9iai0kKENPTkZJR19EUk1fU1VCQUxMT0NfSEVMUEVSKSAmIzQzOz0gZHJtX3N1YmFsbG9jX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTMwLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTEzMT1kcm1fdnJhbV9oZWxwZXIteSA6PSBkcm1fZ2VtX3ZyYW1faGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMzI6b2JqLSQoQ09ORklHX0RSTV9WUkFNX0hFTFBFUikgJiM0Mzs9IGRybV92cmFtX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTMzLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTEzND1kcm1fdHRtX2hlbHBlci15IDo9IGRybV9nZW1fdHRtX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTM1OmRybV90dG1faGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICYjNDM7PSBkcm1fZmJkZXZfdHRtLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMzY6b2JqLSQoQ09ORklHX0RSTV9UVE1fSEVMUEVSKSAmIzQzOz0gZHJtX3R0bV9oZWxwZXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEzNy1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTQyPWRybV9rbXNfaGVscGVyLXkgOj0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTU4LVx0ZHJtX3ZibGFua19oZWxwZXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE1OTpkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fUEFORUxfQlJJREdFKSAmIzQzOz0gYnJpZGdlL3BhbmVsLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNjA6ZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgJiM0Mzs9IGRybV9mYl9oZWxwZXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2MTpvYmotJChDT05GSUdfRFJNX0tNU19IRUxQRVIpICYjNDM7PSBkcm1fa21zX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTYyLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xNjc9b2JqLXlcdFx0XHQmIzQzOz0gdGVzdHMvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTY4LVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2OTpvYmotJChDT05GSUdfRFJNX01JUElfREJJKSAmIzQzOz0gZHJtX21pcGlfZGJpLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzA6b2JqLSQoQ09ORklHX0RSTV9NSVBJX0RTSSkgJiM0Mzs9IGRybV9taXBpX2RzaS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTcxLW9iai15XHRcdFx0JiM0Mzs9IGFybS9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTczPW9iai15XHRcdFx0JiM0Mzs9IGRpc3BsYXkvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc0Om9iai0kKENPTkZJR19EUk1fVFRNKVx0JiM0Mzs9IHR0bS9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzU6b2JqLSQoQ09ORklHX0RSTV9TQ0hFRClcdCYjNDM7PSBzY2hlZHVsZXIvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc2Om9iai0kKENPTkZJR19EUk1fUkFERU9OKSYjNDM7PSByYWRlb24vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc3Om9iai0kKENPTkZJR19EUk1fQU1ER1BVKSYjNDM7PSBhbWQvYW1kZ3B1L1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE3ODpvYmotJChDT05GSUdfRFJNX0FNREdQVSkmIzQzOz0gYW1kL2FtZHhjcC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzk6b2JqLSQoQ09ORklHX0RSTV9JOTE1KVx0JiM0Mzs9IGk5MTUvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTgwOm9iai0kKENPTkZJR19EUk1fWEUpXHQmIzQzOz0geGUvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTgxOm9iai0kKENPTkZJR19EUk1fS01CX0RJU1BMQVkpICAmIzQzOz0ga21iL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4MjpvYmotJChDT05GSUdfRFJNX01HQUcyMDApICYjNDM7PSBtZ2FnMjAwL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4MzpvYmotJChDT05GSUdfRFJNX1YzRCkgICYjNDM7PSB2M2QvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTg0Om9iai0kKENPTkZJR19EUk1fVkM0KSAgJiM0Mzs9IHZjNC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODU6b2JqLSQoQ09ORklHX0RSTV9WTVdHRlgpJiM0Mzs9IHZtd2dmeC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODY6b2JqLSQoQ09ORklHX0RSTV9WR0VNKVx0JiM0Mzs9IHZnZW0vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTg3Om9iai0kKENPTkZJR19EUk1fVktNUylcdCYjNDM7PSB2a21zL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4ODpvYmotJChDT05GSUdfRFJNX05PVVZFQVUpICYjNDM7PW5vdXZlYXUvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTg5LSMgbm92YS1kcm0gaXMgYnVpbHQgZnJvbSBkcml2ZXJzL2dwdS9NYWtlZmlsZSB0b2dldGhlciB3aXRoIG5vdmEtY29yZS5cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTA6b2JqLSQoQ09ORklHX0RSTV9FWFlOT1MpICYjNDM7PWV4eW5vcy9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTE6b2JqLSQoQ09ORklHX0RSTV9ST0NLQ0hJUCkgJiM0Mzs9cm9ja2NoaXAvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTkyOm9iai0kKENPTkZJR19EUk1fR01BNTAwKSAmIzQzOz0gZ21hNTAwL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5MzpvYmotJChDT05GSUdfRFJNX1VETCkgJiM0Mzs9IHVkbC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTQ6b2JqLSQoQ09ORklHX0RSTV9BU1QpICYjNDM7PSBhc3QvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19EUk1fQVJNQURBKSAmIzQzOz0gYXJtYWRhL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5NjpvYmotJChDT05GSUdfRFJNX0FUTUVMX0hMQ0RDKVx0JiM0Mzs9IGF0bWVsLWhsY2RjL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE5Ny1vYmoteVx0XHRcdCYjNDM7PSByZW5lc2FzL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTE5OD1vYmoteVx0XHRcdCYjNDM7PSBvbWFwZHJtL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRFJNX1NVTjRJKSAmIzQzOz0gc3VuNGkvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjAwLW9iai15XHRcdFx0JiM0Mzs9IHRpbGNkYy9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDE6b2JqLSQoQ09ORklHX0RSTV9RWEwpICYjNDM7PSBxeGwvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjAyOm9iai0kKENPTkZJR19EUk1fVklSVElPX0dQVSkgJiM0Mzs9IHZpcnRpby9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDM6b2JqLSQoQ09ORklHX0RSTV9NU00pICYjNDM7PSBtc20vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjA0Om9iai0kKENPTkZJR19EUk1fVEVHUkEpICYjNDM7PSB0ZWdyYS9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDU6b2JqLSQoQ09ORklHX0RSTV9TVE0pICYjNDM7PSBzdG0vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjA2Om9iai0kKENPTkZJR19EUk1fU1RJKSAmIzQzOz0gc3RpL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIwNy1vYmoteSBcdFx0XHQmIzQzOz0gaW14L1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIwODpvYmotJChDT05GSUdfRFJNX0lOR0VOSUMpICYjNDM7PSBpbmdlbmljL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIwOTpvYmotJChDT05GSUdfRFJNX0xPR0lDVkMpICYjNDM7PSBsb2dpY3ZjL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIxMDpvYmotJChDT05GSUdfRFJNX01FRElBVEVLKSAmIzQzOz0gbWVkaWF0ZWsvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjExOm9iai0kKENPTkZJR19EUk1fTUVTT04pXHQmIzQzOz0gbWVzb24vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjEyLW9iai15XHRcdFx0JiM0Mzs9IHBhbmVsL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTIxMz1vYmoteVx0XHRcdCYjNDM7PSBicmlkZ2UvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjE0Om9iai0kKENPTkZJR19EUk1fRlNMX0RDVSkgJiM0Mzs9IGZzbC1kY3UvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjE1Om9iai0kKENPTkZJR19EUk1fRVROQVZJVikgJiM0Mzs9IGV0bmF2aXYvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjE2LW9iai15XHRcdFx0JiM0Mzs9IGhpc2lsaWNvbi9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MjE5PW9iai15XHRcdFx0JiM0Mzs9IHRpbnkvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjIwOm9iai0kKENPTkZJR19EUk1fUEwxMTEpICYjNDM7PSBwbDExMS9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjE6b2JqLSQoQ09ORklHX0RSTV9UVkUyMDApICYjNDM7PSB0dmUyMDAvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjIyOm9iai0kKENPTkZJR19EUk1fQURQKSAmIzQzOz0gYWRwL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyMzpvYmotJChDT05GSUdfRFJNX1hFTikgJiM0Mzs9IHhlbi9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjQ6b2JqLSQoQ09ORklHX0RSTV9WQk9YVklERU8pICYjNDM7PSB2Ym94dmlkZW8vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI1Om9iai0kKENPTkZJR19EUk1fTElNQSkgICYjNDM7PSBsaW1hL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyNjpvYmotJChDT05GSUdfRFJNX1BBTkZST1NUKSAmIzQzOz0gcGFuZnJvc3QvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI3Om9iai0kKENPTkZJR19EUk1fUEFOVEhPUikgJiM0Mzs9IHBhbnRob3IvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI4Om9iai0kKENPTkZJR19EUk1fVFlSKSAmIzQzOz0gdHlyL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyOTpvYmotJChDT05GSUdfRFJNX0FTUEVFRF9HRlgpICYjNDM7PSBhc3BlZWQvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjMwOm9iai0kKENPTkZJR19EUk1fTUNERSkgJiM0Mzs9IG1jZGUvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjMxOm9iai0kKENPTkZJR19EUk1fVElEU1MpICYjNDM7PSB0aWRzcy9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yMzItb2JqLXlcdFx0XHQmIzQzOz0geGxueC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yMzM9b2JqLXlcdFx0XHQmIzQzOz0gZ3VkL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIzNDpvYmotJChDT05GSUdfRFJNX0hZUEVSVikgJiM0Mzs9IGh5cGVydi9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yMzUtb2JqLXlcdFx0XHQmIzQzOz0gc2l0cm9uaXgvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MjM2PW9iai15XHRcdFx0JiM0Mzs9IHNvbG9tb24vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjM3Om9iai0kKENPTkZJR19EUk1fU1BSRCkgJiM0Mzs9IHNwcmQvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjM4Om9iai0kKENPTkZJR19EUk1fTE9PTkdTT04pICYjNDM7PSBsb29uZ3Nvbi9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzk6b2JqLSQoQ09ORklHX0RSTV9QT1dFUlZSKSAmIzQzOz0gaW1hZ2luYXRpb24vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjQwOm9iai0kKENPTkZJR19EUk1fVkVSSVNJTElDT05fREMpICYjNDM7PSB2ZXJpc2lsaWNvbi9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yNDEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTI0Mz1oZHJ0ZXN0LWZpbGVzIDo9IFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTI0Ni1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyNDc6YWx3YXlzLSQoQ09ORklHX0RSTV9IRUFERVJfVEVTVCkgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjQ4LVx0JChwYXRzdWJzdCAlLmgsJS5oZHJ0ZXN0LCAkKGhkcnRlc3QtZmlsZXMpKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yNTE9cXVpZXRfY21kX2hkcnRlc3QgPSBIRFJURVNUICQocGF0c3Vic3QgJS5oZHJ0ZXN0LCUuaCwkQClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjUzLVx0XHQkKENDKSAkKGNfZmxhZ3MpIC1mc3ludGF4LW9ubHkgLXggYyAvZGV2L251bGwgLWluY2x1ZGUgJFx1MDAzYyAtaW5jbHVkZSAkXHUwMDNjOyBcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjI1NDpcdFx0IFBZVEhPTkRPTlRXUklURUJZVEVDT0RFPTEgJChQWVRIT04zKSAkKEtFUk5FTERPQykgLW5vbmUgJChpZiAkKENPTkZJR19XRVJST1IpJChDT05GSUdfRFJNX1dFUlJPUiksLVdlcnJvcikgJFx1MDAzYzsgXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yNTUtXHRcdHRvdWNoICRAXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIE1JVFxuZHJpdmVycy9ncHUvZHJtL2FkcC9LY29uZmlnOjI6Y29uZmlnIERSTV9BRFBcbmRyaXZlcnMvZ3B1L2RybS9hZHAvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RFJNIFN1cHBvcnQgZm9yIHByZS1EQ1AgQXBwbGUgZGlzcGxheSBjb250cm9sbGVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hZHAvTWFrZWZpbGU9ND1hZHBkcm0tbWlwaS15IDo9IGFkcC1taXBpLm9cbmRyaXZlcnMvZ3B1L2RybS9hZHAvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfRFJNX0FEUCkgJiM0Mzs9IGFkcGRybS5vIGFkcGRybS1taXBpLm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9LY29uZmlnPTI9bWVudSBcJiMzNDtBQ1AgKEF1ZGlvIENvUHJvY2Vzc29yKSBDb25maWd1cmF0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvS2NvbmZpZy00LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvS2NvbmZpZzo1OmNvbmZpZyBEUk1fQU1EX0FDUFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtFbmFibGUgQU1EIEF1ZGlvIENvUHJvY2Vzc29yIElQIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTItXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjM6Y29uZmlnIERSTV9BTURHUFVcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0FNRCBHUFVcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTQwLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo0MTpjb25maWcgRFJNX0FNREdQVV9TSVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7RW5hYmxlIGFtZGdwdSBzdXBwb3J0IGZvciBTSSBwYXJ0c1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctNTUtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjU2OmNvbmZpZyBEUk1fQU1ER1BVX0NJS1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7RW5hYmxlIGFtZGdwdSBzdXBwb3J0IGZvciBDSUsgcGFydHNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTc0LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo3NTpjb25maWcgRFJNX0FNREdQVV9VU0VSUFRSXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTc2LVx0Ym9vbCBcJiMzNDtBbHdheXMgZW5hYmxlIHVzZXJwdHIgd3JpdGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctODMtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjg0OmNvbmZpZyBEUk1fQU1EX0lTUFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy04NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIEFNRCBJbWFnZSBTaWduYWwgUHJvY2Vzc29yIElQIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTk0LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo5NTpjb25maWcgRFJNX0FNREdQVV9XRVJST1JcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctOTYtXHRib29sIFwmIzM0O0ZvcmNlIHRoZSBjb21waWxlciB0byB0aHJvdyBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgd2FybmluZyB3aGVuIGNvbXBpbGluZ1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTQ4PXN1YmRpci1jY2ZsYWdzLXkgJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU6NDk6c3ViZGlyLWNjZmxhZ3MtJChDT05GSUdfRFJNX0FNREdQVV9XRVJST1IpICYjNDM7PSAtV2Vycm9yXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS01MC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT03OT1hbWRncHUtJChDT05GSUdfUEVSRl9FVkVOVFMpICYjNDM7PSBhbWRncHVfcG11Lm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS04MS0jIGFkZCBhc2ljIHNwZWNpZmljIGJsb2NrXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTo4MjphbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9DSUspJiM0Mzs9IGNpay5vIGNpa19paC5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS04My1cdGRjZV92OF8wLm8gZ2Z4X3Y3XzAubyBjaWtfc2RtYS5vIHV2ZF92NF8yLm8gdmNlX3YyXzAub1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtODQtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTo4NTphbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9TSSkmIzQzOz0gc2kubyBnbWNfdjZfMC5vIGdmeF92Nl8wLm8gc2lfaWgubyBzaV9kbWEubyBkY2VfdjZfMC5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS04Ni1cdHV2ZF92M18xLm8gdmNlX3YxXzAub1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTI4NT1hbWRncHUteSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0yOTgtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZToyOTk6aWZuZXEgKCQoQ09ORklHX0RSTV9BTURHUFVfQ0lLKSwpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0zMDAtYW1kZ3B1LXkgJiM0Mzs9IGFtZGdwdV9hbWRrZmRfZ2Z4X3Y3Lm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT0zMDk9YW1kZ3B1LXkgJiM0Mzs9IGFtZGdwdV9qb2Iub1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMxMS0jIEFDUCBjb21wb25ldFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU6MzEyOmlmbmVxICgkKENPTkZJR19EUk1fQU1EX0FDUCksKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzEzLWFtZGdwdS15ICYjNDM7PSBhbWRncHVfYWNwLm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT0zMjg9YW1kZ3B1LXkgJiM0Mzs9ICQoQU1EX1BPV0VSUExBWV9GSUxFUylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMyOS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjMzMDppZm5lcSAoJChDT05GSUdfRFJNX0FNRF9EQyksKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzMxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTMzNz1lbmRpZlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMzOS0jIGFkZCBpc3AgYmxvY2tcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjM0MDppZm5lcSAoJChDT05GSUdfRFJNX0FNRF9JU1ApLClcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTM0MS1hbWRncHUteSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT0zNTA9YW1kZ3B1LXkgJiM0Mzs9ICQoQU1EX0dQVV9SQVNfRklMRVMpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0zNTEtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTozNTI6b2JqLSQoQ09ORklHX0RSTV9BTURHUFUpJiM0Mzs9IGFtZGdwdS5vXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMTE4LSNpbmNsdWRlIFwmIzM0O2FtZGdwdV9hY3BpLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjExOTojaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9JU1ApXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC0xMjAtI2luY2x1ZGUgXCYjMzQ7YW1kZ3B1X2lzcC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg9MjQ0PWV4dGVybiBpbnQgYW1kZ3B1X3Jlc2V0X21ldGhvZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTI0NS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjI0NjojaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfU0lcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTI0Ny1leHRlcm4gaW50IGFtZGdwdV9zaV9zdXBwb3J0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMjQ4LSNlbmRpZlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6MjQ5OiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9DSUtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTI1MC1leHRlcm4gaW50IGFtZGdwdV9jaWtfc3VwcG9ydDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaD02MjE9c3RydWN0IGFtZGdwdV9kZXZpY2Uge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTYyNS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjYyNjojaWZkZWYgQ09ORklHX0RSTV9BTURfQUNQXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC02MjctXHRzdHJ1Y3QgYW1kZ3B1X2FjcFx0XHRhY3A7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtNzk4LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6Nzk5OiNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0lTUClcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTgwMC1cdC8qIGlzcCAqL1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM9MTI5Mz1pbnQgYW1kZ3B1X2FjcGlfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTEyOTgtXHRcdGlmIChhZGV2LVx1MDAzZWRjX2VuYWJsZWQpIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM6MTI5OTojaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmMtMTMwMC1cdFx0XHRzdHJ1Y3QgYW1kZ3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0gPSBcdTAwMjZhZGV2LVx1MDAzZWRtO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM9MTU1Mz1ib29sIGFtZGdwdV9hY3BpX2lzX3MwaXhfYWN0aXZlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmMtMTU4Ny1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM6MTU4ODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0FNRF9JU1ApXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTE1ODktc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBpc3Bfc2Vuc29yX2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM9MTU5OT1pbnQgYW1kZ3B1X2FjcGlfZ2V0X2lzcDRfZGV2KHN0cnVjdCBhY3BpX2RldmljZSAqKmRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTE2MTYtfVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYzoxNjE3OiNlbmRpZiAvKiBDT05GSUdfRFJNX0FNRF9JU1AgKi9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5oPTE0NT1zdGF0aWMgaW5saW5lIGJvb2wgYW1kZ3B1X2FjcGlfaXNfczNfYWN0aXZlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KSB7IHJldHVybiBmYWxzZTsgfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmgtMTQ3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuaDoxNDg6I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfSVNQKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuaC0xNDktaW50IGFtZGdwdV9hY3BpX2dldF9pc3A0X2RldihzdHJ1Y3QgYWNwaV9kZXZpY2UgKipkZXYpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5jPTEwMjc9aW50IGFtZGdwdV9hdG9tYmlvc19nZXRfY2xvY2tfZGl2aWRlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmMtMTEyNC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5jOjExMjU6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuYy0xMTI2LWludCBhbWRncHVfYXRvbWJpb3NfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmg9MTU1PWludCBhbWRncHVfYXRvbWJpb3NfZ2V0X2Nsb2NrX2RpdmlkZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oLTE2MC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oOjE2MTojaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfU0lcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oLTE2Mi1pbnQgYW1kZ3B1X2F0b21iaW9zX2dldF9tZW1vcnlfcGxsX2RpdmlkZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZWJ1Z2ZzLmM9MjEzMz1pbnQgYW1kZ3B1X2RlYnVnZnNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jLTIxNzktXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jOjIxODA6I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jLTIxODEtXHRpZiAoYWRldi1cdTAwM2VkY19lbmFibGVkKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy01Ni0jaW5jbHVkZSBcJiMzNDthbWRfcGNpZS5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM6NTc6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtNTgtI2luY2x1ZGUgXCYjMzQ7c2kuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTU5LSNlbmRpZlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjYwOiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9DSUtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy02MS0jaW5jbHVkZSBcJiMzNDtjaWsuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYz0xOTgxPXN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9pcF9lYXJseV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0yMDEwLVx0c3dpdGNoIChhZGV2LVx1MDAzZWFzaWNfdHlwZSkge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjIwMTE6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMjAxMi1cdGNhc2UgQ0hJUF9WRVJERTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMjAyMi0jZW5kaWZcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzoyMDIzOiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9DSUtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0yMDI0LVx0Y2FzZSBDSElQX0JPTkFJUkU6XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jPTM0ODU9Ym9vbCBhbWRncHVfZGV2aWNlX2FzaWNfaGFzX2RjX3N1cHBvcnQoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTM0ODgtXHRzd2l0Y2ggKGFzaWNfdHlwZSkge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjM0ODk6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMzQ5MC1cdGNhc2UgQ0hJUF9IQUlOQU46XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTM0OTQtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzozNDk1OiNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgYnVpbGQgcHJvY2VzcywgZm9jdXNpbmcgb24gYGRybV9zeW5jb2JqLm9gLCBhcyBkZXJpdmVkIGZyb20gYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWA6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBEUk0gTWFrZWZpbGUqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWAgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBkcm1fc3luY29iai5vYCBvYmplY3QgZmlsZSBnZXRzIGNvbXBpbGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgaW52b2x2ZWQsIGFuZCBhbnkgc3BlY2lmaWMgcnVsZXMgdGhhdCBtaWdodCBhcHBseSB0byBpdC4gIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGUgdHlwaWNhbCBtYWtlZmlsZSBzdHJ1Y3R1cmU6IHRhcmdldHMsIHByZXJlcXVpc2l0ZXMsIGFuZCB0aGUgY29tbWFuZHMgdG8gYnVpbGQgdGhlIG9iamVjdC4gSSYjMzk7bSBsb29raW5nIGZvciBhbnkgdW51c3VhbCB0d2lzdHMgb3Igc3BlY2lhbCBjb25zaWRlcmF0aW9ucyBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN5bmNocm9uaXphdGlvbiBvYmplY3QuIEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsZXM/IFNwZWNpYWwgbGlua2VyIGZsYWdzPyBBbnl0aGluZyB0aGF0IGp1bXBzIG91dCBhcyBiZWluZyBzcGVjaWZpY2FsbHkgdGFpbG9yZWQgZm9yIHN5bmMgb2JqZWN0cz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O2xsIHByb2JhYmx5IGZvbGxvdyBhIHN0YW5kYXJkIHBhdHRlcm4sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiAgSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBmb3IgYSBydWxlIHRoYXQgZXhwbGljaXRseSBuYW1lcyBgZHJtX3N5bmNvYmoub2AsIG9yIGEgbW9yZSBnZW5lcmljIHBhdHRlcm4gdGhhdCB3b3VsZCBjb3ZlciBpdC4gSSYjMzk7bGwgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIGFueSB2YXJpYWJsZXMgaXQgbWlnaHQgYmUgdXNpbmcgYXMgd2VsbCwgdGhvc2UgYXJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCB1bHRpbWF0ZWx5IHNoYXBlcyB0aGUgb2JqZWN0IGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJtX3N5bmNvYmomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE3MTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0zNT1kcm0teSA6PSBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS02OC1cdGRybV9yZWN0Lm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo2OTpcdGRybV9zeW5jb2JqLm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03MC1cdGRybV9zeXNmcy5vIFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMzMtI2luY2x1ZGUgXHUwMDNjZHJtL2FtZGdwdV9kcm0uaFx1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MzQ6I2luY2x1ZGUgXHUwMDNjZHJtL2RybV9zeW5jb2JqLmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTM1LSNpbmNsdWRlIFx1MDAzY2RybS90dG0vdHRtX3R0LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYz00NzE9c3RhdGljIGludCBhbWRncHVfc3luY29ial9sb29rdXBfYW5kX2FkZChzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy00NzctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzo0Nzg6XHRyID0gZHJtX3N5bmNvYmpfZmluZF9mZW5jZShwLVx1MDAzZWZpbHAsIGhhbmRsZSwgcG9pbnQsIGZsYWdzLCBcdTAwMjZmZW5jZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy00NzktXHRpZiAocikge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jPTUyOD1zdGF0aWMgaW50IGFtZGdwdV9jc19wMl9zeW5jb2JqX291dChzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy01NDktXHRcdHAtXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmogPVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6NTUwOlx0XHRcdGRybV9zeW5jb2JqX2ZpbmQocC1cdTAwM2VmaWxwLCBkZXBzW2ldLmhhbmRsZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy01NTEtXHRcdGlmICghcC1cdTAwM2Vwb3N0X2RlcHNbaV0uc3luY29iailcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYz01NjE9c3RhdGljIGludCBhbWRncHVfY3NfcDJfc3luY29ial90aW1lbGluZV9zaWduYWwoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtNTg5LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6NTkwOlx0XHRkZXAtXHUwMDNlc3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQocC1cdTAwM2VmaWxwLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtNTkxLVx0XHRcdFx0XHRcdHN5bmNvYmpfZGVwc1tpXS5oYW5kbGUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jPTEyNjU9c3RhdGljIHZvaWQgYW1kZ3B1X2NzX3Bvc3RfZGVwZW5kZW5jaWVzKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEyNzAtXHRcdGlmIChwLVx1MDAzZXBvc3RfZGVwc1tpXS5jaGFpbiBcdTAwMjZcdTAwMjYgcC1cdTAwM2Vwb3N0X2RlcHNbaV0ucG9pbnQpIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjEyNzE6XHRcdFx0ZHJtX3N5bmNvYmpfYWRkX3BvaW50KHAtXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMjcyLVx0XHRcdFx0XHQgICAgICBwLVx1MDAzZXBvc3RfZGVwc1tpXS5jaGFpbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMjc1LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MTI3NjpcdFx0XHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHAtXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMjc3LVx0XHRcdFx0XHRcdCAgcC1cdTAwM2VmZW5jZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM9MTM4Nj1zdGF0aWMgdm9pZCBhbWRncHVfY3NfcGFyc2VyX2Zpbmkoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnBhcnNlcilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMzk1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGFyc2VyLVx1MDAzZW51bV9wb3N0X2RlcHM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxMzk2Olx0XHRkcm1fc3luY29ial9wdXQocGFyc2VyLVx1MDAzZXBvc3RfZGVwc1tpXS5zeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEzOTctXHRcdGtmcmVlKHBhcnNlci1cdTAwM2Vwb3N0X2RlcHNbaV0uY2hhaW4pO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jPTE1NzY9aW50IGFtZGdwdV9jc19mZW5jZV90b19oYW5kbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTgxLVx0c3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNTgyOlx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTU4My1cdHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTk0LVx0Y2FzZSBBTURHUFVfRkVOQ0VfVE9fSEFORExFX0dFVF9TWU5DT0JKOlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MTU5NTpcdFx0ciA9IGRybV9zeW5jb2JqX2NyZWF0ZShcdTAwMjZzeW5jb2JqLCAwLCBmZW5jZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTk2LVx0XHRkbWFfZmVuY2VfcHV0KGZlbmNlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTk4LVx0XHRcdHJldHVybiByO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MTU5OTpcdFx0ciA9IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoZmlscCwgc3luY29iaiwgXHUwMDI2aW5mby1cdTAwM2VvdXQuaGFuZGxlKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjE2MDA6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDEtXHRcdHJldHVybiByO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDMtXHRjYXNlIEFNREdQVV9GRU5DRV9UT19IQU5ETEVfR0VUX1NZTkNPQkpfRkQ6XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA0Olx0XHRyID0gZHJtX3N5bmNvYmpfY3JlYXRlKFx1MDAyNnN5bmNvYmosIDAsIGZlbmNlKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDUtXHRcdGRtYV9mZW5jZV9wdXQoZmVuY2UpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDctXHRcdFx0cmV0dXJuIHI7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA4Olx0XHRyID0gZHJtX3N5bmNvYmpfZ2V0X2ZkKHN5bmNvYmosIChpbnQgKilcdTAwMjZpbmZvLVx1MDAzZW91dC5oYW5kbGUpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MTYwOTpcdFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTYxMC1cdFx0cmV0dXJuIHI7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmg9NDM9c3RydWN0IGFtZGdwdV9jc19wb3N0X2RlcCB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuaDo0NDpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5oLTQ1LVx0c3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTQxLSNpbmNsdWRlIFx1MDAzY2RybS90dG0vdHRtX3R0LmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzo0MjojaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX3N5bmNvYmouaFx1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTQzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYz01Mj1hbWRncHVfZ2VtX2FkZF9pbnB1dF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTc0LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjc1Olx0XHRyZXQgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHN5bmNvYmpfaGFuZGxlc1tpXSwgMCwgMCwgXHUwMDI2ZmVuY2UpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTc2LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYz05MT1hbWRncHVfZ2VtX3VwZGF0ZV90aW1lbGluZV9ub2RlKHN0cnVjdCBkcm1fZmlsZSAqZmlscCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtOTMtXHRcdFx0XHR1aW50NjRfdCBwb2ludCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzo5NDpcdFx0XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtOTUtXHRcdFx0XHRzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICoqY2hhaW4pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMC1cdC8qIEZpbmQgdGhlIHN5bmMgb2JqZWN0ICovXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6MTAxOlx0KnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbHAsIHN5bmNvYmpfaGFuZGxlKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMDItXHRpZiAoISpzeW5jb2JqKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMTAtXHRpZiAoISpjaGFpbikge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjExMTpcdFx0ZHJtX3N5bmNvYmpfcHV0KCpzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMTItXHRcdCpzeW5jb2JqID0gTlVMTDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM9ODMyPWludCBhbWRncHVfZ2VtX3ZhX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTg0Ny1cdHN0cnVjdCBhbWRncHVfYm9fdmEgKmJvX3ZhO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjg0ODpcdHN0cnVjdCBkcm1fc3luY29iaiAqdGltZWxpbmVfc3luY29iaiA9IE5VTEw7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtODQ5LVx0c3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqdGltZWxpbmVfY2hhaW4gPSBOVUxMO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMDAyLVx0XHRcdFx0LyogUmVwbGFjZSB0aGUgZXhpc3RpbmcgZmVuY2Ugd2hlbiBubyBwb2ludCBpcyBnaXZlbi4gKi9cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzoxMDAzOlx0XHRcdFx0ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSh0aW1lbGluZV9zeW5jb2JqLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMDQtXHRcdFx0XHRcdFx0XHQgIGZlbmNlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAwNi1cdFx0XHRcdC8qIEF0dGFjaCB0aGUgbGFzdC11cGRhdGUgZmVuY2UgYXQgYSBzcGVjaWZpYyBwb2ludC4gKi9cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzoxMDA3Olx0XHRcdFx0ZHJtX3N5bmNvYmpfYWRkX3BvaW50KHRpbWVsaW5lX3N5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAwOC1cdFx0XHRcdFx0XHQgICAgICB0aW1lbGluZV9jaGFpbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAyMC1cdGlmICh0aW1lbGluZV9zeW5jb2JqKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjEwMjE6XHRcdGRybV9zeW5jb2JqX3B1dCh0aW1lbGluZV9zeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMDIyLVx0ZHJtX2V4ZWNfZmluaShcdTAwMjZleGVjKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy0yOS0jaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX2V4ZWMuaFx1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6MzA6I2luY2x1ZGUgXHUwMDNjZHJtL2RybV9zeW5jb2JqLmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTMxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jPTQ1NT1pbnQgYW1kZ3B1X3VzZXJxX3NpZ25hbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ2OC1cdHN0cnVjdCBhbWRncHVfdXNlcnFfZmVuY2UgKmZlbmNlO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NDY5Olx0c3RydWN0IGRybV9zeW5jb2JqICoqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ3MC1cdHN0cnVjdCBkcm1fZXhlYyBleGVjO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ5Ni1cdGZvciAoZW50cnkgPSAwOyBlbnRyeSBcdTAwM2MgbnVtX3N5bmNvYmpfaGFuZGxlczsgZW50cnkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo0OTc6XHRcdHN5bmNvYmpbZW50cnldID0gZHJtX3N5bmNvYmpfZmluZChmaWxwLCBzeW5jb2JqX2hhbmRsZXNbZW50cnldKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ5OC1cdFx0aWYgKCFzeW5jb2JqW2VudHJ5XSkge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTU3MC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9zeW5jb2JqX2hhbmRsZXM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NTcxOlx0XHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmpbaV0sIFx1MDAyNmZlbmNlLVx1MDAzZWJhc2UpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNTcyLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTU4OS1cdHdoaWxlIChlbnRyeS0tIFx1MDAzZSAwKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NTkwOlx0XHRkcm1fc3luY29ial9wdXQoc3luY29ialtlbnRyeV0pO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNTkxLVx0a2ZyZWUoc3luY29iaik7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM9NjAwPWFtZGdwdV91c2VycV93YWl0X2NvdW50X2ZlbmNlcyhzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNjIwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd2FpdF9pbmZvLVx1MDAzZW51bV9zeW5jb2JqX3RpbWVsaW5lX2hhbmRsZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo2MjE6XHRcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHRpbWVsaW5lX2hhbmRsZXNbaV0sXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy02MjItXHRcdFx0XHRcdCAgIHRpbWVsaW5lX3BvaW50c1tpXSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy02MzUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3YWl0X2luZm8tXHUwMDNlbnVtX3N5bmNvYmpfaGFuZGxlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jOjYzNjpcdFx0ciA9IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoZmlscCwgc3luY29ial9oYW5kbGVzW2ldLCAwLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNjM3LVx0XHRcdFx0XHQgICBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYz03MTA9YW1kZ3B1X3VzZXJxX3dhaXRfcmV0dXJuX2ZlbmNlX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxwLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTc0My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9wb2ludHM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo3NDQ6XHRcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHRpbWVsaW5lX2hhbmRsZXNbaV0sXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NDUtXHRcdFx0XHRcdCAgIHRpbWVsaW5lX3BvaW50c1tpXSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NjctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo3Njg6XHRcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHN5bmNvYmpfaGFuZGxlc1tpXSwgMCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTc2OS1cdFx0XHRcdFx0ICAgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM9MTMyPXN0cnVjdCBkcm1fZmlsZSAqZHJtX2ZpbGVfYWxsb2Moc3RydWN0IGRybV9taW5vciAqbWlub3IpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMTY3LVx0aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYzoxNjg6XHRcdGRybV9zeW5jb2JqX29wZW4oZmlsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xNjktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMTg1LVx0aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYzoxODY6XHRcdGRybV9zeW5jb2JqX3JlbGVhc2UoZmlsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xODctXHRpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jPTIzMz12b2lkIGRybV9maWxlX2ZyZWUoc3RydWN0IGRybV9maWxlICpmaWxlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTI1Ny1cdGlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM6MjU4Olx0XHRkcm1fc3luY29ial9yZWxlYXNlKGZpbGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMjU5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaD0yNTk9ZHJtX2lvY3RsX3QgZHJtX2dldGNsaWVudDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjAtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjYxOi8qIGRybV9zeW5jb2JqLmMgKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjI6dm9pZCBkcm1fc3luY29ial9vcGVuKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjM6dm9pZCBkcm1fc3luY29ial9yZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjQ6aW50IGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI2NS1cdFx0XHQgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjY6aW50IGRybV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjctXHRcdFx0ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI2ODppbnQgZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjY5LVx0XHRcdFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI3MDppbnQgZHJtX3N5bmNvYmpfZmRfdG9faGFuZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjcxLVx0XHRcdFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI3MjppbnQgZHJtX3N5bmNvYmpfdHJhbnNmZXJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNzMtXHRcdFx0ICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzQ6aW50IGRybV9zeW5jb2JqX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNzUtXHRcdFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI3NjppbnQgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI3Ny1cdFx0XHRcdCAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjc4OmludCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc5LVx0XHRcdCAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyODA6aW50IGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjgxLVx0XHRcdCAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjgyOmludCBkcm1fc3luY29ial9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yODMtXHRcdFx0ICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjg0OmludCBkcm1fc3luY29ial90aW1lbGluZV9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yODUtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjg2OmludCBkcm1fc3luY29ial9xdWVyeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI4Ny1cdFx0XHQgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYz02NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBkcm1faW9jdGxzW10gPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcxNy1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3MTg6XHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0NSRUFURSwgZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcxOS1cdFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzIwOlx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9ERVNUUk9ZLCBkcm1fc3luY29ial9kZXN0cm95X2lvY3RsLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyMS1cdFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzIyOlx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9IQU5ETEVfVE9fRkQsIGRybV9zeW5jb2JqX2hhbmRsZV90b19mZF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MjMtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcyNDpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfRkRfVE9fSEFORExFLCBkcm1fc3luY29ial9mZF90b19oYW5kbGVfaW9jdGwsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzI1LVx0XHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3MjY6XHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX1RSQU5TRkVSLCBkcm1fc3luY29ial90cmFuc2Zlcl9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MjctXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcyODpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfV0FJVCwgZHJtX3N5bmNvYmpfd2FpdF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MjktXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczMDpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfVElNRUxJTkVfV0FJVCwgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzEtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczMjpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRCwgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzMtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczNDpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfUkVTRVQsIGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTczNS1cdFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzM2Olx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9TSUdOQUwsIGRybV9zeW5jb2JqX3NpZ25hbF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzctXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczODpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfVElNRUxJTkVfU0lHTkFMLCBkcm1fc3luY29ial90aW1lbGluZV9zaWduYWxfaW9jdGwsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzM5LVx0XHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3NDA6XHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX1FVRVJZLCBkcm1fc3luY29ial9xdWVyeV9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03NDEtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMxLSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMjogKiBEUk0gc3luY2hyb25pc2F0aW9uIG9iamVjdHMgKHN5bmNvYmosIHNlZSBzdHJ1Y3QgXHUwMDI2ZHJtX3N5bmNvYmopIHByb3ZpZGUgYVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzMtICogY29udGFpbmVyIGZvciBhIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgd2hpY2ggY2FuIGJlIHVzZWQgYnkgdXNlcnNwYWNlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTYwLSAqIHJlc3VsdCBvZiBpbXBvcnRpbmcgdGhvc2UgZmlsZSBkZXNjcmlwdG9ycyBvd24gYSByZWZlcmVuY2UgdG8gdGhlXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNjE6ICogc2FtZSB1bmRlcmx5aW5nIHN0cnVjdCBcdTAwMjZkcm1fc3luY29iaiBhbmQgdGhlIHN5bmNvYmogY2FuIGJlIHVzZWRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE2Mi0gKiBwZXJzaXN0ZW50bHkgYWNyb3NzIGFsbCB0aGUgcHJvY2Vzc2VzIHdpdGggd2hpY2ggaXQgaXMgc2hhcmVkLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIwOS0jaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX3ByaW50LmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjIxMDojaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX3N5bmNvYmouaFx1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjExLSNpbmNsdWRlIFx1MDAzY2RybS9kcm1fdXRpbHMuaFx1MDAzZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTIxNT1zdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMjItXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyMjM6c3RhdGljIHZvaWQgc3luY29ial93YWl0X3N5bmNvYmpfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMjQtXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5ICp3YWl0KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0yMjY9c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjI5LVx0c3RydWN0IGRtYV9mZW5jZV9jYiBmZW5jZV9jYjtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjIzMDpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIzMS1cdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTIzNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjM3OnN5bmNvYmpfZXZlbnRmZF9lbnRyeV9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIzOC1cdFx0XHQgICBzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQwLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjQxOiAqIGRybV9zeW5jb2JqX2ZpbmQgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSBhIHN5bmMgb2JqZWN0LlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQyLSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI0NS0gKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBzeW5jb2JqIHBvaW50ZWQgdG8gYnkgaGFuZGxlIG9yIE5VTEwuIFRoZVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjQ2OiAqIHJlZmVyZW5jZSBtdXN0IGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgZHJtX3N5bmNvYmpfcHV0KCkuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNDctICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyNDg6c3RydWN0IGRybV9zeW5jb2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQ5LVx0XHRcdFx0ICAgICB1MzIgaGFuZGxlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjUwLXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI1MTpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI1Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNTctXHRpZiAoc3luY29iailcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI1ODpcdFx0ZHJtX3N5bmNvYmpfZ2V0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjU5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI2My19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyNjQ6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9maW5kKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI2NS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI2NjpzdGF0aWMgdm9pZCBkcm1fc3luY29ial9mZW5jZV9hZGRfd2FpdChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNjctXHRcdFx0XHQgICAgICAgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yOTAtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyOTE6c3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfcmVtb3ZlX3dhaXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjkyLVx0XHRcdFx0ICAgIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MzE0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMTU6ZHJtX3N5bmNvYmpfYWRkX2V2ZW50ZmQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzE2LVx0XHRcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMyNC0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjMyNTogKiBkcm1fc3luY29ial9hZGRfcG9pbnQgLSBhZGQgbmV3IHRpbWVsaW5lIHBvaW50IHRvIHRoZSBzeW5jb2JqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMjYtICogQHN5bmNvYmo6IHN5bmMgb2JqZWN0IHRvIGFkZCB0aW1lbGluZSBwb2ludCBkb1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMzMi0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjMzMzp2b2lkIGRybV9zeW5jb2JqX2FkZF9wb2ludChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMzQtXHRcdFx0ICAgc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4sXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzQ1LVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzQ2Olx0cHJldiA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM0Ny1cdC8qIFlvdSBhcmUgYWRkaW5nIGFuIHVub3JkZXIgcG9pbnQgdG8gdGltZWxpbmUsIHdoaWNoIGNvdWxkIGNhdXNlIHBheWxvYWQgcmV0dXJuZWQgZnJvbSBxdWVyeV9pb2N0bCBpcyAwISAqL1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM2Mi19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozNjM6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9hZGRfcG9pbnQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzY0LVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzY1LS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzY2OiAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSByZXBsYWNlIGZlbmNlIGluIGEgc3luYyBvYmplY3QuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNjctICogQHN5bmNvYmo6IFN5bmMgb2JqZWN0IHRvIHJlcGxhY2UgZmVuY2UgaW5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNzEtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozNzI6dm9pZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM3My1cdFx0XHQgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzk4LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjM5OTpFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDAwLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDAxLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDAyOiAqIGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZSAtIGFzc2lnbiBhIHN0dWIgZmVuY2UgdG8gdGhlIHN5bmMgb2JqZWN0XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MDMtICogQHN5bmNvYmo6IHN5bmMgb2JqZWN0IHRvIGFzc2lnbiB0aGUgZmVuY2Ugb25cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MDYtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MDc6c3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDA4LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MTMtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MTQ6XHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmosIGZlbmNlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQxNS1cdGRtYV9mZW5jZV9wdXQoZmVuY2UpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQyMS0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQyMjogKiBkcm1fc3luY29ial9maW5kX2ZlbmNlIC0gbG9va3VwIGFuZCByZWZlcmVuY2UgdGhlIGZlbmNlIGluIGEgc3luYyBvYmplY3RcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQyMy0gKiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZSBwcml2YXRlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MjgtICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQyOTogKiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNvbWJpbmVzIGRybV9zeW5jb2JqX2ZpbmQoKSBhbmRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQzMDogKiBkcm1fc3luY29ial9mZW5jZV9nZXQoKS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQzMS0gKlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQzNS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQzNjppbnQgZHJtX3N5bmNvYmpfZmluZF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQzNy1cdFx0XHQgICB1MzIgaGFuZGxlLCB1NjQgcG9pbnQsIHU2NCBmbGFncyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00Mzkte1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDQwOlx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00NDEtXHRzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5IHdhaXQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDYxLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDYyOlx0KmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDYzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2Ny1cdFx0XHQvKiBJZiB0aGUgcmVxdWVzdGVkIHNlcW5vIGlzIGFscmVhZHkgc2lnbmFsZWRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQ2ODpcdFx0XHQgKiBkcm1fc3luY29ial9maW5kX2ZlbmNlIG1heSByZXR1cm4gYSBOVUxMXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00NjktXHRcdFx0ICogZmVuY2UuIFRvIG1ha2Ugc3VyZSB0aGUgcmVjaXBpZW50IGdldHNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00ODctXHR3YWl0LnBvaW50ID0gcG9pbnQ7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0ODg6XHRkcm1fc3luY29ial9mZW5jZV9hZGRfd2FpdChzeW5jb2JqLCBcdTAwMjZ3YWl0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ4OS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MTItXHRpZiAod2FpdC5ub2RlLm5leHQpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MTM6XHRcdGRybV9zeW5jb2JqX3JlbW92ZV93YWl0KHN5bmNvYmosIFx1MDAyNndhaXQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTE0LVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTE1LW91dDpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjUxNjpcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUxNy1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MTktfVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTIwOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmluZF9mZW5jZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjEtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjItLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MjM6ICogZHJtX3N5bmNvYmpfZnJlZSAtIGZyZWUgYSBzeW5jIG9iamVjdC5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUyNC0gKiBAa3JlZjoga3JlZiB0byBmcmVlLlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTI1LSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MjY6ICogT25seSB0byBiZSBjYWxsZWQgZnJvbSBrcmVmX3B1dCBpbiBkcm1fc3luY29ial9wdXQuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjctICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1Mjg6dm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTI5LXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjUzMDpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGNvbnRhaW5lcl9vZihrcmVmLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTMxOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBkcm1fc3luY29iaixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUzMi1cdFx0XHRcdFx0XHQgICByZWZjb3VudCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTM0LVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTM1Olx0ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqLCBOVUxMKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUzNi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NDEtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTQyOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NDMtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NDQtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NDU6ICogZHJtX3N5bmNvYmpfY3JlYXRlIC0gY3JlYXRlIGEgbmV3IHN5bmNvYmpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU0Ni0gKiBAb3V0X3N5bmNvYmo6IHJldHVybmVkIHN5bmNvYmpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NTEtICogcHJvYmFibHkgd2FudCB0byBtYWtlIGl0IGF2YWlsYWJsZSB0byB1c2Vyc3BhY2UsIGVpdGhlciB0aHJvdWdoXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NTI6ICogZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZSgpIG9yIGRybV9zeW5jb2JqX2dldF9mZCgpLlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTUzLSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTU1LSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTU2OmludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTU3LVx0XHQgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTU5LVx0aW50IHJldDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU2MDpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU2MS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU2MjpcdHN5bmNvYmogPSBremFsbG9jX29iaihzdHJ1Y3QgZHJtX3N5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTYzLVx0aWYgKCFzeW5jb2JqKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3MS1cdGlmIChmbGFncyBcdTAwMjYgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVEKSB7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NzI6XHRcdHJldCA9IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3My1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTc0Olx0XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3NS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3OS1cdGlmIChmZW5jZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU4MDpcdFx0ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqLCBmZW5jZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01ODEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTg0LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU4NTpFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2NyZWF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01ODYtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01ODctLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1ODg6ICogZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZSAtIGdldCBhIGhhbmRsZSBmcm9tIGEgc3luY29ialxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTg5LSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU5Mi0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTkzOiAqIEV4cG9ydHMgYSBzeW5jIG9iamVjdCBjcmVhdGVkIHdpdGggZHJtX3N5bmNvYmpfY3JlYXRlKCkgYXMgYSBoYW5kbGUgb25cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU5NC0gKiBAZmlsZV9wcml2YXRlIHRvIHVzZXJzcGFjZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01OTctICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1OTg6aW50IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1OTk6XHRcdFx0ICAgc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1MzIgKmhhbmRsZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYwMC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjAzLVx0LyogdGFrZSBhIHJlZmVyZW5jZSB0byBwdXQgaW4gdGhlIHhhcnJheSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjA0Olx0ZHJtX3N5bmNvYmpfZ2V0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjA1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYwOC1cdGlmIChyZXQpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MDk6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYxMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTItfVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjEzOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTQtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MTU6c3RhdGljIGludCBkcm1fc3luY29ial9jcmVhdGVfYXNfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjE2LVx0XHRcdFx0XHR1MzIgKmhhbmRsZSwgdWludDMyX3QgZmxhZ3MpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjE4LVx0aW50IHJldDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYxOTpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYyMC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYyMTpcdHJldCA9IGRybV9zeW5jb2JqX2NyZWF0ZShcdTAwMjZzeW5jb2JqLCBmbGFncywgTlVMTCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYyNC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYyNTpcdHJldCA9IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoZmlsZV9wcml2YXRlLCBzeW5jb2JqLCBoYW5kbGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjI2Olx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjI3LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MjktXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MzA6c3RhdGljIGludCBkcm1fc3luY29ial9kZXN0cm95KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjMxLVx0XHRcdCAgICAgICB1MzIgaGFuZGxlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjMyLXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYzMzpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYzNC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MzgtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2Mzk6XHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDAtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDItXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDM6c3RhdGljIGludCBkcm1fc3luY29ial9maWxlX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDQte1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjQ1Olx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDYtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDc6XHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTAtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHJtX3N5bmNvYmpfZmlsZV9mb3BzID0ge1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjUyOlx0LnJlbGVhc2UgPSBkcm1fc3luY29ial9maWxlX3JlbGVhc2UsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTMtfTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTUtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NTY6ICogZHJtX3N5bmNvYmpfZ2V0X2ZkIC0gZ2V0IGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYSBzeW5jb2JqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTctICogQHN5bmNvYmo6IFN5bmMgb2JqZWN0IHRvIGV4cG9ydFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY1OS0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjYwOiAqIEV4cG9ydHMgYSBzeW5jIG9iamVjdCBjcmVhdGVkIHdpdGggZHJtX3N5bmNvYmpfY3JlYXRlKCkgYXMgYSBmaWxlIGRlc2NyaXB0b3IuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NjEtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NjMtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NjQ6aW50IGRybV9zeW5jb2JqX2dldF9mZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIGludCAqcF9mZClcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY2NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjczLVx0ZmlsZSA9IGFub25faW5vZGVfZ2V0ZmlsZShcJiMzNDtzeW5jb2JqX2ZpbGVcJiMzNDssXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NzQ6XHRcdFx0XHQgIFx1MDAyNmRybV9zeW5jb2JqX2ZpbGVfZm9wcyxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY3NS1cdFx0XHRcdCAgc3luY29iaiwgMCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjgwLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjgxOlx0ZHJtX3N5bmNvYmpfZ2V0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjgyLVx0ZmRfaW5zdGFsbChmZCwgZmlsZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjg2LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY4NzpFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2dldF9mZCk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA5MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGNoYW5nZXMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgb2YgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgRGVlcCBpbnRvIFN5bmNvYmogYW5kIEV2ZW50ZmQqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGNoYW5nZWQgaW4gYGRybV9zeW5jb2JqLmNgIGFuZCBgZnMvZXZlbnRmZC5jYC4gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoaXMsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgdG8gYWJzb3JiIHRoZSBjb21wbGV0ZSBtb2RpZmllZCBzZWN0aW9ucyBvZiAqYm90aCogZmlsZXMuIFNraW1taW5nIHdvbiYjMzk7dCBjdXQgaXQgaGVyZS4gSSBuZWVkIHRoZSBmdWxsIGNvbnRleHQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBtb2RpZmljYXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBjaGFuZ2VzIGluIGNvcmUgbG9naWMsIGRhdGEgc3RydWN0dXJlcywgb3IgaW50ZXJmYWNlIGNhbGxzLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGltcGFjdCwgaW50ZWdyYXRpb24gYW5kIGFueSBwb3NzaWJsZSBvcHRpbWl6YXRpb24gdGhhdCBtYXkgYmUgYXZhaWxhYmxlLiBUaGlzIGlzIGhvdyBJIGJlc3QgZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIHdvcmsgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDYwOlx0XG4xNDYxOlx0aW50XG4xNDYyOlx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuMTQ2MzpcdFx0XHRcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNDY0Olx0e1xuMTQ2NTpcdFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtcbjE0NjY6XHRcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcbjE0Njc6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbjE0Njg6XHRcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5O1xuMTQ2OTpcdFx0aW50IHJldDtcbjE0NzA6XHRcbjE0NzE6XHRcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbjE0NzI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuMTQ3MzpcdFxuMTQ3NDpcdFx0aWYgKGFyZ3MtXHUwMDNlZmxhZ3MgXHUwMDI2IH5EUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQVZBSUxBQkxFKVxuMTQ3NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0NzY6XHRcbjE0Nzc6XHRcdGlmIChhcmdzLVx1MDAzZXBhZClcbjE0Nzg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDc5Olx0XG4xNDgwOlx0XHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXHUwMDNlaGFuZGxlKTtcbjE0ODE6XHRcdGlmICghc3luY29iailcbjE0ODI6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4xNDgzOlx0XG4xNDg0Olx0XHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbjE0ODU6XHRcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuMTQ4NjpcdFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4xNDg3Olx0XHRcdGV2X2ZkX2N0eCA9IE5VTEw7XG4xNDg4Olx0XHRcdGdvdG8gZXJyX2ZkZ2V0O1xuMTQ4OTpcdFx0fVxuMTQ5MDpcdFxuMTQ5MTpcdFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuMTQ5MjpcdFx0aWYgKCFlbnRyeSkge1xuMTQ5MzpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTQ5NDpcdFx0XHRnb3RvIGVycl9mZGdldDtcbjE0OTU6XHRcdH1cbjE0OTY6XHRcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuMTQ5NzpcdFx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbjE0OTg6XHRcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbjE0OTk6XHRcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbjE1MDA6XHRcbjE1MDE6XHRcdGRybV9zeW5jb2JqX2FkZF9ldmVudGZkKHN5bmNvYmosIGVudHJ5KTtcbjE1MDI6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDM6XHRcbjE1MDQ6XHRcdHJldHVybiAwO1xuMTUwNTpcdFxuMTUwNjpcdGVycl9mZGdldDpcbjE1MDc6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDg6XHRcdHJldHVybiByZXQ7XG4xNTA5Olx0fVxuMTUxMDpcdFxuMTUxMTpcdGludFxuMTUxMjpcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4xNTEzOlx0XHRcdFx0c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNTE0Olx0e1xuMTUxNTpcdFx0c3RydWN0IGRybV9zeW5jb2JqX2FycmF5ICphcmdzID0gZGF0YTtcbjE1MTY6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzO1xuMTUxNzpcdFx0dWludDMyX3QgaTtcbjE1MTg6XHRcdGludCByZXQ7XG4xNTE5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgRXZlbnRmZCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhpcyBgZXZlbnRmZGAgaXNzdWUuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgaGVhZGVyIGZpbGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgYGV2ZW50ZmRgIGlzICphY3R1YWxseSogaW1wbGVtZW50ZWQuIFRoZSB0eXBpY2FsIGdvLXRvIGxvY2F0aW9ucyBmb3IgdGhhdCBzb3J0IG9mIGFuYWx5c2lzIGFyZSBgZnMvZXZlbnRmZC5jYCDigJMgd2hpY2ggc2hvdWxkIGNvbnRhaW4gdGhlIGZpbGUgc3lzdGVtIGxldmVsIGRyaXZlciBjb2RlIOKAkyBhbmQsIG9mIGNvdXJzZSwgdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUsIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgZm9yIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucy4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB1c2Vyc3BhY2UgYW5kIHRoZSBrZXJuZWwsIHNvIHRoaXMgaW5pdGlhbCBjcm9zcy1jaGVjayBzaG91bGQgcHJvdmlkZSBhIHNvbGlkIGJhc2lzIGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V2ZW50ZmQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHR7XG4gIDkxOlx0XHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZXZlbnRmZF9jdHgsIGtyZWYpO1xuICA5MjpcdFxuICA5MzpcdFx0ZXZlbnRmZF9mcmVlX2N0eChjdHgpO1xuICA5NDpcdH1cbiAgOTU6XHRcbiAgOTY6XHQvKipcbiAgOTc6XHQgKiBldmVudGZkX2N0eF9wdXQgLSBSZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxuICA5ODpcdCAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXG4gIDk5Olx0ICpcbiAxMDA6XHQgKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxuIDEwMTpcdCAqIHdpdGggZXZlbnRmZF9jdHhfZmRnZXQoKSBvciBldmVudGZkX2N0eF9maWxlZ2V0KCkuXG4gMTAyOlx0ICovXG4gMTAzOlx0dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gMTA0Olx0e1xuIDEwNTpcdFx0aWYgKCFjdHgpXG4gMTA2Olx0XHRcdHJldHVybjtcbiAxMDc6XHRcbiAxMDg6XHRcdGtyZWZfcHV0KFx1MDAyNmN0eC1cdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xuIDEwOTpcdH1cbiAxMTA6XHRFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xuIDExMTpcdFxuIDExMjpcdHN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIDExMzpcdHtcbiAxMTQ6XHRcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG4gMTE1Olx0XG4gMTE2Olx0XHR3YWtlX3VwX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExIVVApO1xuIDExNzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG4gMTE4Olx0XHRyZXR1cm4gMDtcbiAxMTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBldmVudGZkLmhgIERldGFpbHMqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgZmlsZS4gSSBuZWVkIGEgcmVmcmVzaGVyIG9uIHRoZSBpbnRyaWNhY2llcyBvZiBgZXZlbnRmZGAuIEkga25vdyB0aGUgYmFzaWMgY29uY2VwdCDigJMgaXQmIzM5O3MgYSBsaWdodHdlaWdodCBtZWNoYW5pc20gZm9yIHNpZ25hbGluZyBldmVudHMgYmV0d2VlbiB1c2Vyc3BhY2UgYW5kIHRoZSBrZXJuZWwsIG9yIGJldHdlZW4ga2VybmVsIHRocmVhZHMsIHVzaW5nIGEgZmlsZSBkZXNjcmlwdG9yLiBCdXQgSSB3YW50IHRvIG5haWwgZG93biB0aGUgc3BlY2lmaWNzLCBwYXJ0aWN1bGFybHkgYXJvdW5kIGl0cyBhdG9taWMgb3BlcmF0aW9ucyBhbmQgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IHNpZ25hbGluZyBtb2Rlcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZWRnZSBjYXNlcyBsdXJraW5nIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoYXQgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHJlbGlhYmlsaXR5IGluIGNvbXBsZXgsIGhpZ2gtY29uY3VycmVuY3kgc2NlbmFyaW9zLiBJIHJlY2FsbCBzb21lIGRpc2N1c3Npb25zIGFib3V0IHRoZSBwb3RlbnRpYWwgb3ZlcmhlYWQgY29tcGFyZWQgdG8gb3RoZXIgc2lnbmFsaW5nIG1ldGhvZHMsIHNvIEnigJlsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrLWZyZWUgYXNwZWN0cyBvZiB0aGUgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IGFueSByZWNlbnQgY2hhbmdlcyBvciBwYXRjaGVzIHRvIHRoYXQgaGVhZGVyLCBvciBzdXJyb3VuZGluZyBjb2RlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBrbm93bGVkZ2Ugb2YgdGhlIG1lbW9yeSBiYXJyaWVycyB1c2VkIGFuZCBob3cgdGhlc2UgcHJvdGVjdCB0aGUgc2hhcmVkIGNvdW50ZXIgYW5kIGVuc3VyZSB2aXNpYmlsaXR5IG9mIGNoYW5nZXMuIEFueSByZWNlbnQgb3B0aW1pemF0aW9ucyB0aGF0IGFpbSB0byByZWR1Y2UgbGF0ZW5jeSBvciBpbXByb3ZlIHBlcmZvcm1hbmNlIGFyZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0IHRvIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZXZlbnRmZC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA3NTpcdFxuICA3NjpcdHN0YXRpYyBpbmxpbmUgYm9vbCBldmVudGZkX3NpZ25hbF9hbGxvd2VkKHZvaWQpXG4gIDc3Olx0e1xuICA3ODpcdFx0cmV0dXJuIHRydWU7XG4gIDc5Olx0fVxuICA4MDpcdFxuICA4MTpcdHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KVxuICA4MjpcdHtcbiAgODM6XHRcbiAgODQ6XHR9XG4gIDg1Olx0XG4gIDg2Olx0I2VuZGlmXG4gIDg3Olx0XG4gIDg4Olx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuICA4OTpcdHtcbiAgOTA6XHRcdGV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0REVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXG4gIDk0Olx0XG4gIDk1Olx0I2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cbiAgOTY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOTcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA3MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgVGhpcyBQYXRjaCBTZXJpZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGEgcGF0Y2ggc2VyaWVzIHRoYXQgaW50cm9kdWNlcyBhIHNpbXBsZSBudWxsIGNoZWNrIChgaWYgKCFjdHgpIHJldHVybjtgKSB0byBgZXZlbnRmZF9jdHhfcHV0KClgLCBhZGRzIGEgYERFRklORV9GUkVFYCBtYWNybyBmb3IgZXZlbnRmZCBjb250ZXh0cywgYW5kIHJlZmFjdG9ycyByZXNvdXJjZSBtYW5hZ2VtZW50IGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKClgIHRvIHVzZSB0aGF0IG5ldyBtYWNybyBpbnN0ZWFkIG9mIG1hbnVhbCBlcnJvciBoYW5kbGluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlLiBBYnNvbHV0ZWx5ISBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgY2FsbGVkIHRocm91Z2ggdGhlIGBEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEYCBpb2N0bCwgYW5kIHN5emthbGxlciBzdXBwb3J0cyBEUk0gaW9jdGxzLCBpbmNsdWRpbmcgdGhvc2UgdXNlZCBieSB2aXJ0dWFsIGRyaXZlcnMgbGlrZSBgdmttc2AgYW5kIG90aGVycy4gVGhpcyBtYWtlcyBpdCBhY2Nlc3NpYmxlLiBBbHNvLCBgZXZlbnRmZF9jdHhfcHV0YCBpcyBwYXJ0IG9mIGNvcmUga2VybmVsLCBLVk0sIHZmaW8sIHZob3N0LCBkcm0sIGlvX3VyaW5nLCBhbmQgb3RoZXJzLCBzbyBpdCYjMzk7cyB3aWRlbHkgdXNlZC4KCk5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTZWN0aW9uIDEgc3BlY2lmaWNhbGx5IHdhcm5zIHVzICpub3QqIHRvIGJsaW5kbHkgdHJ1c3QgY2xhaW1zIG9mICYjMzQ7bm8gZnVuY3Rpb25hbCBjaGFuZ2UmIzM0OyBvciAmIzM0O3JlZmFjdG9yaW5nLiYjMzQ7IFRoZXkgaGlnaGxpZ2h0IHRoYXQgZXZlbiByZWZhY3RvcmluZ3MgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncy4gU2VjdGlvbiAzIHJlaW5mb3JjZXMgdGhpcyBieSBzdGF0aW5nIHRoYXQgYW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGNvZGUsIGluY2x1ZGluZyByZWZhY3RvcmluZ3MsIHJlcXVpcmVzIGZ1enppbmcuIFRoZSBwYXRjaCAqZG9lcyogdG91Y2ggcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgdGhlcmVmb3JlIEkgdGhpbmsgdGhlIGV2YWx1YXRpb24gc2hvdWxkIGJlIFdvcnRoRnV6emluZyA9IHRydWUuCgpOZXh0LCBJIG5lZWQgdG8gZGVmaW5lIHRoZSBgRm9jdXNTeW1ib2xzYC4gQ2xlYXJseSwgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGlzIGRpcmVjdGx5IG1vZGlmaWVkLCBtYWtpbmcgaXQgYSB0YXJnZXQuIFRoZSBgZXZlbnRmZF9jdHhfcHV0YCBpcyBkaXJlY3RseSBtb2RpZmllZCwgdG9vLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoYXQgb25lLCB0aG91Z2guCgpTZWN0aW9uIDQgd2FybnMgYWdhaW5zdCBsaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbS4gSXMgYGV2ZW50ZmRfY3R4X3B1dGAgdWJpcXVpdG91cywgb3IgZm9jdXNlZD8gVGhlIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBmdW5jdGlvbiBpcyBzcGVjaWZpYyB0byBhIERSTSBpb2N0bCwgc28gaXQmIzM5O3MgYSBkZWZpbml0ZSBmb2N1cyBzeW1ib2wuIGBldmVudGZkX2N0eF9wdXRgIHJlbGVhc2VzIGV2ZW50ZmQgY29udGV4dHMsIGJ1dCBpcyBub3cgbW9kaWZpZWQgdG8gaGFuZGxlIG51bGwgYGN0eGAuIFNpbmNlIHRoaXMgaXMgYSBzcGVjaWZpYyBtb2RpZmljYXRpb24sIEkgdGhpbmsgSSYjMzk7bGwgaW5jbHVkZSBpdCBpbiB0aGUgZm9jdXMgc3ltYm9scy4KCkkmIzM5O20gZ29pbmcgdG8gZGV0ZXJtaW5lIGBldmVudGZkX2N0eF9wdXRgIGNhbGxlcnMgaW4gdGhlIGtlcm5lbCB0byBtYWtlIHN1cmUgdGhhdCBkZWNpc2lvbiBpcyBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXGJldmVudGZkX2N0eF9wdXRcXGImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUxNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI3MjU9dm9pZCBrdm1faHZfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3MzEtXHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2aHYtXHUwMDNlY29ubl90b19ldnQsIGV2ZW50ZmQsIGkpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjczMjpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3MzMtXHRpZHJfZGVzdHJveShcdTAwMjZodi1cdTAwM2Vjb25uX3RvX2V2dCk7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI3MzY9c3RhdGljIGludCBrdm1faHZfZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgY29ubl9pZCwgaW50IGZkKVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzU1LVx0XHRyZXQgPSAtRUVYSVNUO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jOjI3NTY6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjc1Ny1cdHJldHVybiByZXQ7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI3NjA9c3RhdGljIGludCBrdm1faHZfZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBjb25uX2lkKVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzcyLVx0c3luY2hyb25pemVfc3JjdShcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Mjc3MzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzc0LVx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTIxMzQ9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjE5OS1cdGlmIChldmVudGZkKVxuYXJjaC94ODYva3ZtL3hlbi5jOjIyMDA6XHRcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjAxLW91dF9ub2V2ZW50ZmQ6XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTIyMDY9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgcG9ydClcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjIxOC1cdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjIxOTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTIyMjAtXHRrZnJlZShldnRjaG5mZCk7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTIyMjQ9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfcmVzZXQoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0yMjU3LVx0XHRpZiAoIWV2dGNobmZkLVx1MDAzZWRlbGl2ZXIucG9ydC5wb3J0KVxuYXJjaC94ODYva3ZtL3hlbi5jOjIyNTg6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTIyNTktXHRcdGtmcmVlKGV2dGNobmZkKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjM1Nj12b2lkIGt2bV94ZW5fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTIzNjQtXHRcdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjM2NTpcdFx0XHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMjM2Ni1cdFx0a2ZyZWUoZXZ0Y2huZmQpO1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmM9NDYwPXN0YXRpYyB2b2lkIGhwcml2X3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTUzNi1cdGlmIChocHJpdi1cdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkKVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYzo1Mzc6XHRcdGV2ZW50ZmRfY3R4X3B1dChocHJpdi1cdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmMtNTM4LVxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jPTc5Mz1zdGF0aWMgaW50IGV2ZW50ZmRfdW5yZWdpc3RlcihzdHJ1Y3QgaGxfZnByaXYgKmhwcml2LCBzdHJ1Y3QgaGxfaW5mb19hcmdzICphcmdzKVxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jLTgwMC1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jOjgwMTpcdGV2ZW50ZmRfY3R4X3B1dChocHJpdi1cdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jLTgwMi1cdGhwcml2LVx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQgPSBOVUxMO1xuLS1cbmRyaXZlcnMvZnBnYS9kZmwuYz0xODY5PXN0YXRpYyBpbnQgZG9fc2V0X2lycV90cmlnZ2VyKHN0cnVjdCBkZmxfZmVhdHVyZSAqZmVhdHVyZSwgdW5zaWduZWQgaW50IGlkeCxcbi0tXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTg4MC1cdFx0a2ZyZWUoZmVhdHVyZS1cdTAwM2VpcnFfY3R4W2lkeF0ubmFtZSk7XG5kcml2ZXJzL2ZwZ2EvZGZsLmM6MTg4MTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGZlYXR1cmUtXHUwMDNlaXJxX2N0eFtpZHhdLnRyaWdnZXIpO1xuZHJpdmVycy9mcGdhL2RmbC5jLTE4ODItXHRcdGZlYXR1cmUtXHUwMDNlaXJxX2N0eFtpZHhdLnRyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvZnBnYS9kZmwuYy0xOTA2LVxuZHJpdmVycy9mcGdhL2RmbC5jOjE5MDc6XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTkwOC1mcmVlX25hbWU6XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MzAzPXN5bmNvYmpfZXZlbnRmZF9lbnRyeV9mcmVlKHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5KVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzA0LXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjMwNTpcdGV2ZW50ZmRfY3R4X3B1dChlbnRyeS1cdTAwM2Vldl9mZF9jdHgpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzA2LVx0ZG1hX2ZlbmNlX3B1dChlbnRyeS1cdTAwM2VmZW5jZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmM9NjkwPXN0YXRpYyB2b2lkIGludGVsX3ZncHVfcmVsZWFzZV9tc2lfZXZlbnRmZF9jdHgoc3RydWN0IGludGVsX3ZncHUgKnZncHUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMtNjk1LVx0aWYgKHRyaWdnZXIpIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jOjY5NjpcdFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMtNjk3LVx0XHR2Z3B1LVx1MDAzZW1zaV90cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTI1ND1zdGF0aWMgdm9pZCBtc2h2X2lycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTI2Ny1cdFx0bXNodl9pcnFmZF9yZXNhbXBsZXJfc2h1dGRvd24oaXJxZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzoyNjg6XHRcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cdTAwM2VpcnFmZF9yZXNhbXBsZWZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjY5LVx0fVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjczLVx0ICovXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjI3NDpcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cdTAwM2VpcnFmZF9ldmVudGZkX2N0eCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTI3NS1cdGtmcmVlKGlycWZkKTtcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTM5Mz1zdGF0aWMgaW50IG1zaHZfaXJxZmRfYXNzaWduKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MjktXHRpZiAocmVzYW1wbGVmZCBcdTAwMjZcdTAwMjYgIUlTX0VSUihyZXNhbXBsZWZkKSlcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NTMwOlx0XHRldmVudGZkX2N0eF9wdXQocmVzYW1wbGVmZCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTUzMS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTMyLVx0aWYgKGV2ZW50ZmQgXHUwMDI2XHUwMDI2ICFJU19FUlIoZXZlbnRmZCkpXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjUzMzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzQtXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz01NDM9c3RhdGljIGludCBtc2h2X2lycWZkX2RlYXNzaWduKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01NjItXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjU2MzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTY0LVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NjMzPXN0YXRpYyB2b2lkIGlvZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBtc2h2X2lvZXZlbnRmZCAqcCwgdTY0IHBhcnRpdGlvbl9pZClcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTYzNi1cdFx0bXNodl91bnJlZ2lzdGVyX2Rvb3JiZWxsKHBhcnRpdGlvbl9pZCwgcC1cdTAwM2Vpb3ZudGZkX2Rvb3JiZWxsX2lkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NjM3Olx0ZXZlbnRmZF9jdHhfcHV0KHAtXHUwMDNlaW92bnRmZF9ldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNjM4LVx0a2ZyZWUocCk7XG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz02NzM9c3RhdGljIGludCBtc2h2X2Fzc2lnbl9pb2V2ZW50ZmQoc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTc2Ny1mYWlsOlxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo3Njg6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTc2OS1cbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTc3Mz1zdGF0aWMgaW50IG1zaHZfZGVhc3NpZ25faW9ldmVudGZkKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy04MTQtXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjgxNTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtODE2LVxuLS1cbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jPTk3Mz1zdGF0aWMgaW50IG1zaHZfdnRsX3NpbnRfaW9jdGxfc2V0X2V2ZW50ZmQoc3RydWN0IG1zaHZfdnRsX3NldF9ldmVudGZkIF9fdXNlciAqYXJnKVxuLS1cbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jLTk5NS1cdFx0c3luY2hyb25pemVfcmN1KCk7XG5kcml2ZXJzL2h2L21zaHZfdnRsX21haW4uYzo5OTY6XHRcdGV2ZW50ZmRfY3R4X3B1dChvbGRfZXZlbnRmZCk7XG5kcml2ZXJzL2h2L21zaHZfdnRsX21haW4uYy05OTctXHR9XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTIwNzI9c3RhdGljIGludCBVVkVSQlNfSEFORExFUihNTFg1X0lCX01FVEhPRF9ERVZYX1NVQlNDUklCRV9FVkVOVCkoXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIyNDktXHRcdGlmIChldmVudF9zdWItXHUwMDNlZXZlbnRmZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyMjUwOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChldmVudF9zdWItXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjI1MS1cdFx0dXZlcmJzX3VvYmplY3RfcHV0KFx1MDAyNmV2ZW50X3N1Yi1cdTAwM2Vldl9maWxlLVx1MDAzZXVvYmopO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yOTQwPXN0YXRpYyB2b2lkIGRldnhfZnJlZV9zdWJzY3JpcHRpb24oc3RydWN0IHJjdV9oZWFkICpyY3UpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI5NDUtXHRpZiAoZXZlbnRfc3ViLVx1MDAzZWV2ZW50ZmQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6Mjk0NjpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50X3N1Yi1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yOTQ3LVx0dXZlcmJzX3VvYmplY3RfcHV0KFx1MDAyNmV2ZW50X3N1Yi1cdTAwM2Vldl9maWxlLVx1MDAzZXVvYmopO1xuLS1cbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYz0xOTE9c3RhdGljIHZvaWQgaXJxX2ZyZWUodm9pZCAqcHJpdmF0ZSlcbi0tXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMTk0LVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jOjE5NTpcdGV2ZW50ZmRfY3R4X3B1dChldl9jdHgpO1xuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTE5Ni19XG4tLVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jPTE5OD1zdGF0aWMgbG9uZyBhZnVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXG4tLVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTI1OS1cdFx0aWYgKHJjKVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jOjI2MDpcdFx0XHRldmVudGZkX2N0eF9wdXQoZXZfY3R4KTtcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0yNjEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM9NDEwPXN0YXRpYyBpbnQgdmZpb19jY3dfbWRldl9zZXRfaXJxcyhzdHJ1Y3QgdmZpb19jY3dfcHJpdmF0ZSAqcHJpdmF0ZSxcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ2MC1cdFx0XHRpZiAoKmN0eClcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM6NDYxOlx0XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KCpjdHgpO1xuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NjItXHRcdFx0KmN0eCA9IE5VTEw7XG4tLVxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NzAtXHRcdFx0aWYgKCpjdHgpXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jOjQ3MTpcdFx0XHRcdGV2ZW50ZmRfY3R4X3B1dCgqY3R4KTtcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMtNDcyLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMTcyPXN0YXRpYyBpbnQgdmZpb19hcF9zZXRfcmVxdWVzdF9pcnEoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE4Ny1cdFx0aWYgKG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIxODg6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTg5LVx0XHRtYXRyaXhfbWRldi1cdTAwM2VyZXFfdHJpZ2dlciA9IE5VTEw7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIxOTUtXHRcdGlmIChtYXRyaXhfbWRldi1cdTAwM2VyZXFfdHJpZ2dlcilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMTk2Olx0XHRcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cdTAwM2VyZXFfdHJpZ2dlcik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE5Ny1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjIwNj1zdGF0aWMgaW50IHZmaW9fYXBfc2V0X2NmZ19jaGFuZ2VfaXJxKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjIwLVx0XHRpZiAobWF0cml4X21kZXYtXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyMjE6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVx1MDAzZWNmZ19jaGdfdHJpZ2dlcik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIyMi1cdFx0bWF0cml4X21kZXYtXHUwMDNlY2ZnX2NoZ190cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIyOC1cdFx0aWYgKG1hdHJpeF9tZGV2LVx1MDAzZWNmZ19jaGdfdHJpZ2dlcilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjI5Olx0XHRcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cdTAwM2VjZmdfY2hnX3RyaWdnZXIpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyMzAtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYz0yMjg5PXN0YXRpYyB2b2lkIGZmc19kYXRhX2NsZWFyKHN0cnVjdCBmZnNfZGF0YSAqZmZzKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmMtMjMxMy1cdGlmIChmZnMtXHUwMDNlZmZzX2V2ZW50ZmQpIHtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmM6MjMxNDpcdFx0ZXZlbnRmZF9jdHhfcHV0KGZmcy1cdTAwM2VmZnNfZXZlbnRmZCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9mcy5jLTIzMTUtXHRcdGZmcy1cdTAwM2VmZnNfZXZlbnRmZCA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYz00OTY9c3RhdGljIHZvaWQgdmR1c2VfZGV2X3Jlc2V0KHN0cnVjdCB2ZHVzZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTUzMi1cdFx0XHRpZiAodnEtXHUwMDNla2lja2ZkKVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo1MzM6XHRcdFx0XHRldmVudGZkX2N0eF9wdXQodnEtXHUwMDNla2lja2ZkKTtcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtNTM0LVx0XHRcdHZxLVx1MDAzZWtpY2tmZCA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYz0xMTk5PXN0YXRpYyBpbnQgdmR1c2Vfa2lja2ZkX3NldHVwKHN0cnVjdCB2ZHVzZV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTEyMTktXHRpZiAodnEtXHUwMDNla2lja2ZkKVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzoxMjIwOlx0XHRldmVudGZkX2N0eF9wdXQodnEtXHUwMDNla2lja2ZkKTtcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtMTIyMS1cdHZxLVx1MDAzZWtpY2tmZCA9IGN0eDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYz01OD1zdGF0aWMgaW50IHZmaW9fY2R4X21zaV9zZXRfdmVjdG9yX3NpZ25hbChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTcxLVx0XHRrZnJlZSh2ZGV2LVx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0ubmFtZSk7XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzo3MjpcdFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXHUwMDNlY2R4X2lycXNbdmVjdG9yXS50cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTczLVx0XHR2ZGV2LVx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0udHJpZ2dlciA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtOTMtXHRcdGtmcmVlKHZkZXYtXHUwMDNlY2R4X2lycXNbdmVjdG9yXS5uYW1lKTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjk0Olx0XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy05NS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYz02MT1zdGF0aWMgaW50IHZmaW9fc2V0X3RyaWdnZXIoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy03Mi1cdFx0a2ZyZWUoaXJxLVx1MDAzZW5hbWUpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmM6NzM6XHRcdGV2ZW50ZmRfY3R4X3B1dChpcnEtXHUwMDNldHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy03NC1cdFx0aXJxLVx1MDAzZXRyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTk2LVx0XHRrZnJlZShpcnEtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYzo5NzpcdFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmMtOTgtXHRcdGlycS1cdTAwM2V0cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00ND1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9ldmVudGZkX3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ4LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NDk6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZC1cdTAwM2VjdHgpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTAtXHRrZnJlZShldmVudGZkKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00MTM9c3RhdGljIGludCB2ZmlvX3BjaV9jb3JlX3BtX2VudHJ5X3dpdGhfd2FrZXVwKFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQzOC1cdGlmIChyZXQpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo0Mzk6XHRcdGV2ZW50ZmRfY3R4X3B1dChlZmRjdHgpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDQwLVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTQ0ND1zdGF0aWMgdm9pZCBfX3ZmaW9fcGNpX3J1bnRpbWVfcG1fZXhpdChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDUwLVx0XHRpZiAodmRldi1cdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4KSB7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo0NTE6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXHUwMDNlcG1fd2FrZV9ldmVudGZkX2N0eCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NTItXHRcdFx0dmRldi1cdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4ID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9MzI0PXN0YXRpYyBpbnQgdmZpb19pbnR4X3NldF9zaWduYWwoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNDItXHRcdHZmaW9fdmlycWZkX2ZsdXNoX3RocmVhZChcdTAwMjZjdHgtXHUwMDNldW5tYXNrKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzozNDM6XHRcdGV2ZW50ZmRfY3R4X3B1dChvbGQpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTM0NC1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9MzQ5PXN0YXRpYyB2b2lkIHZmaW9faW50eF9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzYyLVx0XHRpZiAoY3R4LVx1MDAzZXRyaWdnZXIpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6MzYzOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgtXHUwMDNldHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzY0LVx0XHRrZnJlZShjdHgtXHUwMDNlbmFtZSk7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTQ0Nz1zdGF0aWMgaW50IHZmaW9fbXNpX3NldF92ZWN0b3Jfc2lnbmFsKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNDY1LVx0XHRrZnJlZShjdHgtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6NDY2Olx0XHRldmVudGZkX2N0eF9wdXQoY3R4LVx1MDAzZXRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTQ2Ny1cdFx0dmZpb19pcnFfY3R4X2ZyZWUodmRldiwgY3R4LCB2ZWN0b3IpO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy01MjUtb3V0X3B1dF9ldmVudGZkX2N0eDpcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo1MjY6XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNTI3LW91dF9mcmVlX25hbWU6XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTYzND1zdGF0aWMgaW50IHZmaW9fcGNpX3NldF9pbnR4X3RyaWdnZXIoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy02NjItXHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHRyaWdnZXIpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6NjYzOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy02NjQtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTczND1zdGF0aWMgaW50IHZmaW9fcGNpX3NldF9jdHhfdHJpZ2dlcl9zaW5nbGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy03OTMtXHRcdFx0aWYgKHJldClcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo3OTQ6XHRcdFx0XHRldmVudGZkX2N0eF9wdXQoZWZkY3R4KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy03OTUtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM9MTgyPXN0YXRpYyBpbnQgdmZpb19zZXRfdHJpZ2dlcihzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsIGludCBpbmRleCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xODktXHRcdGRpc2FibGVfaXJxKGlycS1cdTAwM2Vod2lycSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzoxOTA6XHRcdGV2ZW50ZmRfY3R4X3B1dChpcnEtXHUwMDNldHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xOTEtXHRcdGlycS1cdTAwM2V0cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYz0zNTE9dm9pZCB2ZmlvX3BsYXRmb3JtX2lycV9jbGVhbnVwKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zNjAtXHRcdFx0aWYgKHZkZXYtXHUwMDNlaXJxc1tpXS50cmlnZ2VyKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzYxOlx0XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXHUwMDNlaXJxc1tpXS50cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM2Mi1cdFx0XHRrZnJlZSh2ZGV2LVx1MDAzZWlycXNbaV0ubmFtZSk7XG4tLVxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jPTg1PXN0YXRpYyB2b2lkIHZpcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jLTkxLVx0Zmx1c2hfd29yayhcdTAwMjZ2aXJxZmQtXHUwMDNlaW5qZWN0KTtcbmRyaXZlcnMvdmZpby92aXJxZmQuYzo5MjpcdGV2ZW50ZmRfY3R4X3B1dCh2aXJxZmQtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtOTMtXG4tLVxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jPTExMT1pbnQgdmZpb192aXJxZmRfZW5hYmxlKHZvaWQgKm9wYXF1ZSxcbi0tXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtMTg0LWVycl9idXN5OlxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jOjE4NTpcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZHJpdmVycy92ZmlvL3ZpcnFmZC5jLTE4Ni1lcnJfZmQ6XG4tLVxuZHJpdmVycy92aG9zdC92ZHBhLmM9NTE5PXN0YXRpYyB2b2lkIHZob3N0X3ZkcGFfY29uZmlnX3B1dChzdHJ1Y3Qgdmhvc3RfdmRwYSAqdilcbi0tXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01MjEtXHRpZiAodi1cdTAwM2Vjb25maWdfY3R4KSB7XG5kcml2ZXJzL3Zob3N0L3ZkcGEuYzo1MjI6XHRcdGV2ZW50ZmRfY3R4X3B1dCh2LVx1MDAzZWNvbmZpZ19jdHgpO1xuZHJpdmVycy92aG9zdC92ZHBhLmMtNTIzLVx0XHR2LVx1MDAzZWNvbmZpZ19jdHggPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmhvc3QvdmRwYS5jPTUyNz1zdGF0aWMgbG9uZyB2aG9zdF92ZHBhX3NldF9jb25maWdfY2FsbChzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiwgdTMyIF9fdXNlciAqYXJncClcbi0tXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01NDEtXHRpZiAoIUlTX0VSUl9PUl9OVUxMKGN0eCkpXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYzo1NDI6XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZHJpdmVycy92aG9zdC92ZHBhLmMtNTQzLVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0xMjAzPXZvaWQgdmhvc3RfZGV2X2NsZWFudXAoc3RydWN0IHZob3N0X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjA4LVx0XHRpZiAoZGV2LVx1MDAzZXZxc1tpXS1cdTAwM2VlcnJvcl9jdHgpXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIwOTpcdFx0XHRldmVudGZkX2N0eF9wdXQoZGV2LVx1MDAzZXZxc1tpXS1cdTAwM2VlcnJvcl9jdHgpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTAtXHRcdGlmIChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWtpY2spXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTItXHRcdGlmIChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWNhbGxfY3R4LmN0eClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjEzOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWNhbGxfY3R4LmN0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxNC1cdFx0dmhvc3RfdnFfcmVzZXQoZGV2LCBkZXYtXHUwMDNldnFzW2ldKTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxNy1cdGlmIChkZXYtXHUwMDNlbG9nX2N0eClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjE4Olx0XHRldmVudGZkX2N0eF9wdXQoZGV2LVx1MDAzZWxvZ19jdHgpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTktXHRkZXYtXHUwMDNlbG9nX2N0eCA9IE5VTEw7XG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTIxNTA9bG9uZyB2aG9zdF92cmluZ19pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHZvaWQgX191c2VyICphcmdwKVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMjc0LVx0aWYgKCFJU19FUlJfT1JfTlVMTChjdHgpKVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjIyNzU6XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzYtXHRpZiAoZmlsZXApXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTIzMjE9bG9uZyB2aG9zdF9kZXZfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjQxOS1cdFx0aWYgKGN0eClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyNDIwOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTI0MjEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jPTQzPXN0YXRpYyB2b2lkIGFjcm5faW9ldmVudGZkX3NodXRkb3duKHN0cnVjdCBhY3JuX3ZtICp2bSwgc3RydWN0IGhzbV9pb2V2ZW50ZmQgKnApXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtNDYtXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYzo0NzpcdGV2ZW50ZmRfY3R4X3B1dChwLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtNDgtXHRsaXN0X2RlbChcdTAwMjZwLVx1MDAzZWxpc3QpO1xuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jPTc2PXN0YXRpYyBpbnQgYWNybl9pb2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBhY3JuX3ZtICp2bSxcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy0xNDItZmFpbDpcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjE0MzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE0NC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9MTQ3PXN0YXRpYyBpbnQgYWNybl9pb2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE2OC1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjE2OTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE3MC1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM9NjA9c3RhdGljIHZvaWQgaHNtX2lycWZkX3NodXRkb3duX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtNzItXHRldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShpcnFmZC1cdTAwM2VldmVudGZkLCBcdTAwMjZpcnFmZC1cdTAwM2V3YWl0LCBcdTAwMjZjbnQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzo3MzpcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtNzQtXHRrZnJlZShpcnFmZCk7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz0xMTE9c3RhdGljIGludCBhY3JuX2lycWZkX2Fzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sIHN0cnVjdCBhY3JuX2lycWZkICphcmdzKVxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTcwLWZhaWw6XG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jOjE3MTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTcyLW91dDpcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jPTE3Nz1zdGF0aWMgaW50IGFjcm5faXJxZmRfZGVhc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTk1LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZtLVx1MDAzZWlycWZkc19sb2NrKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM6MTk2Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xOTctXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTkxMj1zdGF0aWMgdm9pZCBpcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTkyMS1cdGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKGtpcnFmZC1cdTAwM2VldmVudGZkLCBcdTAwMjZraXJxZmQtXHUwMDNld2FpdCwgXHUwMDI2Y250KTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzo5MjI6XHRldmVudGZkX2N0eF9wdXQoa2lycWZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTkyMy1cdGtmcmVlKGtpcnFmZCk7XG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTk3Nj1zdGF0aWMgaW50IHByaXZjbWRfaXJxZmRfYXNzaWduKHN0cnVjdCBwcml2Y21kX2lycWZkICppcnFmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA0NC1lcnJvcl9ldmVudGZkOlxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjEwNDU6XHRldmVudGZkX2N0eF9wdXQoa2lycWZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEwNDYtXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTEwNTI9c3RhdGljIGludCBwcml2Y21kX2lycWZkX2RlYXNzaWduKHN0cnVjdCBwcml2Y21kX2lycWZkICppcnFmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA3Mi1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMDczOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEwNzQtXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTEzNDY9c3RhdGljIHZvaWQgaW9ldmVudGZkX2ZyZWUoc3RydWN0IHByaXZjbWRfa2VybmVsX2lvZXZlbnRmZCAqa2lvZXZlbnRmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTM0OC1cdGxpc3RfZGVsKFx1MDAyNmtpb2V2ZW50ZmQtXHUwMDNlbGlzdCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTM0OTpcdGV2ZW50ZmRfY3R4X3B1dChraW9ldmVudGZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEzNTAtXHRrZnJlZShraW9ldmVudGZkKTtcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTM1Mz1zdGF0aWMgaW50IHByaXZjbWRfaW9ldmVudGZkX2Fzc2lnbihzdHJ1Y3QgcHJpdmNtZF9pb2V2ZW50ZmQgKmlvZXZlbnRmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQwMy1lcnJvcl9ldmVudGZkOlxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjE0MDQ6XHRldmVudGZkX2N0eF9wdXQoa2lvZXZlbnRmZC1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xNDA1LVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xNDExPXN0YXRpYyBpbnQgcHJpdmNtZF9pb2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IHByaXZjbWRfaW9ldmVudGZkICppb2V2ZW50ZmQpXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0NTQtXHRtdXRleF91bmxvY2soXHUwMDI2aW9yZXFfbG9jayk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTQ1NTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xNDU2LVxuLS1cbmZzL2Fpby5jPTExNTY9c3RhdGljIGlubGluZSB2b2lkIGlvY2JfZGVzdHJveShzdHJ1Y3QgYWlvX2tpb2NiICppb2NiKVxuLS1cbmZzL2Fpby5jLTExNTgtXHRpZiAoaW9jYi1cdTAwM2VraV9ldmVudGZkKVxuZnMvYWlvLmM6MTE1OTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlvY2ItXHUwMDNla2lfZXZlbnRmZCk7XG5mcy9haW8uYy0xMTYwLVx0aWYgKGlvY2ItXHUwMDNla2lfZmlscClcbi0tXG5mcy9ldmVudGZkLmM9ODk9c3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmZzL2V2ZW50ZmQuYy05Ni0vKipcbmZzL2V2ZW50ZmQuYzo5NzogKiBldmVudGZkX2N0eF9wdXQgLSBSZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTk4LSAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXG4tLVxuZnMvZXZlbnRmZC5jLTEwMi0gKi9cbmZzL2V2ZW50ZmQuYzoxMDM6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG5mcy9ldmVudGZkLmMtMTA0LXtcbi0tXG5mcy9ldmVudGZkLmMtMTA5LX1cbmZzL2V2ZW50ZmQuYzoxMTA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmZzL2V2ZW50ZmQuYy0xMTEtXG5mcy9ldmVudGZkLmM9MTEyPXN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2V2ZW50ZmQuYy0xMTYtXHR3YWtlX3VwX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExIVVApO1xuZnMvZXZlbnRmZC5jOjExNzpcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZnMvZXZlbnRmZC5jLTExOC1cdHJldHVybiAwO1xuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oPTMxPXN0cnVjdCBmaWxlO1xuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTM0LVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg6MzU6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpO1xuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtMzYtc3RydWN0IGZpbGUgKmV2ZW50ZmRfZmdldChpbnQgZmQpO1xuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oPTYxPXN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbF9tYXNrKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3BvbGxfdCBtYXNrKVxuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTY0LVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg6NjU6c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTY2LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaD04OD1zdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtOTItXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDo5MzpERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSlcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTk0LVxuLS1cbmlvX3VyaW5nL2V2ZW50ZmQuYz0yOD1zdGF0aWMgdm9pZCBpb19ldmVudGZkX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpyY3UpXG4tLVxuaW9fdXJpbmcvZXZlbnRmZC5jLTMxLVxuaW9fdXJpbmcvZXZlbnRmZC5jOjMyOlx0ZXZlbnRmZF9jdHhfcHV0KGV2X2ZkLVx1MDAzZWNxX2V2X2ZkKTtcbmlvX3VyaW5nL2V2ZW50ZmQuYy0zMy1cdGtmcmVlKGV2X2ZkKTtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTAyMD1zdGF0aWMgdm9pZCBtZW1jZ19ldmVudF9yZW1vdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xMDMyLVxubW0vbWVtY29udHJvbC12MS5jOjEwMzM6XHRldmVudGZkX2N0eF9wdXQoZXZlbnQtXHUwMDNlZXZlbnRmZCk7XG5tbS9tZW1jb250cm9sLXYxLmMtMTAzNC1cdGtmcmVlKGV2ZW50KTtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTA5ND1zdGF0aWMgc3NpemVfdCBtZW1jZ193cml0ZV9ldmVudF9jb250cm9sKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtMTIyNy1vdXRfcHV0X2V2ZW50ZmQ6XG5tbS9tZW1jb250cm9sLXYxLmM6MTIyODpcdGV2ZW50ZmRfY3R4X3B1dChldmVudC1cdTAwM2VldmVudGZkKTtcbm1tL21lbWNvbnRyb2wtdjEuYy0xMjI5LW91dF9rZnJlZTpcbi0tXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmM9MTUzND1zdGF0aWMgdm9pZCBtdHR5X2Rpc2FibGVfaW50eChzdHJ1Y3QgbWRldl9zdGF0ZSAqbWRldl9zdGF0ZSlcbi0tXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTUzNi1cdGlmIChtZGV2X3N0YXRlLVx1MDAzZWludHhfZXZ0ZmQpIHtcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYzoxNTM3Olx0XHRldmVudGZkX2N0eF9wdXQobWRldl9zdGF0ZS1cdTAwM2VpbnR4X2V2dGZkKTtcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTM4LVx0XHRtZGV2X3N0YXRlLVx1MDAzZWludHhfZXZ0ZmQgPSBOVUxMO1xuLS1cbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYz0xNTQ0PXN0YXRpYyB2b2lkIG10dHlfZGlzYWJsZV9tc2koc3RydWN0IG1kZXZfc3RhdGUgKm1kZXZfc3RhdGUpXG4tLVxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jLTE1NDYtXHRpZiAobWRldl9zdGF0ZS1cdTAwM2Vtc2lfZXZ0ZmQpIHtcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYzoxNTQ3Olx0XHRldmVudGZkX2N0eF9wdXQobWRldl9zdGF0ZS1cdTAwM2Vtc2lfZXZ0ZmQpO1xuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jLTE1NDgtXHRcdG1kZXZfc3RhdGUtXHUwMDNlbXNpX2V2dGZkID0gTlVMTDtcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmM9MTIzPWlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmMtMTQ2LVx0XHRpcnFmZF9yZXNhbXBsZXJfc2h1dGRvd24oaXJxZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jOjE0NzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZXJlc2FtcGxlZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jLTE0OC1cdH1cbi0tXG52aXJ0L2t2bS9ldmVudGZkLmMtMTU1LSNlbmRpZlxudmlydC9rdm0vZXZlbnRmZC5jOjE1NjpcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cdTAwM2VldmVudGZkKTtcbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNTctXHRrZnJlZShpcnFmZCk7XG4tLVxudmlydC9rdm0vZXZlbnRmZC5jPTM3MT1rdm1faXJxZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9pcnFmZCAqYXJncylcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmMtNTEyLVx0aWYgKHJlc2FtcGxlZmQgXHUwMDI2XHUwMDI2ICFJU19FUlIocmVzYW1wbGVmZCkpXG52aXJ0L2t2bS9ldmVudGZkLmM6NTEzOlx0XHRldmVudGZkX2N0eF9wdXQocmVzYW1wbGVmZCk7XG52aXJ0L2t2bS9ldmVudGZkLmMtNTE0LVxudmlydC9rdm0vZXZlbnRmZC5jLTUxNS1cdGlmIChldmVudGZkIFx1MDAyNlx1MDAyNiAhSVNfRVJSKGV2ZW50ZmQpKVxudmlydC9rdm0vZXZlbnRmZC5jOjUxNjpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jLTUxNy1cbi0tXG52aXJ0L2t2bS9ldmVudGZkLmM9NTkwPWt2bV9pcnFmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxZmQgKmFyZ3MpXG4tLVxudmlydC9rdm0vZXZlbnRmZC5jLTYwNi1cdHNwaW5fdW5sb2NrX2lycShcdTAwMjZrdm0tXHUwMDNlaXJxZmRzLmxvY2spO1xudmlydC9rdm0vZXZlbnRmZC5jOjYwNzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbnZpcnQva3ZtL2V2ZW50ZmQuYy02MDgtXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNTIyCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIOKAkyBhIHByZXR0eSBuaWNoZSBmdW5jdGlvbiwgZGVmaW5pdGVseSBub3Qgc29tZXRoaW5nIEkgZW5jb3VudGVyIGV2ZXJ5IGRheS4gSSBhbHNvIHNlZSB0aGF0IGBldmVudGZkX2N0eF9wdXRgIGlzIGJlaW5nIG1vZGlmaWVkLCB3aGljaCBpcyBkaXJlY3RseSByZWxhdGVkLiBSaWdodCwgc28gd2hhdCBjb25maWdzIGFyZSBpbiBwbGF5IGhlcmU/IEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLgoKTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIG9idmlvdXM6IEkga25vdyBgZHJtX3N5bmNvYmouY2AgdXNlcyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAsIHNvIEkgc2hvdWxkIGNoZWNrIGZvciBgQ09ORklHX0RSTWAuIFNpbWlsYXJseSwgc2luY2UgYGV2ZW50ZmRfY3R4X3B1dGAgZGVhbHMgd2l0aCwgd2VsbCwgYGV2ZW50ZmRgLCBpdCBoYXMgdG8gYmUgYENPTkZJR19FVkVOVEZEYC4KCk5vdywgYmVmb3JlIEkgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBjaGVjayB0aGUga2VybmVsJiMzOTtzIGBpbml0L0tjb25maWdgIGZpbGUgYW5kIHZlcmlmeSBpZiBteSBpbml0aWFsIGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0IGFib3V0IGBDT05GSUdfRVZFTlRGRGAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZpcnN0IGNsdWUgYWJvdXQgdGhlIGRlcGVuZGVuY2llcyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVZFTlRGRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTE5MjM9Y29uZmlnIFRJTUVSRkRcbi0tXG5pbml0L0tjb25maWctMTkzMS1cbmluaXQvS2NvbmZpZzoxOTMyOmNvbmZpZyBFVkVOVEZEXG5pbml0L0tjb25maWctMTkzMy1cdGJvb2wgXCYjMzQ7RW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFwmIzM0OyBpZiBFWFBFUlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI5NDUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFdmVudGZkIE1vZHVsZSBWZXJpZmljYXRpb24gaW4gZnMvTWFrZWZpbGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgYGV2ZW50ZmQub2Agd2l0aGluIHRoZSBgZnMvTWFrZWZpbGVgLiBJdCYjMzk7cyBhIHN0YW5kYXJkIHByb2NlZHVyZSwgYnV0IEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgYnVpbHQgYW5kIGxpbmtlZCBjb3JyZWN0bHksIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYmVlbiBhbnkgcmVjZW50IGNodXJuIGluIHRoZSBmaWxlc3lzdGVtIGluZnJhc3RydWN0dXJlLiBJJiMzOTttIHByaW1hcmlseSBsb29raW5nIGZvciB0aGUgaW5jbHVkZSBwYXRocywgZGVwZW5kZW5jaWVzLCBjb21waWxlciBmbGFncywgYW5kIGFueSBwb3RlbnRpYWxseSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBrYnVpbGRgIHN5c3RlbSB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgbW9kdWxlJiMzOTtzIGJlaGF2aW9yLiBJIHdhbnQgdG8gcnVsZSBvdXQgYW55IGJ1aWxkIGVudmlyb25tZW50IHdlaXJkbmVzcyB0aGF0IGNvdWxkIGNhdXNlIHNpbGVudCBmYWlsdXJlcyBkb3duIHRoZSBsaW5lLCBwb3RlbnRpYWxseSBtYW5pZmVzdGluZyBhcyBzdWJ0bGUgcGVyZm9ybWFuY2UgaXNzdWVzIG9yIGV2ZW4gY3Jhc2hlcy4gSSBhbHNvIHdpbGwgYmUgY2hlY2tpbmcgYW55IG90aGVyIHNpbWlsYXIgbW9kdWxlcyB0aGF0IG1heSBiZSBzaGFyaW5nIHNpbWlsYXIgY29kZSB3aXRoIHRoZSBgZXZlbnRmZC5vYCBtb2R1bGUuIFRoaXMgaXMganVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayBiZWZvcmUgSSBkaWcgZGVlcGVyIGludG8gYW55IHNwZWNpZmljIGlzc3VlcywgYnV0IGVzc2VudGlhbCB0byBtYWtlIHN1cmUgdGhlIGZvdW5kYXRpb24gaXMgc29saWQgYmVmb3JlIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gc3BlY2lmaWNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldmVudGZkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvTWFrZWZpbGU9Mjg9b2JqLSQoQ09ORklHX1RJTUVSRkQpXHRcdCYjNDM7PSB0aW1lcmZkLm9cbmZzL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19FVkVOVEZEKVx0XHQmIzQzOz0gZXZlbnRmZC5vXG5mcy9NYWtlZmlsZS0zMC1vYmotJChDT05GSUdfQUlPKSAgICAgICAgICAgICAgICYjNDM7PSBhaW8ub1xuLS1cbmZzL2Fpby5jLTM2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcdTAwM2VcbmZzL2Fpby5jOjM3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2V2ZW50ZmQuaFx1MDAzZVxuZnMvYWlvLmMtMzgtI2luY2x1ZGUgXHUwMDNjbGludXgvYmxrX3BsdWcuaFx1MDAzZVxuLS1cbmZzL2Fpby5jPTE5Nz1zdHJ1Y3QgYWlvX2tpb2NiIHtcbi0tXG5mcy9haW8uYy0yMTUtXHQgKiBJZiB0aGUgYWlvX3Jlc2ZkIGZpZWxkIG9mIHRoZSB1c2Vyc3BhY2UgaW9jYiBpcyBub3QgemVybyxcbmZzL2Fpby5jOjIxNjpcdCAqIHRoaXMgaXMgdGhlIHVuZGVybHlpbmcgZXZlbnRmZCBjb250ZXh0IHRvIGRlbGl2ZXIgZXZlbnRzIHRvLlxuZnMvYWlvLmMtMjE3LVx0ICovXG5mcy9haW8uYzoyMTg6XHRzdHJ1Y3QgZXZlbnRmZF9jdHhcdCpraV9ldmVudGZkO1xuZnMvYWlvLmMtMjE5LX07XG4tLVxuZnMvYWlvLmM9MTEwNz1zdGF0aWMgaW5saW5lIHN0cnVjdCBhaW9fa2lvY2IgKmFpb19nZXRfcmVxKHN0cnVjdCBraW9jdHggKmN0eClcbi0tXG5mcy9haW8uYy0xMTIzLVx0cmVmY291bnRfc2V0KFx1MDAyNnJlcS1cdTAwM2VraV9yZWZjbnQsIDIpO1xuZnMvYWlvLmM6MTEyNDpcdHJlcS1cdTAwM2VraV9ldmVudGZkID0gTlVMTDtcbmZzL2Fpby5jLTExMjUtXHRyZXR1cm4gcmVxO1xuLS1cbmZzL2Fpby5jPTExNTY9c3RhdGljIGlubGluZSB2b2lkIGlvY2JfZGVzdHJveShzdHJ1Y3QgYWlvX2tpb2NiICppb2NiKVxuZnMvYWlvLmMtMTE1Ny17XG5mcy9haW8uYzoxMTU4Olx0aWYgKGlvY2ItXHUwMDNla2lfZXZlbnRmZClcbmZzL2Fpby5jOjExNTk6XHRcdGV2ZW50ZmRfY3R4X3B1dChpb2NiLVx1MDAzZWtpX2V2ZW50ZmQpO1xuZnMvYWlvLmMtMTE2MC1cdGlmIChpb2NiLVx1MDAzZWtpX2ZpbHApXG4tLVxuZnMvYWlvLmM9MTE3ND1zdGF0aWMgdm9pZCBhaW9fY29tcGxldGUoc3RydWN0IGFpb19raW9jYiAqaW9jYilcbi0tXG5mcy9haW8uYy0xMjMwLVx0ICogQ2hlY2sgaWYgdGhlIHVzZXIgYXNrZWQgdXMgdG8gZGVsaXZlciB0aGUgcmVzdWx0IHRocm91Z2ggYW5cbmZzL2Fpby5jOjEyMzE6XHQgKiBldmVudGZkLiBUaGUgZXZlbnRmZF9zaWduYWwoKSBmdW5jdGlvbiBpcyBzYWZlIHRvIGJlIGNhbGxlZFxuZnMvYWlvLmMtMTIzMi1cdCAqIGZyb20gSVJRIGNvbnRleHQuXG5mcy9haW8uYy0xMjMzLVx0ICovXG5mcy9haW8uYzoxMjM0Olx0aWYgKGlvY2ItXHUwMDNla2lfZXZlbnRmZClcbmZzL2Fpby5jOjEyMzU6XHRcdGV2ZW50ZmRfc2lnbmFsKGlvY2ItXHUwMDNla2lfZXZlbnRmZCk7XG5mcy9haW8uYy0xMjM2LVxuLS1cbmZzL2Fpby5jPTE4NDA9c3RhdGljIGludCBhaW9fcG9sbF93YWtlKHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3YWl0LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYyxcbi0tXG5mcy9haW8uYy0xODcxLVx0XHRpb2NiLVx1MDAzZWtpX3Jlcy5yZXMgPSBtYW5nbGVfcG9sbChtYXNrKTtcbmZzL2Fpby5jOjE4NzI6XHRcdGlmIChpb2NiLVx1MDAzZWtpX2V2ZW50ZmQgXHUwMDI2XHUwMDI2ICFldmVudGZkX3NpZ25hbF9hbGxvd2VkKCkpIHtcbmZzL2Fpby5jLTE4NzMtXHRcdFx0aW9jYiA9IE5VTEw7XG4tLVxuZnMvYWlvLmM9MjAyMj1zdGF0aWMgaW50IF9faW9fc3VibWl0X29uZShzdHJ1Y3Qga2lvY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBpb2NiICppb2NiLFxuLS1cbmZzL2Fpby5jLTIwMzAtXHRpZiAoaW9jYi1cdTAwM2VhaW9fZmxhZ3MgXHUwMDI2IElPQ0JfRkxBR19SRVNGRCkge1xuZnMvYWlvLmM6MjAzMTpcdFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldmVudGZkO1xuZnMvYWlvLmMtMjAzMi1cdFx0Lypcbi0tXG5mcy9haW8uYy0yMDM0LVx0XHQgKiBpbnN0YW5jZSBvZiB0aGUgZmlsZSogbm93LiBUaGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgYmVcbmZzL2Fpby5jOjIwMzU6XHRcdCAqIGFuIGV2ZW50ZmQoKSBmZCwgYW5kIHdpbGwgYmUgc2lnbmFsZWQgZm9yIGVhY2ggY29tcGxldGVkXG5mcy9haW8uYzoyMDM2Olx0XHQgKiBldmVudCB1c2luZyB0aGUgZXZlbnRmZF9zaWduYWwoKSBmdW5jdGlvbi5cbmZzL2Fpby5jLTIwMzctXHRcdCAqL1xuZnMvYWlvLmM6MjAzODpcdFx0ZXZlbnRmZCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGlvY2ItXHUwMDNlYWlvX3Jlc2ZkKTtcbmZzL2Fpby5jOjIwMzk6XHRcdGlmIChJU19FUlIoZXZlbnRmZCkpXG5mcy9haW8uYzoyMDQwOlx0XHRcdHJldHVybiBQVFJfRVJSKGV2ZW50ZmQpO1xuZnMvYWlvLmMtMjA0MS1cbmZzL2Fpby5jOjIwNDI6XHRcdHJlcS1cdTAwM2VraV9ldmVudGZkID0gZXZlbnRmZDtcbmZzL2Fpby5jLTIwNDMtXHR9XG4tLVxuZnMvZXZlbnRmZC5jLTItLypcbmZzL2V2ZW50ZmQuYzozOiAqICBmcy9ldmVudGZkLmNcbmZzL2V2ZW50ZmQuYy00LSAqXG4tLVxuZnMvZXZlbnRmZC5jLTIxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2tyZWYuaFx1MDAzZVxuZnMvZXZlbnRmZC5jOjIyOiNpbmNsdWRlIFx1MDAzY2xpbnV4L2V2ZW50ZmQuaFx1MDAzZVxuZnMvZXZlbnRmZC5jLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb2NfZnMuaFx1MDAzZVxuLS1cbmZzL2V2ZW50ZmQuYy0yNy1cbmZzL2V2ZW50ZmQuYzoyODpzdGF0aWMgREVGSU5FX0lEQShldmVudGZkX2lkYSk7XG5mcy9ldmVudGZkLmMtMjktXG5mcy9ldmVudGZkLmM6MzA6c3RydWN0IGV2ZW50ZmRfY3R4IHtcbmZzL2V2ZW50ZmQuYy0zMS1cdHN0cnVjdCBrcmVmIGtyZWY7XG4tLVxuZnMvZXZlbnRmZC5jLTMzLVx0LypcbmZzL2V2ZW50ZmQuYzozNDpcdCAqIEV2ZXJ5IHRpbWUgdGhhdCBhIHdyaXRlKDIpIGlzIHBlcmZvcm1lZCBvbiBhbiBldmVudGZkLCB0aGVcbmZzL2V2ZW50ZmQuYy0zNS1cdCAqIHZhbHVlIG9mIHRoZSBfX3U2NCBiZWluZyB3cml0dGVuIGlzIGFkZGVkIHRvIFwmIzM0O2NvdW50XCYjMzQ7IGFuZCBhXG4tLVxuZnMvZXZlbnRmZC5jLTM3LVx0ICogc3BlY2lmaWVkLCBhIHJlYWQoMikgd2lsbCByZXR1cm4gdGhlIFwmIzM0O2NvdW50XCYjMzQ7IHZhbHVlIHRvIHVzZXJzcGFjZSxcbmZzL2V2ZW50ZmQuYzozODpcdCAqIGFuZCB3aWxsIHJlc2V0IFwmIzM0O2NvdW50XCYjMzQ7IHRvIHplcm8uIFRoZSBrZXJuZWwgc2lkZSBldmVudGZkX3NpZ25hbCgpXG5mcy9ldmVudGZkLmMtMzktXHQgKiBhbHNvLCBhZGRzIHRvIHRoZSBcJiMzNDtjb3VudFwmIzM0OyBjb3VudGVyIGFuZCBpc3N1ZSBhIHdha2V1cC5cbi0tXG5mcy9ldmVudGZkLmMtNDYtLyoqXG5mcy9ldmVudGZkLmM6NDc6ICogZXZlbnRmZF9zaWduYWxfbWFzayAtIEluY3JlbWVudCB0aGUgZXZlbnQgY291bnRlclxuZnMvZXZlbnRmZC5jOjQ4OiAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byB0aGUgZXZlbnRmZCBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTQ5LSAqIEBtYXNrOiBbaW5dIHBvbGwgbWFza1xuLS1cbmZzL2V2ZW50ZmQuYy01NS0gKi9cbmZzL2V2ZW50ZmQuYzo1Njp2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXG5mcy9ldmVudGZkLmMtNTcte1xuLS1cbmZzL2V2ZW50ZmQuYy02My1cdCAqIG5lc3RlZCB3YWl0cXVldWVzIHdpdGggY3VzdG9tIHdha2V1cCBoYW5kbGVycywgdGhlbiBpdCBzaG91bGRcbmZzL2V2ZW50ZmQuYzo2NDpcdCAqIGNoZWNrIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQoKSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBJZlxuZnMvZXZlbnRmZC5jOjY1Olx0ICogaXQgcmV0dXJucyBmYWxzZSwgdGhlIGV2ZW50ZmRfc2lnbmFsKCkgY2FsbCBzaG91bGQgYmUgZGVmZXJyZWQgdG8gYVxuZnMvZXZlbnRmZC5jLTY2LVx0ICogc2FmZSBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTY3LVx0ICovXG5mcy9ldmVudGZkLmM6Njg6XHRpZiAoV0FSTl9PTl9PTkNFKGN1cnJlbnQtXHUwMDNlaW5fZXZlbnRmZCkpXG5mcy9ldmVudGZkLmMtNjktXHRcdHJldHVybjtcbi0tXG5mcy9ldmVudGZkLmMtNzEtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2ssIGZsYWdzKTtcbmZzL2V2ZW50ZmQuYzo3MjpcdGN1cnJlbnQtXHUwMDNlaW5fZXZlbnRmZCA9IDE7XG5mcy9ldmVudGZkLmMtNzMtXHRpZiAoY3R4LVx1MDAzZWNvdW50IFx1MDAzYyBVTExPTkdfTUFYKVxuLS1cbmZzL2V2ZW50ZmQuYy03Ni1cdFx0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTElOIHwgbWFzayk7XG5mcy9ldmVudGZkLmM6Nzc6XHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAwO1xuZnMvZXZlbnRmZC5jLTc4LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2ssIGZsYWdzKTtcbmZzL2V2ZW50ZmQuYy03OS19XG5mcy9ldmVudGZkLmM6ODA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9zaWduYWxfbWFzayk7XG5mcy9ldmVudGZkLmMtODEtXG5mcy9ldmVudGZkLmM6ODI6c3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlX2N0eChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbmZzL2V2ZW50ZmQuYy04My17XG5mcy9ldmVudGZkLmMtODQtXHRpZiAoY3R4LVx1MDAzZWlkIFx1MDAzZT0gMClcbmZzL2V2ZW50ZmQuYzo4NTpcdFx0aWRhX2ZyZWUoXHUwMDI2ZXZlbnRmZF9pZGEsIGN0eC1cdTAwM2VpZCk7XG5mcy9ldmVudGZkLmMtODYtXHRrZnJlZShjdHgpO1xuLS1cbmZzL2V2ZW50ZmQuYy04OC1cbmZzL2V2ZW50ZmQuYzo4OTpzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG5mcy9ldmVudGZkLmMtOTAte1xuZnMvZXZlbnRmZC5jOjkxOlx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggPSBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IGV2ZW50ZmRfY3R4LCBrcmVmKTtcbmZzL2V2ZW50ZmQuYy05Mi1cbmZzL2V2ZW50ZmQuYzo5MzpcdGV2ZW50ZmRfZnJlZV9jdHgoY3R4KTtcbmZzL2V2ZW50ZmQuYy05NC19XG4tLVxuZnMvZXZlbnRmZC5jLTk2LS8qKlxuZnMvZXZlbnRmZC5jOjk3OiAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXG5mcy9ldmVudGZkLmM6OTg6ICogQGN0eDogW2luXSBQb2ludGVyIHRvIGV2ZW50ZmQgY29udGV4dC5cbmZzL2V2ZW50ZmQuYy05OS0gKlxuZnMvZXZlbnRmZC5jOjEwMDogKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxuZnMvZXZlbnRmZC5jOjEwMTogKiB3aXRoIGV2ZW50ZmRfY3R4X2ZkZ2V0KCkgb3IgZXZlbnRmZF9jdHhfZmlsZWdldCgpLlxuZnMvZXZlbnRmZC5jLTEwMi0gKi9cbmZzL2V2ZW50ZmQuYzoxMDM6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG5mcy9ldmVudGZkLmMtMTA0LXtcbi0tXG5mcy9ldmVudGZkLmMtMTA3LVxuZnMvZXZlbnRmZC5jOjEwODpcdGtyZWZfcHV0KFx1MDAyNmN0eC1cdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xuZnMvZXZlbnRmZC5jLTEwOS19XG5mcy9ldmVudGZkLmM6MTEwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XG5mcy9ldmVudGZkLmMtMTExLVxuZnMvZXZlbnRmZC5jOjExMjpzdGF0aWMgaW50IGV2ZW50ZmRfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2V2ZW50ZmQuYy0xMTMte1xuZnMvZXZlbnRmZC5jOjExNDpcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5mcy9ldmVudGZkLmMtMTE1LVxuZnMvZXZlbnRmZC5jLTExNi1cdHdha2VfdXBfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTEhVUCk7XG5mcy9ldmVudGZkLmM6MTE3Olx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5mcy9ldmVudGZkLmMtMTE4LVx0cmV0dXJuIDA7XG4tLVxuZnMvZXZlbnRmZC5jLTEyMC1cbmZzL2V2ZW50ZmQuYzoxMjE6c3RhdGljIF9fcG9sbF90IGV2ZW50ZmRfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcbmZzL2V2ZW50ZmQuYy0xMjIte1xuZnMvZXZlbnRmZC5jOjEyMzpcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5mcy9ldmVudGZkLmMtMTI0LVx0X19wb2xsX3QgZXZlbnRzID0gMDtcbi0tXG5mcy9ldmVudGZkLmMtMTQ5LVx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrIGN0eC1cdTAwM2Vxd2gubG9ja1xuZnMvZXZlbnRmZC5jOjE1MDpcdCAqICAgICBldmVudGZkX3BvbGwgcmV0dXJucyAwXG5mcy9ldmVudGZkLmMtMTUxLVx0ICpcbi0tXG5mcy9ldmVudGZkLmMtMTY0LVx0ICogICAgIHVubG9jayBjdHgtXHUwMDNld3FoLmxvY2tcbmZzL2V2ZW50ZmQuYzoxNjU6XHQgKiAgICAgZXZlbnRmZF9wb2xsIHJldHVybnMgMFxuZnMvZXZlbnRmZC5jLTE2Ni1cdCAqL1xuLS1cbmZzL2V2ZW50ZmQuYy0xNzgtXG5mcy9ldmVudGZkLmM6MTc5OnZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcbmZzL2V2ZW50ZmQuYy0xODAte1xuLS1cbmZzL2V2ZW50ZmQuYy0xODUtfVxuZnMvZXZlbnRmZC5jOjE4NjpFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9kb19yZWFkKTtcbmZzL2V2ZW50ZmQuYy0xODctXG5mcy9ldmVudGZkLmMtMTg4LS8qKlxuZnMvZXZlbnRmZC5jOjE4OTogKiBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZSAtIFJlYWQgdGhlIGN1cnJlbnQgY291bnRlciBhbmQgcmVtb3ZlcyB3YWl0IHF1ZXVlLlxuZnMvZXZlbnRmZC5jOjE5MDogKiBAY3R4OiBbaW5dIFBvaW50ZXIgdG8gZXZlbnRmZCBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTE5MS0gKiBAd2FpdDogW2luXSBXYWl0IHF1ZXVlIHRvIGJlIHJlbW92ZWQuXG4tLVxuZnMvZXZlbnRmZC5jLTE5Ny0gKlxuZnMvZXZlbnRmZC5jOjE5ODogKiBUaGlzIGlzIHVzZWQgdG8gYXRvbWljYWxseSByZW1vdmUgYSB3YWl0IHF1ZXVlIGVudHJ5IGZyb20gdGhlIGV2ZW50ZmQgd2FpdFxuZnMvZXZlbnRmZC5jLTE5OS0gKiBxdWV1ZSBoZWFkLCBhbmQgcmVhZC9yZXNldCB0aGUgY291bnRlciB2YWx1ZS5cbmZzL2V2ZW50ZmQuYy0yMDAtICovXG5mcy9ldmVudGZkLmM6MjAxOmludCBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgd2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LFxuZnMvZXZlbnRmZC5jLTIwMi1cdFx0XHRcdCAgX191NjQgKmNudClcbi0tXG5mcy9ldmVudGZkLmMtMjA2LVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG5mcy9ldmVudGZkLmM6MjA3Olx0ZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIGNudCk7XG5mcy9ldmVudGZkLmMtMjA4LVx0X19yZW1vdmVfd2FpdF9xdWV1ZShcdTAwMjZjdHgtXHUwMDNld3FoLCB3YWl0KTtcbi0tXG5mcy9ldmVudGZkLmMtMjE0LX1cbmZzL2V2ZW50ZmQuYzoyMTU6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUpO1xuZnMvZXZlbnRmZC5jLTIxNi1cbmZzL2V2ZW50ZmQuYzoyMTc6c3RhdGljIHNzaXplX3QgZXZlbnRmZF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcbmZzL2V2ZW50ZmQuYy0yMTgte1xuZnMvZXZlbnRmZC5jLTIxOS1cdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuZnMvZXZlbnRmZC5jOjIyMDpcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5mcy9ldmVudGZkLmMtMjIxLVx0X191NjQgdWNudCA9IDA7XG4tLVxuZnMvZXZlbnRmZC5jLTIzNy1cdH1cbmZzL2V2ZW50ZmQuYzoyMzg6XHRldmVudGZkX2N0eF9kb19yZWFkKGN0eCwgXHUwMDI2dWNudCk7XG5mcy9ldmVudGZkLmM6MjM5Olx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbmZzL2V2ZW50ZmQuYy0yNDAtXHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbmZzL2V2ZW50ZmQuYy0yNDEtXHRcdHdha2VfdXBfbG9ja2VkX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExPVVQpO1xuZnMvZXZlbnRmZC5jOjI0MjpcdGN1cnJlbnQtXHUwMDNlaW5fZXZlbnRmZCA9IDA7XG5mcy9ldmVudGZkLmMtMjQzLVx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmN0eC1cdTAwM2V3cWgubG9jayk7XG4tLVxuZnMvZXZlbnRmZC5jLTI0OS1cbmZzL2V2ZW50ZmQuYzoyNTA6c3RhdGljIHNzaXplX3QgZXZlbnRmZF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LFxuZnMvZXZlbnRmZC5jLTI1MS1cdFx0XHQgICAgIGxvZmZfdCAqcHBvcylcbmZzL2V2ZW50ZmQuYy0yNTIte1xuZnMvZXZlbnRmZC5jOjI1MzpcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5mcy9ldmVudGZkLmMtMjU0LVx0c3NpemVfdCByZXM7XG4tLVxuZnMvZXZlbnRmZC5jLTI3NC1cdFx0Y3R4LVx1MDAzZWNvdW50ICYjNDM7PSB1Y250O1xuZnMvZXZlbnRmZC5jOjI3NTpcdFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbmZzL2V2ZW50ZmQuYy0yNzYtXHRcdGlmICh3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmN0eC1cdTAwM2V3cWgpKVxuZnMvZXZlbnRmZC5jLTI3Ny1cdFx0XHR3YWtlX3VwX2xvY2tlZF9wb2xsKFx1MDAyNmN0eC1cdTAwM2V3cWgsIEVQT0xMSU4pO1xuZnMvZXZlbnRmZC5jOjI3ODpcdFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbmZzL2V2ZW50ZmQuYy0yNzktXHR9XG4tLVxuZnMvZXZlbnRmZC5jLTI4NS0jaWZkZWYgQ09ORklHX1BST0NfRlNcbmZzL2V2ZW50ZmQuYzoyODY6c3RhdGljIHZvaWQgZXZlbnRmZF9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBmaWxlICpmKVxuZnMvZXZlbnRmZC5jLTI4Ny17XG5mcy9ldmVudGZkLmM6Mjg4Olx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggPSBmLVx1MDAzZXByaXZhdGVfZGF0YTtcbmZzL2V2ZW50ZmQuYy0yODktXHRfX3U2NCBjbnQ7XG4tLVxuZnMvZXZlbnRmZC5jLTI5NS1cdHNlcV9wcmludGYobSxcbmZzL2V2ZW50ZmQuYzoyOTY6XHRcdCAgIFwmIzM0O2V2ZW50ZmQtY291bnQ6ICUxNmxseFxcblwmIzM0O1xuZnMvZXZlbnRmZC5jOjI5NzpcdFx0ICAgXCYjMzQ7ZXZlbnRmZC1pZDogJWRcXG5cJiMzNDtcbmZzL2V2ZW50ZmQuYzoyOTg6XHRcdCAgIFwmIzM0O2V2ZW50ZmQtc2VtYXBob3JlOiAlZFxcblwmIzM0OyxcbmZzL2V2ZW50ZmQuYy0yOTktXHRcdCAgIGNudCxcbi0tXG5mcy9ldmVudGZkLmMtMzA0LVxuZnMvZXZlbnRmZC5jOjMwNTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBldmVudGZkX2ZvcHMgPSB7XG5mcy9ldmVudGZkLmMtMzA2LSNpZmRlZiBDT05GSUdfUFJPQ19GU1xuZnMvZXZlbnRmZC5jOjMwNzpcdC5zaG93X2ZkaW5mb1x0PSBldmVudGZkX3Nob3dfZmRpbmZvLFxuZnMvZXZlbnRmZC5jLTMwOC0jZW5kaWZcbmZzL2V2ZW50ZmQuYzozMDk6XHQucmVsZWFzZVx0PSBldmVudGZkX3JlbGVhc2UsXG5mcy9ldmVudGZkLmM6MzEwOlx0LnBvbGxcdFx0PSBldmVudGZkX3BvbGwsXG5mcy9ldmVudGZkLmM6MzExOlx0LnJlYWRfaXRlclx0PSBldmVudGZkX3JlYWQsXG5mcy9ldmVudGZkLmM6MzEyOlx0LndyaXRlXHRcdD0gZXZlbnRmZF93cml0ZSxcbmZzL2V2ZW50ZmQuYy0zMTMtXHQubGxzZWVrXHRcdD0gbm9vcF9sbHNlZWssXG4tLVxuZnMvZXZlbnRmZC5jLTMxNi0vKipcbmZzL2V2ZW50ZmQuYzozMTc6ICogZXZlbnRmZF9mZ2V0IC0gQWNxdWlyZSBhIHJlZmVyZW5jZSBvZiBhbiBldmVudGZkIGZpbGUgZGVzY3JpcHRvci5cbmZzL2V2ZW50ZmQuYy0zMTgtICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLlxuZnMvZXZlbnRmZC5jLTMxOS0gKlxuZnMvZXZlbnRmZC5jOjMyMDogKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZXZlbnRmZCBmaWxlIHN0cnVjdHVyZSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG9yIHRoZVxuZnMvZXZlbnRmZC5jLTMyMS0gKiBmb2xsb3dpbmcgZXJyb3IgcG9pbnRlcjpcbi0tXG5mcy9ldmVudGZkLmMtMzIzLSAqIC1FQkFERiAgICA6IEludmFsaWQgQGZkIGZpbGUgZGVzY3JpcHRvci5cbmZzL2V2ZW50ZmQuYzozMjQ6ICogLUVJTlZBTCAgIDogVGhlIEBmZCBmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGFuIGV2ZW50ZmQgZmlsZS5cbmZzL2V2ZW50ZmQuYy0zMjUtICovXG5mcy9ldmVudGZkLmM6MzI2OnN0cnVjdCBmaWxlICpldmVudGZkX2ZnZXQoaW50IGZkKVxuZnMvZXZlbnRmZC5jLTMyNy17XG4tLVxuZnMvZXZlbnRmZC5jLTMzMi1cdFx0cmV0dXJuIEVSUl9QVFIoLUVCQURGKTtcbmZzL2V2ZW50ZmQuYzozMzM6XHRpZiAoZmlsZS1cdTAwM2VmX29wICE9IFx1MDAyNmV2ZW50ZmRfZm9wcykge1xuZnMvZXZlbnRmZC5jLTMzNC1cdFx0ZnB1dChmaWxlKTtcbi0tXG5mcy9ldmVudGZkLmMtMzM5LX1cbmZzL2V2ZW50ZmQuYzozNDA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9mZ2V0KTtcbmZzL2V2ZW50ZmQuYy0zNDEtXG5mcy9ldmVudGZkLmMtMzQyLS8qKlxuZnMvZXZlbnRmZC5jOjM0MzogKiBldmVudGZkX2N0eF9mZGdldCAtIEFjcXVpcmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXG5mcy9ldmVudGZkLmMtMzQ0LSAqIEBmZDogW2luXSBFdmVudGZkIGZpbGUgZGVzY3JpcHRvci5cbmZzL2V2ZW50ZmQuYy0zNDUtICpcbmZzL2V2ZW50ZmQuYzozNDY6ICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGV2ZW50ZmQgY29udGV4dCwgb3RoZXJ3aXNlIHRoZSBlcnJvclxuZnMvZXZlbnRmZC5jLTM0Ny0gKiBwb2ludGVycyByZXR1cm5lZCBieSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczpcbmZzL2V2ZW50ZmQuYy0zNDgtICpcbmZzL2V2ZW50ZmQuYzozNDk6ICogZXZlbnRmZF9mZ2V0XG5mcy9ldmVudGZkLmMtMzUwLSAqL1xuZnMvZXZlbnRmZC5jOjM1MTpzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmRfY3R4X2ZkZ2V0KGludCBmZClcbmZzL2V2ZW50ZmQuYy0zNTIte1xuLS1cbmZzL2V2ZW50ZmQuYy0zNTUtXHRcdHJldHVybiBFUlJfUFRSKC1FQkFERik7XG5mcy9ldmVudGZkLmM6MzU2Olx0cmV0dXJuIGV2ZW50ZmRfY3R4X2ZpbGVnZXQoZmRfZmlsZShmKSk7XG5mcy9ldmVudGZkLmMtMzU3LX1cbmZzL2V2ZW50ZmQuYzozNTg6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfZmRnZXQpO1xuZnMvZXZlbnRmZC5jLTM1OS1cbmZzL2V2ZW50ZmQuYy0zNjAtLyoqXG5mcy9ldmVudGZkLmM6MzYxOiAqIGV2ZW50ZmRfY3R4X2ZpbGVnZXQgLSBBY3F1aXJlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTM2Mi0gKiBAZmlsZTogW2luXSBFdmVudGZkIGZpbGUgcG9pbnRlci5cbmZzL2V2ZW50ZmQuYy0zNjMtICpcbmZzL2V2ZW50ZmQuYzozNjQ6ICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGV2ZW50ZmQgY29udGV4dCwgb3RoZXJ3aXNlIHRoZSBlcnJvclxuZnMvZXZlbnRmZC5jLTM2NS0gKiBwb2ludGVyOlxuZnMvZXZlbnRmZC5jLTM2Ni0gKlxuZnMvZXZlbnRmZC5jOjM2NzogKiAtRUlOVkFMICAgOiBUaGUgQGZkIGZpbGUgZGVzY3JpcHRvciBpcyBub3QgYW4gZXZlbnRmZCBmaWxlLlxuZnMvZXZlbnRmZC5jLTM2OC0gKi9cbmZzL2V2ZW50ZmQuYzozNjk6c3RydWN0IGV2ZW50ZmRfY3R4ICpldmVudGZkX2N0eF9maWxlZ2V0KHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZXZlbnRmZC5jLTM3MC17XG5mcy9ldmVudGZkLmM6MzcxOlx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHg7XG5mcy9ldmVudGZkLmMtMzcyLVxuZnMvZXZlbnRmZC5jOjM3MzpcdGlmIChmaWxlLVx1MDAzZWZfb3AgIT0gXHUwMDI2ZXZlbnRmZF9mb3BzKVxuZnMvZXZlbnRmZC5jLTM3NC1cdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4tLVxuZnMvZXZlbnRmZC5jLTM3OS19XG5mcy9ldmVudGZkLmM6MzgwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X2ZpbGVnZXQpO1xuZnMvZXZlbnRmZC5jLTM4MS1cbmZzL2V2ZW50ZmQuYzozODI6c3RhdGljIGludCBkb19ldmVudGZkKHVuc2lnbmVkIGludCBjb3VudCwgaW50IGZsYWdzKVxuZnMvZXZlbnRmZC5jLTM4My17XG5mcy9ldmVudGZkLmM6Mzg0Olx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggX19mcmVlKGtmcmVlKSA9IE5VTEw7XG5mcy9ldmVudGZkLmMtMzg1LVxuLS1cbmZzL2V2ZW50ZmQuYy00MDYtXHRGRF9QUkVQQVJFKGZkZiwgZmxhZ3MsXG5mcy9ldmVudGZkLmM6NDA3Olx0XHQgICBhbm9uX2lub2RlX2dldGZpbGVfZm1vZGUoXCYjMzQ7W2V2ZW50ZmRdXCYjMzQ7LCBcdTAwMjZldmVudGZkX2ZvcHMsIGN0eCxcbmZzL2V2ZW50ZmQuYy00MDgtXHRcdFx0XHRcdCAgICBmbGFncywgRk1PREVfTk9XQUlUKSk7XG4tLVxuZnMvZXZlbnRmZC5jLTQxMS1cbmZzL2V2ZW50ZmQuYzo0MTI6XHRjdHgtXHUwMDNlaWQgPSBpZGFfYWxsb2MoXHUwMDI2ZXZlbnRmZF9pZGEsIEdGUF9LRVJORUwpO1xuZnMvZXZlbnRmZC5jLTQxMy1cdHJldGFpbl9hbmRfbnVsbF9wdHIoY3R4KTtcbi0tXG5mcy9ldmVudGZkLmMtNDE2LVxuZnMvZXZlbnRmZC5jOjQxNzpTWVNDQUxMX0RFRklORTIoZXZlbnRmZDIsIHVuc2lnbmVkIGludCwgY291bnQsIGludCwgZmxhZ3MpXG5mcy9ldmVudGZkLmMtNDE4LXtcbmZzL2V2ZW50ZmQuYzo0MTk6XHRyZXR1cm4gZG9fZXZlbnRmZChjb3VudCwgZmxhZ3MpO1xuZnMvZXZlbnRmZC5jLTQyMC19XG5mcy9ldmVudGZkLmMtNDIxLVxuZnMvZXZlbnRmZC5jOjQyMjpTWVNDQUxMX0RFRklORTEoZXZlbnRmZCwgdW5zaWduZWQgaW50LCBjb3VudClcbmZzL2V2ZW50ZmQuYy00MjMte1xuZnMvZXZlbnRmZC5jOjQyNDpcdHJldHVybiBkb19ldmVudGZkKGNvdW50LCAwKTtcbmZzL2V2ZW50ZmQuYy00MjUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk5OQoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiA4NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggRXZhbHVhdGlvbjogQSBSZWZpbmVkIEFwcHJvYWNoIHRvIEV2ZW50ZmQgYW5kIFN5bmNvYmogSW50ZXJhY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpc3NlY3QgdGhlc2UgY2hhbmdlcyBtZXRob2RpY2FsbHkuIEZpcnN0LCBJIHNlZSBhIGNydWNpYWwgdXBkYXRlIGluIGBmcy9ldmVudGZkLmNgLiBUaGUgYGV2ZW50ZmRfY3R4X3B1dGAgZnVuY3Rpb24gaGFzIGJlZW4gaGFyZGVuZWQ7IGl0IG5vdyBncmFjZWZ1bGx5IGhhbmRsZXMgTlVMTCBgY3R4YCBwb2ludGVycy4gVGhpcyBpcyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBhIHNtYWxsIGJ1dCBpbXBvcnRhbnQgcmVmaW5lbWVudC4gVGhlIGNvcnJlc3BvbmRpbmcgYERFRklORV9GUkVFYCBtYWNybyBpbiBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGlzIGFsc28gcHJlc2VudC4gVGhpcyBpcyB0eXBpY2FsLCB0eWluZyBpbnRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2VzLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbnRvIHRoZSBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgIGNoYW5nZXMuIFRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24gaXMgdGhlIHByaW1hcnkgdGFyZ2V0IGhlcmUuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHJlZmFjdG9yaW5nIGFyb3VuZCBlcnJvciBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYGV2ZW50ZmRfY3R4YC4gSXQgbG9va3MgbGlrZSB0aGUgYF9fZnJlZShldmVudGZkKWAgY2xlYW51cCBoZWxwZXIsIHByb2JhYmx5IGRlZmluZWQgYXMgcGFydCBvZiB0aGUgaW5pdGlhbCBjaGFuZ2UsIGlzIGJlaW5nIGxldmVyYWdlZCB0byBpbXByb3ZlIGxpZmV0aW1lIG1hbmFnZW1lbnQgb2YgYGV2X2ZkX2N0eGAuIFRoaXMgbG9va3MgY2xlYW4sIHVzaW5nIHRoZSBzdGFuZGFyZCBpZGlvbSB0byBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiB0aGUgZXZlbnRmZCBjb250ZXh0IGluIHRoaXMgZnVuY3Rpb24uIFdlJiMzOTtyZSB1c2luZyBgZXZlbnRmZF9jdHhfZmRnZXRgIHRvIG9idGFpbiB0aGUgZXZlbnRmZCBjb250ZXh0LCBhbmQgdGhlbiBlaXRoZXIgYWRkaW5nIGl0IHRvIHRoZSBzeW5jb2JqIG9yIGNsZWFuaW5nIHVwLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgZnV6emluZyBpbXBsaWNhdGlvbnMuIFRoZSBwYXRjaCAqaXMqIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIG1vZGlmeWluZyByZWFjaGFibGUga2VybmVsIGNvZGUgd2l0aGluIGJvdGggYGV2ZW50ZmRgIGFuZCBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAuIFRoYXQgbWVhbnMgd2UmIzM5O3ZlIGdvdCBuZXcgb3IgbW9kaWZpZWQgY29kZSBwYXRocy4gSSYjMzk7ZCBldmFsdWF0ZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3M6IGBEUk1gIGFuZCBgRVZFTlRGRGAuCgpGb3IgbXkgZnV6emluZyBmb2N1cywgSSYjMzk7bSB0aGlua2luZzogYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YCBhcmUgdGhlIHN5bWJvbHMgb2YgaW50ZXJlc3QuCgpUaGUgcGF0Y2gmIzM5O3MgY29yZSBtb2RpZmljYXRpb24gdG8gYGV2ZW50ZmRfY3R4X3B1dCgpYCBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgbWFjcm8sIGNvdXBsZWQgd2l0aCBpdHMgdXNlIGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCwgaXMgYSB3ZWxsLWRlZmluZWQgdXNlIGNhc2UgdGhhdCYjMzk7cyBxdWl0ZSByZWFkYWJsZS4gSXQgYWxsIG1ha2VzIHNlbnNlIGFuZCBpdCBpcyBjbGVhbi4gVGhlIG92ZXJhbGwgcmVhc29uaW5nLCBpcyBzb2xpZC4gRXZlcnl0aGluZyBjaGVja3Mgb3V0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2xlYW51cCBhdHRyaWJ1dGUgaGVscGVyIGBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pYCBhbmQgdXBkYXRlcyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIGNsZWFudXAgKGBfX2ZyZWUoZXZlbnRmZClgKSBhbG9uZyB3aXRoIGBub19mcmVlX3B0cigpYCwgYW5kIGFkZHMgYSBOVUxMIGNoZWNrIHRvIGBldmVudGZkX2N0eF9wdXQoKWAuXG5cblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU3MzM5ZjlkM2JhNDBhYzA2M2NiZWI5ZTFlNTE4ZjUxOGUyZTFiNjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDEzOjA2OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwppbmRleCBjMjNhNWRlMjdlZmZhLi4yNjFkNTYwNmU4YmQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpAQCAtMTQ2Miw5ICYjNDM7MTQ2Miw5IEBAIGludAogZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSkKIHsKJiM0MzsJc3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7CiAJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqOwotCXN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4OwogCXN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5OwogCWludCByZXQ7CiAKQEAgLTE0ODQsMTYgJiM0MzsxNDg0LDE3IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLSZndDtmZCk7CiAJaWYgKElTX0VSUihldl9mZF9jdHgpKSB7CiAJCXJldCA9IFBUUl9FUlIoZXZfZmRfY3R4KTsKJiM0MzsJCWV2X2ZkX2N0eCA9IE5VTEw7CiAJCWdvdG8gZXJyX2ZkZ2V0OwogCX0KIAogCWVudHJ5ID0ga3phbGxvY19vYmooKmVudHJ5KTsKIAlpZiAoIWVudHJ5KSB7CiAJCXJldCA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyX2t6YWxsb2M7CiYjNDM7CQlnb3RvIGVycl9mZGdldDsKIAl9CiAJZW50cnktJmd0O3N5bmNvYmogPSBzeW5jb2JqOwotCWVudHJ5LSZndDtldl9mZF9jdHggPSBldl9mZF9jdHg7CiYjNDM7CWVudHJ5LSZndDtldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpOwogCWVudHJ5LSZndDtwb2ludCA9IGFyZ3MtJmd0O3BvaW50OwogCWVudHJ5LSZndDtmbGFncyA9IGFyZ3MtJmd0O2ZsYWdzOwogCkBAIC0xNTAyLDggJiM0MzsxNTAzLDYgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJcmV0dXJuIDA7CiAKLWVycl9remFsbG9jOgotCWV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpOwogZXJyX2ZkZ2V0OgogCWRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTsKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jCmluZGV4IDlkMzNhMDI3NTdkNTIuLjI0MTExYTE2Mjg0ZjEgMTAwNjQ0Ci0tLSBhL2ZzL2V2ZW50ZmQuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9ldmVudGZkLmMKQEAgLTEwMiw2ICYjNDM7MTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQogICovCiB2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCkKIHsKJiM0MzsJaWYgKCFjdHgpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJa3JlZl9wdXQoJmFtcDtjdHgtJmd0O2tyZWYsIGV2ZW50ZmRfZnJlZSk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaAppbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaApAQCAtMTAsNiAmIzQzOzEwLDcgQEAKICNkZWZpbmUgX0xJTlVYX0VWRU5URkRfSAogCiAjaW5jbHVkZSAmbHQ7bGludXgvd2FpdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jbGVhbnVwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGVyY3B1LWRlZnMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUuaCZndDsKQEAgLTg5LDUgJiM0Mzs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCkKIAlldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7CiB9CiAKJiM0MztERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSkKJiM0MzsKICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXM6IEtNU0FOIEZ1enppbmcgRXZhbHVhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgd2hldGhlciB0aGlzIHBhdGNoLCB0b3VjaGluZyBEUk0gc3luYyBvYmplY3RzIGFuZCBldmVudGZkcywgbmVjZXNzaXRhdGVzIGEgZGVlcGVyIGRpdmUgd2l0aCBLTVNBTiBmdXp6aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaW1wbGljYXRpb25zLgoKRmlyc3QsIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW4gYGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jYDogVGhlIGtleSBhbHRlcmF0aW9uIGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCByZXZvbHZlcyBhcm91bmQgYHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4YC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSB0cmFuc2l0aW9uaW5nIHRvIHVzZSBhIGRlZmluZWQgZnJlZSBmdW5jdGlvbiBgX19mcmVlKGV2ZW50ZmQpID0gTlVMTGAuIFRoZSBlcnJvciBoYW5kbGluZyBpcyBhbHNvIHRpZ2h0ZW5lZDsgaWYgYGV2ZW50ZmRfY3R4X2ZkZ2V0YCBmYWlscyAocmV0dXJuaW5nIGFuIGVycm9yKSwgYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBzZXQgdG8gYE5VTExgIGJlZm9yZSBqdW1waW5nIHRvIGBlcnJfZmRnZXRgLiBJbXBvcnRhbnRseSwgYG5vX2ZyZWVfcHRyYCBpcyBiZWluZyB1c2VkIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgY29udGV4dCwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgZW50cnktJmd0O2V2X2ZkX2N0eGAgaXMgd2l0aCBgbm9fZnJlZV9wdHIoZXZfZmRfY3R4KWAuIEl0IGFsc28gbG9va3MgbGlrZSB0aGV5IGFyZSBnZXR0aW5nIHJpZCBvZiBgZXJyX2t6YWxsb2NgIGFuZCBtYW51YWwgYGV2ZW50ZmRfY3R4X3B1dGAgY2FsbHMsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLgoKTmV4dCwgSSBzZWUgYSBzbWFsbCBidXQgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGBmcy9ldmVudGZkLmNgIHdpdGhpbiBgZXZlbnRmZF9jdHhfcHV0YC4gQSBOVUxMLXNhZmV0eSBjaGVjayAoYGlmICghY3R4KSByZXR1cm47YCkgaGFzIGJlZW4gYWRkZWQuIFRoaXMgaXMgZ29vZCBwcmFjdGljZS4KCkZpbmFsbHksIHRoZSBpbmNsdXNpb24gb2YgYCZsdDtsaW51eC9jbGVhbnVwLmgmZ3Q7YCBhbmQgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gZm9yIGBldmVudGZkYCBpbiBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGNvbmZpcm1zIHRoaXMgaXMgYSBjb25zaXN0ZW50IHJlZmFjdG9yaW5nIHRvIHVzZSBhIHN0YW5kYXJkaXplZCBmcmVlIGZ1bmN0aW9uLCB3aGljaCBpcyBnZW5lcmFsbHkgYSBnb29kIHRoaW5nLgoKTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb246IGlzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2s/IExldCBtZSBydW4gdGhyb3VnaCB0aGlzLiBgZXZfZmRfY3R4YCBpcyBpbml0aWFsaXplZCB0byBOVUxMIHdpdGggdGhlIGBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMYC4gSWYgYGV2ZW50ZmRfY3R4X2ZkZ2V0YCBmYWlscywgd2Ugc2V0IGBldl9mZF9jdHhgIHRvIE5VTEwsIHByZXZlbnRpbmcgYW4gYXR0ZW1wdCB0byBjbGVhbiB1cCBhbiBlcnJvciBwb2ludGVyLiBXaGVuIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgYG5vX2ZyZWVfcHRyYCB0YWtlcyBjb250cm9sIGFuZCByZXNldHMgYGV2X2ZkX2N0eGAuIEZ1cnRoZXJtb3JlLCB0aGUgYGVudHJ5YCBpcyB6ZXJvZWQgd2l0aCBga3phbGxvY19vYmpgLCBhbmQgdGhlcmUgYXJlIG5vIGRpcmVjdCBgY29weV90b191c2VyYCBvcGVyYXRpb25zIGludm9sdmVkLiBUaGVyZSYjMzk7cyBubyBpbW1lZGlhdGVseSBvYnZpb3VzIHBhdGggdG8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHJlYWRzLCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaGluZyB0aGF0IEkgY2FuIHNlZS4gVGhlIHBhdGNoIGlzIHZlcnkgZm9jdXNlZCBvbiByZXNvdXJjZSBjbGVhbnVwIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4KCkdpdmVuIHRoaXMgYW5hbHlzaXMsIEkmIzM5O2Qgc2F5IHRoZSBwcmltYXJ5IHJpc2tzIGhlcmUgYXJlIG1vcmUgcmVsYXRlZCB0byBjbGFzc2ljIHJlc291cmNlIG1hbmFnZW1lbnQgaXNzdWVz4oCUbGVha3MsIGRvdWJsZSBmcmVlcywgb3IgdXNlLWFmdGVyLWZyZWXigJRyYXRoZXIgdGhhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIFRoZXNlIGtpbmRzIG9mIHByb2JsZW1zIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIHNhbml0aXplcnMuIEtNU0FOIGlzbiYjMzk7dCB0aGUgcHJpb3JpdHkgZm9yIHRoaXMgcGF0Y2guIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBvZiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgdG8gYmUgc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIGludGVyYWN0aW9ucywgYnV0IEkgdGhpbmsgdGhlIGNoYW5nZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTQ2MDpcdFxuMTQ2MTpcdGludFxuMTQ2MjpcdGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbjE0NjM6XHRcdFx0XHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxuMTQ2NDpcdHtcbjE0NjU6XHRcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XG4xNDY2Olx0XHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XG4xNDY3Olx0XHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XG4xNDY4Olx0XHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbjE0Njk6XHRcdGludCByZXQ7XG4xNDcwOlx0XG4xNDcxOlx0XHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpXG4xNDcyOlx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjE0NzM6XHRcbjE0NzQ6XHRcdGlmIChhcmdzLVx1MDAzZWZsYWdzIFx1MDAyNiB+RFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FWQUlMQUJMRSlcbjE0NzU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDc2Olx0XG4xNDc3Olx0XHRpZiAoYXJncy1cdTAwM2VwYWQpXG4xNDc4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTQ3OTpcdFxuMTQ4MDpcdFx0c3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBhcmdzLVx1MDAzZWhhbmRsZSk7XG4xNDgxOlx0XHRpZiAoIXN5bmNvYmopXG4xNDgyOlx0XHRcdHJldHVybiAtRU5PRU5UO1xuMTQ4MzpcdFxuMTQ4NDpcdFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cdTAwM2VmZCk7XG4xNDg1Olx0XHRpZiAoSVNfRVJSKGV2X2ZkX2N0eCkpIHtcbjE0ODY6XHRcdFx0cmV0ID0gUFRSX0VSUihldl9mZF9jdHgpO1xuMTQ4NzpcdFx0XHRldl9mZF9jdHggPSBOVUxMO1xuMTQ4ODpcdFx0XHRnb3RvIGVycl9mZGdldDtcbjE0ODk6XHRcdH1cbjE0OTA6XHRcbjE0OTE6XHRcdGVudHJ5ID0ga3phbGxvY19vYmooKmVudHJ5KTtcbjE0OTI6XHRcdGlmICghZW50cnkpIHtcbjE0OTM6XHRcdFx0cmV0ID0gLUVOT01FTTtcbjE0OTQ6XHRcdFx0Z290byBlcnJfZmRnZXQ7XG4xNDk1Olx0XHR9XG4xNDk2Olx0XHRlbnRyeS1cdTAwM2VzeW5jb2JqID0gc3luY29iajtcbjE0OTc6XHRcdGVudHJ5LVx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XG4xNDk4Olx0XHRlbnRyeS1cdTAwM2Vwb2ludCA9IGFyZ3MtXHUwMDNlcG9pbnQ7XG4xNDk5Olx0XHRlbnRyeS1cdTAwM2VmbGFncyA9IGFyZ3MtXHUwMDNlZmxhZ3M7XG4xNTAwOlx0XG4xNTAxOlx0XHRkcm1fc3luY29ial9hZGRfZXZlbnRmZChzeW5jb2JqLCBlbnRyeSk7XG4xNTAyOlx0XHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XG4xNTAzOlx0XG4xNTA0Olx0XHRyZXR1cm4gMDtcbjE1MDU6XHRcbjE1MDY6XHRlcnJfZmRnZXQ6XG4xNTA3Olx0XHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XG4xNTA4Olx0XHRyZXR1cm4gcmV0O1xuMTUwOTpcdH1cbjE1MTA6XHRcbjE1MTE6XHRpbnRcbjE1MTI6XHRkcm1fc3luY29ial9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuMTUxMzpcdFx0XHRcdHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxuMTUxNDpcdHtcbjE1MTU6XHRcdHN0cnVjdCBkcm1fc3luY29ial9hcnJheSAqYXJncyA9IGRhdGE7XG4xNTE2Olx0XHRzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqcztcbjE1MTc6XHRcdHVpbnQzMl90IGk7XG4xNTE4Olx0XHRpbnQgcmV0O1xuMTUxOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTU3CgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZXMqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBpbXBsZW1lbnRpbmcgYERFRklORV9GUkVFKGV2ZW50ZmQsIC4uLilgIHdoaWNoIGlzIHRoZW4gYXBwbGllZCBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYC4gIEEgbmljZSwgY2xlYW4gd2F5IHRvIGhhbmRsZSBjbGVhbnVwLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGEgTlVMTCBjaGVjayBpbiBgZXZlbnRmZF9jdHhfcHV0KClgIGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuIEkmIzM5O3ZlIHNjYW5uZWQgdGhlIGNvZGUgZm9yIHR5cGljYWwgdnVsbmVyYWJpbGl0aWVzLgoKQ3J1Y2lhbGx5LCBJJiMzOTttIG5vdCBzZWVpbmcgYW55IHJlZCBmbGFncyByZWdhcmRpbmcgdW5pbml0aWFsaXplZCBkYXRhLCBhY2NpZGVudGFsIGRhdGEgbGVha3MgdG8gdXNlciBzcGFjZSwgdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3Nlcywgb3IgbWVtb3J5IGV4cG9zdXJlLiBJJiMzOTt2ZSBhbHdheXMgYmVlbiBlc3BlY2lhbGx5IGNhcmVmdWwgYWJvdXQgbGlmZXRpbWUgbWFuYWdlbWVudCwgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgY2xlYW51cCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhpbmdzIGNhbiBnZXQgbWVzc3kgZmFzdC4gQW55IG9mIHRob3NlIGNvbW1vbiBlcnJvcnMgLSB0aGUgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZS1mcmVlLCBvciBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaXNzdWVzIHRoYXQgY2FuIGhhdW50IHVzIC0gd291bGQgYmUgZmxhZ2dlZCBieSB0aGUgdXN1YWwgc3VzcGVjdHMgLSBLQVNBTiBvciB0aGUgc3RhbmRhcmQga2VybmVsIGRldGVjdG9ycywgbm90IEtNU0FOLgoKU2luY2UgSSBkb24mIzM5O3Qgc2VlIGFueSBvZiB0aG9zZSBLTVNBTi1zcGVjaWZpYyB2dWxuZXJhYmlsaXRpZXMgdGhhdCBJIHdvdWxkIGJlIGxvb2tpbmcgZm9yIGluIHRoaXMgcGFydGljdWxhciBjb250ZXh0LCBpdCYjMzk7cyBzYWZlIHRvIHNheTogYE5lZWRzS01TQU4gPSBmYWxzZWAuIE5vdywgSSYjMzk7bSByZWFkeSB0byBtb3ZlIG9uLiBMZXQmIzM5O3MgZ2V0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AgcHJlcGFyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBjbGVhbnVwIGF0dHJpYnV0ZSBoZWxwZXIgYERFRklORV9GUkVFKGV2ZW50ZmQsIC4uLilgIGFuZCB1cGRhdGVzIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKClgIHRvIHVzZSBhdXRvbWF0aWMgY2xlYW51cCAoYF9fZnJlZShldmVudGZkKWApIGFsb25nIHdpdGggYG5vX2ZyZWVfcHRyKClgLCBhbmQgYWRkcyBhIE5VTEwgY2hlY2sgdG8gYGV2ZW50ZmRfY3R4X3B1dCgpYC5cblxuVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1bmluaXRpYWxpemVkIHN0cnVjdCByZWFkcywgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlIGludHJvZHVjZWQgb3IgYWZmZWN0ZWQgYnkgdGhlc2UgY2hhbmdlcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgcmVmYWN0b3Jpbmcgd291bGQgcGVydGFpbiB0byByZWZlcmVuY2UgY291bnRpbmcsIGxpZmV0aW1lIG1hbmFnZW1lbnQsIG9yIHJlc291cmNlIGNsZWFudXAgKGUuZy4gdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpLCB3aGljaCBhcmUgaGFuZGxlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNsZWFudXAgYXR0cmlidXRlIGhlbHBlciBgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKWAgYW5kIHVwZGF0ZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyBjbGVhbnVwIChgX19mcmVlKGV2ZW50ZmQpYCkgYWxvbmcgd2l0aCBgbm9fZnJlZV9wdHIoKWAsIGFuZCBhZGRzIGEgTlVMTCBjaGVjayB0byBgZXZlbnRmZF9jdHhfcHV0KClgLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHJlYWRzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UgaW50cm9kdWNlZCBvciBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW4gdGhpcyByZWZhY3RvcmluZyB3b3VsZCBwZXJ0YWluIHRvIHJlZmVyZW5jZSBjb3VudGluZywgbGlmZXRpbWUgbWFuYWdlbWVudCwgb3IgcmVzb3VyY2UgY2xlYW51cCAoZS5nLiB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSksIHdoaWNoIGFyZSBoYW5kbGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA2OjIxLjI4OTc2Njc1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMjgwNjU4NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRVZFTlRGRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxcIixcbiAgICBcImV2ZW50ZmRfY3R4X3B1dFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNsZWFudXAgYXR0cmlidXRlIGhlbHBlciBgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKWAgYW5kIHVwZGF0ZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyBjbGVhbnVwIChgX19mcmVlKGV2ZW50ZmQpYCkgYWxvbmcgd2l0aCBgbm9fZnJlZV9wdHIoKWAsIGFuZCBhZGRzIGEgTlVMTCBjaGVjayB0byBgZXZlbnRmZF9jdHhfcHV0KClgLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgTlVMTCBjaGVjayBpbiBldmVudGZkX2N0eF9wdXQoKSwgZGVmaW5lcyBhIF9fZnJlZShldmVudGZkKSBjbGVhbnVwIGhhbmRsZXIsIGFuZCByZWZhY3RvcnMgcmVzb3VyY2UgbGlmZWN5Y2xlIGhhbmRsaW5nIGluIHRoZSByZWFjaGFibGUgRFJNIGlvY3RsIGhhbmRsZXIgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpLiBGdXp6aW5nIHdpbGwgdGVzdCB3aGV0aGVyIHRoZSBhbHRlcmVkIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgY2xlYW51cCBmbG93IGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwgYmVoYXZlIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDY6MjEuMjg5Nzc0MDczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzIyODY4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNzMzOWY5ZDNiYTQwYWMwNjNjYmViOWUxZTUxOGY1MThlMmUxYjYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMTM6MDY6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xcbmluZGV4IGMyM2E1ZGUyN2VmZmEuLjI2MWQ1NjA2ZThiZDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xcbkBAIC0xNDYyLDkgKzE0NjIsOSBAQCBpbnRcXG4gZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbiBcXHRcXHRcXHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxcbiB7XFxuK1xcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XFxuIFxcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcXG4gXFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbi1cXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eDtcXG4gXFx0c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnk7XFxuIFxcdGludCByZXQ7XFxuIFxcbkBAIC0xNDg0LDE2ICsxNDg0LDE3IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4gXFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cXHUwMDNlZmQpO1xcbiBcXHRpZiAoSVNfRVJSKGV2X2ZkX2N0eCkpIHtcXG4gXFx0XFx0cmV0ID0gUFRSX0VSUihldl9mZF9jdHgpO1xcbitcXHRcXHRldl9mZF9jdHggPSBOVUxMO1xcbiBcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4gXFx0fVxcbiBcXG4gXFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xcbiBcXHRpZiAoIWVudHJ5KSB7XFxuIFxcdFxcdHJldCA9IC1FTk9NRU07XFxuLVxcdFxcdGdvdG8gZXJyX2t6YWxsb2M7XFxuK1xcdFxcdGdvdG8gZXJyX2ZkZ2V0O1xcbiBcXHR9XFxuIFxcdGVudHJ5LVxcdTAwM2VzeW5jb2JqID0gc3luY29iajtcXG4tXFx0ZW50cnktXFx1MDAzZWV2X2ZkX2N0eCA9IGV2X2ZkX2N0eDtcXG4rXFx0ZW50cnktXFx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XFxuIFxcdGVudHJ5LVxcdTAwM2Vwb2ludCA9IGFyZ3MtXFx1MDAzZXBvaW50O1xcbiBcXHRlbnRyeS1cXHUwMDNlZmxhZ3MgPSBhcmdzLVxcdTAwM2VmbGFncztcXG4gXFxuQEAgLTE1MDIsOCArMTUwMyw2IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tZXJyX2t6YWxsb2M6XFxuLVxcdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xcbiBlcnJfZmRnZXQ6XFxuIFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXFxuaW5kZXggOWQzM2EwMjc1N2Q1Mi4uMjQxMTFhMTYyODRmMSAxMDA2NDRcXG4tLS0gYS9mcy9ldmVudGZkLmNcXG4rKysgYi9mcy9ldmVudGZkLmNcXG5AQCAtMTAyLDYgKzEwMiw5IEBAIHN0YXRpYyB2b2lkIGV2ZW50ZmRfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4gICovXFxuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbiB7XFxuK1xcdGlmICghY3R4KVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRrcmVmX3B1dChcXHUwMDI2Y3R4LVxcdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcXG5AQCAtMTAsNiArMTAsNyBAQFxcbiAjZGVmaW5lIF9MSU5VWF9FVkVOVEZEX0hcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGVhbnVwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmNwdS1kZWZzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJjcHUuaFxcdTAwM2VcXG5AQCAtODksNSArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuIFxcdGV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTtcXG4gfVxcbiBcXG4rREVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXFxuK1xcbiAjZW5kaWYgLyogX0xJTlVYX0VWRU5URkRfSCAqL1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDY6MjEuOTYyODUyMDYyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3MTMwMTIxMjI5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkVWRU5URkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fc3luY29ial9ldmVudGZkX2lvY3RsXCIsXG4gICAgXCJldmVudGZkX2N0eF9wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgTlVMTCBjaGVjayBpbiBldmVudGZkX2N0eF9wdXQoKSwgZGVmaW5lcyBhIF9fZnJlZShldmVudGZkKSBjbGVhbnVwIGhhbmRsZXIsIGFuZCByZWZhY3RvcnMgcmVzb3VyY2UgbGlmZWN5Y2xlIGhhbmRsaW5nIGluIHRoZSByZWFjaGFibGUgRFJNIGlvY3RsIGhhbmRsZXIgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpLiBGdXp6aW5nIHdpbGwgdGVzdCB3aGV0aGVyIHRoZSBhbHRlcmVkIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgY2xlYW51cCBmbG93IGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwgYmVoYXZlIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNzMzOWY5ZDNiYTQwYWMwNjNjYmViOWUxZTUxOGY1MThlMmUxYjYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowNjoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbmluZGV4IGMyM2E1ZGUyN2VmZmEuLjI2MWQ1NjA2ZThiZDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbkBAIC0xNDYyLDkgKzE0NjIsOSBAQCBpbnRcbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRcdFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcbiB7XG4rXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ4NCwxNiArMTQ4NCwxNyBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbiBcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuIFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4rXHRcdGV2X2ZkX2N0eCA9IE5VTEw7XG4gXHRcdGdvdG8gZXJyX2ZkZ2V0O1xuIFx0fVxuIFxuIFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuIFx0aWYgKCFlbnRyeSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9remFsbG9jO1xuK1x0XHRnb3RvIGVycl9mZGdldDtcbiBcdH1cbiBcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuLVx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gZXZfZmRfY3R4O1xuK1x0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbiBcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbiBcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbiBcbkBAIC0xNTAyLDggKzE1MDMsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfa3phbGxvYzpcbi1cdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xuIGVycl9mZGdldDpcbiBcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4yNDExMWExNjI4NGYxIDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4rKysgYi9mcy9ldmVudGZkLmNcbkBAIC0xMDIsNiArMTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuICAqL1xuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIHtcbitcdGlmICghY3R4KVxuK1x0XHRyZXR1cm47XG4rXG4gXHRrcmVmX3B1dChcdTAwMjZjdHgtXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5AQCAtMTAsNiArMTAsNyBAQFxuICNkZWZpbmUgX0xJTlVYX0VWRU5URkRfSFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG5AQCAtODksNSArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gfVxuIFxuK0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuK1xuICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjoyMS45NjI4NTQwMTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODA3MjU1OTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgcGF0Y2ggZG93bi4gVGhlIGZvY3VzIGhlcmUgc2VlbXMgdG8gYmUgb24gY2xlYW51cCBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHJlbGF0aW5nIHRvIGBldmVudGZkYCBjb250ZXh0cyB3aXRoaW4gdGhlIERSTSBzeW5jb2JqIGZyYW1ld29yay4gSSdtIHNlZWluZyBjaGFuZ2VzIGFjcm9zcyB0aHJlZSBmaWxlczogYGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jYCwgYGZzL2V2ZW50ZmQuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgLlxuXG5GaXJzdCwgdGhlIGBldmVudGZkLmNgIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQg4oCTIGEgbnVsbCBjaGVjayBpbiBgZXZlbnRmZF9jdHhfcHV0YC4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFsd2F5cyBhIGdvb2QgaWRlYS4gVGhlIGhlYWRlciBmaWxlIGludHJvZHVjZXMgYSBgREVGSU5FX0ZSRUVgIG1hY3JvIGZvciBgZXZlbnRmZGAsIGVzc2VudGlhbGx5IGF1dG9tYXRpbmcgdGhlIGNsZWFudXAgcHJvY2VzcyB3aXRoIGBldmVudGZkX2N0eF9wdXRgLiBUaGlzIGlzIGEgdXNlZnVsIGFic3RyYWN0aW9uIGFuZCBsaWtlbHkgaW1wcm92ZXMgY29kZSByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LlxuXG5UaGUgbWVhdCBvZiB0aGUgY2hhbmdlcywgaG93ZXZlciwgc2VlbSB0byBiZSBpbiBgZHJtX3N5bmNvYmouY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLiAgV2UncmUgdXNpbmcgdGhlIGBfX2ZyZWUoZXZlbnRmZClgIGF0dHJpYnV0ZSBmb3IgY2xlYW51cCBvZiBgZXZfZmRfY3R4YCwgYW5kIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgc2V0IHRvIGBOVUxMYCB3aGVuIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLiBUaGlzIGxvb2tzIGxpa2UgYSBjbGVhciBhdHRlbXB0IHRvIGVuc3VyZSB0aGF0IHRoZSBldmVudGZkIGNvbnRleHQgaXMgcmVsZWFzZWQgcHJvcGVybHkgaW4gYWxsIGNvZGUgcGF0aHMsIGVzcGVjaWFsbHkgZXJyb3IgcGF0aHMuIFRoZSByZW1vdmFsIG9mIHRoZSBtYW51YWwgYGV2ZW50ZmRfY3R4X3B1dGAgYW5kIHRoZSBgZXJyX2t6YWxsb2NgIGxhYmVsIGZ1cnRoZXIgcmVpbmZvcmNlIHRoaXMgY2xlYW51cC1mb2N1c2VkIGFwcHJvYWNoLiAgVGhlIGBub19mcmVlX3B0cmAgdXNhZ2Ugd2hlbiBhc3NpZ25pbmcgdG8gYGVudHJ5LVx1MDAzZWV2X2ZkX2N0eGAgaXMgaW50ZXJlc3Rpbmc7IGl0IHN1Z2dlc3RzIHRoYXQgdGhlIG93bmVyc2hpcCBhbmQgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiBgZXZfZmRfY3R4YCBpcyBjYXJlZnVsbHkgaGFuZGxlZC5cblxuTm93LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQuICBXZSdyZSB0YWxraW5nIGFib3V0IERSTSBzeW5jb2JqLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBEUk0gY29yZSBhbmQgZXhwb3NlZCB2aWEgdGhlIHVzdWFsIERSTSBkZXZpY2UgaW9jdGxzLiBUaGlzIG1lYW5zIGFjY2Vzc2liaWxpdHkgaXMgdmlhIGRldmljZXMgbGlrZSBgL2Rldi9kcmkvY2FyZCpgLCBgL2Rldi9kcmkvcmVuZGVyRCpgLCBhbmQgZXZlbiB0aHJvdWdoIG1vY2sgZGV2aWNlcyBsaWtlIGB2Z2VtYCBvciBgdmttc2AuICBHaXZlbiB0aGUgbmF0dXJlIG9mIHRob3NlIGludGVyZmFjZXMsIHN5emthbGxlciB0ZXN0cyB0aGUgRFJNIGlvY3RscyBoZWF2aWx5LCBpbmNsdWRpbmcgYERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkRgLiBgZXZlbnRmZGAgaXRzZWxmIGlzIGEgY29yZSBrZXJuZWwgZmVhdHVyZS5cblxuU28sIEknbSBnb2luZyB0byBydW4gYSBmZXcgcXVpY2sgYGdyZXBgIHNlYXJjaGVzIGFuZCBLY29uZmlnIGNoZWNrcyB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHN5bWJvbHMgYXQgcGxheSBoZXJlLiBUaGlzIHBhdGNoIHNlZW1zIHNvdW5kIGF0IGZpcnN0IGdsYW5jZSwgYnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBldmVyeXRoaW5nIGlzIGFzIGV4cGVjdGVkLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBjb250cmlidXRpb24gaW1wcm92aW5nIGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYnkgZW1wbG95aW5nIG1vcmUgbW9kZXJuIHRvb2xzIHRvIGRvIHNvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDY6NDAuMDM1NDE3MzYyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNjQ4MTExNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRFJNfGNvbmZpZyBEUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODQxOSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNy0jXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6ODptZW51Y29uZmlnIERSTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlciAoWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyIERSSSBzdXBwb3J0KVxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTM0PWlmIERSTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM1LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjM2OmNvbmZpZyBEUk1fTUlQSV9EQklcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNDAtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NDE6Y29uZmlnIERSTV9NSVBJX0RTSVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQyLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjQ1OmNvbmZpZyBEUk1fS01TX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01MS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo1Mjpjb25maWcgRFJNX0RSQVdcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01My1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01NS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo1Njpjb25maWcgRFJNX1BBTklDXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTctXFx0Ym9vbCBcXFwiRGlzcGxheSBhIHVzZXItZnJpZW5kbHkgbWVzc2FnZSB3aGVuIGEga2VybmVsIHBhbmljIG9jY3Vyc1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjY5OmNvbmZpZyBEUk1fUEFOSUNfRk9SRUdST1VORF9DT0xPUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTcwLVxcdGhleCBcXFwiRHJtIHBhbmljIHNjcmVlbiBmb3JlZ3JvdW5kIGNvbG9yLCBpbiBSR0JcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03My1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo3NDpjb25maWcgRFJNX1BBTklDX0JBQ0tHUk9VTkRfQ09MT1JcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03NS1cXHRoZXggXFxcIkRybSBwYW5pYyBzY3JlZW4gYmFja2dyb3VuZCBjb2xvciwgaW4gUkdCXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzgtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Nzk6Y29uZmlnIERSTV9QQU5JQ19ERUJVR1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkFkZCBhIGRlYnVnIGZzIGVudHJ5IHRvIHRyaWdnZXIgZHJtX3BhbmljXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODctXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6ODg6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy04OS1cXHRzdHJpbmcgXFxcIlBhbmljIHNjcmVlbiBmb3JtYXR0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMDAtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTAxOmNvbmZpZyBEUk1fUEFOSUNfU0NSRUVOX1FSX0NPREVcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMDItXFx0Ym9vbCBcXFwiQWRkIGEgcGFuaWMgc2NyZWVuIHdpdGggYSBRUiBjb2RlXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTExLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjExMjpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFX1VSTFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTExMy1cXHRzdHJpbmcgXFxcIkJhc2UgVVJMIG9mIHRoZSBRUiBjb2RlIGluIHRoZSBwYW5pYyBzY3JlZW5cXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMjItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTIzOmNvbmZpZyBEUk1fUEFOSUNfU0NSRUVOX1FSX1ZFUlNJT05cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMjQtXFx0aW50IFxcXCJNYXhpbXVtIHZlcnNpb24gKHNpemUpIG9mIHRoZSBRUiBjb2RlLlxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEzMi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMzM6Y29uZmlnIERSTV9SQVNcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMzQtXFx0Ym9vbCBcXFwiRFJNIFJBUyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTQyLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE0Mzpjb25maWcgRFJNX0RFQlVHX0RQX01TVF9UT1BPTE9HWV9SRUZTXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTQ0LSAgICAgICAgYm9vbCBcXFwiRW5hYmxlIHJlZmNvdW50IGJhY2t0cmFjZSBoaXN0b3J5IGluIHRoZSBEUCBNU1QgaGVscGVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE1Ny1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNTg6Y29uZmlnIERSTV9ERUJVR19NT0RFU0VUX0xPQ0tcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNTktXFx0Ym9vbCBcXFwiRW5hYmxlIGJhY2t0cmFjZSBoaXN0b3J5IGZvciBsb2NrIGNvbnRlbnRpb25cXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTczOmNvbmZpZyBEUk1fQ0xJRU5UXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTc0LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTE4Mj1zb3VyY2UgXFxcImRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWdcXFwiXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTgzLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE4NDpjb25maWcgRFJNX0xPQURfRURJRF9GSVJNV0FSRVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE4NS1cXHRib29sIFxcXCJBbGxvdyB0byBzcGVjaWZ5IGFuIEVESUQgZGF0YSBzZXQgaW5zdGVhZCBvZiBwcm9iaW5nIGZvciBpdFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTE5Nj1zb3VyY2UgXFxcImRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L0tjb25maWdcXFwiXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTk3LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE5ODpjb25maWcgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE5OS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjA2LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIwNzpjb25maWcgRFJNX0VYRUNcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMDgtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIxMi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMTM6Y29uZmlnIERSTV9HUFVWTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIxNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjIxPWNvbmZpZyBSVVNUX0RSTV9HUFVWTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjI3LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIyODpjb25maWcgRFJNX0dQVVNWTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjM2LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIzNzpjb25maWcgRFJNX0JVRERZXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjM4LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDMtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjQ0OmNvbmZpZyBEUk1fVlJBTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDUtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI0OS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNTA6Y29uZmlnIERSTV9UVE1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjUxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNTktXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjYwOmNvbmZpZyBEUk1fR0VNX0RNQV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNjEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI2OC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNjk6Y29uZmlnIERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjcwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yNzg9Y29uZmlnIFJVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4NC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyODU6Y29uZmlnIERSTV9TVUJBTExPQ19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4OC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyODk6Y29uZmlnIERSTV9TQ0hFRFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjkzLSMgU2VwYXJhdGUgb3B0aW9uIGFzIG5vdCBhbGwgRFJNIGRyaXZlcnMgdXNlIGl0XFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjk0OmNvbmZpZyBEUk1fUEFORUxfQkFDS0xJR0hUX1FVSVJLU1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5NS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5Ni1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyOTc6Y29uZmlnIERSTV9QUklWQUNZX1NDUkVFTlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5OC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0zNjg9ZW5kaWZcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3MC0jIFNlcGFyYXRlIG9wdGlvbiBiZWNhdXNlIGRybV9wYW5lbF9vcmllbnRhdGlvbl9xdWlya3MuYyBpcyBzaGFyZWQgd2l0aCBmYmRldlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjM3MTpjb25maWcgRFJNX1BBTkVMX09SSUVOVEFUSU9OX1FVSVJLU1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3Mi1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6MTpjb25maWcgRFJNX1VTRV9EWU5BTUlDX0RFQlVHXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMi1cXHRib29sIFxcXCJ1c2UgZHluYW1pYyBkZWJ1ZyB0byBpbXBsZW1lbnQgZHJtLmRlYnVnXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTMtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6MTQ6Y29uZmlnIERSTV9XRVJST1JcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0xNS1cXHRib29sIFxcXCJDb21waWxlIHRoZSBkcm0gc3Vic3lzdGVtIHdpdGggd2FybmluZ3MgYXMgZXJyb3JzXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMjctXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6Mjg6Y29uZmlnIERSTV9IRUFERVJfVEVTVFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTI5LVxcdGJvb2wgXFxcIkVuc3VyZSBEUk0gaGVhZGVycyBhcmUgc2VsZi1jb250YWluZWQgYW5kIHBhc3Mga2VybmVsLWRvY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTM4LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjM5OmNvbmZpZyBEUk1fREVCVUdfTU1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy00MC1cXHRib29sIFxcXCJJbnNlcnQgZXh0cmEgY2hlY2tzIGFuZCBkZWJ1ZyBpbmZvIGludG8gdGhlIERSTSByYW5nZSBtYW5hZ2Vyc1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTUyLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjUzOmNvbmZpZyBEUk1fS1VOSVRfVEVTVF9IRUxQRVJTXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctNTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTU5LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjYwOmNvbmZpZyBEUk1fS1VOSVRfVEVTVFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgRFJNXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy04NS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zzo4Njpjb25maWcgRFJNX1RUTV9LVU5JVF9URVNUXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctODctXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBUVE1cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTEwMS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1ZzoxMDI6Y29uZmlnIERSTV9TQ0hFRF9LVU5JVF9URVNUXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTAzLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgdGhlIERSTSBzY2hlZHVsZXJcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTExMy1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1ZzoxMTQ6Y29uZmlnIERSTV9FWFBPUlRfRk9SX1RFU1RTXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTE1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS01LVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo2OkNGTEFHUy0kKENPTkZJR19EUk1fVVNFX0RZTkFNSUNfREVCVUcpXFx0Kz0gLUREWU5BTUlDX0RFQlVHX01PRFVMRVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTI5PWVuZGlmXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMzItIyBFbmFibGUgLVdlcnJvciBpbiBDSSBhbmQgZGV2ZWxvcG1lbnRcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MzM6c3ViZGlyLWNjZmxhZ3MtJChDT05GSUdfRFJNX1dFUlJPUikgKz0gLVdlcnJvclxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0zNC1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MzU9ZHJtLXkgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTc1LVxcdGRybV93cml0ZWJhY2sub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo3Njpkcm0tJChDT05GSUdfRFJNX0NMSUVOVCkgKz0gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03Ny1cXHRkcm1fY2xpZW50Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTgxPWRybS0kKENPTkZJR19DT01QQVQpICs9IGRybV9pb2MzMi5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjgyOmRybS0kKENPTkZJR19EUk1fUEFORUwpICs9IGRybV9wYW5lbC5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTgzLWRybS0kKENPTkZJR19PRikgKz0gZHJtX29mLm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT04NT1kcm0tJChDT05GSUdfREVCVUdfRlMpICs9IFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS04Ny1cXHRkcm1fZGVidWdmc19jcmMub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo4ODpkcm0tJChDT05GSUdfRFJNX0xPQURfRURJRF9GSVJNV0FSRSkgKz0gZHJtX2VkaWRfbG9hZC5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjg5OmRybS0kKENPTkZJR19EUk1fUFJJVkFDWV9TQ1JFRU4pICs9IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtOTAtXFx0ZHJtX3ByaXZhY3lfc2NyZWVuLm8gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS05MS1cXHRkcm1fcHJpdmFjeV9zY3JlZW5feDg2Lm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTI6ZHJtLSQoQ09ORklHX0RSTV9BQ0NFTCkgKz0gLi4vLi4vYWNjZWwvZHJtX2FjY2VsLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTM6ZHJtLSQoQ09ORklHX0RSTV9QQU5JQykgKz0gZHJtX3BhbmljLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTQ6ZHJtLSQoQ09ORklHX0RSTV9EUkFXKSArPSBkcm1fZHJhdy5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjk1OmRybS0kKENPTkZJR19EUk1fUEFOSUNfU0NSRUVOX1FSX0NPREUpICs9IGRybV9wYW5pY19xci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjk2OmRybS0kKENPTkZJR19EUk1fUkFTKSArPSBkcm1fcmFzLm8gZHJtX3Jhc19ubC5vIGRybV9yYXNfZ2VubF9mYW1pbHkub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo5NzpvYmotJChDT05GSUdfRFJNKVxcdCs9IGRybS5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTk4LVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo5OTpvYmotJChDT05GSUdfRFJNX1BBTkVMX09SSUVOVEFUSU9OX1FVSVJLUykgKz0gZHJtX3BhbmVsX29yaWVudGF0aW9uX3F1aXJrcy5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfRFJNX1BBTkVMX0JBQ0tMSUdIVF9RVUlSS1MpICs9IGRybV9wYW5lbF9iYWNrbGlnaHRfcXVpcmtzLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTAxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEwNS0jXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEwNjpvYmotJChDT05GSUdfRFJNX0VYRUMpICs9IGRybV9leGVjLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTA3Om9iai0kKENPTkZJR19EUk1fR1BVVk0pICs9IGRybV9ncHV2bS5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEwOC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMTE9ZHJtX2dwdXN2bV9oZWxwZXItJChDT05GSUdfWk9ORV9ERVZJQ0UpICs9IFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTQtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjExNTpvYmotJChDT05GSUdfRFJNX0dQVVNWTSkgKz0gZHJtX2dwdXN2bV9oZWxwZXIub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTYtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjExNzpvYmotJChDT05GSUdfRFJNX0JVRERZKSArPSBkcm1fYnVkZHkub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTgtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTExOT1kcm1fZG1hX2hlbHBlci15IDo9IGRybV9nZW1fZG1hX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyMDpkcm1fZG1hX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJkZXZfZG1hLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTIxOmRybV9kbWFfaGVscGVyLSQoQ09ORklHX0RSTV9LTVNfSEVMUEVSKSArPSBkcm1fZmJfZG1hX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyMjpvYmotJChDT05GSUdfRFJNX0dFTV9ETUFfSEVMUEVSKSArPSBkcm1fZG1hX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEyMy1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTI0PWRybV9zaG1lbV9oZWxwZXIteSA6PSBkcm1fZ2VtX3NobWVtX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyNTpkcm1fc2htZW1faGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IGRybV9mYmRldl9zaG1lbS5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyNjpvYmotJChDT05GSUdfRFJNX0dFTV9TSE1FTV9IRUxQRVIpICs9IGRybV9zaG1lbV9oZWxwZXIub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMjctXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTEyOD1kcm1fc3ViYWxsb2NfaGVscGVyLXkgOj0gZHJtX3N1YmFsbG9jLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTI5Om9iai0kKENPTkZJR19EUk1fU1VCQUxMT0NfSEVMUEVSKSArPSBkcm1fc3ViYWxsb2NfaGVscGVyLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTMwLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMzE9ZHJtX3ZyYW1faGVscGVyLXkgOj0gZHJtX2dlbV92cmFtX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfRFJNX1ZSQU1fSEVMUEVSKSArPSBkcm1fdnJhbV9oZWxwZXIub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMzMtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTEzND1kcm1fdHRtX2hlbHBlci15IDo9IGRybV9nZW1fdHRtX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEzNTpkcm1fdHRtX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJkZXZfdHRtLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTM2Om9iai0kKENPTkZJR19EUk1fVFRNX0hFTFBFUikgKz0gZHJtX3R0bV9oZWxwZXIub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMzctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTQyPWRybV9rbXNfaGVscGVyLXkgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE1OC1cXHRkcm1fdmJsYW5rX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE1OTpkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fUEFORUxfQlJJREdFKSArPSBicmlkZ2UvcGFuZWwub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNjA6ZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0gZHJtX2ZiX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2MTpvYmotJChDT05GSUdfRFJNX0tNU19IRUxQRVIpICs9IGRybV9rbXNfaGVscGVyLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTYyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTE2Nz1vYmoteVxcdFxcdFxcdCs9IHRlc3RzL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xNjgtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2OTpvYmotJChDT05GSUdfRFJNX01JUElfREJJKSArPSBkcm1fbWlwaV9kYmkub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzA6b2JqLSQoQ09ORklHX0RSTV9NSVBJX0RTSSkgKz0gZHJtX21pcGlfZHNpLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTcxLW9iai15XFx0XFx0XFx0Kz0gYXJtL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTE3Mz1vYmoteVxcdFxcdFxcdCs9IGRpc3BsYXkvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE3NDpvYmotJChDT05GSUdfRFJNX1RUTSlcXHQrPSB0dG0vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE3NTpvYmotJChDT05GSUdfRFJNX1NDSEVEKVxcdCs9IHNjaGVkdWxlci9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc2Om9iai0kKENPTkZJR19EUk1fUkFERU9OKSs9IHJhZGVvbi9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc3Om9iai0kKENPTkZJR19EUk1fQU1ER1BVKSs9IGFtZC9hbWRncHUvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE3ODpvYmotJChDT05GSUdfRFJNX0FNREdQVSkrPSBhbWQvYW1keGNwL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzk6b2JqLSQoQ09ORklHX0RSTV9JOTE1KVxcdCs9IGk5MTUvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4MDpvYmotJChDT05GSUdfRFJNX1hFKVxcdCs9IHhlL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODE6b2JqLSQoQ09ORklHX0RSTV9LTUJfRElTUExBWSkgICs9IGttYi9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTgyOm9iai0kKENPTkZJR19EUk1fTUdBRzIwMCkgKz0gbWdhZzIwMC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTgzOm9iai0kKENPTkZJR19EUk1fVjNEKSAgKz0gdjNkL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODQ6b2JqLSQoQ09ORklHX0RSTV9WQzQpICArPSB2YzQvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4NTpvYmotJChDT05GSUdfRFJNX1ZNV0dGWCkrPSB2bXdnZngvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4NjpvYmotJChDT05GSUdfRFJNX1ZHRU0pXFx0Kz0gdmdlbS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTg3Om9iai0kKENPTkZJR19EUk1fVktNUylcXHQrPSB2a21zL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODg6b2JqLSQoQ09ORklHX0RSTV9OT1VWRUFVKSArPW5vdXZlYXUvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE4OS0jIG5vdmEtZHJtIGlzIGJ1aWx0IGZyb20gZHJpdmVycy9ncHUvTWFrZWZpbGUgdG9nZXRoZXIgd2l0aCBub3ZhLWNvcmUuXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5MDpvYmotJChDT05GSUdfRFJNX0VYWU5PUykgKz1leHlub3MvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5MTpvYmotJChDT05GSUdfRFJNX1JPQ0tDSElQKSArPXJvY2tjaGlwL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTI6b2JqLSQoQ09ORklHX0RSTV9HTUE1MDApICs9IGdtYTUwMC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTkzOm9iai0kKENPTkZJR19EUk1fVURMKSArPSB1ZGwvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5NDpvYmotJChDT05GSUdfRFJNX0FTVCkgKz0gYXN0L1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTU6b2JqLSQoQ09ORklHX0RSTV9BUk1BREEpICs9IGFybWFkYS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTk2Om9iai0kKENPTkZJR19EUk1fQVRNRUxfSExDREMpXFx0Kz0gYXRtZWwtaGxjZGMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE5Ny1vYmoteVxcdFxcdFxcdCs9IHJlbmVzYXMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTE5OD1vYmoteVxcdFxcdFxcdCs9IG9tYXBkcm0vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRFJNX1NVTjRJKSArPSBzdW40aS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjAwLW9iai15XFx0XFx0XFx0Kz0gdGlsY2RjL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDE6b2JqLSQoQ09ORklHX0RSTV9RWEwpICs9IHF4bC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjAyOm9iai0kKENPTkZJR19EUk1fVklSVElPX0dQVSkgKz0gdmlydGlvL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDM6b2JqLSQoQ09ORklHX0RSTV9NU00pICs9IG1zbS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjA0Om9iai0kKENPTkZJR19EUk1fVEVHUkEpICs9IHRlZ3JhL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDU6b2JqLSQoQ09ORklHX0RSTV9TVE0pICs9IHN0bS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjA2Om9iai0kKENPTkZJR19EUk1fU1RJKSArPSBzdGkvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIwNy1vYmoteSBcXHRcXHRcXHQrPSBpbXgvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIwODpvYmotJChDT05GSUdfRFJNX0lOR0VOSUMpICs9IGluZ2VuaWMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIwOTpvYmotJChDT05GSUdfRFJNX0xPR0lDVkMpICs9IGxvZ2ljdmMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIxMDpvYmotJChDT05GSUdfRFJNX01FRElBVEVLKSArPSBtZWRpYXRlay9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjExOm9iai0kKENPTkZJR19EUk1fTUVTT04pXFx0Kz0gbWVzb24vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIxMi1vYmoteVxcdFxcdFxcdCs9IHBhbmVsL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yMTM9b2JqLXlcXHRcXHRcXHQrPSBicmlkZ2UvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIxNDpvYmotJChDT05GSUdfRFJNX0ZTTF9EQ1UpICs9IGZzbC1kY3UvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIxNTpvYmotJChDT05GSUdfRFJNX0VUTkFWSVYpICs9IGV0bmF2aXYvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIxNi1vYmoteVxcdFxcdFxcdCs9IGhpc2lsaWNvbi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yMTk9b2JqLXlcXHRcXHRcXHQrPSB0aW55L1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjA6b2JqLSQoQ09ORklHX0RSTV9QTDExMSkgKz0gcGwxMTEvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyMTpvYmotJChDT05GSUdfRFJNX1RWRTIwMCkgKz0gdHZlMjAwL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjI6b2JqLSQoQ09ORklHX0RSTV9BRFApICs9IGFkcC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjIzOm9iai0kKENPTkZJR19EUk1fWEVOKSArPSB4ZW4vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyNDpvYmotJChDT05GSUdfRFJNX1ZCT1hWSURFTykgKz0gdmJveHZpZGVvL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjU6b2JqLSQoQ09ORklHX0RSTV9MSU1BKSAgKz0gbGltYS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI2Om9iai0kKENPTkZJR19EUk1fUEFORlJPU1QpICs9IHBhbmZyb3N0L1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjc6b2JqLSQoQ09ORklHX0RSTV9QQU5USE9SKSArPSBwYW50aG9yL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjg6b2JqLSQoQ09ORklHX0RSTV9UWVIpICs9IHR5ci9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI5Om9iai0kKENPTkZJR19EUk1fQVNQRUVEX0dGWCkgKz0gYXNwZWVkL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzA6b2JqLSQoQ09ORklHX0RSTV9NQ0RFKSArPSBtY2RlL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzE6b2JqLSQoQ09ORklHX0RSTV9USURTUykgKz0gdGlkc3MvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIzMi1vYmoteVxcdFxcdFxcdCs9IHhsbngvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTIzMz1vYmoteVxcdFxcdFxcdCs9IGd1ZC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjM0Om9iai0kKENPTkZJR19EUk1fSFlQRVJWKSArPSBoeXBlcnYvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIzNS1vYmoteVxcdFxcdFxcdCs9IHNpdHJvbml4L1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yMzY9b2JqLXlcXHRcXHRcXHQrPSBzb2xvbW9uL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzc6b2JqLSQoQ09ORklHX0RSTV9TUFJEKSArPSBzcHJkL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzg6b2JqLSQoQ09ORklHX0RSTV9MT09OR1NPTikgKz0gbG9vbmdzb24vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIzOTpvYmotJChDT05GSUdfRFJNX1BPV0VSVlIpICs9IGltYWdpbmF0aW9uL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyNDA6b2JqLSQoQ09ORklHX0RSTV9WRVJJU0lMSUNPTl9EQykgKz0gdmVyaXNpbGljb24vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTI0MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yNDM9aGRydGVzdC1maWxlcyA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjQ2LVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyNDc6YWx3YXlzLSQoQ09ORklHX0RSTV9IRUFERVJfVEVTVCkgKz0gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yNDgtXFx0JChwYXRzdWJzdCAlLmgsJS5oZHJ0ZXN0LCAkKGhkcnRlc3QtZmlsZXMpKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTI1MT1xdWlldF9jbWRfaGRydGVzdCA9IEhEUlRFU1QgJChwYXRzdWJzdCAlLmhkcnRlc3QsJS5oLCRAKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTI1My1cXHRcXHQkKENDKSAkKGNfZmxhZ3MpIC1mc3ludGF4LW9ubHkgLXggYyAvZGV2L251bGwgLWluY2x1ZGUgJFxcdTAwM2MgLWluY2x1ZGUgJFxcdTAwM2M7IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjU0OlxcdFxcdCBQWVRIT05ET05UV1JJVEVCWVRFQ09ERT0xICQoUFlUSE9OMykgJChLRVJORUxET0MpIC1ub25lICQoaWYgJChDT05GSUdfV0VSUk9SKSQoQ09ORklHX0RSTV9XRVJST1IpLC1XZXJyb3IpICRcXHUwMDNjOyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTI1NS1cXHRcXHR0b3VjaCAkQFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIE1JVFxcbmRyaXZlcnMvZ3B1L2RybS9hZHAvS2NvbmZpZzoyOmNvbmZpZyBEUk1fQURQXFxuZHJpdmVycy9ncHUvZHJtL2FkcC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkRSTSBTdXBwb3J0IGZvciBwcmUtRENQIEFwcGxlIGRpc3BsYXkgY29udHJvbGxlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYWRwL01ha2VmaWxlPTQ9YWRwZHJtLW1pcGkteSA6PSBhZHAtbWlwaS5vXFxuZHJpdmVycy9ncHUvZHJtL2FkcC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19EUk1fQURQKSArPSBhZHBkcm0ubyBhZHBkcm0tbWlwaS5vXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9LY29uZmlnPTI9bWVudSBcXFwiQUNQIChBdWRpbyBDb1Byb2Nlc3NvcikgQ29uZmlndXJhdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYWNwL0tjb25maWctNC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9LY29uZmlnOjU6Y29uZmlnIERSTV9BTURfQUNQXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvS2NvbmZpZy02LVxcdGJvb2wgXFxcIkVuYWJsZSBBTUQgQXVkaW8gQ29Qcm9jZXNzb3IgSVAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctMi1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjM6Y29uZmlnIERSTV9BTURHUFVcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkFNRCBHUFVcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc6NDE6Y29uZmlnIERSTV9BTURHUFVfU0lcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIkVuYWJsZSBhbWRncHUgc3VwcG9ydCBmb3IgU0kgcGFydHNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTU1LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc6NTY6Y29uZmlnIERSTV9BTURHUFVfQ0lLXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy01Ny1cXHRib29sIFxcXCJFbmFibGUgYW1kZ3B1IHN1cHBvcnQgZm9yIENJSyBwYXJ0c1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctNzQtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo3NTpjb25maWcgRFJNX0FNREdQVV9VU0VSUFRSXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy03Ni1cXHRib29sIFxcXCJBbHdheXMgZW5hYmxlIHVzZXJwdHIgd3JpdGUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctODMtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo4NDpjb25maWcgRFJNX0FNRF9JU1BcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTg1LVxcdGJvb2wgXFxcIkVuYWJsZSBBTUQgSW1hZ2UgU2lnbmFsIFByb2Nlc3NvciBJUCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy05NC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjk1OmNvbmZpZyBEUk1fQU1ER1BVX1dFUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctOTYtXFx0Ym9vbCBcXFwiRm9yY2UgdGhlIGNvbXBpbGVyIHRvIHRocm93IGFuIGVycm9yIGluc3RlYWQgb2YgYSB3YXJuaW5nIHdoZW4gY29tcGlsaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU9NDg9c3ViZGlyLWNjZmxhZ3MteSArPSAtV25vLW92ZXJyaWRlLWluaXRcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTo0OTpzdWJkaXItY2NmbGFncy0kKENPTkZJR19EUk1fQU1ER1BVX1dFUlJPUikgKz0gLVdlcnJvclxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTUwLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU9Nzk9YW1kZ3B1LSQoQ09ORklHX1BFUkZfRVZFTlRTKSArPSBhbWRncHVfcG11Lm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTgxLSMgYWRkIGFzaWMgc3BlY2lmaWMgYmxvY2tcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTo4MjphbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9DSUspKz0gY2lrLm8gY2lrX2loLm8gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTgzLVxcdGRjZV92OF8wLm8gZ2Z4X3Y3XzAubyBjaWtfc2RtYS5vIHV2ZF92NF8yLm8gdmNlX3YyXzAub1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTg0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjg1OmFtZGdwdS0kKENPTkZJR19EUk1fQU1ER1BVX1NJKSs9IHNpLm8gZ21jX3Y2XzAubyBnZnhfdjZfMC5vIHNpX2loLm8gc2lfZG1hLm8gZGNlX3Y2XzAubyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtODYtXFx0dXZkX3YzXzEubyB2Y2VfdjFfMC5vXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT0yODU9YW1kZ3B1LXkgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMjk4LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjI5OTppZm5lcSAoJChDT05GSUdfRFJNX0FNREdQVV9DSUspLClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0zMDAtYW1kZ3B1LXkgKz0gYW1kZ3B1X2FtZGtmZF9nZnhfdjcub1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU9MzA5PWFtZGdwdS15ICs9IGFtZGdwdV9qb2Iub1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzExLSMgQUNQIGNvbXBvbmV0XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU6MzEyOmlmbmVxICgkKENPTkZJR19EUk1fQU1EX0FDUCksKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMxMy1hbWRncHUteSArPSBhbWRncHVfYWNwLm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTMyOD1hbWRncHUteSArPSAkKEFNRF9QT1dFUlBMQVlfRklMRVMpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzI5LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjMzMDppZm5lcSAoJChDT05GSUdfRFJNX0FNRF9EQyksKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMzMS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTMzNz1lbmRpZlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzM5LSMgYWRkIGlzcCBibG9ja1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjM0MDppZm5lcSAoJChDT05GSUdfRFJNX0FNRF9JU1ApLClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0zNDEtYW1kZ3B1LXkgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU9MzUwPWFtZGdwdS15ICs9ICQoQU1EX0dQVV9SQVNfRklMRVMpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzUxLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjM1MjpvYmotJChDT05GSUdfRFJNX0FNREdQVSkrPSBhbWRncHUub1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMTE4LSNpbmNsdWRlIFxcXCJhbWRncHVfYWNwaS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjExOTojaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9JU1ApXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMTIwLSNpbmNsdWRlIFxcXCJhbWRncHVfaXNwLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaD0yNDQ9ZXh0ZXJuIGludCBhbWRncHVfcmVzZXRfbWV0aG9kO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTI0NS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaDoyNDY6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMjQ3LWV4dGVybiBpbnQgYW1kZ3B1X3NpX3N1cHBvcnQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMjQ4LSNlbmRpZlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjI0OTojaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfQ0lLXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMjUwLWV4dGVybiBpbnQgYW1kZ3B1X2Npa19zdXBwb3J0O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg9NjIxPXN0cnVjdCBhbWRncHVfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTYyNS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaDo2MjY6I2lmZGVmIENPTkZJR19EUk1fQU1EX0FDUFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTYyNy1cXHRzdHJ1Y3QgYW1kZ3B1X2FjcFxcdFxcdGFjcDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTc5OC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaDo3OTk6I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfSVNQKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTgwMC1cXHQvKiBpc3AgKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM9MTI5Mz1pbnQgYW1kZ3B1X2FjcGlfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmMtMTI5OC1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZGNfZW5hYmxlZCkge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM6MTI5OTojaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTEzMDAtXFx0XFx0XFx0c3RydWN0IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgKmRtID0gXFx1MDAyNmFkZXYtXFx1MDAzZWRtO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYz0xNTUzPWJvb2wgYW1kZ3B1X2FjcGlfaXNfczBpeF9hY3RpdmUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTE1ODctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYzoxNTg4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fQU1EX0lTUClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTE1ODktc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBpc3Bfc2Vuc29yX2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYz0xNTk5PWludCBhbWRncHVfYWNwaV9nZXRfaXNwNF9kZXYoc3RydWN0IGFjcGlfZGV2aWNlICoqZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYy0xNjE2LX1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jOjE2MTc6I2VuZGlmIC8qIENPTkZJR19EUk1fQU1EX0lTUCAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuaD0xNDU9c3RhdGljIGlubGluZSBib29sIGFtZGdwdV9hY3BpX2lzX3MzX2FjdGl2ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikgeyByZXR1cm4gZmFsc2U7IH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmgtMTQ3LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmg6MTQ4OiNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0lTUClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5oLTE0OS1pbnQgYW1kZ3B1X2FjcGlfZ2V0X2lzcDRfZGV2KHN0cnVjdCBhY3BpX2RldmljZSAqKmRldik7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuYz0xMDI3PWludCBhbWRncHVfYXRvbWJpb3NfZ2V0X2Nsb2NrX2RpdmlkZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmMtMTEyNC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuYzoxMTI1OiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9TSVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5jLTExMjYtaW50IGFtZGdwdV9hdG9tYmlvc19nZXRfbWVtb3J5X3BsbF9kaXZpZGVycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oPTE1NT1pbnQgYW1kZ3B1X2F0b21iaW9zX2dldF9jbG9ja19kaXZpZGVycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oLTE2MC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuaDoxNjE6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmgtMTYyLWludCBhbWRncHVfYXRvbWJpb3NfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jPTIxMzM9aW50IGFtZGdwdV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jLTIxNzktXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RlYnVnZnMuYzoyMTgwOiNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZWJ1Z2ZzLmMtMjE4MS1cXHRpZiAoYWRldi1cXHUwMDNlZGNfZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy01Ni0jaW5jbHVkZSBcXFwiYW1kX3BjaWUuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM6NTc6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTU4LSNpbmNsdWRlIFxcXCJzaS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy01OS0jZW5kaWZcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM6NjA6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX0NJS1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy02MS0jaW5jbHVkZSBcXFwiY2lrLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM9MTk4MT1zdGF0aWMgaW50IGFtZGdwdV9kZXZpY2VfaXBfZWFybHlfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0yMDEwLVxcdHN3aXRjaCAoYWRldi1cXHUwMDNlYXNpY190eXBlKSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjIwMTE6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTIwMTItXFx0Y2FzZSBDSElQX1ZFUkRFOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTIwMjItI2VuZGlmXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjIwMjM6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX0NJS1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0yMDI0LVxcdGNhc2UgQ0hJUF9CT05BSVJFOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jPTM0ODU9Ym9vbCBhbWRncHVfZGV2aWNlX2FzaWNfaGFzX2RjX3N1cHBvcnQoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMzQ4OC1cXHRzd2l0Y2ggKGFzaWNfdHlwZSkge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzozNDg5OiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9TSVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0zNDkwLVxcdGNhc2UgQ0hJUF9IQUlOQU46XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMzQ5NC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjM0OTU6I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA2OjQwLjg1MTkwOTI2OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0MDAzNjU2NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgYnVpbGQgcHJvY2VzcywgZm9jdXNpbmcgb24gYGRybV9zeW5jb2JqLm9gLCBhcyBkZXJpdmVkIGZyb20gYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWA6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIERSTSBNYWtlZmlsZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWAgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBkcm1fc3luY29iai5vYCBvYmplY3QgZmlsZSBnZXRzIGNvbXBpbGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgaW52b2x2ZWQsIGFuZCBhbnkgc3BlY2lmaWMgcnVsZXMgdGhhdCBtaWdodCBhcHBseSB0byBpdC4gIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSB0eXBpY2FsIG1ha2VmaWxlIHN0cnVjdHVyZTogdGFyZ2V0cywgcHJlcmVxdWlzaXRlcywgYW5kIHRoZSBjb21tYW5kcyB0byBidWlsZCB0aGUgb2JqZWN0LiBJJ20gbG9va2luZyBmb3IgYW55IHVudXN1YWwgdHdpc3RzIG9yIHNwZWNpYWwgY29uc2lkZXJhdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBzeW5jaHJvbml6YXRpb24gb2JqZWN0LiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGVzPyBTcGVjaWFsIGxpbmtlciBmbGFncz8gQW55dGhpbmcgdGhhdCBqdW1wcyBvdXQgYXMgYmVpbmcgc3BlY2lmaWNhbGx5IHRhaWxvcmVkIGZvciBzeW5jIG9iamVjdHM/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J2xsIHByb2JhYmx5IGZvbGxvdyBhIHN0YW5kYXJkIHBhdHRlcm4sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiAgSSdsbCBzdGFydCBieSBsb29raW5nIGZvciBhIHJ1bGUgdGhhdCBleHBsaWNpdGx5IG5hbWVzIGBkcm1fc3luY29iai5vYCwgb3IgYSBtb3JlIGdlbmVyaWMgcGF0dGVybiB0aGF0IHdvdWxkIGNvdmVyIGl0LiBJJ2xsIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgdmFyaWFibGVzIGl0IG1pZ2h0IGJlIHVzaW5nIGFzIHdlbGwsIHRob3NlIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYW5kIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgdWx0aW1hdGVseSBzaGFwZXMgdGhlIG9iamVjdCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI2MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA2OjQ0LjI1MjI3NzU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNjM0MTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fc3luY29ialwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzE5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MzU9ZHJtLXkgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTY4LVxcdGRybV9yZWN0Lm8gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo2OTpcXHRkcm1fc3luY29iai5vIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNzAtXFx0ZHJtX3N5c2ZzLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMzMtI2luY2x1ZGUgXFx1MDAzY2RybS9hbWRncHVfZHJtLmhcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MzQ6I2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fc3luY29iai5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTM1LSNpbmNsdWRlIFxcdTAwM2Nkcm0vdHRtL3R0bV90dC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM9NDcxPXN0YXRpYyBpbnQgYW1kZ3B1X3N5bmNvYmpfbG9va3VwX2FuZF9hZGQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy00NzctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6NDc4OlxcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKHAtXFx1MDAzZWZpbHAsIGhhbmRsZSwgcG9pbnQsIGZsYWdzLCBcXHUwMDI2ZmVuY2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTQ3OS1cXHRpZiAocikge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM9NTI4PXN0YXRpYyBpbnQgYW1kZ3B1X2NzX3AyX3N5bmNvYmpfb3V0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtNTQ5LVxcdFxcdHAtXFx1MDAzZXBvc3RfZGVwc1tpXS5zeW5jb2JqID1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzo1NTA6XFx0XFx0XFx0ZHJtX3N5bmNvYmpfZmluZChwLVxcdTAwM2VmaWxwLCBkZXBzW2ldLmhhbmRsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtNTUxLVxcdFxcdGlmICghcC1cXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmopXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYz01NjE9c3RhdGljIGludCBhbWRncHVfY3NfcDJfc3luY29ial90aW1lbGluZV9zaWduYWwoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy01ODktXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6NTkwOlxcdFxcdGRlcC1cXHUwMDNlc3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQocC1cXHUwMDNlZmlscCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy01OTEtXFx0XFx0XFx0XFx0XFx0XFx0c3luY29ial9kZXBzW2ldLmhhbmRsZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYz0xMjY1PXN0YXRpYyB2b2lkIGFtZGdwdV9jc19wb3N0X2RlcGVuZGVuY2llcyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEyNzAtXFx0XFx0aWYgKHAtXFx1MDAzZXBvc3RfZGVwc1tpXS5jaGFpbiBcXHUwMDI2XFx1MDAyNiBwLVxcdTAwM2Vwb3N0X2RlcHNbaV0ucG9pbnQpIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxMjcxOlxcdFxcdFxcdGRybV9zeW5jb2JqX2FkZF9wb2ludChwLVxcdTAwM2Vwb3N0X2RlcHNbaV0uc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMjcyLVxcdFxcdFxcdFxcdFxcdCAgICAgIHAtXFx1MDAzZXBvc3RfZGVwc1tpXS5jaGFpbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEyNzUtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxMjc2OlxcdFxcdFxcdGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UocC1cXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTI3Ny1cXHRcXHRcXHRcXHRcXHRcXHQgIHAtXFx1MDAzZWZlbmNlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jPTEzODY9c3RhdGljIHZvaWQgYW1kZ3B1X2NzX3BhcnNlcl9maW5pKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwYXJzZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMzk1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwYXJzZXItXFx1MDAzZW51bV9wb3N0X2RlcHM7IGkrKykge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjEzOTY6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KHBhcnNlci1cXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEzOTctXFx0XFx0a2ZyZWUocGFyc2VyLVxcdTAwM2Vwb3N0X2RlcHNbaV0uY2hhaW4pO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM9MTU3Nj1pbnQgYW1kZ3B1X2NzX2ZlbmNlX3RvX2hhbmRsZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTU4MS1cXHRzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNTgyOlxcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTgzLVxcdHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE1OTQtXFx0Y2FzZSBBTURHUFVfRkVOQ0VfVE9fSEFORExFX0dFVF9TWU5DT0JKOlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjE1OTU6XFx0XFx0ciA9IGRybV9zeW5jb2JqX2NyZWF0ZShcXHUwMDI2c3luY29iaiwgMCwgZmVuY2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE1OTYtXFx0XFx0ZG1hX2ZlbmNlX3B1dChmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTk4LVxcdFxcdFxcdHJldHVybiByO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjE1OTk6XFx0XFx0ciA9IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoZmlscCwgc3luY29iaiwgXFx1MDAyNmluZm8tXFx1MDAzZW91dC5oYW5kbGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjE2MDA6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDEtXFx0XFx0cmV0dXJuIHI7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNjAzLVxcdGNhc2UgQU1ER1BVX0ZFTkNFX1RPX0hBTkRMRV9HRVRfU1lOQ09CSl9GRDpcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA0OlxcdFxcdHIgPSBkcm1fc3luY29ial9jcmVhdGUoXFx1MDAyNnN5bmNvYmosIDAsIGZlbmNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNjA1LVxcdFxcdGRtYV9mZW5jZV9wdXQoZmVuY2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTYwNy1cXHRcXHRcXHRyZXR1cm4gcjtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA4OlxcdFxcdHIgPSBkcm1fc3luY29ial9nZXRfZmQoc3luY29iaiwgKGludCAqKVxcdTAwMjZpbmZvLVxcdTAwM2VvdXQuaGFuZGxlKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA5OlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNjEwLVxcdFxcdHJldHVybiByO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmg9NDM9c3RydWN0IGFtZGdwdV9jc19wb3N0X2RlcCB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmg6NDQ6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5oLTQ1LVxcdHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTQxLSNpbmNsdWRlIFxcdTAwM2Nkcm0vdHRtL3R0bV90dC5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzo0MjojaW5jbHVkZSBcXHUwMDNjZHJtL2RybV9zeW5jb2JqLmhcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTQzLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jPTUyPWFtZGdwdV9nZW1fYWRkX2lucHV0X2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlscCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy03NC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6NzU6XFx0XFx0cmV0ID0gZHJtX3N5bmNvYmpfZmluZF9mZW5jZShmaWxwLCBzeW5jb2JqX2hhbmRsZXNbaV0sIDAsIDAsIFxcdTAwMjZmZW5jZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTc2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM9OTE9YW1kZ3B1X2dlbV91cGRhdGVfdGltZWxpbmVfbm9kZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtOTMtXFx0XFx0XFx0XFx0dWludDY0X3QgcG9pbnQsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjk0OlxcdFxcdFxcdFxcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTk1LVxcdFxcdFxcdFxcdHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKipjaGFpbilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMDAtXFx0LyogRmluZCB0aGUgc3luYyBvYmplY3QgKi9cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6MTAxOlxcdCpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxwLCBzeW5jb2JqX2hhbmRsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMi1cXHRpZiAoISpzeW5jb2JqKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTExMC1cXHRpZiAoISpjaGFpbikge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzoxMTE6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KCpzeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTEyLVxcdFxcdCpzeW5jb2JqID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYz04MzI9aW50IGFtZGdwdV9nZW1fdmFfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy04NDctXFx0c3RydWN0IGFtZGdwdV9ib192YSAqYm9fdmE7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjg0ODpcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnRpbWVsaW5lX3N5bmNvYmogPSBOVUxMO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy04NDktXFx0c3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqdGltZWxpbmVfY2hhaW4gPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMDItXFx0XFx0XFx0XFx0LyogUmVwbGFjZSB0aGUgZXhpc3RpbmcgZmVuY2Ugd2hlbiBubyBwb2ludCBpcyBnaXZlbi4gKi9cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6MTAwMzpcXHRcXHRcXHRcXHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHRpbWVsaW5lX3N5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMDQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAwNi1cXHRcXHRcXHRcXHQvKiBBdHRhY2ggdGhlIGxhc3QtdXBkYXRlIGZlbmNlIGF0IGEgc3BlY2lmaWMgcG9pbnQuICovXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjEwMDc6XFx0XFx0XFx0XFx0ZHJtX3N5bmNvYmpfYWRkX3BvaW50KHRpbWVsaW5lX3N5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMDgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgdGltZWxpbmVfY2hhaW4sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAyMC1cXHRpZiAodGltZWxpbmVfc3luY29iailcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6MTAyMTpcXHRcXHRkcm1fc3luY29ial9wdXQodGltZWxpbmVfc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMjItXFx0ZHJtX2V4ZWNfZmluaShcXHUwMDI2ZXhlYyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy0yOS0jaW5jbHVkZSBcXHUwMDNjZHJtL2RybV9leGVjLmhcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6MzA6I2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fc3luY29iai5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTMxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM9NDU1PWludCBhbWRncHVfdXNlcnFfc2lnbmFsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy00NjgtXFx0c3RydWN0IGFtZGdwdV91c2VycV9mZW5jZSAqZmVuY2U7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NDY5OlxcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmo7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNDcwLVxcdHN0cnVjdCBkcm1fZXhlYyBleGVjO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNDk2LVxcdGZvciAoZW50cnkgPSAwOyBlbnRyeSBcXHUwMDNjIG51bV9zeW5jb2JqX2hhbmRsZXM7IGVudHJ5KyspIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo0OTc6XFx0XFx0c3luY29ialtlbnRyeV0gPSBkcm1fc3luY29ial9maW5kKGZpbHAsIHN5bmNvYmpfaGFuZGxlc1tlbnRyeV0pO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ5OC1cXHRcXHRpZiAoIXN5bmNvYmpbZW50cnldKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy01NzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV9zeW5jb2JqX2hhbmRsZXM7IGkrKylcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo1NzE6XFx0XFx0ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqW2ldLCBcXHUwMDI2ZmVuY2UtXFx1MDAzZWJhc2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTU3Mi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTU4OS1cXHR3aGlsZSAoZW50cnktLSBcXHUwMDNlIDApXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NTkwOlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqW2VudHJ5XSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNTkxLVxcdGtmcmVlKHN5bmNvYmopO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM9NjAwPWFtZGdwdV91c2VycV93YWl0X2NvdW50X2ZlbmNlcyhzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy02MjAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHdhaXRfaW5mby1cXHUwMDNlbnVtX3N5bmNvYmpfdGltZWxpbmVfaGFuZGxlczsgaSsrKSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NjIxOlxcdFxcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHRpbWVsaW5lX2hhbmRsZXNbaV0sXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNjIyLVxcdFxcdFxcdFxcdFxcdCAgIHRpbWVsaW5lX3BvaW50c1tpXSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTYzNS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd2FpdF9pbmZvLVxcdTAwM2VudW1fc3luY29ial9oYW5kbGVzOyBpKyspIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo2MzY6XFx0XFx0ciA9IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoZmlscCwgc3luY29ial9oYW5kbGVzW2ldLCAwLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTYzNy1cXHRcXHRcXHRcXHRcXHQgICBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jPTcxMD1hbWRncHVfdXNlcnFfd2FpdF9yZXR1cm5fZmVuY2VfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NDMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV9wb2ludHM7IGkrKykge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jOjc0NDpcXHRcXHRyID0gZHJtX3N5bmNvYmpfZmluZF9mZW5jZShmaWxwLCB0aW1lbGluZV9oYW5kbGVzW2ldLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTc0NS1cXHRcXHRcXHRcXHRcXHQgICB0aW1lbGluZV9wb2ludHNbaV0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NjctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NzY4OlxcdFxcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHN5bmNvYmpfaGFuZGxlc1tpXSwgMCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NjktXFx0XFx0XFx0XFx0XFx0ICAgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYz0xMzI9c3RydWN0IGRybV9maWxlICpkcm1fZmlsZV9hbGxvYyhzdHJ1Y3QgZHJtX21pbm9yICptaW5vcilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTE2Ny1cXHRpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYzoxNjg6XFx0XFx0ZHJtX3N5bmNvYmpfb3BlbihmaWxlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xNjktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xODUtXFx0aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM6MTg2OlxcdFxcdGRybV9zeW5jb2JqX3JlbGVhc2UoZmlsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMTg3LVxcdGlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYz0yMzM9dm9pZCBkcm1fZmlsZV9mcmVlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTI1Ny1cXHRpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYzoyNTg6XFx0XFx0ZHJtX3N5bmNvYmpfcmVsZWFzZShmaWxlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0yNTktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg9MjU5PWRybV9pb2N0bF90IGRybV9nZXRjbGllbnQ7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI2MC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjYxOi8qIGRybV9zeW5jb2JqLmMgKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjYyOnZvaWQgZHJtX3N5bmNvYmpfb3BlbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI2Mzp2b2lkIGRybV9zeW5jb2JqX3JlbGVhc2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjQ6aW50IGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjUtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI2NjppbnQgZHJtX3N5bmNvYmpfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjctXFx0XFx0XFx0ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjg6aW50IGRybV9zeW5jb2JqX2hhbmRsZV90b19mZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzA6aW50IGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNzEtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzI6aW50IGRybV9zeW5jb2JqX3RyYW5zZmVyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI3My1cXHRcXHRcXHQgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzQ6aW50IGRybV9zeW5jb2JqX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc1LVxcdFxcdFxcdCAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjc2OmludCBkcm1fc3luY29ial90aW1lbGluZV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI3Ny1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzg6aW50IGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjgwOmludCBkcm1fc3luY29ial9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yODEtXFx0XFx0XFx0ICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjgyOmludCBkcm1fc3luY29ial9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjgzLVxcdFxcdFxcdCAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyODQ6aW50IGRybV9zeW5jb2JqX3RpbWVsaW5lX3NpZ25hbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yODUtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyODY6aW50IGRybV9zeW5jb2JqX3F1ZXJ5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI4Ny1cXHRcXHRcXHQgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jPTY0ND1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGRybV9pb2N0bHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MTctXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcxODpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0NSRUFURSwgZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MTktXFx0XFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcyMDpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0RFU1RST1ksIGRybV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyMS1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzIyOlxcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfSEFORExFX1RPX0ZELCBkcm1fc3luY29ial9oYW5kbGVfdG9fZmRfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyMy1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzI0OlxcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfRkRfVE9fSEFORExFLCBkcm1fc3luY29ial9mZF90b19oYW5kbGVfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyNS1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzI2OlxcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfVFJBTlNGRVIsIGRybV9zeW5jb2JqX3RyYW5zZmVyX2lvY3RsLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MjctXFx0XFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcyODpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX1dBSVQsIGRybV9zeW5jb2JqX3dhaXRfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyOS1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzMwOlxcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfVElNRUxJTkVfV0FJVCwgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzMxLVxcdFxcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3MzI6XFx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZELCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzMtXFx0XFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczNDpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX1JFU0VULCBkcm1fc3luY29ial9yZXNldF9pb2N0bCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzM1LVxcdFxcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3MzY6XFx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9TSUdOQUwsIGRybV9zeW5jb2JqX3NpZ25hbF9pb2N0bCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzM3LVxcdFxcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3Mzg6XFx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9USU1FTElORV9TSUdOQUwsIGRybV9zeW5jb2JqX3RpbWVsaW5lX3NpZ25hbF9pb2N0bCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzM5LVxcdFxcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3NDA6XFx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9RVUVSWSwgZHJtX3N5bmNvYmpfcXVlcnlfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTc0MS1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMxLSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzI6ICogRFJNIHN5bmNocm9uaXNhdGlvbiBvYmplY3RzIChzeW5jb2JqLCBzZWUgc3RydWN0IFxcdTAwMjZkcm1fc3luY29iaikgcHJvdmlkZSBhXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzMtICogY29udGFpbmVyIGZvciBhIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgd2hpY2ggY2FuIGJlIHVzZWQgYnkgdXNlcnNwYWNlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNjAtICogcmVzdWx0IG9mIGltcG9ydGluZyB0aG9zZSBmaWxlIGRlc2NyaXB0b3JzIG93biBhIHJlZmVyZW5jZSB0byB0aGVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNjE6ICogc2FtZSB1bmRlcmx5aW5nIHN0cnVjdCBcXHUwMDI2ZHJtX3N5bmNvYmogYW5kIHRoZSBzeW5jb2JqIGNhbiBiZSB1c2VkXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTYyLSAqIHBlcnNpc3RlbnRseSBhY3Jvc3MgYWxsIHRoZSBwcm9jZXNzZXMgd2l0aCB3aGljaCBpdCBpcyBzaGFyZWQuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMDktI2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fcHJpbnQuaFxcdTAwM2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyMTA6I2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fc3luY29iai5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIxMS0jaW5jbHVkZSBcXHUwMDNjZHJtL2RybV91dGlscy5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MjE1PXN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjIyLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjIyMzpzdGF0aWMgdm9pZCBzeW5jb2JqX3dhaXRfc3luY29ial9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMjQtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0yMjY9c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMjktXFx0c3RydWN0IGRtYV9mZW5jZV9jYiBmZW5jZV9jYjtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyMzA6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIzMS1cXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTIzNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjIzNzpzeW5jb2JqX2V2ZW50ZmRfZW50cnlfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjM4LVxcdFxcdFxcdCAgIHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI0MC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyNDE6ICogZHJtX3N5bmNvYmpfZmluZCAtIGxvb2t1cCBhbmQgcmVmZXJlbmNlIGEgc3luYyBvYmplY3QuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQyLSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQ1LSAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHN5bmNvYmogcG9pbnRlZCB0byBieSBoYW5kbGUgb3IgTlVMTC4gVGhlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjQ2OiAqIHJlZmVyZW5jZSBtdXN0IGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgZHJtX3N5bmNvYmpfcHV0KCkuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQ3LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI0ODpzdHJ1Y3QgZHJtX3N5bmNvYmogKmRybV9zeW5jb2JqX2ZpbmQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQ5LVxcdFxcdFxcdFxcdCAgICAgdTMyIGhhbmRsZSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNTAte1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI1MTpcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjUyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjU3LVxcdGlmIChzeW5jb2JqKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI1ODpcXHRcXHRkcm1fc3luY29ial9nZXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjYzLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyNjQ6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9maW5kKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNjUtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjY2OnN0YXRpYyB2b2lkIGRybV9zeW5jb2JqX2ZlbmNlX2FkZF93YWl0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yOTAtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjkxOnN0YXRpYyB2b2lkIGRybV9zeW5jb2JqX3JlbW92ZV93YWl0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yOTItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0zMTQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMTU6ZHJtX3N5bmNvYmpfYWRkX2V2ZW50ZmQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMxNi1cXHRcXHRcXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMyNC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMjU6ICogZHJtX3N5bmNvYmpfYWRkX3BvaW50IC0gYWRkIG5ldyB0aW1lbGluZSBwb2ludCB0byB0aGUgc3luY29ialxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMyNi0gKiBAc3luY29iajogc3luYyBvYmplY3QgdG8gYWRkIHRpbWVsaW5lIHBvaW50IGRvXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMzItICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzMzOnZvaWQgZHJtX3N5bmNvYmpfYWRkX3BvaW50KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMzQtXFx0XFx0XFx0ICAgc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNDUtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzQ2OlxcdHByZXYgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzQ3LVxcdC8qIFlvdSBhcmUgYWRkaW5nIGFuIHVub3JkZXIgcG9pbnQgdG8gdGltZWxpbmUsIHdoaWNoIGNvdWxkIGNhdXNlIHBheWxvYWQgcmV0dXJuZWQgZnJvbSBxdWVyeV9pb2N0bCBpcyAwISAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzYyLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozNjM6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9hZGRfcG9pbnQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM2NC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNjUtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzY2OiAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSByZXBsYWNlIGZlbmNlIGluIGEgc3luYyBvYmplY3QuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzY3LSAqIEBzeW5jb2JqOiBTeW5jIG9iamVjdCB0byByZXBsYWNlIGZlbmNlIGluXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNzEtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzcyOnZvaWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzczLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM5OC19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6Mzk5OkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDAwLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQwMS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MDI6ICogZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlIC0gYXNzaWduIGEgc3R1YiBmZW5jZSB0byB0aGUgc3luYyBvYmplY3RcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MDMtICogQHN5bmNvYmo6IHN5bmMgb2JqZWN0IHRvIGFzc2lnbiB0aGUgZmVuY2Ugb25cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQwNi0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MDc6c3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQwOC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MTMtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDE0OlxcdGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY29iaiwgZmVuY2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQxNS1cXHRkbWFfZmVuY2VfcHV0KGZlbmNlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQyMS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MjI6ICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1cCBhbmQgcmVmZXJlbmNlIHRoZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDIzLSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDI4LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDI5OiAqIFRoaXMgaXMganVzdCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY29tYmluZXMgZHJtX3N5bmNvYmpfZmluZCgpIGFuZFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQzMDogKiBkcm1fc3luY29ial9mZW5jZV9nZXQoKS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MzEtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQzNS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MzY6aW50IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDM3LVxcdFxcdFxcdCAgIHUzMiBoYW5kbGUsIHU2NCBwb2ludCwgdTY0IGZsYWdzLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDM5LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0NDA6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDQxLVxcdHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgd2FpdDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2MS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0NjI6XFx0KmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2Ny1cXHRcXHRcXHQvKiBJZiB0aGUgcmVxdWVzdGVkIHNlcW5vIGlzIGFscmVhZHkgc2lnbmFsZWRcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0Njg6XFx0XFx0XFx0ICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSBtYXkgcmV0dXJuIGEgTlVMTFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2OS1cXHRcXHRcXHQgKiBmZW5jZS4gVG8gbWFrZSBzdXJlIHRoZSByZWNpcGllbnQgZ2V0c1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDg3LVxcdHdhaXQucG9pbnQgPSBwb2ludDtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0ODg6XFx0ZHJtX3N5bmNvYmpfZmVuY2VfYWRkX3dhaXQoc3luY29iaiwgXFx1MDAyNndhaXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ4OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUxMi1cXHRpZiAod2FpdC5ub2RlLm5leHQpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTEzOlxcdFxcdGRybV9zeW5jb2JqX3JlbW92ZV93YWl0KHN5bmNvYmosIFxcdTAwMjZ3YWl0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MTQtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTE1LW91dDpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MTY6XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUxNy1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUxOS19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTIwOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmluZF9mZW5jZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTIxLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUyMi0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MjM6ICogZHJtX3N5bmNvYmpfZnJlZSAtIGZyZWUgYSBzeW5jIG9iamVjdC5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjQtICogQGtyZWY6IGtyZWYgdG8gZnJlZS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjUtICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MjY6ICogT25seSB0byBiZSBjYWxsZWQgZnJvbSBrcmVmX3B1dCBpbiBkcm1fc3luY29ial9wdXQuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTI3LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjUyODp2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTI5LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MzA6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gY29udGFpbmVyX29mKGtyZWYsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTMxOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkcm1fc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MzItXFx0XFx0XFx0XFx0XFx0XFx0ICAgcmVmY291bnQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTM0LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjUzNTpcXHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmosIE5VTEwpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUzNi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU0MS19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTQyOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTQzLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU0NC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NDU6ICogZHJtX3N5bmNvYmpfY3JlYXRlIC0gY3JlYXRlIGEgbmV3IHN5bmNvYmpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NDYtICogQG91dF9zeW5jb2JqOiByZXR1cm5lZCBzeW5jb2JqXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NTEtICogcHJvYmFibHkgd2FudCB0byBtYWtlIGl0IGF2YWlsYWJsZSB0byB1c2Vyc3BhY2UsIGVpdGhlciB0aHJvdWdoXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTUyOiAqIGRybV9zeW5jb2JqX2dldF9oYW5kbGUoKSBvciBkcm1fc3luY29ial9nZXRfZmQoKS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NTMtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU1NS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NTY6aW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTU3LVxcdFxcdCAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU1OS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU2MDpcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTYxLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU2MjpcXHRzeW5jb2JqID0ga3phbGxvY19vYmooc3RydWN0IGRybV9zeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NjMtXFx0aWYgKCFzeW5jb2JqKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTcxLVxcdGlmIChmbGFncyBcXHUwMDI2IERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCkge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU3MjpcXHRcXHRyZXQgPSBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTczLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTc0OlxcdFxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NzUtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3OS1cXHRpZiAoZmVuY2UpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTgwOlxcdFxcdGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY29iaiwgZmVuY2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU4MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU4NC19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTg1OkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfY3JlYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01ODYtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTg3LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU4ODogKiBkcm1fc3luY29ial9nZXRfaGFuZGxlIC0gZ2V0IGEgaGFuZGxlIGZyb20gYSBzeW5jb2JqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTg5LSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTkyLSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTkzOiAqIEV4cG9ydHMgYSBzeW5jIG9iamVjdCBjcmVhdGVkIHdpdGggZHJtX3N5bmNvYmpfY3JlYXRlKCkgYXMgYSBoYW5kbGUgb25cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01OTQtICogQGZpbGVfcHJpdmF0ZSB0byB1c2Vyc3BhY2UuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01OTctICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTk4OmludCBkcm1fc3luY29ial9nZXRfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU5OTpcXHRcXHRcXHQgICBzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHUzMiAqaGFuZGxlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYwMC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MDMtXFx0LyogdGFrZSBhIHJlZmVyZW5jZSB0byBwdXQgaW4gdGhlIHhhcnJheSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYwNDpcXHRkcm1fc3luY29ial9nZXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjA1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjA4LVxcdGlmIChyZXQpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjA5OlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTItfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYxMzpFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2dldF9oYW5kbGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYxNC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MTU6c3RhdGljIGludCBkcm1fc3luY29ial9jcmVhdGVfYXNfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYxNi1cXHRcXHRcXHRcXHRcXHR1MzIgKmhhbmRsZSwgdWludDMyX3QgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTgtXFx0aW50IHJldDtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MTk6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYyMC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MjE6XFx0cmV0ID0gZHJtX3N5bmNvYmpfY3JlYXRlKFxcdTAwMjZzeW5jb2JqLCBmbGFncywgTlVMTCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjIyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MjQtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjI1OlxcdHJldCA9IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoZmlsZV9wcml2YXRlLCBzeW5jb2JqLCBoYW5kbGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYyNjpcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjI3LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MjktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjMwOnN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZGVzdHJveShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MzEtXFx0XFx0XFx0ICAgICAgIHUzMiBoYW5kbGUpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjMyLXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MzM6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYzNC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYzOC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2Mzk6XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY0MC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY0Mi1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDM6c3RhdGljIGludCBkcm1fc3luY29ial9maWxlX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjQ0LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDU6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY0Ni1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDc6XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY0OC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY1MC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHJtX3N5bmNvYmpfZmlsZV9mb3BzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY1MjpcXHQucmVsZWFzZSA9IGRybV9zeW5jb2JqX2ZpbGVfcmVsZWFzZSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTMtfTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY1NS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NTY6ICogZHJtX3N5bmNvYmpfZ2V0X2ZkIC0gZ2V0IGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYSBzeW5jb2JqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjU3LSAqIEBzeW5jb2JqOiBTeW5jIG9iamVjdCB0byBleHBvcnRcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY1OS0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY2MDogKiBFeHBvcnRzIGEgc3luYyBvYmplY3QgY3JlYXRlZCB3aXRoIGRybV9zeW5jb2JqX2NyZWF0ZSgpIGFzIGEgZmlsZSBkZXNjcmlwdG9yLlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY2MS0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjYzLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY2NDppbnQgZHJtX3N5bmNvYmpfZ2V0X2ZkKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgaW50ICpwX2ZkKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY2NS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NzMtXFx0ZmlsZSA9IGFub25faW5vZGVfZ2V0ZmlsZShcXFwic3luY29ial9maWxlXFxcIixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NzQ6XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZHJtX3N5bmNvYmpfZmlsZV9mb3BzLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY3NS1cXHRcXHRcXHRcXHQgIHN5bmNvYmosIDApO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjgwLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY4MTpcXHRkcm1fc3luY29ial9nZXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjgyLVxcdGZkX2luc3RhbGwoZmQsIGZpbGUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjg2LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2ODc6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9nZXRfZmQpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo0NC44Nzg2MjU4NDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODg2Nzc5MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgY2hhbmdlcywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBvZiBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIERlZXAgaW50byBTeW5jb2JqIGFuZCBFdmVudGZkKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgY2hhbmdlZCBpbiBgZHJtX3N5bmNvYmouY2AgYW5kIGBmcy9ldmVudGZkLmNgLiBUaGUgYmVzdCB3YXkgdG8gZG8gdGhpcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB0byBhYnNvcmIgdGhlIGNvbXBsZXRlIG1vZGlmaWVkIHNlY3Rpb25zIG9mICpib3RoKiBmaWxlcy4gU2tpbW1pbmcgd29uJ3QgY3V0IGl0IGhlcmUuIEkgbmVlZCB0aGUgZnVsbCBjb250ZXh0IHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBjaGFuZ2VzIGluIGNvcmUgbG9naWMsIGRhdGEgc3RydWN0dXJlcywgb3IgaW50ZXJmYWNlIGNhbGxzLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGltcGFjdCwgaW50ZWdyYXRpb24gYW5kIGFueSBwb3NzaWJsZSBvcHRpbWl6YXRpb24gdGhhdCBtYXkgYmUgYXZhaWxhYmxlLiBUaGlzIGlzIGhvdyBJIGJlc3QgZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIHdvcmsgZG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwOTAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo0OS43NjU0MDcyMjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ2MDpcXHRcXG4xNDYxOlxcdGludFxcbjE0NjI6XFx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbjE0NjM6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNDY0OlxcdHtcXG4xNDY1OlxcdFxcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XFxuMTQ2NjpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XFxuMTQ2NzpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuMTQ2ODpcXHRcXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcXG4xNDY5OlxcdFxcdGludCByZXQ7XFxuMTQ3MDpcXHRcXG4xNDcxOlxcdFxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG4xNDcyOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4xNDczOlxcdFxcbjE0NzQ6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZWZsYWdzIFxcdTAwMjYgfkRSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BVkFJTEFCTEUpXFxuMTQ3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNDc2OlxcdFxcbjE0Nzc6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZXBhZClcXG4xNDc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE0Nzk6XFx0XFxuMTQ4MDpcXHRcXHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXFx1MDAzZWhhbmRsZSk7XFxuMTQ4MTpcXHRcXHRpZiAoIXN5bmNvYmopXFxuMTQ4MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4xNDgzOlxcdFxcbjE0ODQ6XFx0XFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cXHUwMDNlZmQpO1xcbjE0ODU6XFx0XFx0aWYgKElTX0VSUihldl9mZF9jdHgpKSB7XFxuMTQ4NjpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XFxuMTQ4NzpcXHRcXHRcXHRldl9mZF9jdHggPSBOVUxMO1xcbjE0ODg6XFx0XFx0XFx0Z290byBlcnJfZmRnZXQ7XFxuMTQ4OTpcXHRcXHR9XFxuMTQ5MDpcXHRcXG4xNDkxOlxcdFxcdGVudHJ5ID0ga3phbGxvY19vYmooKmVudHJ5KTtcXG4xNDkyOlxcdFxcdGlmICghZW50cnkpIHtcXG4xNDkzOlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTQ5NDpcXHRcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4xNDk1OlxcdFxcdH1cXG4xNDk2OlxcdFxcdGVudHJ5LVxcdTAwM2VzeW5jb2JqID0gc3luY29iajtcXG4xNDk3OlxcdFxcdGVudHJ5LVxcdTAwM2Vldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpO1xcbjE0OTg6XFx0XFx0ZW50cnktXFx1MDAzZXBvaW50ID0gYXJncy1cXHUwMDNlcG9pbnQ7XFxuMTQ5OTpcXHRcXHRlbnRyeS1cXHUwMDNlZmxhZ3MgPSBhcmdzLVxcdTAwM2VmbGFncztcXG4xNTAwOlxcdFxcbjE1MDE6XFx0XFx0ZHJtX3N5bmNvYmpfYWRkX2V2ZW50ZmQoc3luY29iaiwgZW50cnkpO1xcbjE1MDI6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbjE1MDM6XFx0XFxuMTUwNDpcXHRcXHRyZXR1cm4gMDtcXG4xNTA1OlxcdFxcbjE1MDY6XFx0ZXJyX2ZkZ2V0OlxcbjE1MDc6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbjE1MDg6XFx0XFx0cmV0dXJuIHJldDtcXG4xNTA5OlxcdH1cXG4xNTEwOlxcdFxcbjE1MTE6XFx0aW50XFxuMTUxMjpcXHRkcm1fc3luY29ial9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbjE1MTM6XFx0XFx0XFx0XFx0c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXFxuMTUxNDpcXHR7XFxuMTUxNTpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfYXJyYXkgKmFyZ3MgPSBkYXRhO1xcbjE1MTY6XFx0XFx0c3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianM7XFxuMTUxNzpcXHRcXHR1aW50MzJfdCBpO1xcbjE1MTg6XFx0XFx0aW50IHJldDtcXG4xNTE5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo0OS43NjU1NjMxNDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjA0MDYyNDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgRXZlbnRmZCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoaXMgYGV2ZW50ZmRgIGlzc3VlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgaGVhZGVyIGZpbGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgYGV2ZW50ZmRgIGlzICphY3R1YWxseSogaW1wbGVtZW50ZWQuIFRoZSB0eXBpY2FsIGdvLXRvIGxvY2F0aW9ucyBmb3IgdGhhdCBzb3J0IG9mIGFuYWx5c2lzIGFyZSBgZnMvZXZlbnRmZC5jYCDigJMgd2hpY2ggc2hvdWxkIGNvbnRhaW4gdGhlIGZpbGUgc3lzdGVtIGxldmVsIGRyaXZlciBjb2RlIOKAkyBhbmQsIG9mIGNvdXJzZSwgdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUsIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgZm9yIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucy4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHVzZXJzcGFjZSBhbmQgdGhlIGtlcm5lbCwgc28gdGhpcyBpbml0aWFsIGNyb3NzLWNoZWNrIHNob3VsZCBwcm92aWRlIGEgc29saWQgYmFzaXMgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTg0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo1NC4zNjk2MzAxNTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXZlbnRmZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdHtcXG4gIDkxOlxcdFxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBldmVudGZkX2N0eCwga3JlZik7XFxuICA5MjpcXHRcXG4gIDkzOlxcdFxcdGV2ZW50ZmRfZnJlZV9jdHgoY3R4KTtcXG4gIDk0OlxcdH1cXG4gIDk1OlxcdFxcbiAgOTY6XFx0LyoqXFxuICA5NzpcXHQgKiBldmVudGZkX2N0eF9wdXQgLSBSZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxcbiAgOTg6XFx0ICogQGN0eDogW2luXSBQb2ludGVyIHRvIGV2ZW50ZmQgY29udGV4dC5cXG4gIDk5OlxcdCAqXFxuIDEwMDpcXHQgKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxcbiAxMDE6XFx0ICogd2l0aCBldmVudGZkX2N0eF9mZGdldCgpIG9yIGV2ZW50ZmRfY3R4X2ZpbGVnZXQoKS5cXG4gMTAyOlxcdCAqL1xcbiAxMDM6XFx0dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuIDEwNDpcXHR7XFxuIDEwNTpcXHRcXHRpZiAoIWN0eClcXG4gMTA2OlxcdFxcdFxcdHJldHVybjtcXG4gMTA3OlxcdFxcbiAxMDg6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNmN0eC1cXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcXG4gMTA5OlxcdH1cXG4gMTEwOlxcdEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XFxuIDExMTpcXHRcXG4gMTEyOlxcdHN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiAxMTM6XFx0e1xcbiAxMTQ6XFx0XFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdHdha2VfdXBfcG9sbChcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIEVQT0xMSFVQKTtcXG4gMTE3OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbiAxMTg6XFx0XFx0cmV0dXJuIDA7XFxuIDExOTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA2OjU0LjM2OTcxNTkzNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTAyNTc2MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYGV2ZW50ZmQuaGAgRGV0YWlscyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCdzIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgZmlsZS4gSSBuZWVkIGEgcmVmcmVzaGVyIG9uIHRoZSBpbnRyaWNhY2llcyBvZiBgZXZlbnRmZGAuIEkga25vdyB0aGUgYmFzaWMgY29uY2VwdCDigJMgaXQncyBhIGxpZ2h0d2VpZ2h0IG1lY2hhbmlzbSBmb3Igc2lnbmFsaW5nIGV2ZW50cyBiZXR3ZWVuIHVzZXJzcGFjZSBhbmQgdGhlIGtlcm5lbCwgb3IgYmV0d2VlbiBrZXJuZWwgdGhyZWFkcywgdXNpbmcgYSBmaWxlIGRlc2NyaXB0b3IuIEJ1dCBJIHdhbnQgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpY3MsIHBhcnRpY3VsYXJseSBhcm91bmQgaXRzIGF0b21pYyBvcGVyYXRpb25zIGFuZCBob3cgaXQgaGFuZGxlcyBkaWZmZXJlbnQgc2lnbmFsaW5nIG1vZGVzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGVkZ2UgY2FzZXMgbHVya2luZyBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0aGF0IG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSBvciByZWxpYWJpbGl0eSBpbiBjb21wbGV4LCBoaWdoLWNvbmN1cnJlbmN5IHNjZW5hcmlvcy4gSSByZWNhbGwgc29tZSBkaXNjdXNzaW9ucyBhYm91dCB0aGUgcG90ZW50aWFsIG92ZXJoZWFkIGNvbXBhcmVkIHRvIG90aGVyIHNpZ25hbGluZyBtZXRob2RzLCBzbyBJ4oCZbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbG9jay1mcmVlIGFzcGVjdHMgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBJJ20gYWxzbyBjdXJpb3VzIGFib3V0IGFueSByZWNlbnQgY2hhbmdlcyBvciBwYXRjaGVzIHRvIHRoYXQgaGVhZGVyLCBvciBzdXJyb3VuZGluZyBjb2RlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBrbm93bGVkZ2Ugb2YgdGhlIG1lbW9yeSBiYXJyaWVycyB1c2VkIGFuZCBob3cgdGhlc2UgcHJvdGVjdCB0aGUgc2hhcmVkIGNvdW50ZXIgYW5kIGVuc3VyZSB2aXNpYmlsaXR5IG9mIGNoYW5nZXMuIEFueSByZWNlbnQgb3B0aW1pemF0aW9ucyB0aGF0IGFpbSB0byByZWR1Y2UgbGF0ZW5jeSBvciBpbXByb3ZlIHBlcmZvcm1hbmNlIGFyZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0IHRvIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg0MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDY6NTkuODcyMjk2OTAyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvZXZlbnRmZC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDc1OlxcdFxcbiAgNzY6XFx0c3RhdGljIGlubGluZSBib29sIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQodm9pZClcXG4gIDc3OlxcdHtcXG4gIDc4OlxcdFxcdHJldHVybiB0cnVlO1xcbiAgNzk6XFx0fVxcbiAgODA6XFx0XFxuICA4MTpcXHRzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcXG4gIDgyOlxcdHtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0fVxcbiAgODU6XFx0XFxuICA4NjpcXHQjZW5kaWZcXG4gIDg3OlxcdFxcbiAgODg6XFx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbiAgODk6XFx0e1xcbiAgOTA6XFx0XFx0ZXZlbnRmZF9zaWduYWxfbWFzayhjdHgsIDApO1xcbiAgOTE6XFx0fVxcbiAgOTI6XFx0XFxuICA5MzpcXHRERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSlcXG4gIDk0OlxcdFxcbiAgOTU6XFx0I2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cXG4gIDk2OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo1OS44NzIzNzU1MDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ3ODkxMjAzODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgVGhpcyBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIHBhdGNoIHNlcmllcyB0aGF0IGludHJvZHVjZXMgYSBzaW1wbGUgbnVsbCBjaGVjayAoYGlmICghY3R4KSByZXR1cm47YCkgdG8gYGV2ZW50ZmRfY3R4X3B1dCgpYCwgYWRkcyBhIGBERUZJTkVfRlJFRWAgbWFjcm8gZm9yIGV2ZW50ZmQgY29udGV4dHMsIGFuZCByZWZhY3RvcnMgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgdGhhdCBuZXcgbWFjcm8gaW5zdGVhZCBvZiBtYW51YWwgZXJyb3IgaGFuZGxpbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlLiBBYnNvbHV0ZWx5ISBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgY2FsbGVkIHRocm91Z2ggdGhlIGBEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEYCBpb2N0bCwgYW5kIHN5emthbGxlciBzdXBwb3J0cyBEUk0gaW9jdGxzLCBpbmNsdWRpbmcgdGhvc2UgdXNlZCBieSB2aXJ0dWFsIGRyaXZlcnMgbGlrZSBgdmttc2AgYW5kIG90aGVycy4gVGhpcyBtYWtlcyBpdCBhY2Nlc3NpYmxlLiBBbHNvLCBgZXZlbnRmZF9jdHhfcHV0YCBpcyBwYXJ0IG9mIGNvcmUga2VybmVsLCBLVk0sIHZmaW8sIHZob3N0LCBkcm0sIGlvX3VyaW5nLCBhbmQgb3RoZXJzLCBzbyBpdCdzIHdpZGVseSB1c2VkLlxuXG5Ob3csIGxldCdzIGNvbnN1bHQgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTZWN0aW9uIDEgc3BlY2lmaWNhbGx5IHdhcm5zIHVzICpub3QqIHRvIGJsaW5kbHkgdHJ1c3QgY2xhaW1zIG9mIFwibm8gZnVuY3Rpb25hbCBjaGFuZ2VcIiBvciBcInJlZmFjdG9yaW5nLlwiIFRoZXkgaGlnaGxpZ2h0IHRoYXQgZXZlbiByZWZhY3RvcmluZ3MgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncy4gU2VjdGlvbiAzIHJlaW5mb3JjZXMgdGhpcyBieSBzdGF0aW5nIHRoYXQgYW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGNvZGUsIGluY2x1ZGluZyByZWZhY3RvcmluZ3MsIHJlcXVpcmVzIGZ1enppbmcuIFRoZSBwYXRjaCAqZG9lcyogdG91Y2ggcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgdGhlcmVmb3JlIEkgdGhpbmsgdGhlIGV2YWx1YXRpb24gc2hvdWxkIGJlIFdvcnRoRnV6emluZyA9IHRydWUuXG5cbk5leHQsIEkgbmVlZCB0byBkZWZpbmUgdGhlIGBGb2N1c1N5bWJvbHNgLiBDbGVhcmx5LCBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgZGlyZWN0bHkgbW9kaWZpZWQsIG1ha2luZyBpdCBhIHRhcmdldC4gVGhlIGBldmVudGZkX2N0eF9wdXRgIGlzIGRpcmVjdGx5IG1vZGlmaWVkLCB0b28uIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhhdCBvbmUsIHRob3VnaC5cblxuU2VjdGlvbiA0IHdhcm5zIGFnYWluc3QgbGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0uIElzIGBldmVudGZkX2N0eF9wdXRgIHViaXF1aXRvdXMsIG9yIGZvY3VzZWQ/IFRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24gaXMgc3BlY2lmaWMgdG8gYSBEUk0gaW9jdGwsIHNvIGl0J3MgYSBkZWZpbml0ZSBmb2N1cyBzeW1ib2wuIGBldmVudGZkX2N0eF9wdXRgIHJlbGVhc2VzIGV2ZW50ZmQgY29udGV4dHMsIGJ1dCBpcyBub3cgbW9kaWZpZWQgdG8gaGFuZGxlIG51bGwgYGN0eGAuIFNpbmNlIHRoaXMgaXMgYSBzcGVjaWZpYyBtb2RpZmljYXRpb24sIEkgdGhpbmsgSSdsbCBpbmNsdWRlIGl0IGluIHRoZSBmb2N1cyBzeW1ib2xzLlxuXG5JJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIGBldmVudGZkX2N0eF9wdXRgIGNhbGxlcnMgaW4gdGhlIGtlcm5lbCB0byBtYWtlIHN1cmUgdGhhdCBkZWNpc2lvbiBpcyBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM5NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjE0LjY2MTQ5ODM4OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUzODc1Njk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJcXFxcYmV2ZW50ZmRfY3R4X3B1dFxcXFxiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MjcyNT12b2lkIGt2bV9odl9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzMxLVxcdGlkcl9mb3JfZWFjaF9lbnRyeShcXHUwMDI2aHYtXFx1MDAzZWNvbm5fdG9fZXZ0LCBldmVudGZkLCBpKVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNzMyOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjczMy1cXHRpZHJfZGVzdHJveShcXHUwMDI2aHYtXFx1MDAzZWNvbm5fdG9fZXZ0KTtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz0yNzM2PXN0YXRpYyBpbnQga3ZtX2h2X2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGNvbm5faWQsIGludCBmZClcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzU1LVxcdFxcdHJldCA9IC1FRVhJU1Q7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjI3NTY6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzU3LVxcdHJldHVybiByZXQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9Mjc2MD1zdGF0aWMgaW50IGt2bV9odl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGNvbm5faWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjc3Mi1cXHRzeW5jaHJvbml6ZV9zcmN1KFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNzczOlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjc3NC1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0yMTM0PXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2Fzc2lnbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjE5OS1cXHRpZiAoZXZlbnRmZClcXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjIwMDpcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyMDEtb3V0X25vZXZlbnRmZDpcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0yMjA2PXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjIxOC1cXHRpZiAoIWV2dGNobmZkLVxcdTAwM2VkZWxpdmVyLnBvcnQucG9ydClcXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjIxOTpcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXFx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjIwLVxcdGtmcmVlKGV2dGNobmZkKTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0yMjI0PXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjU3LVxcdFxcdGlmICghZXZ0Y2huZmQtXFx1MDAzZWRlbGl2ZXIucG9ydC5wb3J0KVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjU4OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNTktXFx0XFx0a2ZyZWUoZXZ0Y2huZmQpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTIzNTY9dm9pZCBrdm1feGVuX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTIzNjQtXFx0XFx0aWYgKCFldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXFxuYXJjaC94ODYva3ZtL3hlbi5jOjIzNjU6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVxcdTAwM2VkZWxpdmVyLmV2ZW50ZmQuY3R4KTtcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjM2Ni1cXHRcXHRrZnJlZShldnRjaG5mZCk7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jPTQ2MD1zdGF0aWMgdm9pZCBocHJpdl9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTUzNi1cXHRpZiAoaHByaXYtXFx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYzo1Mzc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGhwcml2LVxcdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkKTtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTUzOC1cXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jPTc5Mz1zdGF0aWMgaW50IGV2ZW50ZmRfdW5yZWdpc3RlcihzdHJ1Y3QgaGxfZnByaXYgKmhwcml2LCBzdHJ1Y3QgaGxfaW5mb19hcmdzICphcmdzKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmMtODAwLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jOjgwMTpcXHRldmVudGZkX2N0eF9wdXQoaHByaXYtXFx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jLTgwMi1cXHRocHJpdi1cXHUwMDNlbm90aWZpZXJfZXZlbnQuZXZlbnRmZCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2ZwZ2EvZGZsLmM9MTg2OT1zdGF0aWMgaW50IGRvX3NldF9pcnFfdHJpZ2dlcihzdHJ1Y3QgZGZsX2ZlYXR1cmUgKmZlYXR1cmUsIHVuc2lnbmVkIGludCBpZHgsXFxuLS1cXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTg4MC1cXHRcXHRrZnJlZShmZWF0dXJlLVxcdTAwM2VpcnFfY3R4W2lkeF0ubmFtZSk7XFxuZHJpdmVycy9mcGdhL2RmbC5jOjE4ODE6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGZlYXR1cmUtXFx1MDAzZWlycV9jdHhbaWR4XS50cmlnZ2VyKTtcXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTg4Mi1cXHRcXHRmZWF0dXJlLVxcdTAwM2VpcnFfY3R4W2lkeF0udHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTkwNi1cXG5kcml2ZXJzL2ZwZ2EvZGZsLmM6MTkwNzpcXHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XFxuZHJpdmVycy9mcGdhL2RmbC5jLTE5MDgtZnJlZV9uYW1lOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MzAzPXN5bmNvYmpfZXZlbnRmZF9lbnRyeV9mcmVlKHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5KVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMwNC17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzA1OlxcdGV2ZW50ZmRfY3R4X3B1dChlbnRyeS1cXHUwMDNlZXZfZmRfY3R4KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMDYtXFx0ZG1hX2ZlbmNlX3B1dChlbnRyeS1cXHUwMDNlZmVuY2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmM9NjkwPXN0YXRpYyB2b2lkIGludGVsX3ZncHVfcmVsZWFzZV9tc2lfZXZlbnRmZF9jdHgoc3RydWN0IGludGVsX3ZncHUgKnZncHUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYy02OTUtXFx0aWYgKHRyaWdnZXIpIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYzo2OTY6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jLTY5Ny1cXHRcXHR2Z3B1LVxcdTAwM2Vtc2lfdHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTI1ND1zdGF0aWMgdm9pZCBtc2h2X2lycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjY3LVxcdFxcdG1zaHZfaXJxZmRfcmVzYW1wbGVyX3NodXRkb3duKGlycWZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjI2ODpcXHRcXHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXFx1MDAzZWlycWZkX3Jlc2FtcGxlZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjY5LVxcdH1cXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjczLVxcdCAqL1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6Mjc0OlxcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cXHUwMDNlaXJxZmRfZXZlbnRmZF9jdHgpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjc1LVxcdGtmcmVlKGlycWZkKTtcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9MzkzPXN0YXRpYyBpbnQgbXNodl9pcnFmZF9hc3NpZ24oc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTI5LVxcdGlmIChyZXNhbXBsZWZkIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIocmVzYW1wbGVmZCkpXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo1MzA6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHJlc2FtcGxlZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTMxLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTMyLVxcdGlmIChldmVudGZkIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIoZXZlbnRmZCkpXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo1MzM6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTM0LVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz01NDM9c3RhdGljIGludCBtc2h2X2lycWZkX2RlYXNzaWduKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTU2Mi1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjU2MzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01NjQtXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTYzMz1zdGF0aWMgdm9pZCBpb2V2ZW50ZmRfcmVsZWFzZShzdHJ1Y3QgbXNodl9pb2V2ZW50ZmQgKnAsIHU2NCBwYXJ0aXRpb25faWQpXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTYzNi1cXHRcXHRtc2h2X3VucmVnaXN0ZXJfZG9vcmJlbGwocGFydGl0aW9uX2lkLCBwLVxcdTAwM2Vpb3ZudGZkX2Rvb3JiZWxsX2lkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjYzNzpcXHRldmVudGZkX2N0eF9wdXQocC1cXHUwMDNlaW92bnRmZF9ldmVudGZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTYzOC1cXHRrZnJlZShwKTtcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NjczPXN0YXRpYyBpbnQgbXNodl9hc3NpZ25faW9ldmVudGZkKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTc2Ny1mYWlsOlxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NzY4OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTc2OS1cXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NzczPXN0YXRpYyBpbnQgbXNodl9kZWFzc2lnbl9pb2V2ZW50ZmQoc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtODE0LVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6ODE1OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTgxNi1cXG4tLVxcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jPTk3Mz1zdGF0aWMgaW50IG1zaHZfdnRsX3NpbnRfaW9jdGxfc2V0X2V2ZW50ZmQoc3RydWN0IG1zaHZfdnRsX3NldF9ldmVudGZkIF9fdXNlciAqYXJnKVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmMtOTk1LVxcdFxcdHN5bmNocm9uaXplX3JjdSgpO1xcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jOjk5NjpcXHRcXHRldmVudGZkX2N0eF9wdXQob2xkX2V2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jLTk5Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MjA3Mj1zdGF0aWMgaW50IFVWRVJCU19IQU5ETEVSKE1MWDVfSUJfTUVUSE9EX0RFVlhfU1VCU0NSSUJFX0VWRU5UKShcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMjQ5LVxcdFxcdGlmIChldmVudF9zdWItXFx1MDAzZWV2ZW50ZmQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjIyNTA6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50X3N1Yi1cXHUwMDNlZXZlbnRmZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIyNTEtXFx0XFx0dXZlcmJzX3VvYmplY3RfcHV0KFxcdTAwMjZldmVudF9zdWItXFx1MDAzZWV2X2ZpbGUtXFx1MDAzZXVvYmopO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTI5NDA9c3RhdGljIHZvaWQgZGV2eF9mcmVlX3N1YnNjcmlwdGlvbihzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yOTQ1LVxcdGlmIChldmVudF9zdWItXFx1MDAzZWV2ZW50ZmQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjI5NDY6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50X3N1Yi1cXHUwMDNlZXZlbnRmZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI5NDctXFx0dXZlcmJzX3VvYmplY3RfcHV0KFxcdTAwMjZldmVudF9zdWItXFx1MDAzZWV2X2ZpbGUtXFx1MDAzZXVvYmopO1xcbi0tXFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jPTE5MT1zdGF0aWMgdm9pZCBpcnFfZnJlZSh2b2lkICpwcml2YXRlKVxcbi0tXFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTE5NC1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM6MTk1OlxcdGV2ZW50ZmRfY3R4X3B1dChldl9jdHgpO1xcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0xOTYtfVxcbi0tXFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jPTE5OD1zdGF0aWMgbG9uZyBhZnVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMjU5LVxcdFxcdGlmIChyYylcXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM6MjYwOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldl9jdHgpO1xcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0yNjEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jPTQxMD1zdGF0aWMgaW50IHZmaW9fY2N3X21kZXZfc2V0X2lycXMoc3RydWN0IHZmaW9fY2N3X3ByaXZhdGUgKnByaXZhdGUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ2MC1cXHRcXHRcXHRpZiAoKmN0eClcXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jOjQ2MTpcXHRcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoKmN0eCk7XFxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NjItXFx0XFx0XFx0KmN0eCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ3MC1cXHRcXHRcXHRpZiAoKmN0eClcXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jOjQ3MTpcXHRcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoKmN0eCk7XFxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NzItXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjE3Mj1zdGF0aWMgaW50IHZmaW9fYXBfc2V0X3JlcXVlc3RfaXJxKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE4Ny1cXHRcXHRpZiAobWF0cml4X21kZXYtXFx1MDAzZXJlcV90cmlnZ2VyKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMTg4OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTg5LVxcdFxcdG1hdHJpeF9tZGV2LVxcdTAwM2VyZXFfdHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE5NS1cXHRcXHRpZiAobWF0cml4X21kZXYtXFx1MDAzZXJlcV90cmlnZ2VyKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMTk2OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTk3LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIyMDY9c3RhdGljIGludCB2ZmlvX2FwX3NldF9jZmdfY2hhbmdlX2lycShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjIwLVxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjIxOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIyMi1cXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjI4LVxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjI5OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIzMC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmM9MjI4OT1zdGF0aWMgdm9pZCBmZnNfZGF0YV9jbGVhcihzdHJ1Y3QgZmZzX2RhdGEgKmZmcylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmMtMjMxMy1cXHRpZiAoZmZzLVxcdTAwM2VmZnNfZXZlbnRmZCkge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmM6MjMxNDpcXHRcXHRldmVudGZkX2N0eF9wdXQoZmZzLVxcdTAwM2VmZnNfZXZlbnRmZCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYy0yMzE1LVxcdFxcdGZmcy1cXHUwMDNlZmZzX2V2ZW50ZmQgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYz00OTY9c3RhdGljIHZvaWQgdmR1c2VfZGV2X3Jlc2V0KHN0cnVjdCB2ZHVzZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtNTMyLVxcdFxcdFxcdGlmICh2cS1cXHUwMDNla2lja2ZkKVxcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmM6NTMzOlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2cS1cXHUwMDNla2lja2ZkKTtcXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTUzNC1cXHRcXHRcXHR2cS1cXHUwMDNla2lja2ZkID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmM9MTE5OT1zdGF0aWMgaW50IHZkdXNlX2tpY2tmZF9zZXR1cChzdHJ1Y3QgdmR1c2VfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTEyMTktXFx0aWYgKHZxLVxcdTAwM2VraWNrZmQpXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzoxMjIwOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2cS1cXHUwMDNla2lja2ZkKTtcXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTEyMjEtXFx0dnEtXFx1MDAzZWtpY2tmZCA9IGN0eDtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jPTU4PXN0YXRpYyBpbnQgdmZpb19jZHhfbXNpX3NldF92ZWN0b3Jfc2lnbmFsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy03MS1cXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLm5hbWUpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjcyOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2ZGV2LVxcdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLnRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTczLVxcdFxcdHZkZXYtXFx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0udHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy05My1cXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLm5hbWUpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjk0OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy05NS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmM9NjE9c3RhdGljIGludCB2ZmlvX3NldF90cmlnZ2VyKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy03Mi1cXHRcXHRrZnJlZShpcnEtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jOjczOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpcnEtXFx1MDAzZXRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTc0LVxcdFxcdGlycS1cXHUwMDNldHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy05Ni1cXHRcXHRrZnJlZShpcnEtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jOjk3OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy05OC1cXHRcXHRpcnEtXFx1MDAzZXRyaWdnZXIgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NDQ9c3RhdGljIHZvaWQgdmZpb19wY2lfZXZlbnRmZF9yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ4LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjQ5OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkLVxcdTAwM2VjdHgpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTUwLVxcdGtmcmVlKGV2ZW50ZmQpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NDEzPXN0YXRpYyBpbnQgdmZpb19wY2lfY29yZV9wbV9lbnRyeV93aXRoX3dha2V1cChcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQzOC1cXHRpZiAocmV0KVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjQzOTpcXHRcXHRldmVudGZkX2N0eF9wdXQoZWZkY3R4KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NDAtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00NDQ9c3RhdGljIHZvaWQgX192ZmlvX3BjaV9ydW50aW1lX3BtX2V4aXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDUwLVxcdFxcdGlmICh2ZGV2LVxcdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4KSB7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NDUxOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2ZGV2LVxcdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NTItXFx0XFx0XFx0dmRldi1cXHUwMDNlcG1fd2FrZV9ldmVudGZkX2N0eCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9MzI0PXN0YXRpYyBpbnQgdmZpb19pbnR4X3NldF9zaWduYWwoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTM0Mi1cXHRcXHR2ZmlvX3ZpcnFmZF9mbHVzaF90aHJlYWQoXFx1MDAyNmN0eC1cXHUwMDNldW5tYXNrKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6MzQzOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChvbGQpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNDQtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTM0OT1zdGF0aWMgdm9pZCB2ZmlvX2ludHhfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzYyLVxcdFxcdGlmIChjdHgtXFx1MDAzZXRyaWdnZXIpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjM2MzpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoY3R4LVxcdTAwM2V0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzY0LVxcdFxcdGtmcmVlKGN0eC1cXHUwMDNlbmFtZSk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NDQ3PXN0YXRpYyBpbnQgdmZpb19tc2lfc2V0X3ZlY3Rvcl9zaWduYWwoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTQ2NS1cXHRcXHRrZnJlZShjdHgtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo0NjY6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eC1cXHUwMDNldHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTQ2Ny1cXHRcXHR2ZmlvX2lycV9jdHhfZnJlZSh2ZGV2LCBjdHgsIHZlY3Rvcik7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNTI1LW91dF9wdXRfZXZlbnRmZF9jdHg6XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjUyNjpcXHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTUyNy1vdXRfZnJlZV9uYW1lOlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTYzND1zdGF0aWMgaW50IHZmaW9fcGNpX3NldF9pbnR4X3RyaWdnZXIoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTY2Mi1cXHRcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHRyaWdnZXIpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjY2MzpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTY2NC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz03MzQ9c3RhdGljIGludCB2ZmlvX3BjaV9zZXRfY3R4X3RyaWdnZXJfc2luZ2xlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy03OTMtXFx0XFx0XFx0aWYgKHJldClcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6Nzk0OlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChlZmRjdHgpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy03OTUtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYz0xODI9c3RhdGljIGludCB2ZmlvX3NldF90cmlnZ2VyKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGluZGV4LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTg5LVxcdFxcdGRpc2FibGVfaXJxKGlycS1cXHUwMDNlaHdpcnEpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjE5MDpcXHRcXHRldmVudGZkX2N0eF9wdXQoaXJxLVxcdTAwM2V0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xOTEtXFx0XFx0aXJxLVxcdTAwM2V0cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jPTM1MT12b2lkIHZmaW9fcGxhdGZvcm1faXJxX2NsZWFudXAoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMzYwLVxcdFxcdFxcdGlmICh2ZGV2LVxcdTAwM2VpcnFzW2ldLnRyaWdnZXIpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzYxOlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2ZGV2LVxcdTAwM2VpcnFzW2ldLnRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM2Mi1cXHRcXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VpcnFzW2ldLm5hbWUpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jPTg1PXN0YXRpYyB2b2lkIHZpcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtOTEtXFx0Zmx1c2hfd29yayhcXHUwMDI2dmlycWZkLVxcdTAwM2VpbmplY3QpO1xcbmRyaXZlcnMvdmZpby92aXJxZmQuYzo5MjpcXHRldmVudGZkX2N0eF9wdXQodmlycWZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtOTMtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM9MTExPWludCB2ZmlvX3ZpcnFmZF9lbmFibGUodm9pZCAqb3BhcXVlLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jLTE4NC1lcnJfYnVzeTpcXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM6MTg1OlxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmRyaXZlcnMvdmZpby92aXJxZmQuYy0xODYtZXJyX2ZkOlxcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmM9NTE5PXN0YXRpYyB2b2lkIHZob3N0X3ZkcGFfY29uZmlnX3B1dChzdHJ1Y3Qgdmhvc3RfdmRwYSAqdilcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdmRwYS5jLTUyMS1cXHRpZiAodi1cXHUwMDNlY29uZmlnX2N0eCkge1xcbmRyaXZlcnMvdmhvc3QvdmRwYS5jOjUyMjpcXHRcXHRldmVudGZkX2N0eF9wdXQodi1cXHUwMDNlY29uZmlnX2N0eCk7XFxuZHJpdmVycy92aG9zdC92ZHBhLmMtNTIzLVxcdFxcdHYtXFx1MDAzZWNvbmZpZ19jdHggPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmM9NTI3PXN0YXRpYyBsb25nIHZob3N0X3ZkcGFfc2V0X2NvbmZpZ19jYWxsKHN0cnVjdCB2aG9zdF92ZHBhICp2LCB1MzIgX191c2VyICphcmdwKVxcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmMtNTQxLVxcdGlmICghSVNfRVJSX09SX05VTEwoY3R4KSlcXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYzo1NDI6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuZHJpdmVycy92aG9zdC92ZHBhLmMtNTQzLVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTEyMDM9dm9pZCB2aG9zdF9kZXZfY2xlYW51cChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIwOC1cXHRcXHRpZiAoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWVycm9yX2N0eClcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIwOTpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWVycm9yX2N0eCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTAtXFx0XFx0aWYgKGRldi1cXHUwMDNldnFzW2ldLVxcdTAwM2VraWNrKVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTItXFx0XFx0aWYgKGRldi1cXHUwMDNldnFzW2ldLVxcdTAwM2VjYWxsX2N0eC5jdHgpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjEyMTM6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGRldi1cXHUwMDNldnFzW2ldLVxcdTAwM2VjYWxsX2N0eC5jdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjE0LVxcdFxcdHZob3N0X3ZxX3Jlc2V0KGRldiwgZGV2LVxcdTAwM2V2cXNbaV0pO1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTctXFx0aWYgKGRldi1cXHUwMDNlbG9nX2N0eClcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIxODpcXHRcXHRldmVudGZkX2N0eF9wdXQoZGV2LVxcdTAwM2Vsb2dfY3R4KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxOS1cXHRkZXYtXFx1MDAzZWxvZ19jdHggPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTIxNTA9bG9uZyB2aG9zdF92cmluZ19pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHZvaWQgX191c2VyICphcmdwKVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzQtXFx0aWYgKCFJU19FUlJfT1JfTlVMTChjdHgpKVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMjc1OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMjc2LVxcdGlmIChmaWxlcClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMzIxPWxvbmcgdmhvc3RfZGV2X2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjQxOS1cXHRcXHRpZiAoY3R4KVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyNDIwOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yNDIxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9NDM9c3RhdGljIHZvaWQgYWNybl9pb2V2ZW50ZmRfc2h1dGRvd24oc3RydWN0IGFjcm5fdm0gKnZtLCBzdHJ1Y3QgaHNtX2lvZXZlbnRmZCAqcClcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTQ2LVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjQ3OlxcdGV2ZW50ZmRfY3R4X3B1dChwLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy00OC1cXHRsaXN0X2RlbChcXHUwMDI2cC1cXHUwMDNlbGlzdCk7XFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYz03Nj1zdGF0aWMgaW50IGFjcm5faW9ldmVudGZkX2Fzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy0xNDItZmFpbDpcXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYzoxNDM6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE0NC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9MTQ3PXN0YXRpYyBpbnQgYWNybl9pb2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLFxcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTY4LVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjE2OTpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTcwLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz02MD1zdGF0aWMgdm9pZCBoc21faXJxZmRfc2h1dGRvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jLTcyLVxcdGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKGlycWZkLVxcdTAwM2VldmVudGZkLCBcXHUwMDI2aXJxZmQtXFx1MDAzZXdhaXQsIFxcdTAwMjZjbnQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM6NzM6XFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jLTc0LVxcdGtmcmVlKGlycWZkKTtcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM9MTExPXN0YXRpYyBpbnQgYWNybl9pcnFmZF9hc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLCBzdHJ1Y3QgYWNybl9pcnFmZCAqYXJncylcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTcwLWZhaWw6XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzoxNzE6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTcyLW91dDpcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM9MTc3PXN0YXRpYyBpbnQgYWNybl9pcnFmZF9kZWFzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jLTE5NS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnZtLVxcdTAwM2VpcnFmZHNfbG9jayk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzoxOTY6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTk3LVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTkxMj1zdGF0aWMgdm9pZCBpcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtOTIxLVxcdGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKGtpcnFmZC1cXHUwMDNlZXZlbnRmZCwgXFx1MDAyNmtpcnFmZC1cXHUwMDNld2FpdCwgXFx1MDAyNmNudCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjkyMjpcXHRldmVudGZkX2N0eF9wdXQoa2lycWZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtOTIzLVxcdGtmcmVlKGtpcnFmZCk7XFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9OTc2PXN0YXRpYyBpbnQgcHJpdmNtZF9pcnFmZF9hc3NpZ24oc3RydWN0IHByaXZjbWRfaXJxZmQgKmlycWZkKVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEwNDQtZXJyb3JfZXZlbnRmZDpcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTA0NTpcXHRldmVudGZkX2N0eF9wdXQoa2lycWZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA0Ni1cXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xMDUyPXN0YXRpYyBpbnQgcHJpdmNtZF9pcnFmZF9kZWFzc2lnbihzdHJ1Y3QgcHJpdmNtZF9pcnFmZCAqaXJxZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA3Mi1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTA3MzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEwNzQtXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTM0Nj1zdGF0aWMgdm9pZCBpb2V2ZW50ZmRfZnJlZShzdHJ1Y3QgcHJpdmNtZF9rZXJuZWxfaW9ldmVudGZkICpraW9ldmVudGZkKVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEzNDgtXFx0bGlzdF9kZWwoXFx1MDAyNmtpb2V2ZW50ZmQtXFx1MDAzZWxpc3QpO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMzQ5OlxcdGV2ZW50ZmRfY3R4X3B1dChraW9ldmVudGZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTM1MC1cXHRrZnJlZShraW9ldmVudGZkKTtcXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xMzUzPXN0YXRpYyBpbnQgcHJpdmNtZF9pb2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBwcml2Y21kX2lvZXZlbnRmZCAqaW9ldmVudGZkKVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0MDMtZXJyb3JfZXZlbnRmZDpcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTQwNDpcXHRldmVudGZkX2N0eF9wdXQoa2lvZXZlbnRmZC1cXHUwMDNlZXZlbnRmZCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0MDUtXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTQxMT1zdGF0aWMgaW50IHByaXZjbWRfaW9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBwcml2Y21kX2lvZXZlbnRmZCAqaW9ldmVudGZkKVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0NTQtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpb3JlcV9sb2NrKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTQ1NTpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0NTYtXFxuLS1cXG5mcy9haW8uYz0xMTU2PXN0YXRpYyBpbmxpbmUgdm9pZCBpb2NiX2Rlc3Ryb3koc3RydWN0IGFpb19raW9jYiAqaW9jYilcXG4tLVxcbmZzL2Fpby5jLTExNTgtXFx0aWYgKGlvY2ItXFx1MDAzZWtpX2V2ZW50ZmQpXFxuZnMvYWlvLmM6MTE1OTpcXHRcXHRldmVudGZkX2N0eF9wdXQoaW9jYi1cXHUwMDNla2lfZXZlbnRmZCk7XFxuZnMvYWlvLmMtMTE2MC1cXHRpZiAoaW9jYi1cXHUwMDNla2lfZmlscClcXG4tLVxcbmZzL2V2ZW50ZmQuYz04OT1zdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXFxuLS1cXG5mcy9ldmVudGZkLmMtOTYtLyoqXFxuZnMvZXZlbnRmZC5jOjk3OiAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTk4LSAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXFxuLS1cXG5mcy9ldmVudGZkLmMtMTAyLSAqL1xcbmZzL2V2ZW50ZmQuYzoxMDM6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuZnMvZXZlbnRmZC5jLTEwNC17XFxuLS1cXG5mcy9ldmVudGZkLmMtMTA5LX1cXG5mcy9ldmVudGZkLmM6MTEwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XFxuZnMvZXZlbnRmZC5jLTExMS1cXG5mcy9ldmVudGZkLmM9MTEyPXN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZXZlbnRmZC5jLTExNi1cXHR3YWtlX3VwX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTEhVUCk7XFxuZnMvZXZlbnRmZC5jOjExNzpcXHRldmVudGZkX2N0eF9wdXQoY3R4KTtcXG5mcy9ldmVudGZkLmMtMTE4LVxcdHJldHVybiAwO1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9MzE9c3RydWN0IGZpbGU7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC0zNC1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDozNTp2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCk7XFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtMzYtc3RydWN0IGZpbGUgKmV2ZW50ZmRfZmdldChpbnQgZmQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9NjE9c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC02NC1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDo2NTpzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTY2LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oPTg4PXN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcXG4tLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTkyLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oOjkzOkRFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTk0LVxcbi0tXFxuaW9fdXJpbmcvZXZlbnRmZC5jPTI4PXN0YXRpYyB2b2lkIGlvX2V2ZW50ZmRfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbmlvX3VyaW5nL2V2ZW50ZmQuYy0zMS1cXG5pb191cmluZy9ldmVudGZkLmM6MzI6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2X2ZkLVxcdTAwM2VjcV9ldl9mZCk7XFxuaW9fdXJpbmcvZXZlbnRmZC5jLTMzLVxcdGtmcmVlKGV2X2ZkKTtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMDIwPXN0YXRpYyB2b2lkIG1lbWNnX2V2ZW50X3JlbW92ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTAzMi1cXG5tbS9tZW1jb250cm9sLXYxLmM6MTAzMzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnQtXFx1MDAzZWV2ZW50ZmQpO1xcbm1tL21lbWNvbnRyb2wtdjEuYy0xMDM0LVxcdGtmcmVlKGV2ZW50KTtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMDk0PXN0YXRpYyBzc2l6ZV90IG1lbWNnX3dyaXRlX2V2ZW50X2NvbnRyb2woc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxcbi0tXFxubW0vbWVtY29udHJvbC12MS5jLTEyMjctb3V0X3B1dF9ldmVudGZkOlxcbm1tL21lbWNvbnRyb2wtdjEuYzoxMjI4OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudC1cXHUwMDNlZXZlbnRmZCk7XFxubW0vbWVtY29udHJvbC12MS5jLTEyMjktb3V0X2tmcmVlOlxcbi0tXFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jPTE1MzQ9c3RhdGljIHZvaWQgbXR0eV9kaXNhYmxlX2ludHgoc3RydWN0IG1kZXZfc3RhdGUgKm1kZXZfc3RhdGUpXFxuLS1cXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTUzNi1cXHRpZiAobWRldl9zdGF0ZS1cXHUwMDNlaW50eF9ldnRmZCkge1xcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYzoxNTM3OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtZGV2X3N0YXRlLVxcdTAwM2VpbnR4X2V2dGZkKTtcXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTUzOC1cXHRcXHRtZGV2X3N0YXRlLVxcdTAwM2VpbnR4X2V2dGZkID0gTlVMTDtcXG4tLVxcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYz0xNTQ0PXN0YXRpYyB2b2lkIG10dHlfZGlzYWJsZV9tc2koc3RydWN0IG1kZXZfc3RhdGUgKm1kZXZfc3RhdGUpXFxuLS1cXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTU0Ni1cXHRpZiAobWRldl9zdGF0ZS1cXHUwMDNlbXNpX2V2dGZkKSB7XFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jOjE1NDc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1kZXZfc3RhdGUtXFx1MDAzZW1zaV9ldnRmZCk7XFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jLTE1NDgtXFx0XFx0bWRldl9zdGF0ZS1cXHUwMDNlbXNpX2V2dGZkID0gTlVMTDtcXG4tLVxcbnZpcnQva3ZtL2V2ZW50ZmQuYz0xMjM9aXJxZmRfc2h1dGRvd24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jLTE0Ni1cXHRcXHRpcnFmZF9yZXNhbXBsZXJfc2h1dGRvd24oaXJxZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYzoxNDc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVxcdTAwM2VyZXNhbXBsZWZkKTtcXG52aXJ0L2t2bS9ldmVudGZkLmMtMTQ4LVxcdH1cXG4tLVxcbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNTUtI2VuZGlmXFxudmlydC9rdm0vZXZlbnRmZC5jOjE1NjpcXHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNTctXFx0a2ZyZWUoaXJxZmQpO1xcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jPTM3MT1rdm1faXJxZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9pcnFmZCAqYXJncylcXG4tLVxcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTItXFx0aWYgKHJlc2FtcGxlZmQgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUihyZXNhbXBsZWZkKSlcXG52aXJ0L2t2bS9ldmVudGZkLmM6NTEzOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChyZXNhbXBsZWZkKTtcXG52aXJ0L2t2bS9ldmVudGZkLmMtNTE0LVxcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTUtXFx0aWYgKGV2ZW50ZmQgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUihldmVudGZkKSlcXG52aXJ0L2t2bS9ldmVudGZkLmM6NTE2OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG52aXJ0L2t2bS9ldmVudGZkLmMtNTE3LVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jPTU5MD1rdm1faXJxZmRfZGVhc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycWZkICphcmdzKVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jLTYwNi1cXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmt2bS1cXHUwMDNlaXJxZmRzLmxvY2spO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYzo2MDc6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy02MDgtXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDc6MTguMjAwMjYxNjA4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMTgzOTg1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIOKAkyBhIHByZXR0eSBuaWNoZSBmdW5jdGlvbiwgZGVmaW5pdGVseSBub3Qgc29tZXRoaW5nIEkgZW5jb3VudGVyIGV2ZXJ5IGRheS4gSSBhbHNvIHNlZSB0aGF0IGBldmVudGZkX2N0eF9wdXRgIGlzIGJlaW5nIG1vZGlmaWVkLCB3aGljaCBpcyBkaXJlY3RseSByZWxhdGVkLiBSaWdodCwgc28gd2hhdCBjb25maWdzIGFyZSBpbiBwbGF5IGhlcmU/IEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5MZXQncyBzdGFydCB3aXRoIHRoZSBvYnZpb3VzOiBJIGtub3cgYGRybV9zeW5jb2JqLmNgIHVzZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLCBzbyBJIHNob3VsZCBjaGVjayBmb3IgYENPTkZJR19EUk1gLiBTaW1pbGFybHksIHNpbmNlIGBldmVudGZkX2N0eF9wdXRgIGRlYWxzIHdpdGgsIHdlbGwsIGBldmVudGZkYCwgaXQgaGFzIHRvIGJlIGBDT05GSUdfRVZFTlRGRGAuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBjaGVjayB0aGUga2VybmVsJ3MgYGluaXQvS2NvbmZpZ2AgZmlsZSBhbmQgdmVyaWZ5IGlmIG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QgYWJvdXQgYENPTkZJR19FVkVOVEZEYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZmlyc3QgY2x1ZSBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNTIyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjIxLjQxODY2MzE3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwODgxOTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFVkVOVEZEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTE5MjM9Y29uZmlnIFRJTUVSRkRcXG4tLVxcbmluaXQvS2NvbmZpZy0xOTMxLVxcbmluaXQvS2NvbmZpZzoxOTMyOmNvbmZpZyBFVkVOVEZEXFxuaW5pdC9LY29uZmlnLTE5MzMtXFx0Ym9vbCBcXFwiRW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFxcXCIgaWYgRVhQRVJUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjIxLjc0OTU0OTk3N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTk1OTg0MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFdmVudGZkIE1vZHVsZSBWZXJpZmljYXRpb24gaW4gZnMvTWFrZWZpbGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgYGV2ZW50ZmQub2Agd2l0aGluIHRoZSBgZnMvTWFrZWZpbGVgLiBJdCdzIGEgc3RhbmRhcmQgcHJvY2VkdXJlLCBidXQgSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGJ1aWx0IGFuZCBsaW5rZWQgY29ycmVjdGx5LCBlc3BlY2lhbGx5IGlmIHRoZXJlJ3MgYmVlbiBhbnkgcmVjZW50IGNodXJuIGluIHRoZSBmaWxlc3lzdGVtIGluZnJhc3RydWN0dXJlLiBJJ20gcHJpbWFyaWx5IGxvb2tpbmcgZm9yIHRoZSBpbmNsdWRlIHBhdGhzLCBkZXBlbmRlbmNpZXMsIGNvbXBpbGVyIGZsYWdzLCBhbmQgYW55IHBvdGVudGlhbGx5IHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYGtidWlsZGAgc3lzdGVtIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBtb2R1bGUncyBiZWhhdmlvci4gSSB3YW50IHRvIHJ1bGUgb3V0IGFueSBidWlsZCBlbnZpcm9ubWVudCB3ZWlyZG5lc3MgdGhhdCBjb3VsZCBjYXVzZSBzaWxlbnQgZmFpbHVyZXMgZG93biB0aGUgbGluZSwgcG90ZW50aWFsbHkgbWFuaWZlc3RpbmcgYXMgc3VidGxlIHBlcmZvcm1hbmNlIGlzc3VlcyBvciBldmVuIGNyYXNoZXMuIEkgYWxzbyB3aWxsIGJlIGNoZWNraW5nIGFueSBvdGhlciBzaW1pbGFyIG1vZHVsZXMgdGhhdCBtYXkgYmUgc2hhcmluZyBzaW1pbGFyIGNvZGUgd2l0aCB0aGUgYGV2ZW50ZmQub2AgbW9kdWxlLiBUaGlzIGlzIGp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIGFueSBzcGVjaWZpYyBpc3N1ZXMsIGJ1dCBlc3NlbnRpYWwgdG8gbWFrZSBzdXJlIHRoZSBmb3VuZGF0aW9uIGlzIHNvbGlkIGJlZm9yZSBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHNwZWNpZmljcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5NDUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzoyNC45NDU1Mzc3MjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjY2MzkxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJldmVudGZkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19USU1FUkZEKVxcdFxcdCs9IHRpbWVyZmQub1xcbmZzL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19FVkVOVEZEKVxcdFxcdCs9IGV2ZW50ZmQub1xcbmZzL01ha2VmaWxlLTMwLW9iai0kKENPTkZJR19BSU8pICAgICAgICAgICAgICAgKz0gYWlvLm9cXG4tLVxcbmZzL2Fpby5jLTM2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWN1cml0eS5oXFx1MDAzZVxcbmZzL2Fpby5jOjM3OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldmVudGZkLmhcXHUwMDNlXFxuZnMvYWlvLmMtMzgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Jsa19wbHVnLmhcXHUwMDNlXFxuLS1cXG5mcy9haW8uYz0xOTc9c3RydWN0IGFpb19raW9jYiB7XFxuLS1cXG5mcy9haW8uYy0yMTUtXFx0ICogSWYgdGhlIGFpb19yZXNmZCBmaWVsZCBvZiB0aGUgdXNlcnNwYWNlIGlvY2IgaXMgbm90IHplcm8sXFxuZnMvYWlvLmM6MjE2OlxcdCAqIHRoaXMgaXMgdGhlIHVuZGVybHlpbmcgZXZlbnRmZCBjb250ZXh0IHRvIGRlbGl2ZXIgZXZlbnRzIHRvLlxcbmZzL2Fpby5jLTIxNy1cXHQgKi9cXG5mcy9haW8uYzoyMTg6XFx0c3RydWN0IGV2ZW50ZmRfY3R4XFx0KmtpX2V2ZW50ZmQ7XFxuZnMvYWlvLmMtMjE5LX07XFxuLS1cXG5mcy9haW8uYz0xMTA3PXN0YXRpYyBpbmxpbmUgc3RydWN0IGFpb19raW9jYiAqYWlvX2dldF9yZXEoc3RydWN0IGtpb2N0eCAqY3R4KVxcbi0tXFxuZnMvYWlvLmMtMTEyMy1cXHRyZWZjb3VudF9zZXQoXFx1MDAyNnJlcS1cXHUwMDNla2lfcmVmY250LCAyKTtcXG5mcy9haW8uYzoxMTI0OlxcdHJlcS1cXHUwMDNla2lfZXZlbnRmZCA9IE5VTEw7XFxuZnMvYWlvLmMtMTEyNS1cXHRyZXR1cm4gcmVxO1xcbi0tXFxuZnMvYWlvLmM9MTE1Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW9jYl9kZXN0cm95KHN0cnVjdCBhaW9fa2lvY2IgKmlvY2IpXFxuZnMvYWlvLmMtMTE1Ny17XFxuZnMvYWlvLmM6MTE1ODpcXHRpZiAoaW9jYi1cXHUwMDNla2lfZXZlbnRmZClcXG5mcy9haW8uYzoxMTU5OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpb2NiLVxcdTAwM2VraV9ldmVudGZkKTtcXG5mcy9haW8uYy0xMTYwLVxcdGlmIChpb2NiLVxcdTAwM2VraV9maWxwKVxcbi0tXFxuZnMvYWlvLmM9MTE3ND1zdGF0aWMgdm9pZCBhaW9fY29tcGxldGUoc3RydWN0IGFpb19raW9jYiAqaW9jYilcXG4tLVxcbmZzL2Fpby5jLTEyMzAtXFx0ICogQ2hlY2sgaWYgdGhlIHVzZXIgYXNrZWQgdXMgdG8gZGVsaXZlciB0aGUgcmVzdWx0IHRocm91Z2ggYW5cXG5mcy9haW8uYzoxMjMxOlxcdCAqIGV2ZW50ZmQuIFRoZSBldmVudGZkX3NpZ25hbCgpIGZ1bmN0aW9uIGlzIHNhZmUgdG8gYmUgY2FsbGVkXFxuZnMvYWlvLmMtMTIzMi1cXHQgKiBmcm9tIElSUSBjb250ZXh0LlxcbmZzL2Fpby5jLTEyMzMtXFx0ICovXFxuZnMvYWlvLmM6MTIzNDpcXHRpZiAoaW9jYi1cXHUwMDNla2lfZXZlbnRmZClcXG5mcy9haW8uYzoxMjM1OlxcdFxcdGV2ZW50ZmRfc2lnbmFsKGlvY2ItXFx1MDAzZWtpX2V2ZW50ZmQpO1xcbmZzL2Fpby5jLTEyMzYtXFxuLS1cXG5mcy9haW8uYz0xODQwPXN0YXRpYyBpbnQgYWlvX3BvbGxfd2FrZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd2FpdCwgdW5zaWduZWQgbW9kZSwgaW50IHN5bmMsXFxuLS1cXG5mcy9haW8uYy0xODcxLVxcdFxcdGlvY2ItXFx1MDAzZWtpX3Jlcy5yZXMgPSBtYW5nbGVfcG9sbChtYXNrKTtcXG5mcy9haW8uYzoxODcyOlxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9ldmVudGZkIFxcdTAwMjZcXHUwMDI2ICFldmVudGZkX3NpZ25hbF9hbGxvd2VkKCkpIHtcXG5mcy9haW8uYy0xODczLVxcdFxcdFxcdGlvY2IgPSBOVUxMO1xcbi0tXFxuZnMvYWlvLmM9MjAyMj1zdGF0aWMgaW50IF9faW9fc3VibWl0X29uZShzdHJ1Y3Qga2lvY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBpb2NiICppb2NiLFxcbi0tXFxuZnMvYWlvLmMtMjAzMC1cXHRpZiAoaW9jYi1cXHUwMDNlYWlvX2ZsYWdzIFxcdTAwMjYgSU9DQl9GTEFHX1JFU0ZEKSB7XFxuZnMvYWlvLmM6MjAzMTpcXHRcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmQ7XFxuZnMvYWlvLmMtMjAzMi1cXHRcXHQvKlxcbi0tXFxuZnMvYWlvLmMtMjAzNC1cXHRcXHQgKiBpbnN0YW5jZSBvZiB0aGUgZmlsZSogbm93LiBUaGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgYmVcXG5mcy9haW8uYzoyMDM1OlxcdFxcdCAqIGFuIGV2ZW50ZmQoKSBmZCwgYW5kIHdpbGwgYmUgc2lnbmFsZWQgZm9yIGVhY2ggY29tcGxldGVkXFxuZnMvYWlvLmM6MjAzNjpcXHRcXHQgKiBldmVudCB1c2luZyB0aGUgZXZlbnRmZF9zaWduYWwoKSBmdW5jdGlvbi5cXG5mcy9haW8uYy0yMDM3LVxcdFxcdCAqL1xcbmZzL2Fpby5jOjIwMzg6XFx0XFx0ZXZlbnRmZCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGlvY2ItXFx1MDAzZWFpb19yZXNmZCk7XFxuZnMvYWlvLmM6MjAzOTpcXHRcXHRpZiAoSVNfRVJSKGV2ZW50ZmQpKVxcbmZzL2Fpby5jOjIwNDA6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoZXZlbnRmZCk7XFxuZnMvYWlvLmMtMjA0MS1cXG5mcy9haW8uYzoyMDQyOlxcdFxcdHJlcS1cXHUwMDNla2lfZXZlbnRmZCA9IGV2ZW50ZmQ7XFxuZnMvYWlvLmMtMjA0My1cXHR9XFxuLS1cXG5mcy9ldmVudGZkLmMtMi0vKlxcbmZzL2V2ZW50ZmQuYzozOiAqICBmcy9ldmVudGZkLmNcXG5mcy9ldmVudGZkLmMtNC0gKlxcbi0tXFxuZnMvZXZlbnRmZC5jLTIxLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9rcmVmLmhcXHUwMDNlXFxuZnMvZXZlbnRmZC5jOjIyOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldmVudGZkLmhcXHUwMDNlXFxuZnMvZXZlbnRmZC5jLTIzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9jX2ZzLmhcXHUwMDNlXFxuLS1cXG5mcy9ldmVudGZkLmMtMjctXFxuZnMvZXZlbnRmZC5jOjI4OnN0YXRpYyBERUZJTkVfSURBKGV2ZW50ZmRfaWRhKTtcXG5mcy9ldmVudGZkLmMtMjktXFxuZnMvZXZlbnRmZC5jOjMwOnN0cnVjdCBldmVudGZkX2N0eCB7XFxuZnMvZXZlbnRmZC5jLTMxLVxcdHN0cnVjdCBrcmVmIGtyZWY7XFxuLS1cXG5mcy9ldmVudGZkLmMtMzMtXFx0LypcXG5mcy9ldmVudGZkLmM6MzQ6XFx0ICogRXZlcnkgdGltZSB0aGF0IGEgd3JpdGUoMikgaXMgcGVyZm9ybWVkIG9uIGFuIGV2ZW50ZmQsIHRoZVxcbmZzL2V2ZW50ZmQuYy0zNS1cXHQgKiB2YWx1ZSBvZiB0aGUgX191NjQgYmVpbmcgd3JpdHRlbiBpcyBhZGRlZCB0byBcXFwiY291bnRcXFwiIGFuZCBhXFxuLS1cXG5mcy9ldmVudGZkLmMtMzctXFx0ICogc3BlY2lmaWVkLCBhIHJlYWQoMikgd2lsbCByZXR1cm4gdGhlIFxcXCJjb3VudFxcXCIgdmFsdWUgdG8gdXNlcnNwYWNlLFxcbmZzL2V2ZW50ZmQuYzozODpcXHQgKiBhbmQgd2lsbCByZXNldCBcXFwiY291bnRcXFwiIHRvIHplcm8uIFRoZSBrZXJuZWwgc2lkZSBldmVudGZkX3NpZ25hbCgpXFxuZnMvZXZlbnRmZC5jLTM5LVxcdCAqIGFsc28sIGFkZHMgdG8gdGhlIFxcXCJjb3VudFxcXCIgY291bnRlciBhbmQgaXNzdWUgYSB3YWtldXAuXFxuLS1cXG5mcy9ldmVudGZkLmMtNDYtLyoqXFxuZnMvZXZlbnRmZC5jOjQ3OiAqIGV2ZW50ZmRfc2lnbmFsX21hc2sgLSBJbmNyZW1lbnQgdGhlIGV2ZW50IGNvdW50ZXJcXG5mcy9ldmVudGZkLmM6NDg6ICogQGN0eDogW2luXSBQb2ludGVyIHRvIHRoZSBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTQ5LSAqIEBtYXNrOiBbaW5dIHBvbGwgbWFza1xcbi0tXFxuZnMvZXZlbnRmZC5jLTU1LSAqL1xcbmZzL2V2ZW50ZmQuYzo1Njp2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXFxuZnMvZXZlbnRmZC5jLTU3LXtcXG4tLVxcbmZzL2V2ZW50ZmQuYy02My1cXHQgKiBuZXN0ZWQgd2FpdHF1ZXVlcyB3aXRoIGN1c3RvbSB3YWtldXAgaGFuZGxlcnMsIHRoZW4gaXQgc2hvdWxkXFxuZnMvZXZlbnRmZC5jOjY0OlxcdCAqIGNoZWNrIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQoKSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBJZlxcbmZzL2V2ZW50ZmQuYzo2NTpcXHQgKiBpdCByZXR1cm5zIGZhbHNlLCB0aGUgZXZlbnRmZF9zaWduYWwoKSBjYWxsIHNob3VsZCBiZSBkZWZlcnJlZCB0byBhXFxuZnMvZXZlbnRmZC5jLTY2LVxcdCAqIHNhZmUgY29udGV4dC5cXG5mcy9ldmVudGZkLmMtNjctXFx0ICovXFxuZnMvZXZlbnRmZC5jOjY4OlxcdGlmIChXQVJOX09OX09OQ0UoY3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCkpXFxuZnMvZXZlbnRmZC5jLTY5LVxcdFxcdHJldHVybjtcXG4tLVxcbmZzL2V2ZW50ZmQuYy03MS1cXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgubG9jaywgZmxhZ3MpO1xcbmZzL2V2ZW50ZmQuYzo3MjpcXHRjdXJyZW50LVxcdTAwM2Vpbl9ldmVudGZkID0gMTtcXG5mcy9ldmVudGZkLmMtNzMtXFx0aWYgKGN0eC1cXHUwMDNlY291bnQgXFx1MDAzYyBVTExPTkdfTUFYKVxcbi0tXFxuZnMvZXZlbnRmZC5jLTc2LVxcdFxcdHdha2VfdXBfbG9ja2VkX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTElOIHwgbWFzayk7XFxuZnMvZXZlbnRmZC5jOjc3OlxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbmZzL2V2ZW50ZmQuYy03OC1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XFxuZnMvZXZlbnRmZC5jLTc5LX1cXG5mcy9ldmVudGZkLmM6ODA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9zaWduYWxfbWFzayk7XFxuZnMvZXZlbnRmZC5jLTgxLVxcbmZzL2V2ZW50ZmQuYzo4MjpzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWVfY3R4KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbmZzL2V2ZW50ZmQuYy04My17XFxuZnMvZXZlbnRmZC5jLTg0LVxcdGlmIChjdHgtXFx1MDAzZWlkIFxcdTAwM2U9IDApXFxuZnMvZXZlbnRmZC5jOjg1OlxcdFxcdGlkYV9mcmVlKFxcdTAwMjZldmVudGZkX2lkYSwgY3R4LVxcdTAwM2VpZCk7XFxuZnMvZXZlbnRmZC5jLTg2LVxcdGtmcmVlKGN0eCk7XFxuLS1cXG5mcy9ldmVudGZkLmMtODgtXFxuZnMvZXZlbnRmZC5jOjg5OnN0YXRpYyB2b2lkIGV2ZW50ZmRfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG5mcy9ldmVudGZkLmMtOTAte1xcbmZzL2V2ZW50ZmQuYzo5MTpcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZXZlbnRmZF9jdHgsIGtyZWYpO1xcbmZzL2V2ZW50ZmQuYy05Mi1cXG5mcy9ldmVudGZkLmM6OTM6XFx0ZXZlbnRmZF9mcmVlX2N0eChjdHgpO1xcbmZzL2V2ZW50ZmQuYy05NC19XFxuLS1cXG5mcy9ldmVudGZkLmMtOTYtLyoqXFxuZnMvZXZlbnRmZC5jOjk3OiAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jOjk4OiAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTk5LSAqXFxuZnMvZXZlbnRmZC5jOjEwMDogKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxcbmZzL2V2ZW50ZmQuYzoxMDE6ICogd2l0aCBldmVudGZkX2N0eF9mZGdldCgpIG9yIGV2ZW50ZmRfY3R4X2ZpbGVnZXQoKS5cXG5mcy9ldmVudGZkLmMtMTAyLSAqL1xcbmZzL2V2ZW50ZmQuYzoxMDM6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuZnMvZXZlbnRmZC5jLTEwNC17XFxuLS1cXG5mcy9ldmVudGZkLmMtMTA3LVxcbmZzL2V2ZW50ZmQuYzoxMDg6XFx0a3JlZl9wdXQoXFx1MDAyNmN0eC1cXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcXG5mcy9ldmVudGZkLmMtMTA5LX1cXG5mcy9ldmVudGZkLmM6MTEwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XFxuZnMvZXZlbnRmZC5jLTExMS1cXG5mcy9ldmVudGZkLmM6MTEyOnN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2V2ZW50ZmQuYy0xMTMte1xcbmZzL2V2ZW50ZmQuYzoxMTQ6XFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZnMvZXZlbnRmZC5jLTExNS1cXG5mcy9ldmVudGZkLmMtMTE2LVxcdHdha2VfdXBfcG9sbChcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIEVQT0xMSFVQKTtcXG5mcy9ldmVudGZkLmM6MTE3OlxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmZzL2V2ZW50ZmQuYy0xMTgtXFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9ldmVudGZkLmMtMTIwLVxcbmZzL2V2ZW50ZmQuYzoxMjE6c3RhdGljIF9fcG9sbF90IGV2ZW50ZmRfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcXG5mcy9ldmVudGZkLmMtMTIyLXtcXG5mcy9ldmVudGZkLmM6MTIzOlxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmZzL2V2ZW50ZmQuYy0xMjQtXFx0X19wb2xsX3QgZXZlbnRzID0gMDtcXG4tLVxcbmZzL2V2ZW50ZmQuYy0xNDktXFx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrIGN0eC1cXHUwMDNlcXdoLmxvY2tcXG5mcy9ldmVudGZkLmM6MTUwOlxcdCAqICAgICBldmVudGZkX3BvbGwgcmV0dXJucyAwXFxuZnMvZXZlbnRmZC5jLTE1MS1cXHQgKlxcbi0tXFxuZnMvZXZlbnRmZC5jLTE2NC1cXHQgKiAgICAgdW5sb2NrIGN0eC1cXHUwMDNld3FoLmxvY2tcXG5mcy9ldmVudGZkLmM6MTY1OlxcdCAqICAgICBldmVudGZkX3BvbGwgcmV0dXJucyAwXFxuZnMvZXZlbnRmZC5jLTE2Ni1cXHQgKi9cXG4tLVxcbmZzL2V2ZW50ZmQuYy0xNzgtXFxuZnMvZXZlbnRmZC5jOjE3OTp2b2lkIGV2ZW50ZmRfY3R4X2RvX3JlYWQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fdTY0ICpjbnQpXFxuZnMvZXZlbnRmZC5jLTE4MC17XFxuLS1cXG5mcy9ldmVudGZkLmMtMTg1LX1cXG5mcy9ldmVudGZkLmM6MTg2OkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X2RvX3JlYWQpO1xcbmZzL2V2ZW50ZmQuYy0xODctXFxuZnMvZXZlbnRmZC5jLTE4OC0vKipcXG5mcy9ldmVudGZkLmM6MTg5OiAqIGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlIC0gUmVhZCB0aGUgY3VycmVudCBjb3VudGVyIGFuZCByZW1vdmVzIHdhaXQgcXVldWUuXFxuZnMvZXZlbnRmZC5jOjE5MDogKiBAY3R4OiBbaW5dIFBvaW50ZXIgdG8gZXZlbnRmZCBjb250ZXh0LlxcbmZzL2V2ZW50ZmQuYy0xOTEtICogQHdhaXQ6IFtpbl0gV2FpdCBxdWV1ZSB0byBiZSByZW1vdmVkLlxcbi0tXFxuZnMvZXZlbnRmZC5jLTE5Ny0gKlxcbmZzL2V2ZW50ZmQuYzoxOTg6ICogVGhpcyBpcyB1c2VkIHRvIGF0b21pY2FsbHkgcmVtb3ZlIGEgd2FpdCBxdWV1ZSBlbnRyeSBmcm9tIHRoZSBldmVudGZkIHdhaXRcXG5mcy9ldmVudGZkLmMtMTk5LSAqIHF1ZXVlIGhlYWQsIGFuZCByZWFkL3Jlc2V0IHRoZSBjb3VudGVyIHZhbHVlLlxcbmZzL2V2ZW50ZmQuYy0yMDAtICovXFxuZnMvZXZlbnRmZC5jOjIwMTppbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIHdhaXRfcXVldWVfZW50cnlfdCAqd2FpdCxcXG5mcy9ldmVudGZkLmMtMjAyLVxcdFxcdFxcdFxcdCAgX191NjQgKmNudClcXG4tLVxcbmZzL2V2ZW50ZmQuYy0yMDYtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmN0eC1cXHUwMDNld3FoLmxvY2ssIGZsYWdzKTtcXG5mcy9ldmVudGZkLmM6MjA3OlxcdGV2ZW50ZmRfY3R4X2RvX3JlYWQoY3R4LCBjbnQpO1xcbmZzL2V2ZW50ZmQuYy0yMDgtXFx0X19yZW1vdmVfd2FpdF9xdWV1ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIHdhaXQpO1xcbi0tXFxuZnMvZXZlbnRmZC5jLTIxNC19XFxuZnMvZXZlbnRmZC5jOjIxNTpFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZSk7XFxuZnMvZXZlbnRmZC5jLTIxNi1cXG5mcy9ldmVudGZkLmM6MjE3OnN0YXRpYyBzc2l6ZV90IGV2ZW50ZmRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuZnMvZXZlbnRmZC5jLTIxOC17XFxuZnMvZXZlbnRmZC5jLTIxOS1cXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXFx1MDAzZWtpX2ZpbHA7XFxuZnMvZXZlbnRmZC5jOjIyMDpcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5mcy9ldmVudGZkLmMtMjIxLVxcdF9fdTY0IHVjbnQgPSAwO1xcbi0tXFxuZnMvZXZlbnRmZC5jLTIzNy1cXHR9XFxuZnMvZXZlbnRmZC5jOjIzODpcXHRldmVudGZkX2N0eF9kb19yZWFkKGN0eCwgXFx1MDAyNnVjbnQpO1xcbmZzL2V2ZW50ZmQuYzoyMzk6XFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDE7XFxuZnMvZXZlbnRmZC5jLTI0MC1cXHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgpKVxcbmZzL2V2ZW50ZmQuYy0yNDEtXFx0XFx0d2FrZV91cF9sb2NrZWRfcG9sbChcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIEVQT0xMT1VUKTtcXG5mcy9ldmVudGZkLmM6MjQyOlxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbmZzL2V2ZW50ZmQuYy0yNDMtXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZjdHgtXFx1MDAzZXdxaC5sb2NrKTtcXG4tLVxcbmZzL2V2ZW50ZmQuYy0yNDktXFxuZnMvZXZlbnRmZC5jOjI1MDpzdGF0aWMgc3NpemVfdCBldmVudGZkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXFxuZnMvZXZlbnRmZC5jLTI1MS1cXHRcXHRcXHQgICAgIGxvZmZfdCAqcHBvcylcXG5mcy9ldmVudGZkLmMtMjUyLXtcXG5mcy9ldmVudGZkLmM6MjUzOlxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmZzL2V2ZW50ZmQuYy0yNTQtXFx0c3NpemVfdCByZXM7XFxuLS1cXG5mcy9ldmVudGZkLmMtMjc0LVxcdFxcdGN0eC1cXHUwMDNlY291bnQgKz0gdWNudDtcXG5mcy9ldmVudGZkLmM6Mjc1OlxcdFxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAxO1xcbmZzL2V2ZW50ZmQuYy0yNzYtXFx0XFx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXFx1MDAyNmN0eC1cXHUwMDNld3FoKSlcXG5mcy9ldmVudGZkLmMtMjc3LVxcdFxcdFxcdHdha2VfdXBfbG9ja2VkX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTElOKTtcXG5mcy9ldmVudGZkLmM6Mjc4OlxcdFxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbmZzL2V2ZW50ZmQuYy0yNzktXFx0fVxcbi0tXFxuZnMvZXZlbnRmZC5jLTI4NS0jaWZkZWYgQ09ORklHX1BST0NfRlNcXG5mcy9ldmVudGZkLmM6Mjg2OnN0YXRpYyB2b2lkIGV2ZW50ZmRfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZmlsZSAqZilcXG5mcy9ldmVudGZkLmMtMjg3LXtcXG5mcy9ldmVudGZkLmM6Mjg4OlxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZi1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmZzL2V2ZW50ZmQuYy0yODktXFx0X191NjQgY250O1xcbi0tXFxuZnMvZXZlbnRmZC5jLTI5NS1cXHRzZXFfcHJpbnRmKG0sXFxuZnMvZXZlbnRmZC5jOjI5NjpcXHRcXHQgICBcXFwiZXZlbnRmZC1jb3VudDogJTE2bGx4XFxcXG5cXFwiXFxuZnMvZXZlbnRmZC5jOjI5NzpcXHRcXHQgICBcXFwiZXZlbnRmZC1pZDogJWRcXFxcblxcXCJcXG5mcy9ldmVudGZkLmM6Mjk4OlxcdFxcdCAgIFxcXCJldmVudGZkLXNlbWFwaG9yZTogJWRcXFxcblxcXCIsXFxuZnMvZXZlbnRmZC5jLTI5OS1cXHRcXHQgICBjbnQsXFxuLS1cXG5mcy9ldmVudGZkLmMtMzA0LVxcbmZzL2V2ZW50ZmQuYzozMDU6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXZlbnRmZF9mb3BzID0ge1xcbmZzL2V2ZW50ZmQuYy0zMDYtI2lmZGVmIENPTkZJR19QUk9DX0ZTXFxuZnMvZXZlbnRmZC5jOjMwNzpcXHQuc2hvd19mZGluZm9cXHQ9IGV2ZW50ZmRfc2hvd19mZGluZm8sXFxuZnMvZXZlbnRmZC5jLTMwOC0jZW5kaWZcXG5mcy9ldmVudGZkLmM6MzA5OlxcdC5yZWxlYXNlXFx0PSBldmVudGZkX3JlbGVhc2UsXFxuZnMvZXZlbnRmZC5jOjMxMDpcXHQucG9sbFxcdFxcdD0gZXZlbnRmZF9wb2xsLFxcbmZzL2V2ZW50ZmQuYzozMTE6XFx0LnJlYWRfaXRlclxcdD0gZXZlbnRmZF9yZWFkLFxcbmZzL2V2ZW50ZmQuYzozMTI6XFx0LndyaXRlXFx0XFx0PSBldmVudGZkX3dyaXRlLFxcbmZzL2V2ZW50ZmQuYy0zMTMtXFx0Lmxsc2Vla1xcdFxcdD0gbm9vcF9sbHNlZWssXFxuLS1cXG5mcy9ldmVudGZkLmMtMzE2LS8qKlxcbmZzL2V2ZW50ZmQuYzozMTc6ICogZXZlbnRmZF9mZ2V0IC0gQWNxdWlyZSBhIHJlZmVyZW5jZSBvZiBhbiBldmVudGZkIGZpbGUgZGVzY3JpcHRvci5cXG5mcy9ldmVudGZkLmMtMzE4LSAqIEBmZDogW2luXSBFdmVudGZkIGZpbGUgZGVzY3JpcHRvci5cXG5mcy9ldmVudGZkLmMtMzE5LSAqXFxuZnMvZXZlbnRmZC5jOjMyMDogKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZXZlbnRmZCBmaWxlIHN0cnVjdHVyZSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG9yIHRoZVxcbmZzL2V2ZW50ZmQuYy0zMjEtICogZm9sbG93aW5nIGVycm9yIHBvaW50ZXI6XFxuLS1cXG5mcy9ldmVudGZkLmMtMzIzLSAqIC1FQkFERiAgICA6IEludmFsaWQgQGZkIGZpbGUgZGVzY3JpcHRvci5cXG5mcy9ldmVudGZkLmM6MzI0OiAqIC1FSU5WQUwgICA6IFRoZSBAZmQgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdCBhbiBldmVudGZkIGZpbGUuXFxuZnMvZXZlbnRmZC5jLTMyNS0gKi9cXG5mcy9ldmVudGZkLmM6MzI2OnN0cnVjdCBmaWxlICpldmVudGZkX2ZnZXQoaW50IGZkKVxcbmZzL2V2ZW50ZmQuYy0zMjcte1xcbi0tXFxuZnMvZXZlbnRmZC5jLTMzMi1cXHRcXHRyZXR1cm4gRVJSX1BUUigtRUJBREYpO1xcbmZzL2V2ZW50ZmQuYzozMzM6XFx0aWYgKGZpbGUtXFx1MDAzZWZfb3AgIT0gXFx1MDAyNmV2ZW50ZmRfZm9wcykge1xcbmZzL2V2ZW50ZmQuYy0zMzQtXFx0XFx0ZnB1dChmaWxlKTtcXG4tLVxcbmZzL2V2ZW50ZmQuYy0zMzktfVxcbmZzL2V2ZW50ZmQuYzozNDA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9mZ2V0KTtcXG5mcy9ldmVudGZkLmMtMzQxLVxcbmZzL2V2ZW50ZmQuYy0zNDItLyoqXFxuZnMvZXZlbnRmZC5jOjM0MzogKiBldmVudGZkX2N0eF9mZGdldCAtIEFjcXVpcmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTM0NC0gKiBAZmQ6IFtpbl0gRXZlbnRmZCBmaWxlIGRlc2NyaXB0b3IuXFxuZnMvZXZlbnRmZC5jLTM0NS0gKlxcbmZzL2V2ZW50ZmQuYzozNDY6ICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGV2ZW50ZmQgY29udGV4dCwgb3RoZXJ3aXNlIHRoZSBlcnJvclxcbmZzL2V2ZW50ZmQuYy0zNDctICogcG9pbnRlcnMgcmV0dXJuZWQgYnkgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XFxuZnMvZXZlbnRmZC5jLTM0OC0gKlxcbmZzL2V2ZW50ZmQuYzozNDk6ICogZXZlbnRmZF9mZ2V0XFxuZnMvZXZlbnRmZC5jLTM1MC0gKi9cXG5mcy9ldmVudGZkLmM6MzUxOnN0cnVjdCBldmVudGZkX2N0eCAqZXZlbnRmZF9jdHhfZmRnZXQoaW50IGZkKVxcbmZzL2V2ZW50ZmQuYy0zNTIte1xcbi0tXFxuZnMvZXZlbnRmZC5jLTM1NS1cXHRcXHRyZXR1cm4gRVJSX1BUUigtRUJBREYpO1xcbmZzL2V2ZW50ZmQuYzozNTY6XFx0cmV0dXJuIGV2ZW50ZmRfY3R4X2ZpbGVnZXQoZmRfZmlsZShmKSk7XFxuZnMvZXZlbnRmZC5jLTM1Ny19XFxuZnMvZXZlbnRmZC5jOjM1ODpFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9mZGdldCk7XFxuZnMvZXZlbnRmZC5jLTM1OS1cXG5mcy9ldmVudGZkLmMtMzYwLS8qKlxcbmZzL2V2ZW50ZmQuYzozNjE6ICogZXZlbnRmZF9jdHhfZmlsZWdldCAtIEFjcXVpcmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTM2Mi0gKiBAZmlsZTogW2luXSBFdmVudGZkIGZpbGUgcG9pbnRlci5cXG5mcy9ldmVudGZkLmMtMzYzLSAqXFxuZnMvZXZlbnRmZC5jOjM2NDogKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LCBvdGhlcndpc2UgdGhlIGVycm9yXFxuZnMvZXZlbnRmZC5jLTM2NS0gKiBwb2ludGVyOlxcbmZzL2V2ZW50ZmQuYy0zNjYtICpcXG5mcy9ldmVudGZkLmM6MzY3OiAqIC1FSU5WQUwgICA6IFRoZSBAZmQgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdCBhbiBldmVudGZkIGZpbGUuXFxuZnMvZXZlbnRmZC5jLTM2OC0gKi9cXG5mcy9ldmVudGZkLmM6MzY5OnN0cnVjdCBldmVudGZkX2N0eCAqZXZlbnRmZF9jdHhfZmlsZWdldChzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9ldmVudGZkLmMtMzcwLXtcXG5mcy9ldmVudGZkLmM6MzcxOlxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4O1xcbmZzL2V2ZW50ZmQuYy0zNzItXFxuZnMvZXZlbnRmZC5jOjM3MzpcXHRpZiAoZmlsZS1cXHUwMDNlZl9vcCAhPSBcXHUwMDI2ZXZlbnRmZF9mb3BzKVxcbmZzL2V2ZW50ZmQuYy0zNzQtXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuLS1cXG5mcy9ldmVudGZkLmMtMzc5LX1cXG5mcy9ldmVudGZkLmM6MzgwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X2ZpbGVnZXQpO1xcbmZzL2V2ZW50ZmQuYy0zODEtXFxuZnMvZXZlbnRmZC5jOjM4MjpzdGF0aWMgaW50IGRvX2V2ZW50ZmQodW5zaWduZWQgaW50IGNvdW50LCBpbnQgZmxhZ3MpXFxuZnMvZXZlbnRmZC5jLTM4My17XFxuZnMvZXZlbnRmZC5jOjM4NDpcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCBfX2ZyZWUoa2ZyZWUpID0gTlVMTDtcXG5mcy9ldmVudGZkLmMtMzg1LVxcbi0tXFxuZnMvZXZlbnRmZC5jLTQwNi1cXHRGRF9QUkVQQVJFKGZkZiwgZmxhZ3MsXFxuZnMvZXZlbnRmZC5jOjQwNzpcXHRcXHQgICBhbm9uX2lub2RlX2dldGZpbGVfZm1vZGUoXFxcIltldmVudGZkXVxcXCIsIFxcdTAwMjZldmVudGZkX2ZvcHMsIGN0eCxcXG5mcy9ldmVudGZkLmMtNDA4LVxcdFxcdFxcdFxcdFxcdCAgICBmbGFncywgRk1PREVfTk9XQUlUKSk7XFxuLS1cXG5mcy9ldmVudGZkLmMtNDExLVxcbmZzL2V2ZW50ZmQuYzo0MTI6XFx0Y3R4LVxcdTAwM2VpZCA9IGlkYV9hbGxvYyhcXHUwMDI2ZXZlbnRmZF9pZGEsIEdGUF9LRVJORUwpO1xcbmZzL2V2ZW50ZmQuYy00MTMtXFx0cmV0YWluX2FuZF9udWxsX3B0cihjdHgpO1xcbi0tXFxuZnMvZXZlbnRmZC5jLTQxNi1cXG5mcy9ldmVudGZkLmM6NDE3OlNZU0NBTExfREVGSU5FMihldmVudGZkMiwgdW5zaWduZWQgaW50LCBjb3VudCwgaW50LCBmbGFncylcXG5mcy9ldmVudGZkLmMtNDE4LXtcXG5mcy9ldmVudGZkLmM6NDE5OlxcdHJldHVybiBkb19ldmVudGZkKGNvdW50LCBmbGFncyk7XFxuZnMvZXZlbnRmZC5jLTQyMC19XFxuZnMvZXZlbnRmZC5jLTQyMS1cXG5mcy9ldmVudGZkLmM6NDIyOlNZU0NBTExfREVGSU5FMShldmVudGZkLCB1bnNpZ25lZCBpbnQsIGNvdW50KVxcbmZzL2V2ZW50ZmQuYy00MjMte1xcbmZzL2V2ZW50ZmQuYzo0MjQ6XFx0cmV0dXJuIGRvX2V2ZW50ZmQoY291bnQsIDApO1xcbmZzL2V2ZW50ZmQuYy00MjUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzoyNS4wNzgyMjA2OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MDQ4MzEzODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEV2YWx1YXRpb246IEEgUmVmaW5lZCBBcHByb2FjaCB0byBFdmVudGZkIGFuZCBTeW5jb2JqIEludGVyYWN0aW9uKipcblxuT2theSwgbGV0J3MgZGlzc2VjdCB0aGVzZSBjaGFuZ2VzIG1ldGhvZGljYWxseS4gRmlyc3QsIEkgc2VlIGEgY3J1Y2lhbCB1cGRhdGUgaW4gYGZzL2V2ZW50ZmQuY2AuIFRoZSBgZXZlbnRmZF9jdHhfcHV0YCBmdW5jdGlvbiBoYXMgYmVlbiBoYXJkZW5lZDsgaXQgbm93IGdyYWNlZnVsbHkgaGFuZGxlcyBOVUxMIGBjdHhgIHBvaW50ZXJzLiBUaGlzIGlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgcHJhY3RpY2UsIGEgc21hbGwgYnV0IGltcG9ydGFudCByZWZpbmVtZW50LiBUaGUgY29ycmVzcG9uZGluZyBgREVGSU5FX0ZSRUVgIG1hY3JvIGluIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgaXMgYWxzbyBwcmVzZW50LiBUaGlzIGlzIHR5cGljYWwsIHR5aW5nIGludG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMuXG5cbk5vdywgbGV0J3MgbW92ZSBvbnRvIHRoZSBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgIGNoYW5nZXMuIFRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24gaXMgdGhlIHByaW1hcnkgdGFyZ2V0IGhlcmUuIEknbSBmb2N1c2luZyBvbiB0aGUgcmVmYWN0b3JpbmcgYXJvdW5kIGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgZXZlbnRmZF9jdHhgLiBJdCBsb29rcyBsaWtlIHRoZSBgX19mcmVlKGV2ZW50ZmQpYCBjbGVhbnVwIGhlbHBlciwgcHJvYmFibHkgZGVmaW5lZCBhcyBwYXJ0IG9mIHRoZSBpbml0aWFsIGNoYW5nZSwgaXMgYmVpbmcgbGV2ZXJhZ2VkIHRvIGltcHJvdmUgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiBgZXZfZmRfY3R4YC4gVGhpcyBsb29rcyBjbGVhbiwgdXNpbmcgdGhlIHN0YW5kYXJkIGlkaW9tIHRvIG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBldmVudGZkIGNvbnRleHQgaW4gdGhpcyBmdW5jdGlvbi4gV2UncmUgdXNpbmcgYGV2ZW50ZmRfY3R4X2ZkZ2V0YCB0byBvYnRhaW4gdGhlIGV2ZW50ZmQgY29udGV4dCwgYW5kIHRoZW4gZWl0aGVyIGFkZGluZyBpdCB0byB0aGUgc3luY29iaiBvciBjbGVhbmluZyB1cC5cblxuTm93LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBmdXp6aW5nIGltcGxpY2F0aW9ucy4gVGhlIHBhdGNoICppcyogd29ydGggZnV6emluZy4gSXQncyBtb2RpZnlpbmcgcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHdpdGhpbiBib3RoIGBldmVudGZkYCBhbmQgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLiBUaGF0IG1lYW5zIHdlJ3ZlIGdvdCBuZXcgb3IgbW9kaWZpZWQgY29kZSBwYXRocy4gSSdkIGV2YWx1YXRlIHRoZSBmb2xsb3dpbmcgY29uZmlnczogYERSTWAgYW5kIGBFVkVOVEZEYC5cblxuRm9yIG15IGZ1enppbmcgZm9jdXMsIEknbSB0aGlua2luZzogYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YCBhcmUgdGhlIHN5bWJvbHMgb2YgaW50ZXJlc3QuXG5cblRoZSBwYXRjaCdzIGNvcmUgbW9kaWZpY2F0aW9uIHRvIGBldmVudGZkX2N0eF9wdXQoKWAgYW5kIGl0cyBjb3JyZXNwb25kaW5nIG1hY3JvLCBjb3VwbGVkIHdpdGggaXRzIHVzZSBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAsIGlzIGEgd2VsbC1kZWZpbmVkIHVzZSBjYXNlIHRoYXQncyBxdWl0ZSByZWFkYWJsZS4gSXQgYWxsIG1ha2VzIHNlbnNlIGFuZCBpdCBpcyBjbGVhbi4gVGhlIG92ZXJhbGwgcmVhc29uaW5nLCBpcyBzb2xpZC4gRXZlcnl0aGluZyBjaGVja3Mgb3V0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5OTksIk91dHB1dFRva2VucyI6MTM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjMzLjEyNjUzOTI4MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzUyMjA5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNXCIsXG4gICAgXCJFVkVOVEZEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bFwiLFxuICAgIFwiZXZlbnRmZF9jdHhfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNXCIsXG4gICAgXCJFVkVOVEZEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bFwiLFxuICAgIFwiZXZlbnRmZF9jdHhfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjMzLjI2NDA2OTMyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwNjM0NTM5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjMzLjI2NDc1MjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDMwNTY1ODI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNsZWFudXAgYXR0cmlidXRlIGhlbHBlciBgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKWAgYW5kIHVwZGF0ZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyBjbGVhbnVwIChgX19mcmVlKGV2ZW50ZmQpYCkgYWxvbmcgd2l0aCBgbm9fZnJlZV9wdHIoKWAsIGFuZCBhZGRzIGEgTlVMTCBjaGVjayB0byBgZXZlbnRmZF9jdHhfcHV0KClgLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNzMzOWY5ZDNiYTQwYWMwNjNjYmViOWUxZTUxOGY1MThlMmUxYjYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowNjoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbmluZGV4IGMyM2E1ZGUyN2VmZmEuLjI2MWQ1NjA2ZThiZDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbkBAIC0xNDYyLDkgKzE0NjIsOSBAQCBpbnRcbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRcdFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcbiB7XG4rXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ4NCwxNiArMTQ4NCwxNyBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbiBcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuIFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4rXHRcdGV2X2ZkX2N0eCA9IE5VTEw7XG4gXHRcdGdvdG8gZXJyX2ZkZ2V0O1xuIFx0fVxuIFxuIFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuIFx0aWYgKCFlbnRyeSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9remFsbG9jO1xuK1x0XHRnb3RvIGVycl9mZGdldDtcbiBcdH1cbiBcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuLVx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gZXZfZmRfY3R4O1xuK1x0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbiBcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbiBcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbiBcbkBAIC0xNTAyLDggKzE1MDMsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfa3phbGxvYzpcbi1cdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xuIGVycl9mZGdldDpcbiBcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4yNDExMWExNjI4NGYxIDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4rKysgYi9mcy9ldmVudGZkLmNcbkBAIC0xMDIsNiArMTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuICAqL1xuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIHtcbitcdGlmICghY3R4KVxuK1x0XHRyZXR1cm47XG4rXG4gXHRrcmVmX3B1dChcdTAwMjZjdHgtXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5AQCAtMTAsNiArMTAsNyBAQFxuICNkZWZpbmUgX0xJTlVYX0VWRU5URkRfSFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG5AQCAtODksNSArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gfVxuIFxuK0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuK1xuICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzozMy4yNjQ3NTM0OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTYyMTA1MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBLTVNBTiBGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB3aGV0aGVyIHRoaXMgcGF0Y2gsIHRvdWNoaW5nIERSTSBzeW5jIG9iamVjdHMgYW5kIGV2ZW50ZmRzLCBuZWNlc3NpdGF0ZXMgYSBkZWVwZXIgZGl2ZSB3aXRoIEtNU0FOIGZ1enppbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpbXBsaWNhdGlvbnMuXG5cbkZpcnN0LCBJJ20gc2VlaW5nIGNoYW5nZXMgaW4gYGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jYDogVGhlIGtleSBhbHRlcmF0aW9uIGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCByZXZvbHZlcyBhcm91bmQgYHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4YC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyYW5zaXRpb25pbmcgdG8gdXNlIGEgZGVmaW5lZCBmcmVlIGZ1bmN0aW9uIGBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMYC4gVGhlIGVycm9yIGhhbmRsaW5nIGlzIGFsc28gdGlnaHRlbmVkOyBpZiBgZXZlbnRmZF9jdHhfZmRnZXRgIGZhaWxzIChyZXR1cm5pbmcgYW4gZXJyb3IpLCBgZXZfZmRfY3R4YCBpcyBleHBsaWNpdGx5IHNldCB0byBgTlVMTGAgYmVmb3JlIGp1bXBpbmcgdG8gYGVycl9mZGdldGAuIEltcG9ydGFudGx5LCBgbm9fZnJlZV9wdHJgIGlzIGJlaW5nIHVzZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBjb250ZXh0LCBhbmQgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBlbnRyeS1cdTAwM2Vldl9mZF9jdHhgIGlzIHdpdGggYG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eClgLiBJdCBhbHNvIGxvb2tzIGxpa2UgdGhleSBhcmUgZ2V0dGluZyByaWQgb2YgYGVycl9remFsbG9jYCBhbmQgbWFudWFsIGBldmVudGZkX2N0eF9wdXRgIGNhbGxzLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy5cblxuTmV4dCwgSSBzZWUgYSBzbWFsbCBidXQgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGBmcy9ldmVudGZkLmNgIHdpdGhpbiBgZXZlbnRmZF9jdHhfcHV0YC4gQSBOVUxMLXNhZmV0eSBjaGVjayAoYGlmICghY3R4KSByZXR1cm47YCkgaGFzIGJlZW4gYWRkZWQuIFRoaXMgaXMgZ29vZCBwcmFjdGljZS5cblxuRmluYWxseSwgdGhlIGluY2x1c2lvbiBvZiBgXHUwMDNjbGludXgvY2xlYW51cC5oXHUwMDNlYCBhbmQgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gZm9yIGBldmVudGZkYCBpbiBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGNvbmZpcm1zIHRoaXMgaXMgYSBjb25zaXN0ZW50IHJlZmFjdG9yaW5nIHRvIHVzZSBhIHN0YW5kYXJkaXplZCBmcmVlIGZ1bmN0aW9uLCB3aGljaCBpcyBnZW5lcmFsbHkgYSBnb29kIHRoaW5nLlxuXG5Ob3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzaz8gTGV0IG1lIHJ1biB0aHJvdWdoIHRoaXMuIGBldl9mZF9jdHhgIGlzIGluaXRpYWxpemVkIHRvIE5VTEwgd2l0aCB0aGUgYF9fZnJlZShldmVudGZkKSA9IE5VTExgLiBJZiBgZXZlbnRmZF9jdHhfZmRnZXRgIGZhaWxzLCB3ZSBzZXQgYGV2X2ZkX2N0eGAgdG8gTlVMTCwgcHJldmVudGluZyBhbiBhdHRlbXB0IHRvIGNsZWFuIHVwIGFuIGVycm9yIHBvaW50ZXIuIFdoZW4gdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCBgbm9fZnJlZV9wdHJgIHRha2VzIGNvbnRyb2wgYW5kIHJlc2V0cyBgZXZfZmRfY3R4YC4gRnVydGhlcm1vcmUsIHRoZSBgZW50cnlgIGlzIHplcm9lZCB3aXRoIGBremFsbG9jX29iamAsIGFuZCB0aGVyZSBhcmUgbm8gZGlyZWN0IGBjb3B5X3RvX3VzZXJgIG9wZXJhdGlvbnMgaW52b2x2ZWQuIFRoZXJlJ3Mgbm8gaW1tZWRpYXRlbHkgb2J2aW91cyBwYXRoIHRvIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCByZWFkcywgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBicmFuY2hpbmcgdGhhdCBJIGNhbiBzZWUuIFRoZSBwYXRjaCBpcyB2ZXJ5IGZvY3VzZWQgb24gcmVzb3VyY2UgY2xlYW51cCBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuXG5cbkdpdmVuIHRoaXMgYW5hbHlzaXMsIEknZCBzYXkgdGhlIHByaW1hcnkgcmlza3MgaGVyZSBhcmUgbW9yZSByZWxhdGVkIHRvIGNsYXNzaWMgcmVzb3VyY2UgbWFuYWdlbWVudCBpc3N1ZXPigJRsZWFrcywgZG91YmxlIGZyZWVzLCBvciB1c2UtYWZ0ZXItZnJlZeKAlHJhdGhlciB0aGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gVGhlc2Uga2luZHMgb2YgcHJvYmxlbXMgYXJlIHR5cGljYWxseSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQgc2FuaXRpemVycy4gS01TQU4gaXNuJ3QgdGhlIHByaW9yaXR5IGZvciB0aGlzIHBhdGNoLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgb2YgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIHRvIGJlIHN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSBpbnRlcmFjdGlvbnMsIGJ1dCBJIHRoaW5rIHRoZSBjaGFuZ2VzIGFyZSBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzozOC40MjY4NjIxMDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NjAsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE0NjA6XFx0XFxuMTQ2MTpcXHRpbnRcXG4xNDYyOlxcdGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4xNDYzOlxcdFxcdFxcdFxcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXFxuMTQ2NDpcXHR7XFxuMTQ2NTpcXHRcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xcbjE0NjY6XFx0XFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xcbjE0Njc6XFx0XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbjE0Njg6XFx0XFx0c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnk7XFxuMTQ2OTpcXHRcXHRpbnQgcmV0O1xcbjE0NzA6XFx0XFxuMTQ3MTpcXHRcXHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpXFxuMTQ3MjpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuMTQ3MzpcXHRcXG4xNDc0OlxcdFxcdGlmIChhcmdzLVxcdTAwM2VmbGFncyBcXHUwMDI2IH5EUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQVZBSUxBQkxFKVxcbjE0NzU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTQ3NjpcXHRcXG4xNDc3OlxcdFxcdGlmIChhcmdzLVxcdTAwM2VwYWQpXFxuMTQ3ODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNDc5OlxcdFxcbjE0ODA6XFx0XFx0c3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBhcmdzLVxcdTAwM2VoYW5kbGUpO1xcbjE0ODE6XFx0XFx0aWYgKCFzeW5jb2JqKVxcbjE0ODI6XFx0XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuMTQ4MzpcXHRcXG4xNDg0OlxcdFxcdGV2X2ZkX2N0eCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGFyZ3MtXFx1MDAzZWZkKTtcXG4xNDg1OlxcdFxcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xcbjE0ODY6XFx0XFx0XFx0cmV0ID0gUFRSX0VSUihldl9mZF9jdHgpO1xcbjE0ODc6XFx0XFx0XFx0ZXZfZmRfY3R4ID0gTlVMTDtcXG4xNDg4OlxcdFxcdFxcdGdvdG8gZXJyX2ZkZ2V0O1xcbjE0ODk6XFx0XFx0fVxcbjE0OTA6XFx0XFxuMTQ5MTpcXHRcXHRlbnRyeSA9IGt6YWxsb2Nfb2JqKCplbnRyeSk7XFxuMTQ5MjpcXHRcXHRpZiAoIWVudHJ5KSB7XFxuMTQ5MzpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjE0OTQ6XFx0XFx0XFx0Z290byBlcnJfZmRnZXQ7XFxuMTQ5NTpcXHRcXHR9XFxuMTQ5NjpcXHRcXHRlbnRyeS1cXHUwMDNlc3luY29iaiA9IHN5bmNvYmo7XFxuMTQ5NzpcXHRcXHRlbnRyeS1cXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcXG4xNDk4OlxcdFxcdGVudHJ5LVxcdTAwM2Vwb2ludCA9IGFyZ3MtXFx1MDAzZXBvaW50O1xcbjE0OTk6XFx0XFx0ZW50cnktXFx1MDAzZWZsYWdzID0gYXJncy1cXHUwMDNlZmxhZ3M7XFxuMTUwMDpcXHRcXG4xNTAxOlxcdFxcdGRybV9zeW5jb2JqX2FkZF9ldmVudGZkKHN5bmNvYmosIGVudHJ5KTtcXG4xNTAyOlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG4xNTAzOlxcdFxcbjE1MDQ6XFx0XFx0cmV0dXJuIDA7XFxuMTUwNTpcXHRcXG4xNTA2OlxcdGVycl9mZGdldDpcXG4xNTA3OlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG4xNTA4OlxcdFxcdHJldHVybiByZXQ7XFxuMTUwOTpcXHR9XFxuMTUxMDpcXHRcXG4xNTExOlxcdGludFxcbjE1MTI6XFx0ZHJtX3N5bmNvYmpfcmVzZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4xNTEzOlxcdFxcdFxcdFxcdHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxcbjE1MTQ6XFx0e1xcbjE1MTU6XFx0XFx0c3RydWN0IGRybV9zeW5jb2JqX2FycmF5ICphcmdzID0gZGF0YTtcXG4xNTE2OlxcdFxcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzO1xcbjE1MTc6XFx0XFx0dWludDMyX3QgaTtcXG4xNTE4OlxcdFxcdGludCByZXQ7XFxuMTUxOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDc6MzguNDI3MTA3NTkxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUxNDMyODM4OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBDaGFuZ2VzKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBpbXBsZW1lbnRpbmcgYERFRklORV9GUkVFKGV2ZW50ZmQsIC4uLilgIHdoaWNoIGlzIHRoZW4gYXBwbGllZCBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYC4gIEEgbmljZSwgY2xlYW4gd2F5IHRvIGhhbmRsZSBjbGVhbnVwLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGEgTlVMTCBjaGVjayBpbiBgZXZlbnRmZF9jdHhfcHV0KClgIGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuIEkndmUgc2Nhbm5lZCB0aGUgY29kZSBmb3IgdHlwaWNhbCB2dWxuZXJhYmlsaXRpZXMuXG5cbkNydWNpYWxseSwgSSdtIG5vdCBzZWVpbmcgYW55IHJlZCBmbGFncyByZWdhcmRpbmcgdW5pbml0aWFsaXplZCBkYXRhLCBhY2NpZGVudGFsIGRhdGEgbGVha3MgdG8gdXNlciBzcGFjZSwgdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3Nlcywgb3IgbWVtb3J5IGV4cG9zdXJlLiBJJ3ZlIGFsd2F5cyBiZWVuIGVzcGVjaWFsbHkgY2FyZWZ1bCBhYm91dCBsaWZldGltZSBtYW5hZ2VtZW50LCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCBjbGVhbnVwIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoaW5ncyBjYW4gZ2V0IG1lc3N5IGZhc3QuIEFueSBvZiB0aG9zZSBjb21tb24gZXJyb3JzIC0gdGhlIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGlzc3VlcyB0aGF0IGNhbiBoYXVudCB1cyAtIHdvdWxkIGJlIGZsYWdnZWQgYnkgdGhlIHVzdWFsIHN1c3BlY3RzIC0gS0FTQU4gb3IgdGhlIHN0YW5kYXJkIGtlcm5lbCBkZXRlY3RvcnMsIG5vdCBLTVNBTi5cblxuU2luY2UgSSBkb24ndCBzZWUgYW55IG9mIHRob3NlIEtNU0FOLXNwZWNpZmljIHZ1bG5lcmFiaWxpdGllcyB0aGF0IEkgd291bGQgYmUgbG9va2luZyBmb3IgaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQsIGl0J3Mgc2FmZSB0byBzYXk6IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBOb3csIEknbSByZWFkeSB0byBtb3ZlIG9uLiBMZXQncyBnZXQgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYCBwcmVwYXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1NywiT3V0cHV0VG9rZW5zIjoxNzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzo0My41NzAzOTM3NTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjbGVhbnVwIGF0dHJpYnV0ZSBoZWxwZXIgYERFRklORV9GUkVFKGV2ZW50ZmQsIC4uLilgIGFuZCB1cGRhdGVzIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKClgIHRvIHVzZSBhdXRvbWF0aWMgY2xlYW51cCAoYF9fZnJlZShldmVudGZkKWApIGFsb25nIHdpdGggYG5vX2ZyZWVfcHRyKClgLCBhbmQgYWRkcyBhIE5VTEwgY2hlY2sgdG8gYGV2ZW50ZmRfY3R4X3B1dCgpYC5cXG5cXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHJlYWRzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UgaW50cm9kdWNlZCBvciBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW4gdGhpcyByZWZhY3RvcmluZyB3b3VsZCBwZXJ0YWluIHRvIHJlZmVyZW5jZSBjb3VudGluZywgbGlmZXRpbWUgbWFuYWdlbWVudCwgb3IgcmVzb3VyY2UgY2xlYW51cCAoZS5nLiB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSksIHdoaWNoIGFyZSBoYW5kbGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNsZWFudXAgYXR0cmlidXRlIGhlbHBlciBgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKWAgYW5kIHVwZGF0ZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyBjbGVhbnVwIChgX19mcmVlKGV2ZW50ZmQpYCkgYWxvbmcgd2l0aCBgbm9fZnJlZV9wdHIoKWAsIGFuZCBhZGRzIGEgTlVMTCBjaGVjayB0byBgZXZlbnRmZF9jdHhfcHV0KClgLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 13:04:45 +0000 UTC FinishedAt: 2026-09-09 13:07:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "893e11787f78e43b534e252249ac3fff4d1333f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "EVENTFD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "893e11787f78e43b534e252249ac3fff4d1333f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM", "EVENTFD" ], "series_id": "4dc70d0d-10f9-412e-a60f-05edd56d52d1" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "drm_syncobj_eventfd_ioctl", "eventfd_ctx_put" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2xlYW51cCBhdHRyaWJ1dGUgaGVscGVyIGBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pYCBhbmQgdXBkYXRlcyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIGNsZWFudXAgKGBfX2ZyZWUoZXZlbnRmZClgKSBhbG9uZyB3aXRoIGBub19mcmVlX3B0cigpYCwgYW5kIGFkZHMgYSBOVUxMIGNoZWNrIHRvIGBldmVudGZkX2N0eF9wdXQoKWAuXG5cblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlNzMzOWY5ZDNiYTQwYWMwNjNjYmViOWUxZTUxOGY1MThlMmUxYjYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowNjoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5pbmRleCBjMjNhNWRlMjdlZmZhLi4yNjFkNTYwNmU4YmQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXG5AQCAtMTQ2Miw5ICYjNDM7MTQ2Miw5IEBAIGludFxuIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbiBcdFx0XHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ4NCwxNiAmIzQzOzE0ODQsMTcgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuIFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cdTAwM2VmZCk7XG4gXHRpZiAoSVNfRVJSKGV2X2ZkX2N0eCkpIHtcbiBcdFx0cmV0ID0gUFRSX0VSUihldl9mZF9jdHgpO1xuJiM0MztcdFx0ZXZfZmRfY3R4ID0gTlVMTDtcbiBcdFx0Z290byBlcnJfZmRnZXQ7XG4gXHR9XG4gXG4gXHRlbnRyeSA9IGt6YWxsb2Nfb2JqKCplbnRyeSk7XG4gXHRpZiAoIWVudHJ5KSB7XG4gXHRcdHJldCA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZXJyX2t6YWxsb2M7XG4mIzQzO1x0XHRnb3RvIGVycl9mZGdldDtcbiBcdH1cbiBcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuLVx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gZXZfZmRfY3R4O1xuJiM0MztcdGVudHJ5LVx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XG4gXHRlbnRyeS1cdTAwM2Vwb2ludCA9IGFyZ3MtXHUwMDNlcG9pbnQ7XG4gXHRlbnRyeS1cdTAwM2VmbGFncyA9IGFyZ3MtXHUwMDNlZmxhZ3M7XG4gXG5AQCAtMTUwMiw4ICYjNDM7MTUwMyw2IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbiBcbiBcdHJldHVybiAwO1xuIFxuLWVycl9remFsbG9jOlxuLVx0ZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7XG4gZXJyX2ZkZ2V0OlxuIFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xuIFx0cmV0dXJuIHJldDtcbmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmNcbmluZGV4IDlkMzNhMDI3NTdkNTIuLjI0MTExYTE2Mjg0ZjEgMTAwNjQ0XG4tLS0gYS9mcy9ldmVudGZkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuY1xuQEAgLTEwMiw2ICYjNDM7MTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuICAqL1xuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIHtcbiYjNDM7XHRpZiAoIWN0eClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRrcmVmX3B1dChcdTAwMjZjdHgtXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5AQCAtMTAsNiAmIzQzOzEwLDcgQEBcbiAjZGVmaW5lIF9MSU5VWF9FVkVOVEZEX0hcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93YWl0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xlYW51cC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtZGVmcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbkBAIC04OSw1ICYjNDM7OTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gfVxuIFxuJiM0MztERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSlcbiYjNDM7XG4gI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUk0mIzM0OywKICAgICYjMzQ7RVZFTlRGRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwmIzM0OywKICAgICYjMzQ7ZXZlbnRmZF9jdHhfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBOVUxMIGNoZWNrIGluIGV2ZW50ZmRfY3R4X3B1dCgpLCBkZWZpbmVzIGEgX19mcmVlKGV2ZW50ZmQpIGNsZWFudXAgaGFuZGxlciwgYW5kIHJlZmFjdG9ycyByZXNvdXJjZSBsaWZlY3ljbGUgaGFuZGxpbmcgaW4gdGhlIHJlYWNoYWJsZSBEUk0gaW9jdGwgaGFuZGxlciBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKCkuIEZ1enppbmcgd2lsbCB0ZXN0IHdoZXRoZXIgdGhlIGFsdGVyZWQgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBjbGVhbnVwIGZsb3cgaW4gZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCBiZWhhdmUgY29ycmVjdGx5LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTczMzlmOWQzYmE0MGFjMDYzY2JlYjllMWU1MThmNTE4ZTJlMWI2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDkgMTM6MDY6MjAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCmluZGV4IGMyM2E1ZGUyN2VmZmEuLjI2MWQ1NjA2ZThiZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCkBAIC0xNDYyLDkgJiM0MzsxNDYyLDkgQEAgaW50CiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQogewomIzQzOwlzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMOwogCXN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7Ci0Jc3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7CiAJc3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnk7CiAJaW50IHJldDsKIApAQCAtMTQ4NCwxNiAmIzQzOzE0ODQsMTcgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWV2X2ZkX2N0eCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGFyZ3MtJmd0O2ZkKTsKIAlpZiAoSVNfRVJSKGV2X2ZkX2N0eCkpIHsKIAkJcmV0ID0gUFRSX0VSUihldl9mZF9jdHgpOwomIzQzOwkJZXZfZmRfY3R4ID0gTlVMTDsKIAkJZ290byBlcnJfZmRnZXQ7CiAJfQogCiAJZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpOwogCWlmICghZW50cnkpIHsKIAkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBlcnJfa3phbGxvYzsKJiM0MzsJCWdvdG8gZXJyX2ZkZ2V0OwogCX0KIAllbnRyeS0mZ3Q7c3luY29iaiA9IHN5bmNvYmo7Ci0JZW50cnktJmd0O2V2X2ZkX2N0eCA9IGV2X2ZkX2N0eDsKJiM0MzsJZW50cnktJmd0O2V2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7CiAJZW50cnktJmd0O3BvaW50ID0gYXJncy0mZ3Q7cG9pbnQ7CiAJZW50cnktJmd0O2ZsYWdzID0gYXJncy0mZ3Q7ZmxhZ3M7CiAKQEAgLTE1MDIsOCAmIzQzOzE1MDMsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlyZXR1cm4gMDsKIAotZXJyX2t6YWxsb2M6Ci0JZXZlbnRmZF9jdHhfcHV0KGV2X2ZkX2N0eCk7CiBlcnJfZmRnZXQ6CiAJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9mcy9ldmVudGZkLmMgYi9mcy9ldmVudGZkLmMKaW5kZXggOWQzM2EwMjc1N2Q1Mi4uMjQxMTFhMTYyODRmMSAxMDA2NDQKLS0tIGEvZnMvZXZlbnRmZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V2ZW50ZmQuYwpAQCAtMTAyLDYgJiM0MzsxMDIsOSBAQCBzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAgKi8KIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogewomIzQzOwlpZiAoIWN0eCkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlrcmVmX3B1dCgmYW1wO2N0eC0mZ3Q7a3JlZiwgZXZlbnRmZF9mcmVlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCmluZGV4IGUzMmJlZTQzNDVmYjkuLjY4OTM1OGMyYjBhZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oCkBAIC0xMCw2ICYjNDM7MTAsNyBAQAogI2RlZmluZSBfTElOVVhfRVZFTlRGRF9ICiAKICNpbmNsdWRlICZsdDtsaW51eC93YWl0LmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NsZWFudXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUtZGVmcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwpAQCAtODksNSAmIzQzOzkwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KQogCWV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTsKIH0KIAomIzQzO0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKQomIzQzOwogI2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi8KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjY4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIHBhdGNoIGRvd24uIFRoZSBmb2N1cyBoZXJlIHNlZW1zIHRvIGJlIG9uIGNsZWFudXAgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSByZWxhdGluZyB0byBgZXZlbnRmZGAgY29udGV4dHMgd2l0aGluIHRoZSBEUk0gc3luY29iaiBmcmFtZXdvcmsuIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgYWNyb3NzIHRocmVlIGZpbGVzOiBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgLCBgZnMvZXZlbnRmZC5jYCwgYW5kIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAuCgpGaXJzdCwgdGhlIGBldmVudGZkLmNgIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQg4oCTIGEgbnVsbCBjaGVjayBpbiBgZXZlbnRmZF9jdHhfcHV0YC4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFsd2F5cyBhIGdvb2QgaWRlYS4gVGhlIGhlYWRlciBmaWxlIGludHJvZHVjZXMgYSBgREVGSU5FX0ZSRUVgIG1hY3JvIGZvciBgZXZlbnRmZGAsIGVzc2VudGlhbGx5IGF1dG9tYXRpbmcgdGhlIGNsZWFudXAgcHJvY2VzcyB3aXRoIGBldmVudGZkX2N0eF9wdXRgLiBUaGlzIGlzIGEgdXNlZnVsIGFic3RyYWN0aW9uIGFuZCBsaWtlbHkgaW1wcm92ZXMgY29kZSByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LgoKVGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMsIGhvd2V2ZXIsIHNlZW0gdG8gYmUgaW4gYGRybV9zeW5jb2JqLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYC4gIFdlJiMzOTtyZSB1c2luZyB0aGUgYF9fZnJlZShldmVudGZkKWAgYXR0cmlidXRlIGZvciBjbGVhbnVwIG9mIGBldl9mZF9jdHhgLCBhbmQgYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBzZXQgdG8gYE5VTExgIHdoZW4gYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQuIFRoaXMgbG9va3MgbGlrZSBhIGNsZWFyIGF0dGVtcHQgdG8gZW5zdXJlIHRoYXQgdGhlIGV2ZW50ZmQgY29udGV4dCBpcyByZWxlYXNlZCBwcm9wZXJseSBpbiBhbGwgY29kZSBwYXRocywgZXNwZWNpYWxseSBlcnJvciBwYXRocy4gVGhlIHJlbW92YWwgb2YgdGhlIG1hbnVhbCBgZXZlbnRmZF9jdHhfcHV0YCBhbmQgdGhlIGBlcnJfa3phbGxvY2AgbGFiZWwgZnVydGhlciByZWluZm9yY2UgdGhpcyBjbGVhbnVwLWZvY3VzZWQgYXBwcm9hY2guICBUaGUgYG5vX2ZyZWVfcHRyYCB1c2FnZSB3aGVuIGFzc2lnbmluZyB0byBgZW50cnktJmd0O2V2X2ZkX2N0eGAgaXMgaW50ZXJlc3Rpbmc7IGl0IHN1Z2dlc3RzIHRoYXQgdGhlIG93bmVyc2hpcCBhbmQgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiBgZXZfZmRfY3R4YCBpcyBjYXJlZnVsbHkgaGFuZGxlZC4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGJyb2FkZXIgY29udGV4dC4gIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IERSTSBzeW5jb2JqLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBEUk0gY29yZSBhbmQgZXhwb3NlZCB2aWEgdGhlIHVzdWFsIERSTSBkZXZpY2UgaW9jdGxzLiBUaGlzIG1lYW5zIGFjY2Vzc2liaWxpdHkgaXMgdmlhIGRldmljZXMgbGlrZSBgL2Rldi9kcmkvY2FyZCpgLCBgL2Rldi9kcmkvcmVuZGVyRCpgLCBhbmQgZXZlbiB0aHJvdWdoIG1vY2sgZGV2aWNlcyBsaWtlIGB2Z2VtYCBvciBgdmttc2AuICBHaXZlbiB0aGUgbmF0dXJlIG9mIHRob3NlIGludGVyZmFjZXMsIHN5emthbGxlciB0ZXN0cyB0aGUgRFJNIGlvY3RscyBoZWF2aWx5LCBpbmNsdWRpbmcgYERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkRgLiBgZXZlbnRmZGAgaXRzZWxmIGlzIGEgY29yZSBrZXJuZWwgZmVhdHVyZS4KClNvLCBJJiMzOTttIGdvaW5nIHRvIHJ1biBhIGZldyBxdWljayBgZ3JlcGAgc2VhcmNoZXMgYW5kIEtjb25maWcgY2hlY2tzIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgc3ltYm9scyBhdCBwbGF5IGhlcmUuIFRoaXMgcGF0Y2ggc2VlbXMgc291bmQgYXQgZmlyc3QgZ2xhbmNlLCBidXQgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5dGhpbmcgaXMgYXMgZXhwZWN0ZWQuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGNvbnRyaWJ1dGlvbiBpbXByb3ZpbmcgZXJyb3IgaGFuZGxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSBieSBlbXBsb3lpbmcgbW9yZSBtb2Rlcm4gdG9vbHMgdG8gZG8gc28uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0RSTXxjb25maWcgRFJNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4NDE5IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03LSNcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjg6bWVudWNvbmZpZyBEUk1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXIgKFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlciBEUkkgc3VwcG9ydClcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0zND1pZiBEUk1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM1LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MzY6Y29uZmlnIERSTV9NSVBJX0RCSVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMzctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQwLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NDE6Y29uZmlnIERSTV9NSVBJX0RTSVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNDItXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNDQtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo0NTpjb25maWcgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQ2LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01MS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjUyOmNvbmZpZyBEUk1fRFJBV1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTMtXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTUtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo1Njpjb25maWcgRFJNX1BBTklDXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7RGlzcGxheSBhIHVzZXItZnJpZW5kbHkgbWVzc2FnZSB3aGVuIGEga2VybmVsIHBhbmljIG9jY3Vyc1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTY4LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Njk6Y29uZmlnIERSTV9QQU5JQ19GT1JFR1JPVU5EX0NPTE9SXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03MC1cdGhleCBcJiMzNDtEcm0gcGFuaWMgc2NyZWVuIGZvcmVncm91bmQgY29sb3IsIGluIFJHQlwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTczLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NzQ6Y29uZmlnIERSTV9QQU5JQ19CQUNLR1JPVU5EX0NPTE9SXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03NS1cdGhleCBcJiMzNDtEcm0gcGFuaWMgc2NyZWVuIGJhY2tncm91bmQgY29sb3IsIGluIFJHQlwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTc4LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Nzk6Y29uZmlnIERSTV9QQU5JQ19ERUJVR1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODAtXHRib29sIFwmIzM0O0FkZCBhIGRlYnVnIGZzIGVudHJ5IHRvIHRyaWdnZXIgZHJtX3BhbmljXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODctXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo4ODpjb25maWcgRFJNX1BBTklDX1NDUkVFTlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODktXHRzdHJpbmcgXCYjMzQ7UGFuaWMgc2NyZWVuIGZvcm1hdHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEwMC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjEwMTpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMDItXHRib29sIFwmIzM0O0FkZCBhIHBhbmljIHNjcmVlbiB3aXRoIGEgUVIgY29kZVwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTExMS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjExMjpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFX1VSTFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTEzLVx0c3RyaW5nIFwmIzM0O0Jhc2UgVVJMIG9mIHRoZSBRUiBjb2RlIGluIHRoZSBwYW5pYyBzY3JlZW5cJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMjItXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMjM6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5fUVJfVkVSU0lPTlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTI0LVx0aW50IFwmIzM0O01heGltdW0gdmVyc2lvbiAoc2l6ZSkgb2YgdGhlIFFSIGNvZGUuXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTMyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTMzOmNvbmZpZyBEUk1fUkFTXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMzQtXHRib29sIFwmIzM0O0RSTSBSQVMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE0Mi1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE0Mzpjb25maWcgRFJNX0RFQlVHX0RQX01TVF9UT1BPTE9HWV9SRUZTXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNDQtICAgICAgICBib29sIFwmIzM0O0VuYWJsZSByZWZjb3VudCBiYWNrdHJhY2UgaGlzdG9yeSBpbiB0aGUgRFAgTVNUIGhlbHBlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNTctXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNTg6Y29uZmlnIERSTV9ERUJVR19NT0RFU0VUX0xPQ0tcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE1OS1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJhY2t0cmFjZSBoaXN0b3J5IGZvciBsb2NrIGNvbnRlbnRpb25cJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzItXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNzM6Y29uZmlnIERSTV9DTElFTlRcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE3NC1cdGJvb2xcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0xODI9c291cmNlIFwmIzM0O2RyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE4My1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE4NDpjb25maWcgRFJNX0xPQURfRURJRF9GSVJNV0FSRVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTg1LVx0Ym9vbCBcJiMzNDtBbGxvdyB0byBzcGVjaWZ5IGFuIEVESUQgZGF0YSBzZXQgaW5zdGVhZCBvZiBwcm9iaW5nIGZvciBpdFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTE5Nj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTk3LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTk4OmNvbmZpZyBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xOTktXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIwNi1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIwNzpjb25maWcgRFJNX0VYRUNcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIwOC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjEyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjEzOmNvbmZpZyBEUk1fR1BVVk1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIxNC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjIxPWNvbmZpZyBSVVNUX0RSTV9HUFVWTVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIyNy1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIyODpjb25maWcgRFJNX0dQVVNWTVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjI5LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMzYtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMzc6Y29uZmlnIERSTV9CVUREWVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjM4LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDMtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNDQ6Y29uZmlnIERSTV9WUkFNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjQ1LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDktXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNTA6Y29uZmlnIERSTV9UVE1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNTEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1OS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI2MDpjb25maWcgRFJNX0dFTV9ETUFfSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNjEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI2OC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI2OTpjb25maWcgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI3MC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9Mjc4PWNvbmZpZyBSVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjg0LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjg1OmNvbmZpZyBEUk1fU1VCQUxMT0NfSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODYtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4OC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI4OTpjb25maWcgRFJNX1NDSEVEXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTAtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5My0jIFNlcGFyYXRlIG9wdGlvbiBhcyBub3QgYWxsIERSTSBkcml2ZXJzIHVzZSBpdFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjk0OmNvbmZpZyBEUk1fUEFORUxfQkFDS0xJR0hUX1FVSVJLU1xuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjk1LVx0dHJpc3RhdGVcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5Ni1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI5Nzpjb25maWcgRFJNX1BSSVZBQ1lfU0NSRUVOXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yOTgtXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MzY4PWVuZGlmXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMzcwLSMgU2VwYXJhdGUgb3B0aW9uIGJlY2F1c2UgZHJtX3BhbmVsX29yaWVudGF0aW9uX3F1aXJrcy5jIGlzIHNoYXJlZCB3aXRoIGZiZGV2XG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzozNzE6Y29uZmlnIERSTV9QQU5FTF9PUklFTlRBVElPTl9RVUlSS1NcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3Mi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6MTpjb25maWcgRFJNX1VTRV9EWU5BTUlDX0RFQlVHXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0yLVx0Ym9vbCBcJiMzNDt1c2UgZHluYW1pYyBkZWJ1ZyB0byBpbXBsZW1lbnQgZHJtLmRlYnVnXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTMtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1ZzoxNDpjb25maWcgRFJNX1dFUlJPUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTUtXHRib29sIFwmIzM0O0NvbXBpbGUgdGhlIGRybSBzdWJzeXN0ZW0gd2l0aCB3YXJuaW5ncyBhcyBlcnJvcnNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0yNy1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjI4OmNvbmZpZyBEUk1fSEVBREVSX1RFU1RcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTI5LVx0Ym9vbCBcJiMzNDtFbnN1cmUgRFJNIGhlYWRlcnMgYXJlIHNlbGYtY29udGFpbmVkIGFuZCBwYXNzIGtlcm5lbC1kb2NcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0zOC1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjM5OmNvbmZpZyBEUk1fREVCVUdfTU1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTQwLVx0Ym9vbCBcJiMzNDtJbnNlcnQgZXh0cmEgY2hlY2tzIGFuZCBkZWJ1ZyBpbmZvIGludG8gdGhlIERSTSByYW5nZSBtYW5hZ2Vyc1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTUyLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6NTM6Y29uZmlnIERSTV9LVU5JVF9URVNUX0hFTFBFUlNcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTU0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy01OS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjYwOmNvbmZpZyBEUk1fS1VOSVRfVEVTVFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgRFJNXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy04NS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjg2OmNvbmZpZyBEUk1fVFRNX0tVTklUX1RFU1RcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTg3LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFRUTVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTAxLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6MTAyOmNvbmZpZyBEUk1fU0NIRURfS1VOSVRfVEVTVFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTAzLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIHRoZSBEUk0gc2NoZWR1bGVyXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0xMTMtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1ZzoxMTQ6Y29uZmlnIERSTV9FWFBPUlRfRk9SX1RFU1RTXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0xMTUtXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTUtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6NjpDRkxBR1MtJChDT05GSUdfRFJNX1VTRV9EWU5BTUlDX0RFQlVHKVx0JiM0Mzs9IC1ERFlOQU1JQ19ERUJVR19NT0RVTEVcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yOT1lbmRpZlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0zMi0jIEVuYWJsZSAtV2Vycm9yIGluIENJIGFuZCBkZXZlbG9wbWVudFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjMzOnN1YmRpci1jY2ZsYWdzLSQoQ09ORklHX0RSTV9XRVJST1IpICYjNDM7PSAtV2Vycm9yXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMzQtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MzU9ZHJtLXkgOj0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNzUtXHRkcm1fd3JpdGViYWNrLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo3Njpkcm0tJChDT05GSUdfRFJNX0NMSUVOVCkgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNzctXHRkcm1fY2xpZW50Lm8gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9ODE9ZHJtLSQoQ09ORklHX0NPTVBBVCkgJiM0Mzs9IGRybV9pb2MzMi5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6ODI6ZHJtLSQoQ09ORklHX0RSTV9QQU5FTCkgJiM0Mzs9IGRybV9wYW5lbC5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtODMtZHJtLSQoQ09ORklHX09GKSAmIzQzOz0gZHJtX29mLm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9ODU9ZHJtLSQoQ09ORklHX0RFQlVHX0ZTKSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtODctXHRkcm1fZGVidWdmc19jcmMub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjg4OmRybS0kKENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFKSAmIzQzOz0gZHJtX2VkaWRfbG9hZC5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6ODk6ZHJtLSQoQ09ORklHX0RSTV9QUklWQUNZX1NDUkVFTikgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtOTAtXHRkcm1fcHJpdmFjeV9zY3JlZW4ubyBcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTkxLVx0ZHJtX3ByaXZhY3lfc2NyZWVuX3g4Ni5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTI6ZHJtLSQoQ09ORklHX0RSTV9BQ0NFTCkgJiM0Mzs9IC4uLy4uL2FjY2VsL2RybV9hY2NlbC5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTM6ZHJtLSQoQ09ORklHX0RSTV9QQU5JQykgJiM0Mzs9IGRybV9wYW5pYy5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTQ6ZHJtLSQoQ09ORklHX0RSTV9EUkFXKSAmIzQzOz0gZHJtX2RyYXcub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjk1OmRybS0kKENPTkZJR19EUk1fUEFOSUNfU0NSRUVOX1FSX0NPREUpICYjNDM7PSBkcm1fcGFuaWNfcXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjk2OmRybS0kKENPTkZJR19EUk1fUkFTKSAmIzQzOz0gZHJtX3Jhcy5vIGRybV9yYXNfbmwubyBkcm1fcmFzX2dlbmxfZmFtaWx5Lm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo5NzpvYmotJChDT05GSUdfRFJNKVx0JiM0Mzs9IGRybS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtOTgtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTk6b2JqLSQoQ09ORklHX0RSTV9QQU5FTF9PUklFTlRBVElPTl9RVUlSS1MpICYjNDM7PSBkcm1fcGFuZWxfb3JpZW50YXRpb25fcXVpcmtzLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMDA6b2JqLSQoQ09ORklHX0RSTV9QQU5FTF9CQUNLTElHSFRfUVVJUktTKSAmIzQzOz0gZHJtX3BhbmVsX2JhY2tsaWdodF9xdWlya3Mub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEwMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTA1LSNcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMDY6b2JqLSQoQ09ORklHX0RSTV9FWEVDKSAmIzQzOz0gZHJtX2V4ZWMub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEwNzpvYmotJChDT05GSUdfRFJNX0dQVVZNKSAmIzQzOz0gZHJtX2dwdXZtLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMDgtXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTExMT1kcm1fZ3B1c3ZtX2hlbHBlci0kKENPTkZJR19aT05FX0RFVklDRSkgJiM0Mzs9IFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTExNC1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMTU6b2JqLSQoQ09ORklHX0RSTV9HUFVTVk0pICYjNDM7PSBkcm1fZ3B1c3ZtX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTE2LVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjExNzpvYmotJChDT05GSUdfRFJNX0JVRERZKSAmIzQzOz0gZHJtX2J1ZGR5Lm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTgtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTE5PWRybV9kbWFfaGVscGVyLXkgOj0gZHJtX2dlbV9kbWFfaGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMjA6ZHJtX2RtYV9oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgJiM0Mzs9IGRybV9mYmRldl9kbWEub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyMTpkcm1fZG1hX2hlbHBlci0kKENPTkZJR19EUk1fS01TX0hFTFBFUikgJiM0Mzs9IGRybV9mYl9kbWFfaGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMjI6b2JqLSQoQ09ORklHX0RSTV9HRU1fRE1BX0hFTFBFUikgJiM0Mzs9IGRybV9kbWFfaGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMjMtXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTI0PWRybV9zaG1lbV9oZWxwZXIteSA6PSBkcm1fZ2VtX3NobWVtX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTI1OmRybV9zaG1lbV9oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgJiM0Mzs9IGRybV9mYmRldl9zaG1lbS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTI2Om9iai0kKENPTkZJR19EUk1fR0VNX1NITUVNX0hFTFBFUikgJiM0Mzs9IGRybV9zaG1lbV9oZWxwZXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEyNy1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMjg9ZHJtX3N1YmFsbG9jX2hlbHBlci15IDo9IGRybV9zdWJhbGxvYy5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTI5Om9iai0kKENPTkZJR19EUk1fU1VCQUxMT0NfSEVMUEVSKSAmIzQzOz0gZHJtX3N1YmFsbG9jX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTMwLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTEzMT1kcm1fdnJhbV9oZWxwZXIteSA6PSBkcm1fZ2VtX3ZyYW1faGVscGVyLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMzI6b2JqLSQoQ09ORklHX0RSTV9WUkFNX0hFTFBFUikgJiM0Mzs9IGRybV92cmFtX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTMzLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTEzND1kcm1fdHRtX2hlbHBlci15IDo9IGRybV9nZW1fdHRtX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTM1OmRybV90dG1faGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICYjNDM7PSBkcm1fZmJkZXZfdHRtLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxMzY6b2JqLSQoQ09ORklHX0RSTV9UVE1fSEVMUEVSKSAmIzQzOz0gZHJtX3R0bV9oZWxwZXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEzNy1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTQyPWRybV9rbXNfaGVscGVyLXkgOj0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTU4LVx0ZHJtX3ZibGFua19oZWxwZXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE1OTpkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fUEFORUxfQlJJREdFKSAmIzQzOz0gYnJpZGdlL3BhbmVsLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNjA6ZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgJiM0Mzs9IGRybV9mYl9oZWxwZXIub1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2MTpvYmotJChDT05GSUdfRFJNX0tNU19IRUxQRVIpICYjNDM7PSBkcm1fa21zX2hlbHBlci5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTYyLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xNjc9b2JqLXlcdFx0XHQmIzQzOz0gdGVzdHMvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTY4LVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2OTpvYmotJChDT05GSUdfRFJNX01JUElfREJJKSAmIzQzOz0gZHJtX21pcGlfZGJpLm9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzA6b2JqLSQoQ09ORklHX0RSTV9NSVBJX0RTSSkgJiM0Mzs9IGRybV9taXBpX2RzaS5vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTcxLW9iai15XHRcdFx0JiM0Mzs9IGFybS9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTczPW9iai15XHRcdFx0JiM0Mzs9IGRpc3BsYXkvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc0Om9iai0kKENPTkZJR19EUk1fVFRNKVx0JiM0Mzs9IHR0bS9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzU6b2JqLSQoQ09ORklHX0RSTV9TQ0hFRClcdCYjNDM7PSBzY2hlZHVsZXIvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc2Om9iai0kKENPTkZJR19EUk1fUkFERU9OKSYjNDM7PSByYWRlb24vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc3Om9iai0kKENPTkZJR19EUk1fQU1ER1BVKSYjNDM7PSBhbWQvYW1kZ3B1L1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE3ODpvYmotJChDT05GSUdfRFJNX0FNREdQVSkmIzQzOz0gYW1kL2FtZHhjcC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzk6b2JqLSQoQ09ORklHX0RSTV9JOTE1KVx0JiM0Mzs9IGk5MTUvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTgwOm9iai0kKENPTkZJR19EUk1fWEUpXHQmIzQzOz0geGUvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTgxOm9iai0kKENPTkZJR19EUk1fS01CX0RJU1BMQVkpICAmIzQzOz0ga21iL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4MjpvYmotJChDT05GSUdfRFJNX01HQUcyMDApICYjNDM7PSBtZ2FnMjAwL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4MzpvYmotJChDT05GSUdfRFJNX1YzRCkgICYjNDM7PSB2M2QvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTg0Om9iai0kKENPTkZJR19EUk1fVkM0KSAgJiM0Mzs9IHZjNC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODU6b2JqLSQoQ09ORklHX0RSTV9WTVdHRlgpJiM0Mzs9IHZtd2dmeC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODY6b2JqLSQoQ09ORklHX0RSTV9WR0VNKVx0JiM0Mzs9IHZnZW0vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTg3Om9iai0kKENPTkZJR19EUk1fVktNUylcdCYjNDM7PSB2a21zL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4ODpvYmotJChDT05GSUdfRFJNX05PVVZFQVUpICYjNDM7PW5vdXZlYXUvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTg5LSMgbm92YS1kcm0gaXMgYnVpbHQgZnJvbSBkcml2ZXJzL2dwdS9NYWtlZmlsZSB0b2dldGhlciB3aXRoIG5vdmEtY29yZS5cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTA6b2JqLSQoQ09ORklHX0RSTV9FWFlOT1MpICYjNDM7PWV4eW5vcy9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTE6b2JqLSQoQ09ORklHX0RSTV9ST0NLQ0hJUCkgJiM0Mzs9cm9ja2NoaXAvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTkyOm9iai0kKENPTkZJR19EUk1fR01BNTAwKSAmIzQzOz0gZ21hNTAwL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5MzpvYmotJChDT05GSUdfRFJNX1VETCkgJiM0Mzs9IHVkbC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTQ6b2JqLSQoQ09ORklHX0RSTV9BU1QpICYjNDM7PSBhc3QvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19EUk1fQVJNQURBKSAmIzQzOz0gYXJtYWRhL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5NjpvYmotJChDT05GSUdfRFJNX0FUTUVMX0hMQ0RDKVx0JiM0Mzs9IGF0bWVsLWhsY2RjL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE5Ny1vYmoteVx0XHRcdCYjNDM7PSByZW5lc2FzL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTE5OD1vYmoteVx0XHRcdCYjNDM7PSBvbWFwZHJtL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRFJNX1NVTjRJKSAmIzQzOz0gc3VuNGkvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjAwLW9iai15XHRcdFx0JiM0Mzs9IHRpbGNkYy9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDE6b2JqLSQoQ09ORklHX0RSTV9RWEwpICYjNDM7PSBxeGwvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjAyOm9iai0kKENPTkZJR19EUk1fVklSVElPX0dQVSkgJiM0Mzs9IHZpcnRpby9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDM6b2JqLSQoQ09ORklHX0RSTV9NU00pICYjNDM7PSBtc20vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjA0Om9iai0kKENPTkZJR19EUk1fVEVHUkEpICYjNDM7PSB0ZWdyYS9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDU6b2JqLSQoQ09ORklHX0RSTV9TVE0pICYjNDM7PSBzdG0vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjA2Om9iai0kKENPTkZJR19EUk1fU1RJKSAmIzQzOz0gc3RpL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIwNy1vYmoteSBcdFx0XHQmIzQzOz0gaW14L1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIwODpvYmotJChDT05GSUdfRFJNX0lOR0VOSUMpICYjNDM7PSBpbmdlbmljL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIwOTpvYmotJChDT05GSUdfRFJNX0xPR0lDVkMpICYjNDM7PSBsb2dpY3ZjL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIxMDpvYmotJChDT05GSUdfRFJNX01FRElBVEVLKSAmIzQzOz0gbWVkaWF0ZWsvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjExOm9iai0kKENPTkZJR19EUk1fTUVTT04pXHQmIzQzOz0gbWVzb24vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjEyLW9iai15XHRcdFx0JiM0Mzs9IHBhbmVsL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTIxMz1vYmoteVx0XHRcdCYjNDM7PSBicmlkZ2UvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjE0Om9iai0kKENPTkZJR19EUk1fRlNMX0RDVSkgJiM0Mzs9IGZzbC1kY3UvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjE1Om9iai0kKENPTkZJR19EUk1fRVROQVZJVikgJiM0Mzs9IGV0bmF2aXYvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjE2LW9iai15XHRcdFx0JiM0Mzs9IGhpc2lsaWNvbi9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MjE5PW9iai15XHRcdFx0JiM0Mzs9IHRpbnkvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjIwOm9iai0kKENPTkZJR19EUk1fUEwxMTEpICYjNDM7PSBwbDExMS9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjE6b2JqLSQoQ09ORklHX0RSTV9UVkUyMDApICYjNDM7PSB0dmUyMDAvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjIyOm9iai0kKENPTkZJR19EUk1fQURQKSAmIzQzOz0gYWRwL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyMzpvYmotJChDT05GSUdfRFJNX1hFTikgJiM0Mzs9IHhlbi9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjQ6b2JqLSQoQ09ORklHX0RSTV9WQk9YVklERU8pICYjNDM7PSB2Ym94dmlkZW8vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI1Om9iai0kKENPTkZJR19EUk1fTElNQSkgICYjNDM7PSBsaW1hL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyNjpvYmotJChDT05GSUdfRFJNX1BBTkZST1NUKSAmIzQzOz0gcGFuZnJvc3QvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI3Om9iai0kKENPTkZJR19EUk1fUEFOVEhPUikgJiM0Mzs9IHBhbnRob3IvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI4Om9iai0kKENPTkZJR19EUk1fVFlSKSAmIzQzOz0gdHlyL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyOTpvYmotJChDT05GSUdfRFJNX0FTUEVFRF9HRlgpICYjNDM7PSBhc3BlZWQvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjMwOm9iai0kKENPTkZJR19EUk1fTUNERSkgJiM0Mzs9IG1jZGUvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjMxOm9iai0kKENPTkZJR19EUk1fVElEU1MpICYjNDM7PSB0aWRzcy9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yMzItb2JqLXlcdFx0XHQmIzQzOz0geGxueC9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yMzM9b2JqLXlcdFx0XHQmIzQzOz0gZ3VkL1xuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIzNDpvYmotJChDT05GSUdfRFJNX0hZUEVSVikgJiM0Mzs9IGh5cGVydi9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yMzUtb2JqLXlcdFx0XHQmIzQzOz0gc2l0cm9uaXgvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MjM2PW9iai15XHRcdFx0JiM0Mzs9IHNvbG9tb24vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjM3Om9iai0kKENPTkZJR19EUk1fU1BSRCkgJiM0Mzs9IHNwcmQvXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjM4Om9iai0kKENPTkZJR19EUk1fTE9PTkdTT04pICYjNDM7PSBsb29uZ3Nvbi9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzk6b2JqLSQoQ09ORklHX0RSTV9QT1dFUlZSKSAmIzQzOz0gaW1hZ2luYXRpb24vXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjQwOm9iai0kKENPTkZJR19EUk1fVkVSSVNJTElDT05fREMpICYjNDM7PSB2ZXJpc2lsaWNvbi9cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yNDEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTI0Mz1oZHJ0ZXN0LWZpbGVzIDo9IFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTI0Ni1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyNDc6YWx3YXlzLSQoQ09ORklHX0RSTV9IRUFERVJfVEVTVCkgJiM0Mzs9IFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjQ4LVx0JChwYXRzdWJzdCAlLmgsJS5oZHJ0ZXN0LCAkKGhkcnRlc3QtZmlsZXMpKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yNTE9cXVpZXRfY21kX2hkcnRlc3QgPSBIRFJURVNUICQocGF0c3Vic3QgJS5oZHJ0ZXN0LCUuaCwkQClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjUzLVx0XHQkKENDKSAkKGNfZmxhZ3MpIC1mc3ludGF4LW9ubHkgLXggYyAvZGV2L251bGwgLWluY2x1ZGUgJFx1MDAzYyAtaW5jbHVkZSAkXHUwMDNjOyBcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjI1NDpcdFx0IFBZVEhPTkRPTlRXUklURUJZVEVDT0RFPTEgJChQWVRIT04zKSAkKEtFUk5FTERPQykgLW5vbmUgJChpZiAkKENPTkZJR19XRVJST1IpJChDT05GSUdfRFJNX1dFUlJPUiksLVdlcnJvcikgJFx1MDAzYzsgXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yNTUtXHRcdHRvdWNoICRAXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIE1JVFxuZHJpdmVycy9ncHUvZHJtL2FkcC9LY29uZmlnOjI6Y29uZmlnIERSTV9BRFBcbmRyaXZlcnMvZ3B1L2RybS9hZHAvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RFJNIFN1cHBvcnQgZm9yIHByZS1EQ1AgQXBwbGUgZGlzcGxheSBjb250cm9sbGVyc1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hZHAvTWFrZWZpbGU9ND1hZHBkcm0tbWlwaS15IDo9IGFkcC1taXBpLm9cbmRyaXZlcnMvZ3B1L2RybS9hZHAvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfRFJNX0FEUCkgJiM0Mzs9IGFkcGRybS5vIGFkcGRybS1taXBpLm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9LY29uZmlnPTI9bWVudSBcJiMzNDtBQ1AgKEF1ZGlvIENvUHJvY2Vzc29yKSBDb25maWd1cmF0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvS2NvbmZpZy00LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvS2NvbmZpZzo1OmNvbmZpZyBEUk1fQU1EX0FDUFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtFbmFibGUgQU1EIEF1ZGlvIENvUHJvY2Vzc29yIElQIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTItXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjM6Y29uZmlnIERSTV9BTURHUFVcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O0FNRCBHUFVcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTQwLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo0MTpjb25maWcgRFJNX0FNREdQVV9TSVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7RW5hYmxlIGFtZGdwdSBzdXBwb3J0IGZvciBTSSBwYXJ0c1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctNTUtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjU2OmNvbmZpZyBEUk1fQU1ER1BVX0NJS1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy01Ny1cdGJvb2wgXCYjMzQ7RW5hYmxlIGFtZGdwdSBzdXBwb3J0IGZvciBDSUsgcGFydHNcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTc0LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo3NTpjb25maWcgRFJNX0FNREdQVV9VU0VSUFRSXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTc2LVx0Ym9vbCBcJiMzNDtBbHdheXMgZW5hYmxlIHVzZXJwdHIgd3JpdGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctODMtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjg0OmNvbmZpZyBEUk1fQU1EX0lTUFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy04NS1cdGJvb2wgXCYjMzQ7RW5hYmxlIEFNRCBJbWFnZSBTaWduYWwgUHJvY2Vzc29yIElQIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTk0LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo5NTpjb25maWcgRFJNX0FNREdQVV9XRVJST1JcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctOTYtXHRib29sIFwmIzM0O0ZvcmNlIHRoZSBjb21waWxlciB0byB0aHJvdyBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgd2FybmluZyB3aGVuIGNvbXBpbGluZ1wmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTQ4PXN1YmRpci1jY2ZsYWdzLXkgJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU6NDk6c3ViZGlyLWNjZmxhZ3MtJChDT05GSUdfRFJNX0FNREdQVV9XRVJST1IpICYjNDM7PSAtV2Vycm9yXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS01MC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT03OT1hbWRncHUtJChDT05GSUdfUEVSRl9FVkVOVFMpICYjNDM7PSBhbWRncHVfcG11Lm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS04MS0jIGFkZCBhc2ljIHNwZWNpZmljIGJsb2NrXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTo4MjphbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9DSUspJiM0Mzs9IGNpay5vIGNpa19paC5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS04My1cdGRjZV92OF8wLm8gZ2Z4X3Y3XzAubyBjaWtfc2RtYS5vIHV2ZF92NF8yLm8gdmNlX3YyXzAub1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtODQtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTo4NTphbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9TSSkmIzQzOz0gc2kubyBnbWNfdjZfMC5vIGdmeF92Nl8wLm8gc2lfaWgubyBzaV9kbWEubyBkY2VfdjZfMC5vIFxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS04Ni1cdHV2ZF92M18xLm8gdmNlX3YxXzAub1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTI4NT1hbWRncHUteSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0yOTgtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZToyOTk6aWZuZXEgKCQoQ09ORklHX0RSTV9BTURHUFVfQ0lLKSwpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0zMDAtYW1kZ3B1LXkgJiM0Mzs9IGFtZGdwdV9hbWRrZmRfZ2Z4X3Y3Lm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT0zMDk9YW1kZ3B1LXkgJiM0Mzs9IGFtZGdwdV9qb2Iub1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMxMS0jIEFDUCBjb21wb25ldFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU6MzEyOmlmbmVxICgkKENPTkZJR19EUk1fQU1EX0FDUCksKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzEzLWFtZGdwdS15ICYjNDM7PSBhbWRncHVfYWNwLm9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT0zMjg9YW1kZ3B1LXkgJiM0Mzs9ICQoQU1EX1BPV0VSUExBWV9GSUxFUylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMyOS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjMzMDppZm5lcSAoJChDT05GSUdfRFJNX0FNRF9EQyksKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzMxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTMzNz1lbmRpZlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMzOS0jIGFkZCBpc3AgYmxvY2tcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjM0MDppZm5lcSAoJChDT05GSUdfRFJNX0FNRF9JU1ApLClcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTM0MS1hbWRncHUteSAmIzQzOz0gXFxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT0zNTA9YW1kZ3B1LXkgJiM0Mzs9ICQoQU1EX0dQVV9SQVNfRklMRVMpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0zNTEtXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTozNTI6b2JqLSQoQ09ORklHX0RSTV9BTURHUFUpJiM0Mzs9IGFtZGdwdS5vXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMTE4LSNpbmNsdWRlIFwmIzM0O2FtZGdwdV9hY3BpLmhcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjExOTojaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9JU1ApXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC0xMjAtI2luY2x1ZGUgXCYjMzQ7YW1kZ3B1X2lzcC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg9MjQ0PWV4dGVybiBpbnQgYW1kZ3B1X3Jlc2V0X21ldGhvZDtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTI0NS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjI0NjojaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfU0lcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTI0Ny1leHRlcm4gaW50IGFtZGdwdV9zaV9zdXBwb3J0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMjQ4LSNlbmRpZlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6MjQ5OiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9DSUtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTI1MC1leHRlcm4gaW50IGFtZGdwdV9jaWtfc3VwcG9ydDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaD02MjE9c3RydWN0IGFtZGdwdV9kZXZpY2Uge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTYyNS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjYyNjojaWZkZWYgQ09ORklHX0RSTV9BTURfQUNQXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaC02MjctXHRzdHJ1Y3QgYW1kZ3B1X2FjcFx0XHRhY3A7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtNzk4LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg6Nzk5OiNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0lTUClcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTgwMC1cdC8qIGlzcCAqL1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM9MTI5Mz1pbnQgYW1kZ3B1X2FjcGlfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTEyOTgtXHRcdGlmIChhZGV2LVx1MDAzZWRjX2VuYWJsZWQpIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM6MTI5OTojaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmMtMTMwMC1cdFx0XHRzdHJ1Y3QgYW1kZ3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0gPSBcdTAwMjZhZGV2LVx1MDAzZWRtO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM9MTU1Mz1ib29sIGFtZGdwdV9hY3BpX2lzX3MwaXhfYWN0aXZlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmMtMTU4Ny1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM6MTU4ODojaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0FNRF9JU1ApXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTE1ODktc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBpc3Bfc2Vuc29yX2lkc1tdID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM9MTU5OT1pbnQgYW1kZ3B1X2FjcGlfZ2V0X2lzcDRfZGV2KHN0cnVjdCBhY3BpX2RldmljZSAqKmRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTE2MTYtfVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYzoxNjE3OiNlbmRpZiAvKiBDT05GSUdfRFJNX0FNRF9JU1AgKi9cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5oPTE0NT1zdGF0aWMgaW5saW5lIGJvb2wgYW1kZ3B1X2FjcGlfaXNfczNfYWN0aXZlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KSB7IHJldHVybiBmYWxzZTsgfVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmgtMTQ3LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuaDoxNDg6I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfSVNQKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuaC0xNDktaW50IGFtZGdwdV9hY3BpX2dldF9pc3A0X2RldihzdHJ1Y3QgYWNwaV9kZXZpY2UgKipkZXYpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5jPTEwMjc9aW50IGFtZGdwdV9hdG9tYmlvc19nZXRfY2xvY2tfZGl2aWRlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmMtMTEyNC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5jOjExMjU6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuYy0xMTI2LWludCBhbWRncHVfYXRvbWJpb3NfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmg9MTU1PWludCBhbWRncHVfYXRvbWJpb3NfZ2V0X2Nsb2NrX2RpdmlkZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oLTE2MC1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oOjE2MTojaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfU0lcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oLTE2Mi1pbnQgYW1kZ3B1X2F0b21iaW9zX2dldF9tZW1vcnlfcGxsX2RpdmlkZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZWJ1Z2ZzLmM9MjEzMz1pbnQgYW1kZ3B1X2RlYnVnZnNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jLTIxNzktXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jOjIxODA6I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jLTIxODEtXHRpZiAoYWRldi1cdTAwM2VkY19lbmFibGVkKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy01Ni0jaW5jbHVkZSBcJiMzNDthbWRfcGNpZS5oXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM6NTc6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtNTgtI2luY2x1ZGUgXCYjMzQ7c2kuaFwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTU5LSNlbmRpZlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjYwOiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9DSUtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy02MS0jaW5jbHVkZSBcJiMzNDtjaWsuaFwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYz0xOTgxPXN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9pcF9lYXJseV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0yMDEwLVx0c3dpdGNoIChhZGV2LVx1MDAzZWFzaWNfdHlwZSkge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjIwMTE6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMjAxMi1cdGNhc2UgQ0hJUF9WRVJERTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMjAyMi0jZW5kaWZcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzoyMDIzOiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9DSUtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0yMDI0LVx0Y2FzZSBDSElQX0JPTkFJUkU6XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jPTM0ODU9Ym9vbCBhbWRncHVfZGV2aWNlX2FzaWNfaGFzX2RjX3N1cHBvcnQoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTM0ODgtXHRzd2l0Y2ggKGFzaWNfdHlwZSkge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjM0ODk6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMzQ5MC1cdGNhc2UgQ0hJUF9IQUlOQU46XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTM0OTQtXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzozNDk1OiNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgYnVpbGQgcHJvY2VzcywgZm9jdXNpbmcgb24gYGRybV9zeW5jb2JqLm9gLCBhcyBkZXJpdmVkIGZyb20gYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWA6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBEUk0gTWFrZWZpbGUqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWAgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBkcm1fc3luY29iai5vYCBvYmplY3QgZmlsZSBnZXRzIGNvbXBpbGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgaW52b2x2ZWQsIGFuZCBhbnkgc3BlY2lmaWMgcnVsZXMgdGhhdCBtaWdodCBhcHBseSB0byBpdC4gIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGUgdHlwaWNhbCBtYWtlZmlsZSBzdHJ1Y3R1cmU6IHRhcmdldHMsIHByZXJlcXVpc2l0ZXMsIGFuZCB0aGUgY29tbWFuZHMgdG8gYnVpbGQgdGhlIG9iamVjdC4gSSYjMzk7bSBsb29raW5nIGZvciBhbnkgdW51c3VhbCB0d2lzdHMgb3Igc3BlY2lhbCBjb25zaWRlcmF0aW9ucyBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN5bmNocm9uaXphdGlvbiBvYmplY3QuIEFyZSB0aGVyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsZXM/IFNwZWNpYWwgbGlua2VyIGZsYWdzPyBBbnl0aGluZyB0aGF0IGp1bXBzIG91dCBhcyBiZWluZyBzcGVjaWZpY2FsbHkgdGFpbG9yZWQgZm9yIHN5bmMgb2JqZWN0cz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O2xsIHByb2JhYmx5IGZvbGxvdyBhIHN0YW5kYXJkIHBhdHRlcm4sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiAgSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBmb3IgYSBydWxlIHRoYXQgZXhwbGljaXRseSBuYW1lcyBgZHJtX3N5bmNvYmoub2AsIG9yIGEgbW9yZSBnZW5lcmljIHBhdHRlcm4gdGhhdCB3b3VsZCBjb3ZlciBpdC4gSSYjMzk7bGwgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIGFueSB2YXJpYWJsZXMgaXQgbWlnaHQgYmUgdXNpbmcgYXMgd2VsbCwgdGhvc2UgYXJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCB1bHRpbWF0ZWx5IHNoYXBlcyB0aGUgb2JqZWN0IGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHJtX3N5bmNvYmomIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE3MTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0zNT1kcm0teSA6PSBcXFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS02OC1cdGRybV9yZWN0Lm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo2OTpcdGRybV9zeW5jb2JqLm8gXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03MC1cdGRybV9zeXNmcy5vIFxcXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMzMtI2luY2x1ZGUgXHUwMDNjZHJtL2FtZGdwdV9kcm0uaFx1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MzQ6I2luY2x1ZGUgXHUwMDNjZHJtL2RybV9zeW5jb2JqLmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTM1LSNpbmNsdWRlIFx1MDAzY2RybS90dG0vdHRtX3R0LmhcdTAwM2Vcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYz00NzE9c3RhdGljIGludCBhbWRncHVfc3luY29ial9sb29rdXBfYW5kX2FkZChzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy00NzctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzo0Nzg6XHRyID0gZHJtX3N5bmNvYmpfZmluZF9mZW5jZShwLVx1MDAzZWZpbHAsIGhhbmRsZSwgcG9pbnQsIGZsYWdzLCBcdTAwMjZmZW5jZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy00NzktXHRpZiAocikge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jPTUyOD1zdGF0aWMgaW50IGFtZGdwdV9jc19wMl9zeW5jb2JqX291dChzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy01NDktXHRcdHAtXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmogPVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6NTUwOlx0XHRcdGRybV9zeW5jb2JqX2ZpbmQocC1cdTAwM2VmaWxwLCBkZXBzW2ldLmhhbmRsZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy01NTEtXHRcdGlmICghcC1cdTAwM2Vwb3N0X2RlcHNbaV0uc3luY29iailcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYz01NjE9c3RhdGljIGludCBhbWRncHVfY3NfcDJfc3luY29ial90aW1lbGluZV9zaWduYWwoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtNTg5LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6NTkwOlx0XHRkZXAtXHUwMDNlc3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQocC1cdTAwM2VmaWxwLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtNTkxLVx0XHRcdFx0XHRcdHN5bmNvYmpfZGVwc1tpXS5oYW5kbGUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jPTEyNjU9c3RhdGljIHZvaWQgYW1kZ3B1X2NzX3Bvc3RfZGVwZW5kZW5jaWVzKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEyNzAtXHRcdGlmIChwLVx1MDAzZXBvc3RfZGVwc1tpXS5jaGFpbiBcdTAwMjZcdTAwMjYgcC1cdTAwM2Vwb3N0X2RlcHNbaV0ucG9pbnQpIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjEyNzE6XHRcdFx0ZHJtX3N5bmNvYmpfYWRkX3BvaW50KHAtXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMjcyLVx0XHRcdFx0XHQgICAgICBwLVx1MDAzZXBvc3RfZGVwc1tpXS5jaGFpbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMjc1LVx0XHR9IGVsc2Uge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MTI3NjpcdFx0XHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHAtXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMjc3LVx0XHRcdFx0XHRcdCAgcC1cdTAwM2VmZW5jZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM9MTM4Nj1zdGF0aWMgdm9pZCBhbWRncHVfY3NfcGFyc2VyX2Zpbmkoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnBhcnNlcilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMzk1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGFyc2VyLVx1MDAzZW51bV9wb3N0X2RlcHM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxMzk2Olx0XHRkcm1fc3luY29ial9wdXQocGFyc2VyLVx1MDAzZXBvc3RfZGVwc1tpXS5zeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEzOTctXHRcdGtmcmVlKHBhcnNlci1cdTAwM2Vwb3N0X2RlcHNbaV0uY2hhaW4pO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jPTE1NzY9aW50IGFtZGdwdV9jc19mZW5jZV90b19oYW5kbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTgxLVx0c3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNTgyOlx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTU4My1cdHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTk0LVx0Y2FzZSBBTURHUFVfRkVOQ0VfVE9fSEFORExFX0dFVF9TWU5DT0JKOlxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MTU5NTpcdFx0ciA9IGRybV9zeW5jb2JqX2NyZWF0ZShcdTAwMjZzeW5jb2JqLCAwLCBmZW5jZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTk2LVx0XHRkbWFfZmVuY2VfcHV0KGZlbmNlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTk4LVx0XHRcdHJldHVybiByO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MTU5OTpcdFx0ciA9IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoZmlscCwgc3luY29iaiwgXHUwMDI2aW5mby1cdTAwM2VvdXQuaGFuZGxlKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjE2MDA6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDEtXHRcdHJldHVybiByO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDMtXHRjYXNlIEFNREdQVV9GRU5DRV9UT19IQU5ETEVfR0VUX1NZTkNPQkpfRkQ6XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA0Olx0XHRyID0gZHJtX3N5bmNvYmpfY3JlYXRlKFx1MDAyNnN5bmNvYmosIDAsIGZlbmNlKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDUtXHRcdGRtYV9mZW5jZV9wdXQoZmVuY2UpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDctXHRcdFx0cmV0dXJuIHI7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA4Olx0XHRyID0gZHJtX3N5bmNvYmpfZ2V0X2ZkKHN5bmNvYmosIChpbnQgKilcdTAwMjZpbmZvLVx1MDAzZW91dC5oYW5kbGUpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MTYwOTpcdFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTYxMC1cdFx0cmV0dXJuIHI7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmg9NDM9c3RydWN0IGFtZGdwdV9jc19wb3N0X2RlcCB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuaDo0NDpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5oLTQ1LVx0c3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW47XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTQxLSNpbmNsdWRlIFx1MDAzY2RybS90dG0vdHRtX3R0LmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzo0MjojaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX3N5bmNvYmouaFx1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTQzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYz01Mj1hbWRncHVfZ2VtX2FkZF9pbnB1dF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTc0LVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjc1Olx0XHRyZXQgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHN5bmNvYmpfaGFuZGxlc1tpXSwgMCwgMCwgXHUwMDI2ZmVuY2UpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTc2LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYz05MT1hbWRncHVfZ2VtX3VwZGF0ZV90aW1lbGluZV9ub2RlKHN0cnVjdCBkcm1fZmlsZSAqZmlscCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtOTMtXHRcdFx0XHR1aW50NjRfdCBwb2ludCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzo5NDpcdFx0XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtOTUtXHRcdFx0XHRzdHJ1Y3QgZG1hX2ZlbmNlX2NoYWluICoqY2hhaW4pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMC1cdC8qIEZpbmQgdGhlIHN5bmMgb2JqZWN0ICovXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6MTAxOlx0KnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbHAsIHN5bmNvYmpfaGFuZGxlKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMDItXHRpZiAoISpzeW5jb2JqKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMTAtXHRpZiAoISpjaGFpbikge1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjExMTpcdFx0ZHJtX3N5bmNvYmpfcHV0KCpzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMTItXHRcdCpzeW5jb2JqID0gTlVMTDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM9ODMyPWludCBhbWRncHVfZ2VtX3ZhX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTg0Ny1cdHN0cnVjdCBhbWRncHVfYm9fdmEgKmJvX3ZhO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjg0ODpcdHN0cnVjdCBkcm1fc3luY29iaiAqdGltZWxpbmVfc3luY29iaiA9IE5VTEw7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtODQ5LVx0c3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqdGltZWxpbmVfY2hhaW4gPSBOVUxMO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMDAyLVx0XHRcdFx0LyogUmVwbGFjZSB0aGUgZXhpc3RpbmcgZmVuY2Ugd2hlbiBubyBwb2ludCBpcyBnaXZlbi4gKi9cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzoxMDAzOlx0XHRcdFx0ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSh0aW1lbGluZV9zeW5jb2JqLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMDQtXHRcdFx0XHRcdFx0XHQgIGZlbmNlKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAwNi1cdFx0XHRcdC8qIEF0dGFjaCB0aGUgbGFzdC11cGRhdGUgZmVuY2UgYXQgYSBzcGVjaWZpYyBwb2ludC4gKi9cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzoxMDA3Olx0XHRcdFx0ZHJtX3N5bmNvYmpfYWRkX3BvaW50KHRpbWVsaW5lX3N5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAwOC1cdFx0XHRcdFx0XHQgICAgICB0aW1lbGluZV9jaGFpbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAyMC1cdGlmICh0aW1lbGluZV9zeW5jb2JqKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjEwMjE6XHRcdGRybV9zeW5jb2JqX3B1dCh0aW1lbGluZV9zeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMDIyLVx0ZHJtX2V4ZWNfZmluaShcdTAwMjZleGVjKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy0yOS0jaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX2V4ZWMuaFx1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6MzA6I2luY2x1ZGUgXHUwMDNjZHJtL2RybV9zeW5jb2JqLmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTMxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jPTQ1NT1pbnQgYW1kZ3B1X3VzZXJxX3NpZ25hbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ2OC1cdHN0cnVjdCBhbWRncHVfdXNlcnFfZmVuY2UgKmZlbmNlO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NDY5Olx0c3RydWN0IGRybV9zeW5jb2JqICoqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ3MC1cdHN0cnVjdCBkcm1fZXhlYyBleGVjO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ5Ni1cdGZvciAoZW50cnkgPSAwOyBlbnRyeSBcdTAwM2MgbnVtX3N5bmNvYmpfaGFuZGxlczsgZW50cnkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo0OTc6XHRcdHN5bmNvYmpbZW50cnldID0gZHJtX3N5bmNvYmpfZmluZChmaWxwLCBzeW5jb2JqX2hhbmRsZXNbZW50cnldKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ5OC1cdFx0aWYgKCFzeW5jb2JqW2VudHJ5XSkge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTU3MC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9zeW5jb2JqX2hhbmRsZXM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NTcxOlx0XHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmpbaV0sIFx1MDAyNmZlbmNlLVx1MDAzZWJhc2UpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNTcyLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTU4OS1cdHdoaWxlIChlbnRyeS0tIFx1MDAzZSAwKVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NTkwOlx0XHRkcm1fc3luY29ial9wdXQoc3luY29ialtlbnRyeV0pO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNTkxLVx0a2ZyZWUoc3luY29iaik7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM9NjAwPWFtZGdwdV91c2VycV93YWl0X2NvdW50X2ZlbmNlcyhzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNjIwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd2FpdF9pbmZvLVx1MDAzZW51bV9zeW5jb2JqX3RpbWVsaW5lX2hhbmRsZXM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo2MjE6XHRcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHRpbWVsaW5lX2hhbmRsZXNbaV0sXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy02MjItXHRcdFx0XHRcdCAgIHRpbWVsaW5lX3BvaW50c1tpXSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy02MzUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3YWl0X2luZm8tXHUwMDNlbnVtX3N5bmNvYmpfaGFuZGxlczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jOjYzNjpcdFx0ciA9IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoZmlscCwgc3luY29ial9oYW5kbGVzW2ldLCAwLFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNjM3LVx0XHRcdFx0XHQgICBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYz03MTA9YW1kZ3B1X3VzZXJxX3dhaXRfcmV0dXJuX2ZlbmNlX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxwLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTc0My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9wb2ludHM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo3NDQ6XHRcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHRpbWVsaW5lX2hhbmRsZXNbaV0sXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NDUtXHRcdFx0XHRcdCAgIHRpbWVsaW5lX3BvaW50c1tpXSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NjctXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo3Njg6XHRcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHN5bmNvYmpfaGFuZGxlc1tpXSwgMCxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTc2OS1cdFx0XHRcdFx0ICAgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM9MTMyPXN0cnVjdCBkcm1fZmlsZSAqZHJtX2ZpbGVfYWxsb2Moc3RydWN0IGRybV9taW5vciAqbWlub3IpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMTY3LVx0aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYzoxNjg6XHRcdGRybV9zeW5jb2JqX29wZW4oZmlsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xNjktXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMTg1LVx0aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYzoxODY6XHRcdGRybV9zeW5jb2JqX3JlbGVhc2UoZmlsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xODctXHRpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jPTIzMz12b2lkIGRybV9maWxlX2ZyZWUoc3RydWN0IGRybV9maWxlICpmaWxlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTI1Ny1cdGlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKVxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM6MjU4Olx0XHRkcm1fc3luY29ial9yZWxlYXNlKGZpbGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMjU5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaD0yNTk9ZHJtX2lvY3RsX3QgZHJtX2dldGNsaWVudDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjAtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjYxOi8qIGRybV9zeW5jb2JqLmMgKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjI6dm9pZCBkcm1fc3luY29ial9vcGVuKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjM6dm9pZCBkcm1fc3luY29ial9yZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjQ6aW50IGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI2NS1cdFx0XHQgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjY6aW50IGRybV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjctXHRcdFx0ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI2ODppbnQgZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjY5LVx0XHRcdFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI3MDppbnQgZHJtX3N5bmNvYmpfZmRfdG9faGFuZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjcxLVx0XHRcdFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI3MjppbnQgZHJtX3N5bmNvYmpfdHJhbnNmZXJfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNzMtXHRcdFx0ICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzQ6aW50IGRybV9zeW5jb2JqX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNzUtXHRcdFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI3NjppbnQgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI3Ny1cdFx0XHRcdCAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjc4OmludCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc5LVx0XHRcdCAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyODA6aW50IGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjgxLVx0XHRcdCAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjgyOmludCBkcm1fc3luY29ial9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yODMtXHRcdFx0ICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjg0OmludCBkcm1fc3luY29ial90aW1lbGluZV9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yODUtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjg2OmludCBkcm1fc3luY29ial9xdWVyeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI4Ny1cdFx0XHQgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYz02NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBkcm1faW9jdGxzW10gPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcxNy1cbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3MTg6XHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0NSRUFURSwgZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcxOS1cdFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzIwOlx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9ERVNUUk9ZLCBkcm1fc3luY29ial9kZXN0cm95X2lvY3RsLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyMS1cdFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzIyOlx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9IQU5ETEVfVE9fRkQsIGRybV9zeW5jb2JqX2hhbmRsZV90b19mZF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MjMtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcyNDpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfRkRfVE9fSEFORExFLCBkcm1fc3luY29ial9mZF90b19oYW5kbGVfaW9jdGwsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzI1LVx0XHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3MjY6XHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX1RSQU5TRkVSLCBkcm1fc3luY29ial90cmFuc2Zlcl9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MjctXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcyODpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfV0FJVCwgZHJtX3N5bmNvYmpfd2FpdF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MjktXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczMDpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfVElNRUxJTkVfV0FJVCwgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzEtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczMjpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfRVZFTlRGRCwgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzMtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczNDpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfUkVTRVQsIGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTczNS1cdFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzM2Olx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9TSUdOQUwsIGRybV9zeW5jb2JqX3NpZ25hbF9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzctXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczODpcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfVElNRUxJTkVfU0lHTkFMLCBkcm1fc3luY29ial90aW1lbGluZV9zaWduYWxfaW9jdGwsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzM5LVx0XHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3NDA6XHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX1FVRVJZLCBkcm1fc3luY29ial9xdWVyeV9pb2N0bCxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03NDEtXHRcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMxLSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMjogKiBEUk0gc3luY2hyb25pc2F0aW9uIG9iamVjdHMgKHN5bmNvYmosIHNlZSBzdHJ1Y3QgXHUwMDI2ZHJtX3N5bmNvYmopIHByb3ZpZGUgYVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzMtICogY29udGFpbmVyIGZvciBhIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgd2hpY2ggY2FuIGJlIHVzZWQgYnkgdXNlcnNwYWNlXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTYwLSAqIHJlc3VsdCBvZiBpbXBvcnRpbmcgdGhvc2UgZmlsZSBkZXNjcmlwdG9ycyBvd24gYSByZWZlcmVuY2UgdG8gdGhlXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNjE6ICogc2FtZSB1bmRlcmx5aW5nIHN0cnVjdCBcdTAwMjZkcm1fc3luY29iaiBhbmQgdGhlIHN5bmNvYmogY2FuIGJlIHVzZWRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTE2Mi0gKiBwZXJzaXN0ZW50bHkgYWNyb3NzIGFsbCB0aGUgcHJvY2Vzc2VzIHdpdGggd2hpY2ggaXQgaXMgc2hhcmVkLlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIwOS0jaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX3ByaW50LmhcdTAwM2VcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjIxMDojaW5jbHVkZSBcdTAwM2Nkcm0vZHJtX3N5bmNvYmouaFx1MDAzZVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjExLSNpbmNsdWRlIFx1MDAzY2RybS9kcm1fdXRpbHMuaFx1MDAzZVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTIxNT1zdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMjItXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyMjM6c3RhdGljIHZvaWQgc3luY29ial93YWl0X3N5bmNvYmpfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMjQtXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5ICp3YWl0KTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0yMjY9c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjI5LVx0c3RydWN0IGRtYV9mZW5jZV9jYiBmZW5jZV9jYjtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjIzMDpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIzMS1cdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTIzNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjM3OnN5bmNvYmpfZXZlbnRmZF9lbnRyeV9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIzOC1cdFx0XHQgICBzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQwLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjQxOiAqIGRybV9zeW5jb2JqX2ZpbmQgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSBhIHN5bmMgb2JqZWN0LlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQyLSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI0NS0gKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBzeW5jb2JqIHBvaW50ZWQgdG8gYnkgaGFuZGxlIG9yIE5VTEwuIFRoZVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjQ2OiAqIHJlZmVyZW5jZSBtdXN0IGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgZHJtX3N5bmNvYmpfcHV0KCkuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNDctICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyNDg6c3RydWN0IGRybV9zeW5jb2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQ5LVx0XHRcdFx0ICAgICB1MzIgaGFuZGxlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjUwLXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI1MTpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI1Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNTctXHRpZiAoc3luY29iailcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI1ODpcdFx0ZHJtX3N5bmNvYmpfZ2V0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjU5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI2My19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyNjQ6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9maW5kKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI2NS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI2NjpzdGF0aWMgdm9pZCBkcm1fc3luY29ial9mZW5jZV9hZGRfd2FpdChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNjctXHRcdFx0XHQgICAgICAgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yOTAtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyOTE6c3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfcmVtb3ZlX3dhaXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjkyLVx0XHRcdFx0ICAgIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MzE0PXN0YXRpYyB2b2lkXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMTU6ZHJtX3N5bmNvYmpfYWRkX2V2ZW50ZmQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzE2LVx0XHRcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMyNC0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjMyNTogKiBkcm1fc3luY29ial9hZGRfcG9pbnQgLSBhZGQgbmV3IHRpbWVsaW5lIHBvaW50IHRvIHRoZSBzeW5jb2JqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMjYtICogQHN5bmNvYmo6IHN5bmMgb2JqZWN0IHRvIGFkZCB0aW1lbGluZSBwb2ludCBkb1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMzMi0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjMzMzp2b2lkIGRybV9zeW5jb2JqX2FkZF9wb2ludChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMzQtXHRcdFx0ICAgc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4sXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzQ1LVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzQ2Olx0cHJldiA9IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM0Ny1cdC8qIFlvdSBhcmUgYWRkaW5nIGFuIHVub3JkZXIgcG9pbnQgdG8gdGltZWxpbmUsIHdoaWNoIGNvdWxkIGNhdXNlIHBheWxvYWQgcmV0dXJuZWQgZnJvbSBxdWVyeV9pb2N0bCBpcyAwISAqL1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM2Mi19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozNjM6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9hZGRfcG9pbnQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzY0LVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzY1LS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzY2OiAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSByZXBsYWNlIGZlbmNlIGluIGEgc3luYyBvYmplY3QuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNjctICogQHN5bmNvYmo6IFN5bmMgb2JqZWN0IHRvIHJlcGxhY2UgZmVuY2UgaW5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNzEtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozNzI6dm9pZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM3My1cdFx0XHQgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzk4LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjM5OTpFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDAwLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDAxLS8qKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDAyOiAqIGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZSAtIGFzc2lnbiBhIHN0dWIgZmVuY2UgdG8gdGhlIHN5bmMgb2JqZWN0XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MDMtICogQHN5bmNvYmo6IHN5bmMgb2JqZWN0IHRvIGFzc2lnbiB0aGUgZmVuY2Ugb25cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MDYtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MDc6c3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDA4LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MTMtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MTQ6XHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmosIGZlbmNlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQxNS1cdGRtYV9mZW5jZV9wdXQoZmVuY2UpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQyMS0vKipcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQyMjogKiBkcm1fc3luY29ial9maW5kX2ZlbmNlIC0gbG9va3VwIGFuZCByZWZlcmVuY2UgdGhlIGZlbmNlIGluIGEgc3luYyBvYmplY3RcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQyMy0gKiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZSBwcml2YXRlIHBvaW50ZXJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MjgtICpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQyOTogKiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNvbWJpbmVzIGRybV9zeW5jb2JqX2ZpbmQoKSBhbmRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQzMDogKiBkcm1fc3luY29ial9mZW5jZV9nZXQoKS5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQzMS0gKlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQzNS0gKi9cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQzNjppbnQgZHJtX3N5bmNvYmpfZmluZF9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQzNy1cdFx0XHQgICB1MzIgaGFuZGxlLCB1NjQgcG9pbnQsIHU2NCBmbGFncyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00Mzkte1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDQwOlx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00NDEtXHRzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5IHdhaXQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDYxLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDYyOlx0KmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDYzLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2Ny1cdFx0XHQvKiBJZiB0aGUgcmVxdWVzdGVkIHNlcW5vIGlzIGFscmVhZHkgc2lnbmFsZWRcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQ2ODpcdFx0XHQgKiBkcm1fc3luY29ial9maW5kX2ZlbmNlIG1heSByZXR1cm4gYSBOVUxMXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00NjktXHRcdFx0ICogZmVuY2UuIFRvIG1ha2Ugc3VyZSB0aGUgcmVjaXBpZW50IGdldHNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00ODctXHR3YWl0LnBvaW50ID0gcG9pbnQ7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0ODg6XHRkcm1fc3luY29ial9mZW5jZV9hZGRfd2FpdChzeW5jb2JqLCBcdTAwMjZ3YWl0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ4OS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MTItXHRpZiAod2FpdC5ub2RlLm5leHQpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MTM6XHRcdGRybV9zeW5jb2JqX3JlbW92ZV93YWl0KHN5bmNvYmosIFx1MDAyNndhaXQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTE0LVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTE1LW91dDpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjUxNjpcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUxNy1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MTktfVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTIwOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmluZF9mZW5jZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjEtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjItLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MjM6ICogZHJtX3N5bmNvYmpfZnJlZSAtIGZyZWUgYSBzeW5jIG9iamVjdC5cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUyNC0gKiBAa3JlZjoga3JlZiB0byBmcmVlLlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTI1LSAqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MjY6ICogT25seSB0byBiZSBjYWxsZWQgZnJvbSBrcmVmX3B1dCBpbiBkcm1fc3luY29ial9wdXQuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjctICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1Mjg6dm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTI5LXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjUzMDpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGNvbnRhaW5lcl9vZihrcmVmLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTMxOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBkcm1fc3luY29iaixcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUzMi1cdFx0XHRcdFx0XHQgICByZWZjb3VudCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTM0LVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTM1Olx0ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqLCBOVUxMKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUzNi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NDEtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTQyOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NDMtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NDQtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NDU6ICogZHJtX3N5bmNvYmpfY3JlYXRlIC0gY3JlYXRlIGEgbmV3IHN5bmNvYmpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU0Ni0gKiBAb3V0X3N5bmNvYmo6IHJldHVybmVkIHN5bmNvYmpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NTEtICogcHJvYmFibHkgd2FudCB0byBtYWtlIGl0IGF2YWlsYWJsZSB0byB1c2Vyc3BhY2UsIGVpdGhlciB0aHJvdWdoXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NTI6ICogZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZSgpIG9yIGRybV9zeW5jb2JqX2dldF9mZCgpLlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTUzLSAqXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTU1LSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTU2OmludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0IGRybV9zeW5jb2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTU3LVx0XHQgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTU5LVx0aW50IHJldDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU2MDpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU2MS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU2MjpcdHN5bmNvYmogPSBremFsbG9jX29iaihzdHJ1Y3QgZHJtX3N5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTYzLVx0aWYgKCFzeW5jb2JqKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3MS1cdGlmIChmbGFncyBcdTAwMjYgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVEKSB7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NzI6XHRcdHJldCA9IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3My1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTc0Olx0XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3NS1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3OS1cdGlmIChmZW5jZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU4MDpcdFx0ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqLCBmZW5jZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01ODEtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTg0LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU4NTpFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2NyZWF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01ODYtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01ODctLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1ODg6ICogZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZSAtIGdldCBhIGhhbmRsZSBmcm9tIGEgc3luY29ialxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTg5LSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU5Mi0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTkzOiAqIEV4cG9ydHMgYSBzeW5jIG9iamVjdCBjcmVhdGVkIHdpdGggZHJtX3N5bmNvYmpfY3JlYXRlKCkgYXMgYSBoYW5kbGUgb25cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU5NC0gKiBAZmlsZV9wcml2YXRlIHRvIHVzZXJzcGFjZS5cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01OTctICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1OTg6aW50IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1OTk6XHRcdFx0ICAgc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1MzIgKmhhbmRsZSlcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYwMC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjAzLVx0LyogdGFrZSBhIHJlZmVyZW5jZSB0byBwdXQgaW4gdGhlIHhhcnJheSAqL1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjA0Olx0ZHJtX3N5bmNvYmpfZ2V0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjA1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYwOC1cdGlmIChyZXQpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MDk6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYxMC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTItfVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjEzOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTQtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MTU6c3RhdGljIGludCBkcm1fc3luY29ial9jcmVhdGVfYXNfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjE2LVx0XHRcdFx0XHR1MzIgKmhhbmRsZSwgdWludDMyX3QgZmxhZ3MpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjE4LVx0aW50IHJldDtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYxOTpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYyMC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYyMTpcdHJldCA9IGRybV9zeW5jb2JqX2NyZWF0ZShcdTAwMjZzeW5jb2JqLCBmbGFncywgTlVMTCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYyNC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYyNTpcdHJldCA9IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoZmlsZV9wcml2YXRlLCBzeW5jb2JqLCBoYW5kbGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjI2Olx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjI3LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MjktXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MzA6c3RhdGljIGludCBkcm1fc3luY29ial9kZXN0cm95KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjMxLVx0XHRcdCAgICAgICB1MzIgaGFuZGxlKVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjMyLXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYzMzpcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYzNC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MzgtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2Mzk6XHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDAtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDItXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDM6c3RhdGljIGludCBkcm1fc3luY29ial9maWxlX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDQte1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjQ1Olx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDYtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDc6XHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NDgtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTAtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHJtX3N5bmNvYmpfZmlsZV9mb3BzID0ge1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjUyOlx0LnJlbGVhc2UgPSBkcm1fc3luY29ial9maWxlX3JlbGVhc2UsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTMtfTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTUtLyoqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NTY6ICogZHJtX3N5bmNvYmpfZ2V0X2ZkIC0gZ2V0IGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYSBzeW5jb2JqXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTctICogQHN5bmNvYmo6IFN5bmMgb2JqZWN0IHRvIGV4cG9ydFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY1OS0gKlxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjYwOiAqIEV4cG9ydHMgYSBzeW5jIG9iamVjdCBjcmVhdGVkIHdpdGggZHJtX3N5bmNvYmpfY3JlYXRlKCkgYXMgYSBmaWxlIGRlc2NyaXB0b3IuXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NjEtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NjMtICovXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NjQ6aW50IGRybV9zeW5jb2JqX2dldF9mZChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIGludCAqcF9mZClcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY2NS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjczLVx0ZmlsZSA9IGFub25faW5vZGVfZ2V0ZmlsZShcJiMzNDtzeW5jb2JqX2ZpbGVcJiMzNDssXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NzQ6XHRcdFx0XHQgIFx1MDAyNmRybV9zeW5jb2JqX2ZpbGVfZm9wcyxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY3NS1cdFx0XHRcdCAgc3luY29iaiwgMCk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjgwLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjgxOlx0ZHJtX3N5bmNvYmpfZ2V0KHN5bmNvYmopO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjgyLVx0ZmRfaW5zdGFsbChmZCwgZmlsZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjg2LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY4NzpFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2dldF9mZCk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA5MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIGNoYW5nZXMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnkgb2YgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgRGVlcCBpbnRvIFN5bmNvYmogYW5kIEV2ZW50ZmQqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGNoYW5nZWQgaW4gYGRybV9zeW5jb2JqLmNgIGFuZCBgZnMvZXZlbnRmZC5jYC4gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoaXMsIGdpdmVuIG15IGV4cGVydGlzZSwgaXMgdG8gYWJzb3JiIHRoZSBjb21wbGV0ZSBtb2RpZmllZCBzZWN0aW9ucyBvZiAqYm90aCogZmlsZXMuIFNraW1taW5nIHdvbiYjMzk7dCBjdXQgaXQgaGVyZS4gSSBuZWVkIHRoZSBmdWxsIGNvbnRleHQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBtb2RpZmljYXRpb25zLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBjaGFuZ2VzIGluIGNvcmUgbG9naWMsIGRhdGEgc3RydWN0dXJlcywgb3IgaW50ZXJmYWNlIGNhbGxzLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGltcGFjdCwgaW50ZWdyYXRpb24gYW5kIGFueSBwb3NzaWJsZSBvcHRpbWl6YXRpb24gdGhhdCBtYXkgYmUgYXZhaWxhYmxlLiBUaGlzIGlzIGhvdyBJIGJlc3QgZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIHdvcmsgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDYwOlx0XG4xNDYxOlx0aW50XG4xNDYyOlx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuMTQ2MzpcdFx0XHRcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNDY0Olx0e1xuMTQ2NTpcdFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDtcbjE0NjY6XHRcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcbjE0Njc6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcbjE0Njg6XHRcdHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5O1xuMTQ2OTpcdFx0aW50IHJldDtcbjE0NzA6XHRcbjE0NzE6XHRcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcbjE0NzI6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuMTQ3MzpcdFxuMTQ3NDpcdFx0aWYgKGFyZ3MtXHUwMDNlZmxhZ3MgXHUwMDI2IH5EUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQVZBSUxBQkxFKVxuMTQ3NTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0NzY6XHRcbjE0Nzc6XHRcdGlmIChhcmdzLVx1MDAzZXBhZClcbjE0Nzg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDc5Olx0XG4xNDgwOlx0XHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXHUwMDNlaGFuZGxlKTtcbjE0ODE6XHRcdGlmICghc3luY29iailcbjE0ODI6XHRcdFx0cmV0dXJuIC1FTk9FTlQ7XG4xNDgzOlx0XG4xNDg0Olx0XHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbjE0ODU6XHRcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuMTQ4NjpcdFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4xNDg3Olx0XHRcdGV2X2ZkX2N0eCA9IE5VTEw7XG4xNDg4Olx0XHRcdGdvdG8gZXJyX2ZkZ2V0O1xuMTQ4OTpcdFx0fVxuMTQ5MDpcdFxuMTQ5MTpcdFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuMTQ5MjpcdFx0aWYgKCFlbnRyeSkge1xuMTQ5MzpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTQ5NDpcdFx0XHRnb3RvIGVycl9mZGdldDtcbjE0OTU6XHRcdH1cbjE0OTY6XHRcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuMTQ5NzpcdFx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbjE0OTg6XHRcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbjE0OTk6XHRcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbjE1MDA6XHRcbjE1MDE6XHRcdGRybV9zeW5jb2JqX2FkZF9ldmVudGZkKHN5bmNvYmosIGVudHJ5KTtcbjE1MDI6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDM6XHRcbjE1MDQ6XHRcdHJldHVybiAwO1xuMTUwNTpcdFxuMTUwNjpcdGVycl9mZGdldDpcbjE1MDc6XHRcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbjE1MDg6XHRcdHJldHVybiByZXQ7XG4xNTA5Olx0fVxuMTUxMDpcdFxuMTUxMTpcdGludFxuMTUxMjpcdGRybV9zeW5jb2JqX3Jlc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4xNTEzOlx0XHRcdFx0c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXG4xNTE0Olx0e1xuMTUxNTpcdFx0c3RydWN0IGRybV9zeW5jb2JqX2FycmF5ICphcmdzID0gZGF0YTtcbjE1MTY6XHRcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzO1xuMTUxNzpcdFx0dWludDMyX3QgaTtcbjE1MTg6XHRcdGludCByZXQ7XG4xNTE5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxODQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgRXZlbnRmZCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhpcyBgZXZlbnRmZGAgaXNzdWUuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgaGVhZGVyIGZpbGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgYGV2ZW50ZmRgIGlzICphY3R1YWxseSogaW1wbGVtZW50ZWQuIFRoZSB0eXBpY2FsIGdvLXRvIGxvY2F0aW9ucyBmb3IgdGhhdCBzb3J0IG9mIGFuYWx5c2lzIGFyZSBgZnMvZXZlbnRmZC5jYCDigJMgd2hpY2ggc2hvdWxkIGNvbnRhaW4gdGhlIGZpbGUgc3lzdGVtIGxldmVsIGRyaXZlciBjb2RlIOKAkyBhbmQsIG9mIGNvdXJzZSwgdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUsIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgZm9yIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucy4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB1c2Vyc3BhY2UgYW5kIHRoZSBrZXJuZWwsIHNvIHRoaXMgaW5pdGlhbCBjcm9zcy1jaGVjayBzaG91bGQgcHJvdmlkZSBhIHNvbGlkIGJhc2lzIGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V2ZW50ZmQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHR7XG4gIDkxOlx0XHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZXZlbnRmZF9jdHgsIGtyZWYpO1xuICA5MjpcdFxuICA5MzpcdFx0ZXZlbnRmZF9mcmVlX2N0eChjdHgpO1xuICA5NDpcdH1cbiAgOTU6XHRcbiAgOTY6XHQvKipcbiAgOTc6XHQgKiBldmVudGZkX2N0eF9wdXQgLSBSZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxuICA5ODpcdCAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXG4gIDk5Olx0ICpcbiAxMDA6XHQgKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxuIDEwMTpcdCAqIHdpdGggZXZlbnRmZF9jdHhfZmRnZXQoKSBvciBldmVudGZkX2N0eF9maWxlZ2V0KCkuXG4gMTAyOlx0ICovXG4gMTAzOlx0dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gMTA0Olx0e1xuIDEwNTpcdFx0aWYgKCFjdHgpXG4gMTA2Olx0XHRcdHJldHVybjtcbiAxMDc6XHRcbiAxMDg6XHRcdGtyZWZfcHV0KFx1MDAyNmN0eC1cdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xuIDEwOTpcdH1cbiAxMTA6XHRFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpO1xuIDExMTpcdFxuIDExMjpcdHN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIDExMzpcdHtcbiAxMTQ6XHRcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG4gMTE1Olx0XG4gMTE2Olx0XHR3YWtlX3VwX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExIVVApO1xuIDExNzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG4gMTE4Olx0XHRyZXR1cm4gMDtcbiAxMTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5ODQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBldmVudGZkLmhgIERldGFpbHMqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUga2VybmVsJiMzOTtzIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgZmlsZS4gSSBuZWVkIGEgcmVmcmVzaGVyIG9uIHRoZSBpbnRyaWNhY2llcyBvZiBgZXZlbnRmZGAuIEkga25vdyB0aGUgYmFzaWMgY29uY2VwdCDigJMgaXQmIzM5O3MgYSBsaWdodHdlaWdodCBtZWNoYW5pc20gZm9yIHNpZ25hbGluZyBldmVudHMgYmV0d2VlbiB1c2Vyc3BhY2UgYW5kIHRoZSBrZXJuZWwsIG9yIGJldHdlZW4ga2VybmVsIHRocmVhZHMsIHVzaW5nIGEgZmlsZSBkZXNjcmlwdG9yLiBCdXQgSSB3YW50IHRvIG5haWwgZG93biB0aGUgc3BlY2lmaWNzLCBwYXJ0aWN1bGFybHkgYXJvdW5kIGl0cyBhdG9taWMgb3BlcmF0aW9ucyBhbmQgaG93IGl0IGhhbmRsZXMgZGlmZmVyZW50IHNpZ25hbGluZyBtb2Rlcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgZWRnZSBjYXNlcyBsdXJraW5nIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoYXQgbWlnaHQgaW1wYWN0IHBlcmZvcm1hbmNlIG9yIHJlbGlhYmlsaXR5IGluIGNvbXBsZXgsIGhpZ2gtY29uY3VycmVuY3kgc2NlbmFyaW9zLiBJIHJlY2FsbCBzb21lIGRpc2N1c3Npb25zIGFib3V0IHRoZSBwb3RlbnRpYWwgb3ZlcmhlYWQgY29tcGFyZWQgdG8gb3RoZXIgc2lnbmFsaW5nIG1ldGhvZHMsIHNvIEnigJlsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBsb2NrLWZyZWUgYXNwZWN0cyBvZiB0aGUgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IGFueSByZWNlbnQgY2hhbmdlcyBvciBwYXRjaGVzIHRvIHRoYXQgaGVhZGVyLCBvciBzdXJyb3VuZGluZyBjb2RlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBrbm93bGVkZ2Ugb2YgdGhlIG1lbW9yeSBiYXJyaWVycyB1c2VkIGFuZCBob3cgdGhlc2UgcHJvdGVjdCB0aGUgc2hhcmVkIGNvdW50ZXIgYW5kIGVuc3VyZSB2aXNpYmlsaXR5IG9mIGNoYW5nZXMuIEFueSByZWNlbnQgb3B0aW1pemF0aW9ucyB0aGF0IGFpbSB0byByZWR1Y2UgbGF0ZW5jeSBvciBpbXByb3ZlIHBlcmZvcm1hbmNlIGFyZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0IHRvIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZXZlbnRmZC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA3NTpcdFxuICA3NjpcdHN0YXRpYyBpbmxpbmUgYm9vbCBldmVudGZkX3NpZ25hbF9hbGxvd2VkKHZvaWQpXG4gIDc3Olx0e1xuICA3ODpcdFx0cmV0dXJuIHRydWU7XG4gIDc5Olx0fVxuICA4MDpcdFxuICA4MTpcdHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX2N0eF9kb19yZWFkKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3U2NCAqY250KVxuICA4MjpcdHtcbiAgODM6XHRcbiAgODQ6XHR9XG4gIDg1Olx0XG4gIDg2Olx0I2VuZGlmXG4gIDg3Olx0XG4gIDg4Olx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuICA4OTpcdHtcbiAgOTA6XHRcdGV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTtcbiAgOTE6XHR9XG4gIDkyOlx0XG4gIDkzOlx0REVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXG4gIDk0Olx0XG4gIDk1Olx0I2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cbiAgOTY6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOTcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA3MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgVGhpcyBQYXRjaCBTZXJpZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGEgcGF0Y2ggc2VyaWVzIHRoYXQgaW50cm9kdWNlcyBhIHNpbXBsZSBudWxsIGNoZWNrIChgaWYgKCFjdHgpIHJldHVybjtgKSB0byBgZXZlbnRmZF9jdHhfcHV0KClgLCBhZGRzIGEgYERFRklORV9GUkVFYCBtYWNybyBmb3IgZXZlbnRmZCBjb250ZXh0cywgYW5kIHJlZmFjdG9ycyByZXNvdXJjZSBtYW5hZ2VtZW50IGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKClgIHRvIHVzZSB0aGF0IG5ldyBtYWNybyBpbnN0ZWFkIG9mIG1hbnVhbCBlcnJvciBoYW5kbGluZy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlLiBBYnNvbHV0ZWx5ISBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgY2FsbGVkIHRocm91Z2ggdGhlIGBEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEYCBpb2N0bCwgYW5kIHN5emthbGxlciBzdXBwb3J0cyBEUk0gaW9jdGxzLCBpbmNsdWRpbmcgdGhvc2UgdXNlZCBieSB2aXJ0dWFsIGRyaXZlcnMgbGlrZSBgdmttc2AgYW5kIG90aGVycy4gVGhpcyBtYWtlcyBpdCBhY2Nlc3NpYmxlLiBBbHNvLCBgZXZlbnRmZF9jdHhfcHV0YCBpcyBwYXJ0IG9mIGNvcmUga2VybmVsLCBLVk0sIHZmaW8sIHZob3N0LCBkcm0sIGlvX3VyaW5nLCBhbmQgb3RoZXJzLCBzbyBpdCYjMzk7cyB3aWRlbHkgdXNlZC4KCk5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTZWN0aW9uIDEgc3BlY2lmaWNhbGx5IHdhcm5zIHVzICpub3QqIHRvIGJsaW5kbHkgdHJ1c3QgY2xhaW1zIG9mICYjMzQ7bm8gZnVuY3Rpb25hbCBjaGFuZ2UmIzM0OyBvciAmIzM0O3JlZmFjdG9yaW5nLiYjMzQ7IFRoZXkgaGlnaGxpZ2h0IHRoYXQgZXZlbiByZWZhY3RvcmluZ3MgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncy4gU2VjdGlvbiAzIHJlaW5mb3JjZXMgdGhpcyBieSBzdGF0aW5nIHRoYXQgYW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGNvZGUsIGluY2x1ZGluZyByZWZhY3RvcmluZ3MsIHJlcXVpcmVzIGZ1enppbmcuIFRoZSBwYXRjaCAqZG9lcyogdG91Y2ggcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgdGhlcmVmb3JlIEkgdGhpbmsgdGhlIGV2YWx1YXRpb24gc2hvdWxkIGJlIFdvcnRoRnV6emluZyA9IHRydWUuCgpOZXh0LCBJIG5lZWQgdG8gZGVmaW5lIHRoZSBgRm9jdXNTeW1ib2xzYC4gQ2xlYXJseSwgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGlzIGRpcmVjdGx5IG1vZGlmaWVkLCBtYWtpbmcgaXQgYSB0YXJnZXQuIFRoZSBgZXZlbnRmZF9jdHhfcHV0YCBpcyBkaXJlY3RseSBtb2RpZmllZCwgdG9vLiBJIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIHRoYXQgb25lLCB0aG91Z2guCgpTZWN0aW9uIDQgd2FybnMgYWdhaW5zdCBsaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbS4gSXMgYGV2ZW50ZmRfY3R4X3B1dGAgdWJpcXVpdG91cywgb3IgZm9jdXNlZD8gVGhlIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCBmdW5jdGlvbiBpcyBzcGVjaWZpYyB0byBhIERSTSBpb2N0bCwgc28gaXQmIzM5O3MgYSBkZWZpbml0ZSBmb2N1cyBzeW1ib2wuIGBldmVudGZkX2N0eF9wdXRgIHJlbGVhc2VzIGV2ZW50ZmQgY29udGV4dHMsIGJ1dCBpcyBub3cgbW9kaWZpZWQgdG8gaGFuZGxlIG51bGwgYGN0eGAuIFNpbmNlIHRoaXMgaXMgYSBzcGVjaWZpYyBtb2RpZmljYXRpb24sIEkgdGhpbmsgSSYjMzk7bGwgaW5jbHVkZSBpdCBpbiB0aGUgZm9jdXMgc3ltYm9scy4KCkkmIzM5O20gZ29pbmcgdG8gZGV0ZXJtaW5lIGBldmVudGZkX2N0eF9wdXRgIGNhbGxlcnMgaW4gdGhlIGtlcm5lbCB0byBtYWtlIHN1cmUgdGhhdCBkZWNpc2lvbiBpcyBjb3JyZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXGJldmVudGZkX2N0eF9wdXRcXGImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUxNiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI3MjU9dm9pZCBrdm1faHZfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3MzEtXHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2aHYtXHUwMDNlY29ubl90b19ldnQsIGV2ZW50ZmQsIGkpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjczMjpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTI3MzMtXHRpZHJfZGVzdHJveShcdTAwMjZodi1cdTAwM2Vjb25uX3RvX2V2dCk7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI3MzY9c3RhdGljIGludCBrdm1faHZfZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgY29ubl9pZCwgaW50IGZkKVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzU1LVx0XHRyZXQgPSAtRUVYSVNUO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jOjI3NTY6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjc1Ny1cdHJldHVybiByZXQ7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTI3NjA9c3RhdGljIGludCBrdm1faHZfZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBjb25uX2lkKVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzcyLVx0c3luY2hyb25pemVfc3JjdShcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Mjc3MzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzc0LVx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTIxMzQ9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjE5OS1cdGlmIChldmVudGZkKVxuYXJjaC94ODYva3ZtL3hlbi5jOjIyMDA6XHRcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjAxLW91dF9ub2V2ZW50ZmQ6XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTIyMDY9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCB1MzIgcG9ydClcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjIxOC1cdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjIxOTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTIyMjAtXHRrZnJlZShldnRjaG5mZCk7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTIyMjQ9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfcmVzZXQoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0yMjU3LVx0XHRpZiAoIWV2dGNobmZkLVx1MDAzZWRlbGl2ZXIucG9ydC5wb3J0KVxuYXJjaC94ODYva3ZtL3hlbi5jOjIyNTg6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTIyNTktXHRcdGtmcmVlKGV2dGNobmZkKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjM1Nj12b2lkIGt2bV94ZW5fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTIzNjQtXHRcdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjM2NTpcdFx0XHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMjM2Ni1cdFx0a2ZyZWUoZXZ0Y2huZmQpO1xuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmM9NDYwPXN0YXRpYyB2b2lkIGhwcml2X3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTUzNi1cdGlmIChocHJpdi1cdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkKVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYzo1Mzc6XHRcdGV2ZW50ZmRfY3R4X3B1dChocHJpdi1cdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmMtNTM4LVxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jPTc5Mz1zdGF0aWMgaW50IGV2ZW50ZmRfdW5yZWdpc3RlcihzdHJ1Y3QgaGxfZnByaXYgKmhwcml2LCBzdHJ1Y3QgaGxfaW5mb19hcmdzICphcmdzKVxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jLTgwMC1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jOjgwMTpcdGV2ZW50ZmRfY3R4X3B1dChocHJpdi1cdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jLTgwMi1cdGhwcml2LVx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQgPSBOVUxMO1xuLS1cbmRyaXZlcnMvZnBnYS9kZmwuYz0xODY5PXN0YXRpYyBpbnQgZG9fc2V0X2lycV90cmlnZ2VyKHN0cnVjdCBkZmxfZmVhdHVyZSAqZmVhdHVyZSwgdW5zaWduZWQgaW50IGlkeCxcbi0tXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTg4MC1cdFx0a2ZyZWUoZmVhdHVyZS1cdTAwM2VpcnFfY3R4W2lkeF0ubmFtZSk7XG5kcml2ZXJzL2ZwZ2EvZGZsLmM6MTg4MTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGZlYXR1cmUtXHUwMDNlaXJxX2N0eFtpZHhdLnRyaWdnZXIpO1xuZHJpdmVycy9mcGdhL2RmbC5jLTE4ODItXHRcdGZlYXR1cmUtXHUwMDNlaXJxX2N0eFtpZHhdLnRyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvZnBnYS9kZmwuYy0xOTA2LVxuZHJpdmVycy9mcGdhL2RmbC5jOjE5MDc6XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTkwOC1mcmVlX25hbWU6XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MzAzPXN5bmNvYmpfZXZlbnRmZF9lbnRyeV9mcmVlKHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5KVxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzA0LXtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjMwNTpcdGV2ZW50ZmRfY3R4X3B1dChlbnRyeS1cdTAwM2Vldl9mZF9jdHgpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzA2LVx0ZG1hX2ZlbmNlX3B1dChlbnRyeS1cdTAwM2VmZW5jZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmM9NjkwPXN0YXRpYyB2b2lkIGludGVsX3ZncHVfcmVsZWFzZV9tc2lfZXZlbnRmZF9jdHgoc3RydWN0IGludGVsX3ZncHUgKnZncHUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMtNjk1LVx0aWYgKHRyaWdnZXIpIHtcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jOjY5NjpcdFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMtNjk3LVx0XHR2Z3B1LVx1MDAzZW1zaV90cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTI1ND1zdGF0aWMgdm9pZCBtc2h2X2lycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTI2Ny1cdFx0bXNodl9pcnFmZF9yZXNhbXBsZXJfc2h1dGRvd24oaXJxZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzoyNjg6XHRcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cdTAwM2VpcnFmZF9yZXNhbXBsZWZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjY5LVx0fVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjczLVx0ICovXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjI3NDpcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cdTAwM2VpcnFmZF9ldmVudGZkX2N0eCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTI3NS1cdGtmcmVlKGlycWZkKTtcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTM5Mz1zdGF0aWMgaW50IG1zaHZfaXJxZmRfYXNzaWduKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MjktXHRpZiAocmVzYW1wbGVmZCBcdTAwMjZcdTAwMjYgIUlTX0VSUihyZXNhbXBsZWZkKSlcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NTMwOlx0XHRldmVudGZkX2N0eF9wdXQocmVzYW1wbGVmZCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTUzMS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTMyLVx0aWYgKGV2ZW50ZmQgXHUwMDI2XHUwMDI2ICFJU19FUlIoZXZlbnRmZCkpXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjUzMzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01MzQtXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz01NDM9c3RhdGljIGludCBtc2h2X2lycWZkX2RlYXNzaWduKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01NjItXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjU2MzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTY0LVxuLS1cbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NjMzPXN0YXRpYyB2b2lkIGlvZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBtc2h2X2lvZXZlbnRmZCAqcCwgdTY0IHBhcnRpdGlvbl9pZClcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTYzNi1cdFx0bXNodl91bnJlZ2lzdGVyX2Rvb3JiZWxsKHBhcnRpdGlvbl9pZCwgcC1cdTAwM2Vpb3ZudGZkX2Rvb3JiZWxsX2lkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NjM3Olx0ZXZlbnRmZF9jdHhfcHV0KHAtXHUwMDNlaW92bnRmZF9ldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNjM4LVx0a2ZyZWUocCk7XG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz02NzM9c3RhdGljIGludCBtc2h2X2Fzc2lnbl9pb2V2ZW50ZmQoc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTc2Ny1mYWlsOlxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo3Njg6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTc2OS1cbi0tXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTc3Mz1zdGF0aWMgaW50IG1zaHZfZGVhc3NpZ25faW9ldmVudGZkKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXG4tLVxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy04MTQtXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjgxNTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtODE2LVxuLS1cbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jPTk3Mz1zdGF0aWMgaW50IG1zaHZfdnRsX3NpbnRfaW9jdGxfc2V0X2V2ZW50ZmQoc3RydWN0IG1zaHZfdnRsX3NldF9ldmVudGZkIF9fdXNlciAqYXJnKVxuLS1cbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jLTk5NS1cdFx0c3luY2hyb25pemVfcmN1KCk7XG5kcml2ZXJzL2h2L21zaHZfdnRsX21haW4uYzo5OTY6XHRcdGV2ZW50ZmRfY3R4X3B1dChvbGRfZXZlbnRmZCk7XG5kcml2ZXJzL2h2L21zaHZfdnRsX21haW4uYy05OTctXHR9XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTIwNzI9c3RhdGljIGludCBVVkVSQlNfSEFORExFUihNTFg1X0lCX01FVEhPRF9ERVZYX1NVQlNDUklCRV9FVkVOVCkoXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIyNDktXHRcdGlmIChldmVudF9zdWItXHUwMDNlZXZlbnRmZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYzoyMjUwOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChldmVudF9zdWItXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmMtMjI1MS1cdFx0dXZlcmJzX3VvYmplY3RfcHV0KFx1MDAyNmV2ZW50X3N1Yi1cdTAwM2Vldl9maWxlLVx1MDAzZXVvYmopO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYz0yOTQwPXN0YXRpYyB2b2lkIGRldnhfZnJlZV9zdWJzY3JpcHRpb24oc3RydWN0IHJjdV9oZWFkICpyY3UpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI5NDUtXHRpZiAoZXZlbnRfc3ViLVx1MDAzZWV2ZW50ZmQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM6Mjk0NjpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50X3N1Yi1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yOTQ3LVx0dXZlcmJzX3VvYmplY3RfcHV0KFx1MDAyNmV2ZW50X3N1Yi1cdTAwM2Vldl9maWxlLVx1MDAzZXVvYmopO1xuLS1cbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYz0xOTE9c3RhdGljIHZvaWQgaXJxX2ZyZWUodm9pZCAqcHJpdmF0ZSlcbi0tXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMTk0LVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jOjE5NTpcdGV2ZW50ZmRfY3R4X3B1dChldl9jdHgpO1xuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTE5Ni19XG4tLVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jPTE5OD1zdGF0aWMgbG9uZyBhZnVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXG4tLVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTI1OS1cdFx0aWYgKHJjKVxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jOjI2MDpcdFx0XHRldmVudGZkX2N0eF9wdXQoZXZfY3R4KTtcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0yNjEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM9NDEwPXN0YXRpYyBpbnQgdmZpb19jY3dfbWRldl9zZXRfaXJxcyhzdHJ1Y3QgdmZpb19jY3dfcHJpdmF0ZSAqcHJpdmF0ZSxcbi0tXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ2MC1cdFx0XHRpZiAoKmN0eClcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmM6NDYxOlx0XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KCpjdHgpO1xuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NjItXHRcdFx0KmN0eCA9IE5VTEw7XG4tLVxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NzAtXHRcdFx0aWYgKCpjdHgpXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jOjQ3MTpcdFx0XHRcdGV2ZW50ZmRfY3R4X3B1dCgqY3R4KTtcbmRyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfb3BzLmMtNDcyLVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYz0yMTcyPXN0YXRpYyBpbnQgdmZpb19hcF9zZXRfcmVxdWVzdF9pcnEoc3RydWN0IGFwX21hdHJpeF9tZGV2ICptYXRyaXhfbWRldixcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE4Ny1cdFx0aWYgKG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIxODg6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVx1MDAzZXJlcV90cmlnZ2VyKTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTg5LVx0XHRtYXRyaXhfbWRldi1cdTAwM2VyZXFfdHJpZ2dlciA9IE5VTEw7XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIxOTUtXHRcdGlmIChtYXRyaXhfbWRldi1cdTAwM2VyZXFfdHJpZ2dlcilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMTk2Olx0XHRcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cdTAwM2VyZXFfdHJpZ2dlcik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE5Ny1cbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjIwNj1zdGF0aWMgaW50IHZmaW9fYXBfc2V0X2NmZ19jaGFuZ2VfaXJxKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjIwLVx0XHRpZiAobWF0cml4X21kZXYtXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKVxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jOjIyMjE6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KG1hdHJpeF9tZGV2LVx1MDAzZWNmZ19jaGdfdHJpZ2dlcik7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIyMi1cdFx0bWF0cml4X21kZXYtXHUwMDNlY2ZnX2NoZ190cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIyOC1cdFx0aWYgKG1hdHJpeF9tZGV2LVx1MDAzZWNmZ19jaGdfdHJpZ2dlcilcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjI5Olx0XHRcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cdTAwM2VjZmdfY2hnX3RyaWdnZXIpO1xuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jLTIyMzAtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYz0yMjg5PXN0YXRpYyB2b2lkIGZmc19kYXRhX2NsZWFyKHN0cnVjdCBmZnNfZGF0YSAqZmZzKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmMtMjMxMy1cdGlmIChmZnMtXHUwMDNlZmZzX2V2ZW50ZmQpIHtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmM6MjMxNDpcdFx0ZXZlbnRmZF9jdHhfcHV0KGZmcy1cdTAwM2VmZnNfZXZlbnRmZCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9mcy5jLTIzMTUtXHRcdGZmcy1cdTAwM2VmZnNfZXZlbnRmZCA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYz00OTY9c3RhdGljIHZvaWQgdmR1c2VfZGV2X3Jlc2V0KHN0cnVjdCB2ZHVzZV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTUzMi1cdFx0XHRpZiAodnEtXHUwMDNla2lja2ZkKVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo1MzM6XHRcdFx0XHRldmVudGZkX2N0eF9wdXQodnEtXHUwMDNla2lja2ZkKTtcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtNTM0LVx0XHRcdHZxLVx1MDAzZWtpY2tmZCA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYz0xMTk5PXN0YXRpYyBpbnQgdmR1c2Vfa2lja2ZkX3NldHVwKHN0cnVjdCB2ZHVzZV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTEyMTktXHRpZiAodnEtXHUwMDNla2lja2ZkKVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzoxMjIwOlx0XHRldmVudGZkX2N0eF9wdXQodnEtXHUwMDNla2lja2ZkKTtcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtMTIyMS1cdHZxLVx1MDAzZWtpY2tmZCA9IGN0eDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYz01OD1zdGF0aWMgaW50IHZmaW9fY2R4X21zaV9zZXRfdmVjdG9yX3NpZ25hbChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTcxLVx0XHRrZnJlZSh2ZGV2LVx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0ubmFtZSk7XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYzo3MjpcdFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXHUwMDNlY2R4X2lycXNbdmVjdG9yXS50cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTczLVx0XHR2ZGV2LVx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0udHJpZ2dlciA9IE5VTEw7XG4tLVxuZHJpdmVycy92ZmlvL2NkeC9pbnRyLmMtOTMtXHRcdGtmcmVlKHZkZXYtXHUwMDNlY2R4X2lycXNbdmVjdG9yXS5uYW1lKTtcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjk0Olx0XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy05NS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYz02MT1zdGF0aWMgaW50IHZmaW9fc2V0X3RyaWdnZXIoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy03Mi1cdFx0a2ZyZWUoaXJxLVx1MDAzZW5hbWUpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmM6NzM6XHRcdGV2ZW50ZmRfY3R4X3B1dChpcnEtXHUwMDNldHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy03NC1cdFx0aXJxLVx1MDAzZXRyaWdnZXIgPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTk2LVx0XHRrZnJlZShpcnEtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYzo5NzpcdFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmMtOTgtXHRcdGlycS1cdTAwM2V0cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00ND1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9ldmVudGZkX3JjdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqcmN1KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ4LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NDk6XHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZC1cdTAwM2VjdHgpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNTAtXHRrZnJlZShldmVudGZkKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00MTM9c3RhdGljIGludCB2ZmlvX3BjaV9jb3JlX3BtX2VudHJ5X3dpdGhfd2FrZXVwKFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQzOC1cdGlmIChyZXQpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo0Mzk6XHRcdGV2ZW50ZmRfY3R4X3B1dChlZmRjdHgpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDQwLVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTQ0ND1zdGF0aWMgdm9pZCBfX3ZmaW9fcGNpX3J1bnRpbWVfcG1fZXhpdChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDUwLVx0XHRpZiAodmRldi1cdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4KSB7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzo0NTE6XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXHUwMDNlcG1fd2FrZV9ldmVudGZkX2N0eCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NTItXHRcdFx0dmRldi1cdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4ID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9MzI0PXN0YXRpYyBpbnQgdmZpb19pbnR4X3NldF9zaWduYWwoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNDItXHRcdHZmaW9fdmlycWZkX2ZsdXNoX3RocmVhZChcdTAwMjZjdHgtXHUwMDNldW5tYXNrKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzozNDM6XHRcdGV2ZW50ZmRfY3R4X3B1dChvbGQpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTM0NC1cdH1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9MzQ5PXN0YXRpYyB2b2lkIHZmaW9faW50eF9kaXNhYmxlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzYyLVx0XHRpZiAoY3R4LVx1MDAzZXRyaWdnZXIpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6MzYzOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgtXHUwMDNldHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzY0LVx0XHRrZnJlZShjdHgtXHUwMDNlbmFtZSk7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTQ0Nz1zdGF0aWMgaW50IHZmaW9fbXNpX3NldF92ZWN0b3Jfc2lnbmFsKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNDY1LVx0XHRrZnJlZShjdHgtXHUwMDNlbmFtZSk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6NDY2Olx0XHRldmVudGZkX2N0eF9wdXQoY3R4LVx1MDAzZXRyaWdnZXIpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTQ2Ny1cdFx0dmZpb19pcnFfY3R4X2ZyZWUodmRldiwgY3R4LCB2ZWN0b3IpO1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy01MjUtb3V0X3B1dF9ldmVudGZkX2N0eDpcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo1MjY6XHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNTI3LW91dF9mcmVlX25hbWU6XG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTYzND1zdGF0aWMgaW50IHZmaW9fcGNpX3NldF9pbnR4X3RyaWdnZXIoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy02NjItXHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHRyaWdnZXIpXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6NjYzOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy02NjQtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTczND1zdGF0aWMgaW50IHZmaW9fcGNpX3NldF9jdHhfdHJpZ2dlcl9zaW5nbGUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy03OTMtXHRcdFx0aWYgKHJldClcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo3OTQ6XHRcdFx0XHRldmVudGZkX2N0eF9wdXQoZWZkY3R4KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy03OTUtXG4tLVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM9MTgyPXN0YXRpYyBpbnQgdmZpb19zZXRfdHJpZ2dlcihzdHJ1Y3QgdmZpb19wbGF0Zm9ybV9kZXZpY2UgKnZkZXYsIGludCBpbmRleCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xODktXHRcdGRpc2FibGVfaXJxKGlycS1cdTAwM2Vod2lycSk7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYzoxOTA6XHRcdGV2ZW50ZmRfY3R4X3B1dChpcnEtXHUwMDNldHJpZ2dlcik7XG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xOTEtXHRcdGlycS1cdTAwM2V0cmlnZ2VyID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYz0zNTE9dm9pZCB2ZmlvX3BsYXRmb3JtX2lycV9jbGVhbnVwKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0zNjAtXHRcdFx0aWYgKHZkZXYtXHUwMDNlaXJxc1tpXS50cmlnZ2VyKVxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzYxOlx0XHRcdFx0ZXZlbnRmZF9jdHhfcHV0KHZkZXYtXHUwMDNlaXJxc1tpXS50cmlnZ2VyKTtcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM2Mi1cdFx0XHRrZnJlZSh2ZGV2LVx1MDAzZWlycXNbaV0ubmFtZSk7XG4tLVxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jPTg1PXN0YXRpYyB2b2lkIHZpcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jLTkxLVx0Zmx1c2hfd29yayhcdTAwMjZ2aXJxZmQtXHUwMDNlaW5qZWN0KTtcbmRyaXZlcnMvdmZpby92aXJxZmQuYzo5MjpcdGV2ZW50ZmRfY3R4X3B1dCh2aXJxZmQtXHUwMDNlZXZlbnRmZCk7XG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtOTMtXG4tLVxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jPTExMT1pbnQgdmZpb192aXJxZmRfZW5hYmxlKHZvaWQgKm9wYXF1ZSxcbi0tXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtMTg0LWVycl9idXN5OlxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jOjE4NTpcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZHJpdmVycy92ZmlvL3ZpcnFmZC5jLTE4Ni1lcnJfZmQ6XG4tLVxuZHJpdmVycy92aG9zdC92ZHBhLmM9NTE5PXN0YXRpYyB2b2lkIHZob3N0X3ZkcGFfY29uZmlnX3B1dChzdHJ1Y3Qgdmhvc3RfdmRwYSAqdilcbi0tXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01MjEtXHRpZiAodi1cdTAwM2Vjb25maWdfY3R4KSB7XG5kcml2ZXJzL3Zob3N0L3ZkcGEuYzo1MjI6XHRcdGV2ZW50ZmRfY3R4X3B1dCh2LVx1MDAzZWNvbmZpZ19jdHgpO1xuZHJpdmVycy92aG9zdC92ZHBhLmMtNTIzLVx0XHR2LVx1MDAzZWNvbmZpZ19jdHggPSBOVUxMO1xuLS1cbmRyaXZlcnMvdmhvc3QvdmRwYS5jPTUyNz1zdGF0aWMgbG9uZyB2aG9zdF92ZHBhX3NldF9jb25maWdfY2FsbChzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiwgdTMyIF9fdXNlciAqYXJncClcbi0tXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy01NDEtXHRpZiAoIUlTX0VSUl9PUl9OVUxMKGN0eCkpXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYzo1NDI6XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZHJpdmVycy92aG9zdC92ZHBhLmMtNTQzLVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0xMjAzPXZvaWQgdmhvc3RfZGV2X2NsZWFudXAoc3RydWN0IHZob3N0X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjA4LVx0XHRpZiAoZGV2LVx1MDAzZXZxc1tpXS1cdTAwM2VlcnJvcl9jdHgpXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIwOTpcdFx0XHRldmVudGZkX2N0eF9wdXQoZGV2LVx1MDAzZXZxc1tpXS1cdTAwM2VlcnJvcl9jdHgpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTAtXHRcdGlmIChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWtpY2spXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTItXHRcdGlmIChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWNhbGxfY3R4LmN0eClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjEzOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChkZXYtXHUwMDNldnFzW2ldLVx1MDAzZWNhbGxfY3R4LmN0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxNC1cdFx0dmhvc3RfdnFfcmVzZXQoZGV2LCBkZXYtXHUwMDNldnFzW2ldKTtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxNy1cdGlmIChkZXYtXHUwMDNlbG9nX2N0eClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoxMjE4Olx0XHRldmVudGZkX2N0eF9wdXQoZGV2LVx1MDAzZWxvZ19jdHgpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTktXHRkZXYtXHUwMDNlbG9nX2N0eCA9IE5VTEw7XG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTIxNTA9bG9uZyB2aG9zdF92cmluZ19pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHZvaWQgX191c2VyICphcmdwKVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMjc0LVx0aWYgKCFJU19FUlJfT1JfTlVMTChjdHgpKVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjIyNzU6XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzYtXHRpZiAoZmlsZXApXG4tLVxuZHJpdmVycy92aG9zdC92aG9zdC5jPTIzMjE9bG9uZyB2aG9zdF9kZXZfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjQxOS1cdFx0aWYgKGN0eClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyNDIwOlx0XHRcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZHJpdmVycy92aG9zdC92aG9zdC5jLTI0MjEtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jPTQzPXN0YXRpYyB2b2lkIGFjcm5faW9ldmVudGZkX3NodXRkb3duKHN0cnVjdCBhY3JuX3ZtICp2bSwgc3RydWN0IGhzbV9pb2V2ZW50ZmQgKnApXG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtNDYtXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYzo0NzpcdGV2ZW50ZmRfY3R4X3B1dChwLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtNDgtXHRsaXN0X2RlbChcdTAwMjZwLVx1MDAzZWxpc3QpO1xuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jPTc2PXN0YXRpYyBpbnQgYWNybl9pb2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBhY3JuX3ZtICp2bSxcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy0xNDItZmFpbDpcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjE0MzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE0NC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9MTQ3PXN0YXRpYyBpbnQgYWNybl9pb2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE2OC1cbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjE2OTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE3MC1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM9NjA9c3RhdGljIHZvaWQgaHNtX2lycWZkX3NodXRkb3duX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtNzItXHRldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShpcnFmZC1cdTAwM2VldmVudGZkLCBcdTAwMjZpcnFmZC1cdTAwM2V3YWl0LCBcdTAwMjZjbnQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzo3MzpcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtNzQtXHRrZnJlZShpcnFmZCk7XG4tLVxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz0xMTE9c3RhdGljIGludCBhY3JuX2lycWZkX2Fzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sIHN0cnVjdCBhY3JuX2lycWZkICphcmdzKVxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTcwLWZhaWw6XG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jOjE3MTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTcyLW91dDpcbi0tXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jPTE3Nz1zdGF0aWMgaW50IGFjcm5faXJxZmRfZGVhc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTk1LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZtLVx1MDAzZWlycWZkc19sb2NrKTtcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM6MTk2Olx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYy0xOTctXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTkxMj1zdGF0aWMgdm9pZCBpcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTkyMS1cdGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKGtpcnFmZC1cdTAwM2VldmVudGZkLCBcdTAwMjZraXJxZmQtXHUwMDNld2FpdCwgXHUwMDI2Y250KTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzo5MjI6XHRldmVudGZkX2N0eF9wdXQoa2lycWZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTkyMy1cdGtmcmVlKGtpcnFmZCk7XG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTk3Nj1zdGF0aWMgaW50IHByaXZjbWRfaXJxZmRfYXNzaWduKHN0cnVjdCBwcml2Y21kX2lycWZkICppcnFmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA0NC1lcnJvcl9ldmVudGZkOlxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjEwNDU6XHRldmVudGZkX2N0eF9wdXQoa2lycWZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEwNDYtXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTEwNTI9c3RhdGljIGludCBwcml2Y21kX2lycWZkX2RlYXNzaWduKHN0cnVjdCBwcml2Y21kX2lycWZkICppcnFmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA3Mi1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMDczOlx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEwNzQtXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTEzNDY9c3RhdGljIHZvaWQgaW9ldmVudGZkX2ZyZWUoc3RydWN0IHByaXZjbWRfa2VybmVsX2lvZXZlbnRmZCAqa2lvZXZlbnRmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTM0OC1cdGxpc3RfZGVsKFx1MDAyNmtpb2V2ZW50ZmQtXHUwMDNlbGlzdCk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTM0OTpcdGV2ZW50ZmRfY3R4X3B1dChraW9ldmVudGZkLVx1MDAzZWV2ZW50ZmQpO1xuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEzNTAtXHRrZnJlZShraW9ldmVudGZkKTtcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTM1Mz1zdGF0aWMgaW50IHByaXZjbWRfaW9ldmVudGZkX2Fzc2lnbihzdHJ1Y3QgcHJpdmNtZF9pb2V2ZW50ZmQgKmlvZXZlbnRmZClcbi0tXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTQwMy1lcnJvcl9ldmVudGZkOlxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjE0MDQ6XHRldmVudGZkX2N0eF9wdXQoa2lvZXZlbnRmZC1cdTAwM2VldmVudGZkKTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xNDA1LVxuLS1cbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xNDExPXN0YXRpYyBpbnQgcHJpdmNtZF9pb2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IHByaXZjbWRfaW9ldmVudGZkICppb2V2ZW50ZmQpXG4tLVxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0NTQtXHRtdXRleF91bmxvY2soXHUwMDI2aW9yZXFfbG9jayk7XG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTQ1NTpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbmRyaXZlcnMveGVuL3ByaXZjbWQuYy0xNDU2LVxuLS1cbmZzL2Fpby5jPTExNTY9c3RhdGljIGlubGluZSB2b2lkIGlvY2JfZGVzdHJveShzdHJ1Y3QgYWlvX2tpb2NiICppb2NiKVxuLS1cbmZzL2Fpby5jLTExNTgtXHRpZiAoaW9jYi1cdTAwM2VraV9ldmVudGZkKVxuZnMvYWlvLmM6MTE1OTpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlvY2ItXHUwMDNla2lfZXZlbnRmZCk7XG5mcy9haW8uYy0xMTYwLVx0aWYgKGlvY2ItXHUwMDNla2lfZmlscClcbi0tXG5mcy9ldmVudGZkLmM9ODk9c3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuLS1cbmZzL2V2ZW50ZmQuYy05Ni0vKipcbmZzL2V2ZW50ZmQuYzo5NzogKiBldmVudGZkX2N0eF9wdXQgLSBSZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTk4LSAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXG4tLVxuZnMvZXZlbnRmZC5jLTEwMi0gKi9cbmZzL2V2ZW50ZmQuYzoxMDM6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG5mcy9ldmVudGZkLmMtMTA0LXtcbi0tXG5mcy9ldmVudGZkLmMtMTA5LX1cbmZzL2V2ZW50ZmQuYzoxMTA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmZzL2V2ZW50ZmQuYy0xMTEtXG5mcy9ldmVudGZkLmM9MTEyPXN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2V2ZW50ZmQuYy0xMTYtXHR3YWtlX3VwX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExIVVApO1xuZnMvZXZlbnRmZC5jOjExNzpcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xuZnMvZXZlbnRmZC5jLTExOC1cdHJldHVybiAwO1xuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oPTMxPXN0cnVjdCBmaWxlO1xuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTM0LVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg6MzU6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpO1xuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtMzYtc3RydWN0IGZpbGUgKmV2ZW50ZmRfZmdldChpbnQgZmQpO1xuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oPTYxPXN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbF9tYXNrKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4LCBfX3BvbGxfdCBtYXNrKVxuLS1cbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTY0LVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg6NjU6c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTY2LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaD04OD1zdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4tLVxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtOTItXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDo5MzpERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSlcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTk0LVxuLS1cbmlvX3VyaW5nL2V2ZW50ZmQuYz0yOD1zdGF0aWMgdm9pZCBpb19ldmVudGZkX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpyY3UpXG4tLVxuaW9fdXJpbmcvZXZlbnRmZC5jLTMxLVxuaW9fdXJpbmcvZXZlbnRmZC5jOjMyOlx0ZXZlbnRmZF9jdHhfcHV0KGV2X2ZkLVx1MDAzZWNxX2V2X2ZkKTtcbmlvX3VyaW5nL2V2ZW50ZmQuYy0zMy1cdGtmcmVlKGV2X2ZkKTtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTAyMD1zdGF0aWMgdm9pZCBtZW1jZ19ldmVudF9yZW1vdmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xMDMyLVxubW0vbWVtY29udHJvbC12MS5jOjEwMzM6XHRldmVudGZkX2N0eF9wdXQoZXZlbnQtXHUwMDNlZXZlbnRmZCk7XG5tbS9tZW1jb250cm9sLXYxLmMtMTAzNC1cdGtmcmVlKGV2ZW50KTtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTA5ND1zdGF0aWMgc3NpemVfdCBtZW1jZ193cml0ZV9ldmVudF9jb250cm9sKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtMTIyNy1vdXRfcHV0X2V2ZW50ZmQ6XG5tbS9tZW1jb250cm9sLXYxLmM6MTIyODpcdGV2ZW50ZmRfY3R4X3B1dChldmVudC1cdTAwM2VldmVudGZkKTtcbm1tL21lbWNvbnRyb2wtdjEuYy0xMjI5LW91dF9rZnJlZTpcbi0tXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmM9MTUzND1zdGF0aWMgdm9pZCBtdHR5X2Rpc2FibGVfaW50eChzdHJ1Y3QgbWRldl9zdGF0ZSAqbWRldl9zdGF0ZSlcbi0tXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTUzNi1cdGlmIChtZGV2X3N0YXRlLVx1MDAzZWludHhfZXZ0ZmQpIHtcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYzoxNTM3Olx0XHRldmVudGZkX2N0eF9wdXQobWRldl9zdGF0ZS1cdTAwM2VpbnR4X2V2dGZkKTtcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYy0xNTM4LVx0XHRtZGV2X3N0YXRlLVx1MDAzZWludHhfZXZ0ZmQgPSBOVUxMO1xuLS1cbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYz0xNTQ0PXN0YXRpYyB2b2lkIG10dHlfZGlzYWJsZV9tc2koc3RydWN0IG1kZXZfc3RhdGUgKm1kZXZfc3RhdGUpXG4tLVxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jLTE1NDYtXHRpZiAobWRldl9zdGF0ZS1cdTAwM2Vtc2lfZXZ0ZmQpIHtcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYzoxNTQ3Olx0XHRldmVudGZkX2N0eF9wdXQobWRldl9zdGF0ZS1cdTAwM2Vtc2lfZXZ0ZmQpO1xuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jLTE1NDgtXHRcdG1kZXZfc3RhdGUtXHUwMDNlbXNpX2V2dGZkID0gTlVMTDtcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmM9MTIzPWlycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmMtMTQ2LVx0XHRpcnFmZF9yZXNhbXBsZXJfc2h1dGRvd24oaXJxZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jOjE0NzpcdFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVx1MDAzZXJlc2FtcGxlZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jLTE0OC1cdH1cbi0tXG52aXJ0L2t2bS9ldmVudGZkLmMtMTU1LSNlbmRpZlxudmlydC9rdm0vZXZlbnRmZC5jOjE1NjpcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cdTAwM2VldmVudGZkKTtcbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNTctXHRrZnJlZShpcnFmZCk7XG4tLVxudmlydC9rdm0vZXZlbnRmZC5jPTM3MT1rdm1faXJxZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9pcnFmZCAqYXJncylcbi0tXG52aXJ0L2t2bS9ldmVudGZkLmMtNTEyLVx0aWYgKHJlc2FtcGxlZmQgXHUwMDI2XHUwMDI2ICFJU19FUlIocmVzYW1wbGVmZCkpXG52aXJ0L2t2bS9ldmVudGZkLmM6NTEzOlx0XHRldmVudGZkX2N0eF9wdXQocmVzYW1wbGVmZCk7XG52aXJ0L2t2bS9ldmVudGZkLmMtNTE0LVxudmlydC9rdm0vZXZlbnRmZC5jLTUxNS1cdGlmIChldmVudGZkIFx1MDAyNlx1MDAyNiAhSVNfRVJSKGV2ZW50ZmQpKVxudmlydC9rdm0vZXZlbnRmZC5jOjUxNjpcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xudmlydC9rdm0vZXZlbnRmZC5jLTUxNy1cbi0tXG52aXJ0L2t2bS9ldmVudGZkLmM9NTkwPWt2bV9pcnFmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxZmQgKmFyZ3MpXG4tLVxudmlydC9rdm0vZXZlbnRmZC5jLTYwNi1cdHNwaW5fdW5sb2NrX2lycShcdTAwMjZrdm0tXHUwMDNlaXJxZmRzLmxvY2spO1xudmlydC9rdm0vZXZlbnRmZC5jOjYwNzpcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcbnZpcnQva3ZtL2V2ZW50ZmQuYy02MDgtXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNTIyCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIOKAkyBhIHByZXR0eSBuaWNoZSBmdW5jdGlvbiwgZGVmaW5pdGVseSBub3Qgc29tZXRoaW5nIEkgZW5jb3VudGVyIGV2ZXJ5IGRheS4gSSBhbHNvIHNlZSB0aGF0IGBldmVudGZkX2N0eF9wdXRgIGlzIGJlaW5nIG1vZGlmaWVkLCB3aGljaCBpcyBkaXJlY3RseSByZWxhdGVkLiBSaWdodCwgc28gd2hhdCBjb25maWdzIGFyZSBpbiBwbGF5IGhlcmU/IEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLgoKTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIG9idmlvdXM6IEkga25vdyBgZHJtX3N5bmNvYmouY2AgdXNlcyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAsIHNvIEkgc2hvdWxkIGNoZWNrIGZvciBgQ09ORklHX0RSTWAuIFNpbWlsYXJseSwgc2luY2UgYGV2ZW50ZmRfY3R4X3B1dGAgZGVhbHMgd2l0aCwgd2VsbCwgYGV2ZW50ZmRgLCBpdCBoYXMgdG8gYmUgYENPTkZJR19FVkVOVEZEYC4KCk5vdywgYmVmb3JlIEkgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBjaGVjayB0aGUga2VybmVsJiMzOTtzIGBpbml0L0tjb25maWdgIGZpbGUgYW5kIHZlcmlmeSBpZiBteSBpbml0aWFsIGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0IGFib3V0IGBDT05GSUdfRVZFTlRGRGAuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZpcnN0IGNsdWUgYWJvdXQgdGhlIGRlcGVuZGVuY2llcyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRVZFTlRGRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnPTE5MjM9Y29uZmlnIFRJTUVSRkRcbi0tXG5pbml0L0tjb25maWctMTkzMS1cbmluaXQvS2NvbmZpZzoxOTMyOmNvbmZpZyBFVkVOVEZEXG5pbml0L0tjb25maWctMTkzMy1cdGJvb2wgXCYjMzQ7RW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFwmIzM0OyBpZiBFWFBFUlRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI5NDUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFdmVudGZkIE1vZHVsZSBWZXJpZmljYXRpb24gaW4gZnMvTWFrZWZpbGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgYGV2ZW50ZmQub2Agd2l0aGluIHRoZSBgZnMvTWFrZWZpbGVgLiBJdCYjMzk7cyBhIHN0YW5kYXJkIHByb2NlZHVyZSwgYnV0IEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgYnVpbHQgYW5kIGxpbmtlZCBjb3JyZWN0bHksIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYmVlbiBhbnkgcmVjZW50IGNodXJuIGluIHRoZSBmaWxlc3lzdGVtIGluZnJhc3RydWN0dXJlLiBJJiMzOTttIHByaW1hcmlseSBsb29raW5nIGZvciB0aGUgaW5jbHVkZSBwYXRocywgZGVwZW5kZW5jaWVzLCBjb21waWxlciBmbGFncywgYW5kIGFueSBwb3RlbnRpYWxseSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGBrYnVpbGRgIHN5c3RlbSB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgbW9kdWxlJiMzOTtzIGJlaGF2aW9yLiBJIHdhbnQgdG8gcnVsZSBvdXQgYW55IGJ1aWxkIGVudmlyb25tZW50IHdlaXJkbmVzcyB0aGF0IGNvdWxkIGNhdXNlIHNpbGVudCBmYWlsdXJlcyBkb3duIHRoZSBsaW5lLCBwb3RlbnRpYWxseSBtYW5pZmVzdGluZyBhcyBzdWJ0bGUgcGVyZm9ybWFuY2UgaXNzdWVzIG9yIGV2ZW4gY3Jhc2hlcy4gSSBhbHNvIHdpbGwgYmUgY2hlY2tpbmcgYW55IG90aGVyIHNpbWlsYXIgbW9kdWxlcyB0aGF0IG1heSBiZSBzaGFyaW5nIHNpbWlsYXIgY29kZSB3aXRoIHRoZSBgZXZlbnRmZC5vYCBtb2R1bGUuIFRoaXMgaXMganVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayBiZWZvcmUgSSBkaWcgZGVlcGVyIGludG8gYW55IHNwZWNpZmljIGlzc3VlcywgYnV0IGVzc2VudGlhbCB0byBtYWtlIHN1cmUgdGhlIGZvdW5kYXRpb24gaXMgc29saWQgYmVmb3JlIGdldHRpbmcgYm9nZ2VkIGRvd24gaW4gc3BlY2lmaWNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtldmVudGZkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvTWFrZWZpbGU9Mjg9b2JqLSQoQ09ORklHX1RJTUVSRkQpXHRcdCYjNDM7PSB0aW1lcmZkLm9cbmZzL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19FVkVOVEZEKVx0XHQmIzQzOz0gZXZlbnRmZC5vXG5mcy9NYWtlZmlsZS0zMC1vYmotJChDT05GSUdfQUlPKSAgICAgICAgICAgICAgICYjNDM7PSBhaW8ub1xuLS1cbmZzL2Fpby5jLTM2LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcdTAwM2VcbmZzL2Fpby5jOjM3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2V2ZW50ZmQuaFx1MDAzZVxuZnMvYWlvLmMtMzgtI2luY2x1ZGUgXHUwMDNjbGludXgvYmxrX3BsdWcuaFx1MDAzZVxuLS1cbmZzL2Fpby5jPTE5Nz1zdHJ1Y3QgYWlvX2tpb2NiIHtcbi0tXG5mcy9haW8uYy0yMTUtXHQgKiBJZiB0aGUgYWlvX3Jlc2ZkIGZpZWxkIG9mIHRoZSB1c2Vyc3BhY2UgaW9jYiBpcyBub3QgemVybyxcbmZzL2Fpby5jOjIxNjpcdCAqIHRoaXMgaXMgdGhlIHVuZGVybHlpbmcgZXZlbnRmZCBjb250ZXh0IHRvIGRlbGl2ZXIgZXZlbnRzIHRvLlxuZnMvYWlvLmMtMjE3LVx0ICovXG5mcy9haW8uYzoyMTg6XHRzdHJ1Y3QgZXZlbnRmZF9jdHhcdCpraV9ldmVudGZkO1xuZnMvYWlvLmMtMjE5LX07XG4tLVxuZnMvYWlvLmM9MTEwNz1zdGF0aWMgaW5saW5lIHN0cnVjdCBhaW9fa2lvY2IgKmFpb19nZXRfcmVxKHN0cnVjdCBraW9jdHggKmN0eClcbi0tXG5mcy9haW8uYy0xMTIzLVx0cmVmY291bnRfc2V0KFx1MDAyNnJlcS1cdTAwM2VraV9yZWZjbnQsIDIpO1xuZnMvYWlvLmM6MTEyNDpcdHJlcS1cdTAwM2VraV9ldmVudGZkID0gTlVMTDtcbmZzL2Fpby5jLTExMjUtXHRyZXR1cm4gcmVxO1xuLS1cbmZzL2Fpby5jPTExNTY9c3RhdGljIGlubGluZSB2b2lkIGlvY2JfZGVzdHJveShzdHJ1Y3QgYWlvX2tpb2NiICppb2NiKVxuZnMvYWlvLmMtMTE1Ny17XG5mcy9haW8uYzoxMTU4Olx0aWYgKGlvY2ItXHUwMDNla2lfZXZlbnRmZClcbmZzL2Fpby5jOjExNTk6XHRcdGV2ZW50ZmRfY3R4X3B1dChpb2NiLVx1MDAzZWtpX2V2ZW50ZmQpO1xuZnMvYWlvLmMtMTE2MC1cdGlmIChpb2NiLVx1MDAzZWtpX2ZpbHApXG4tLVxuZnMvYWlvLmM9MTE3ND1zdGF0aWMgdm9pZCBhaW9fY29tcGxldGUoc3RydWN0IGFpb19raW9jYiAqaW9jYilcbi0tXG5mcy9haW8uYy0xMjMwLVx0ICogQ2hlY2sgaWYgdGhlIHVzZXIgYXNrZWQgdXMgdG8gZGVsaXZlciB0aGUgcmVzdWx0IHRocm91Z2ggYW5cbmZzL2Fpby5jOjEyMzE6XHQgKiBldmVudGZkLiBUaGUgZXZlbnRmZF9zaWduYWwoKSBmdW5jdGlvbiBpcyBzYWZlIHRvIGJlIGNhbGxlZFxuZnMvYWlvLmMtMTIzMi1cdCAqIGZyb20gSVJRIGNvbnRleHQuXG5mcy9haW8uYy0xMjMzLVx0ICovXG5mcy9haW8uYzoxMjM0Olx0aWYgKGlvY2ItXHUwMDNla2lfZXZlbnRmZClcbmZzL2Fpby5jOjEyMzU6XHRcdGV2ZW50ZmRfc2lnbmFsKGlvY2ItXHUwMDNla2lfZXZlbnRmZCk7XG5mcy9haW8uYy0xMjM2LVxuLS1cbmZzL2Fpby5jPTE4NDA9c3RhdGljIGludCBhaW9fcG9sbF93YWtlKHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3YWl0LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYyxcbi0tXG5mcy9haW8uYy0xODcxLVx0XHRpb2NiLVx1MDAzZWtpX3Jlcy5yZXMgPSBtYW5nbGVfcG9sbChtYXNrKTtcbmZzL2Fpby5jOjE4NzI6XHRcdGlmIChpb2NiLVx1MDAzZWtpX2V2ZW50ZmQgXHUwMDI2XHUwMDI2ICFldmVudGZkX3NpZ25hbF9hbGxvd2VkKCkpIHtcbmZzL2Fpby5jLTE4NzMtXHRcdFx0aW9jYiA9IE5VTEw7XG4tLVxuZnMvYWlvLmM9MjAyMj1zdGF0aWMgaW50IF9faW9fc3VibWl0X29uZShzdHJ1Y3Qga2lvY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBpb2NiICppb2NiLFxuLS1cbmZzL2Fpby5jLTIwMzAtXHRpZiAoaW9jYi1cdTAwM2VhaW9fZmxhZ3MgXHUwMDI2IElPQ0JfRkxBR19SRVNGRCkge1xuZnMvYWlvLmM6MjAzMTpcdFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldmVudGZkO1xuZnMvYWlvLmMtMjAzMi1cdFx0Lypcbi0tXG5mcy9haW8uYy0yMDM0LVx0XHQgKiBpbnN0YW5jZSBvZiB0aGUgZmlsZSogbm93LiBUaGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgYmVcbmZzL2Fpby5jOjIwMzU6XHRcdCAqIGFuIGV2ZW50ZmQoKSBmZCwgYW5kIHdpbGwgYmUgc2lnbmFsZWQgZm9yIGVhY2ggY29tcGxldGVkXG5mcy9haW8uYzoyMDM2Olx0XHQgKiBldmVudCB1c2luZyB0aGUgZXZlbnRmZF9zaWduYWwoKSBmdW5jdGlvbi5cbmZzL2Fpby5jLTIwMzctXHRcdCAqL1xuZnMvYWlvLmM6MjAzODpcdFx0ZXZlbnRmZCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGlvY2ItXHUwMDNlYWlvX3Jlc2ZkKTtcbmZzL2Fpby5jOjIwMzk6XHRcdGlmIChJU19FUlIoZXZlbnRmZCkpXG5mcy9haW8uYzoyMDQwOlx0XHRcdHJldHVybiBQVFJfRVJSKGV2ZW50ZmQpO1xuZnMvYWlvLmMtMjA0MS1cbmZzL2Fpby5jOjIwNDI6XHRcdHJlcS1cdTAwM2VraV9ldmVudGZkID0gZXZlbnRmZDtcbmZzL2Fpby5jLTIwNDMtXHR9XG4tLVxuZnMvZXZlbnRmZC5jLTItLypcbmZzL2V2ZW50ZmQuYzozOiAqICBmcy9ldmVudGZkLmNcbmZzL2V2ZW50ZmQuYy00LSAqXG4tLVxuZnMvZXZlbnRmZC5jLTIxLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2tyZWYuaFx1MDAzZVxuZnMvZXZlbnRmZC5jOjIyOiNpbmNsdWRlIFx1MDAzY2xpbnV4L2V2ZW50ZmQuaFx1MDAzZVxuZnMvZXZlbnRmZC5jLTIzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb2NfZnMuaFx1MDAzZVxuLS1cbmZzL2V2ZW50ZmQuYy0yNy1cbmZzL2V2ZW50ZmQuYzoyODpzdGF0aWMgREVGSU5FX0lEQShldmVudGZkX2lkYSk7XG5mcy9ldmVudGZkLmMtMjktXG5mcy9ldmVudGZkLmM6MzA6c3RydWN0IGV2ZW50ZmRfY3R4IHtcbmZzL2V2ZW50ZmQuYy0zMS1cdHN0cnVjdCBrcmVmIGtyZWY7XG4tLVxuZnMvZXZlbnRmZC5jLTMzLVx0LypcbmZzL2V2ZW50ZmQuYzozNDpcdCAqIEV2ZXJ5IHRpbWUgdGhhdCBhIHdyaXRlKDIpIGlzIHBlcmZvcm1lZCBvbiBhbiBldmVudGZkLCB0aGVcbmZzL2V2ZW50ZmQuYy0zNS1cdCAqIHZhbHVlIG9mIHRoZSBfX3U2NCBiZWluZyB3cml0dGVuIGlzIGFkZGVkIHRvIFwmIzM0O2NvdW50XCYjMzQ7IGFuZCBhXG4tLVxuZnMvZXZlbnRmZC5jLTM3LVx0ICogc3BlY2lmaWVkLCBhIHJlYWQoMikgd2lsbCByZXR1cm4gdGhlIFwmIzM0O2NvdW50XCYjMzQ7IHZhbHVlIHRvIHVzZXJzcGFjZSxcbmZzL2V2ZW50ZmQuYzozODpcdCAqIGFuZCB3aWxsIHJlc2V0IFwmIzM0O2NvdW50XCYjMzQ7IHRvIHplcm8uIFRoZSBrZXJuZWwgc2lkZSBldmVudGZkX3NpZ25hbCgpXG5mcy9ldmVudGZkLmMtMzktXHQgKiBhbHNvLCBhZGRzIHRvIHRoZSBcJiMzNDtjb3VudFwmIzM0OyBjb3VudGVyIGFuZCBpc3N1ZSBhIHdha2V1cC5cbi0tXG5mcy9ldmVudGZkLmMtNDYtLyoqXG5mcy9ldmVudGZkLmM6NDc6ICogZXZlbnRmZF9zaWduYWxfbWFzayAtIEluY3JlbWVudCB0aGUgZXZlbnQgY291bnRlclxuZnMvZXZlbnRmZC5jOjQ4OiAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byB0aGUgZXZlbnRmZCBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTQ5LSAqIEBtYXNrOiBbaW5dIHBvbGwgbWFza1xuLS1cbmZzL2V2ZW50ZmQuYy01NS0gKi9cbmZzL2V2ZW50ZmQuYzo1Njp2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXG5mcy9ldmVudGZkLmMtNTcte1xuLS1cbmZzL2V2ZW50ZmQuYy02My1cdCAqIG5lc3RlZCB3YWl0cXVldWVzIHdpdGggY3VzdG9tIHdha2V1cCBoYW5kbGVycywgdGhlbiBpdCBzaG91bGRcbmZzL2V2ZW50ZmQuYzo2NDpcdCAqIGNoZWNrIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQoKSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBJZlxuZnMvZXZlbnRmZC5jOjY1Olx0ICogaXQgcmV0dXJucyBmYWxzZSwgdGhlIGV2ZW50ZmRfc2lnbmFsKCkgY2FsbCBzaG91bGQgYmUgZGVmZXJyZWQgdG8gYVxuZnMvZXZlbnRmZC5jLTY2LVx0ICogc2FmZSBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTY3LVx0ICovXG5mcy9ldmVudGZkLmM6Njg6XHRpZiAoV0FSTl9PTl9PTkNFKGN1cnJlbnQtXHUwMDNlaW5fZXZlbnRmZCkpXG5mcy9ldmVudGZkLmMtNjktXHRcdHJldHVybjtcbi0tXG5mcy9ldmVudGZkLmMtNzEtXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2ssIGZsYWdzKTtcbmZzL2V2ZW50ZmQuYzo3MjpcdGN1cnJlbnQtXHUwMDNlaW5fZXZlbnRmZCA9IDE7XG5mcy9ldmVudGZkLmMtNzMtXHRpZiAoY3R4LVx1MDAzZWNvdW50IFx1MDAzYyBVTExPTkdfTUFYKVxuLS1cbmZzL2V2ZW50ZmQuYy03Ni1cdFx0d2FrZV91cF9sb2NrZWRfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTElOIHwgbWFzayk7XG5mcy9ldmVudGZkLmM6Nzc6XHRjdXJyZW50LVx1MDAzZWluX2V2ZW50ZmQgPSAwO1xuZnMvZXZlbnRmZC5jLTc4LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZjdHgtXHUwMDNld3FoLmxvY2ssIGZsYWdzKTtcbmZzL2V2ZW50ZmQuYy03OS19XG5mcy9ldmVudGZkLmM6ODA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9zaWduYWxfbWFzayk7XG5mcy9ldmVudGZkLmMtODEtXG5mcy9ldmVudGZkLmM6ODI6c3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlX2N0eChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcbmZzL2V2ZW50ZmQuYy04My17XG5mcy9ldmVudGZkLmMtODQtXHRpZiAoY3R4LVx1MDAzZWlkIFx1MDAzZT0gMClcbmZzL2V2ZW50ZmQuYzo4NTpcdFx0aWRhX2ZyZWUoXHUwMDI2ZXZlbnRmZF9pZGEsIGN0eC1cdTAwM2VpZCk7XG5mcy9ldmVudGZkLmMtODYtXHRrZnJlZShjdHgpO1xuLS1cbmZzL2V2ZW50ZmQuYy04OC1cbmZzL2V2ZW50ZmQuYzo4OTpzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG5mcy9ldmVudGZkLmMtOTAte1xuZnMvZXZlbnRmZC5jOjkxOlx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggPSBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IGV2ZW50ZmRfY3R4LCBrcmVmKTtcbmZzL2V2ZW50ZmQuYy05Mi1cbmZzL2V2ZW50ZmQuYzo5MzpcdGV2ZW50ZmRfZnJlZV9jdHgoY3R4KTtcbmZzL2V2ZW50ZmQuYy05NC19XG4tLVxuZnMvZXZlbnRmZC5jLTk2LS8qKlxuZnMvZXZlbnRmZC5jOjk3OiAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXG5mcy9ldmVudGZkLmM6OTg6ICogQGN0eDogW2luXSBQb2ludGVyIHRvIGV2ZW50ZmQgY29udGV4dC5cbmZzL2V2ZW50ZmQuYy05OS0gKlxuZnMvZXZlbnRmZC5jOjEwMDogKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxuZnMvZXZlbnRmZC5jOjEwMTogKiB3aXRoIGV2ZW50ZmRfY3R4X2ZkZ2V0KCkgb3IgZXZlbnRmZF9jdHhfZmlsZWdldCgpLlxuZnMvZXZlbnRmZC5jLTEwMi0gKi9cbmZzL2V2ZW50ZmQuYzoxMDM6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG5mcy9ldmVudGZkLmMtMTA0LXtcbi0tXG5mcy9ldmVudGZkLmMtMTA3LVxuZnMvZXZlbnRmZC5jOjEwODpcdGtyZWZfcHV0KFx1MDAyNmN0eC1cdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xuZnMvZXZlbnRmZC5jLTEwOS19XG5mcy9ldmVudGZkLmM6MTEwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XG5mcy9ldmVudGZkLmMtMTExLVxuZnMvZXZlbnRmZC5jOjExMjpzdGF0aWMgaW50IGV2ZW50ZmRfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2V2ZW50ZmQuYy0xMTMte1xuZnMvZXZlbnRmZC5jOjExNDpcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5mcy9ldmVudGZkLmMtMTE1LVxuZnMvZXZlbnRmZC5jLTExNi1cdHdha2VfdXBfcG9sbChcdTAwMjZjdHgtXHUwMDNld3FoLCBFUE9MTEhVUCk7XG5mcy9ldmVudGZkLmM6MTE3Olx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XG5mcy9ldmVudGZkLmMtMTE4LVx0cmV0dXJuIDA7XG4tLVxuZnMvZXZlbnRmZC5jLTEyMC1cbmZzL2V2ZW50ZmQuYzoxMjE6c3RhdGljIF9fcG9sbF90IGV2ZW50ZmRfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcbmZzL2V2ZW50ZmQuYy0xMjIte1xuZnMvZXZlbnRmZC5jOjEyMzpcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5mcy9ldmVudGZkLmMtMTI0LVx0X19wb2xsX3QgZXZlbnRzID0gMDtcbi0tXG5mcy9ldmVudGZkLmMtMTQ5LVx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrIGN0eC1cdTAwM2Vxd2gubG9ja1xuZnMvZXZlbnRmZC5jOjE1MDpcdCAqICAgICBldmVudGZkX3BvbGwgcmV0dXJucyAwXG5mcy9ldmVudGZkLmMtMTUxLVx0ICpcbi0tXG5mcy9ldmVudGZkLmMtMTY0LVx0ICogICAgIHVubG9jayBjdHgtXHUwMDNld3FoLmxvY2tcbmZzL2V2ZW50ZmQuYzoxNjU6XHQgKiAgICAgZXZlbnRmZF9wb2xsIHJldHVybnMgMFxuZnMvZXZlbnRmZC5jLTE2Ni1cdCAqL1xuLS1cbmZzL2V2ZW50ZmQuYy0xNzgtXG5mcy9ldmVudGZkLmM6MTc5OnZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcbmZzL2V2ZW50ZmQuYy0xODAte1xuLS1cbmZzL2V2ZW50ZmQuYy0xODUtfVxuZnMvZXZlbnRmZC5jOjE4NjpFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9kb19yZWFkKTtcbmZzL2V2ZW50ZmQuYy0xODctXG5mcy9ldmVudGZkLmMtMTg4LS8qKlxuZnMvZXZlbnRmZC5jOjE4OTogKiBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZSAtIFJlYWQgdGhlIGN1cnJlbnQgY291bnRlciBhbmQgcmVtb3ZlcyB3YWl0IHF1ZXVlLlxuZnMvZXZlbnRmZC5jOjE5MDogKiBAY3R4OiBbaW5dIFBvaW50ZXIgdG8gZXZlbnRmZCBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTE5MS0gKiBAd2FpdDogW2luXSBXYWl0IHF1ZXVlIHRvIGJlIHJlbW92ZWQuXG4tLVxuZnMvZXZlbnRmZC5jLTE5Ny0gKlxuZnMvZXZlbnRmZC5jOjE5ODogKiBUaGlzIGlzIHVzZWQgdG8gYXRvbWljYWxseSByZW1vdmUgYSB3YWl0IHF1ZXVlIGVudHJ5IGZyb20gdGhlIGV2ZW50ZmQgd2FpdFxuZnMvZXZlbnRmZC5jLTE5OS0gKiBxdWV1ZSBoZWFkLCBhbmQgcmVhZC9yZXNldCB0aGUgY291bnRlciB2YWx1ZS5cbmZzL2V2ZW50ZmQuYy0yMDAtICovXG5mcy9ldmVudGZkLmM6MjAxOmludCBldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZShzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgd2FpdF9xdWV1ZV9lbnRyeV90ICp3YWl0LFxuZnMvZXZlbnRmZC5jLTIwMi1cdFx0XHRcdCAgX191NjQgKmNudClcbi0tXG5mcy9ldmVudGZkLmMtMjA2LVx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2Y3R4LVx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XG5mcy9ldmVudGZkLmM6MjA3Olx0ZXZlbnRmZF9jdHhfZG9fcmVhZChjdHgsIGNudCk7XG5mcy9ldmVudGZkLmMtMjA4LVx0X19yZW1vdmVfd2FpdF9xdWV1ZShcdTAwMjZjdHgtXHUwMDNld3FoLCB3YWl0KTtcbi0tXG5mcy9ldmVudGZkLmMtMjE0LX1cbmZzL2V2ZW50ZmQuYzoyMTU6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUpO1xuZnMvZXZlbnRmZC5jLTIxNi1cbmZzL2V2ZW50ZmQuYzoyMTc6c3RhdGljIHNzaXplX3QgZXZlbnRmZF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcbmZzL2V2ZW50ZmQuYy0yMTgte1xuZnMvZXZlbnRmZC5jLTIxOS1cdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuZnMvZXZlbnRmZC5jOjIyMDpcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5mcy9ldmVudGZkLmMtMjIxLVx0X191NjQgdWNudCA9IDA7XG4tLVxuZnMvZXZlbnRmZC5jLTIzNy1cdH1cbmZzL2V2ZW50ZmQuYzoyMzg6XHRldmVudGZkX2N0eF9kb19yZWFkKGN0eCwgXHUwMDI2dWNudCk7XG5mcy9ldmVudGZkLmM6MjM5Olx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbmZzL2V2ZW50ZmQuYy0yNDAtXHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcdTAwMjZjdHgtXHUwMDNld3FoKSlcbmZzL2V2ZW50ZmQuYy0yNDEtXHRcdHdha2VfdXBfbG9ja2VkX3BvbGwoXHUwMDI2Y3R4LVx1MDAzZXdxaCwgRVBPTExPVVQpO1xuZnMvZXZlbnRmZC5jOjI0MjpcdGN1cnJlbnQtXHUwMDNlaW5fZXZlbnRmZCA9IDA7XG5mcy9ldmVudGZkLmMtMjQzLVx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmN0eC1cdTAwM2V3cWgubG9jayk7XG4tLVxuZnMvZXZlbnRmZC5jLTI0OS1cbmZzL2V2ZW50ZmQuYzoyNTA6c3RhdGljIHNzaXplX3QgZXZlbnRmZF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LFxuZnMvZXZlbnRmZC5jLTI1MS1cdFx0XHQgICAgIGxvZmZfdCAqcHBvcylcbmZzL2V2ZW50ZmQuYy0yNTIte1xuZnMvZXZlbnRmZC5jOjI1MzpcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG5mcy9ldmVudGZkLmMtMjU0LVx0c3NpemVfdCByZXM7XG4tLVxuZnMvZXZlbnRmZC5jLTI3NC1cdFx0Y3R4LVx1MDAzZWNvdW50ICYjNDM7PSB1Y250O1xuZnMvZXZlbnRmZC5jOjI3NTpcdFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMTtcbmZzL2V2ZW50ZmQuYy0yNzYtXHRcdGlmICh3YWl0cXVldWVfYWN0aXZlKFx1MDAyNmN0eC1cdTAwM2V3cWgpKVxuZnMvZXZlbnRmZC5jLTI3Ny1cdFx0XHR3YWtlX3VwX2xvY2tlZF9wb2xsKFx1MDAyNmN0eC1cdTAwM2V3cWgsIEVQT0xMSU4pO1xuZnMvZXZlbnRmZC5jOjI3ODpcdFx0Y3VycmVudC1cdTAwM2Vpbl9ldmVudGZkID0gMDtcbmZzL2V2ZW50ZmQuYy0yNzktXHR9XG4tLVxuZnMvZXZlbnRmZC5jLTI4NS0jaWZkZWYgQ09ORklHX1BST0NfRlNcbmZzL2V2ZW50ZmQuYzoyODY6c3RhdGljIHZvaWQgZXZlbnRmZF9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBmaWxlICpmKVxuZnMvZXZlbnRmZC5jLTI4Ny17XG5mcy9ldmVudGZkLmM6Mjg4Olx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggPSBmLVx1MDAzZXByaXZhdGVfZGF0YTtcbmZzL2V2ZW50ZmQuYy0yODktXHRfX3U2NCBjbnQ7XG4tLVxuZnMvZXZlbnRmZC5jLTI5NS1cdHNlcV9wcmludGYobSxcbmZzL2V2ZW50ZmQuYzoyOTY6XHRcdCAgIFwmIzM0O2V2ZW50ZmQtY291bnQ6ICUxNmxseFxcblwmIzM0O1xuZnMvZXZlbnRmZC5jOjI5NzpcdFx0ICAgXCYjMzQ7ZXZlbnRmZC1pZDogJWRcXG5cJiMzNDtcbmZzL2V2ZW50ZmQuYzoyOTg6XHRcdCAgIFwmIzM0O2V2ZW50ZmQtc2VtYXBob3JlOiAlZFxcblwmIzM0OyxcbmZzL2V2ZW50ZmQuYy0yOTktXHRcdCAgIGNudCxcbi0tXG5mcy9ldmVudGZkLmMtMzA0LVxuZnMvZXZlbnRmZC5jOjMwNTpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBldmVudGZkX2ZvcHMgPSB7XG5mcy9ldmVudGZkLmMtMzA2LSNpZmRlZiBDT05GSUdfUFJPQ19GU1xuZnMvZXZlbnRmZC5jOjMwNzpcdC5zaG93X2ZkaW5mb1x0PSBldmVudGZkX3Nob3dfZmRpbmZvLFxuZnMvZXZlbnRmZC5jLTMwOC0jZW5kaWZcbmZzL2V2ZW50ZmQuYzozMDk6XHQucmVsZWFzZVx0PSBldmVudGZkX3JlbGVhc2UsXG5mcy9ldmVudGZkLmM6MzEwOlx0LnBvbGxcdFx0PSBldmVudGZkX3BvbGwsXG5mcy9ldmVudGZkLmM6MzExOlx0LnJlYWRfaXRlclx0PSBldmVudGZkX3JlYWQsXG5mcy9ldmVudGZkLmM6MzEyOlx0LndyaXRlXHRcdD0gZXZlbnRmZF93cml0ZSxcbmZzL2V2ZW50ZmQuYy0zMTMtXHQubGxzZWVrXHRcdD0gbm9vcF9sbHNlZWssXG4tLVxuZnMvZXZlbnRmZC5jLTMxNi0vKipcbmZzL2V2ZW50ZmQuYzozMTc6ICogZXZlbnRmZF9mZ2V0IC0gQWNxdWlyZSBhIHJlZmVyZW5jZSBvZiBhbiBldmVudGZkIGZpbGUgZGVzY3JpcHRvci5cbmZzL2V2ZW50ZmQuYy0zMTgtICogQGZkOiBbaW5dIEV2ZW50ZmQgZmlsZSBkZXNjcmlwdG9yLlxuZnMvZXZlbnRmZC5jLTMxOS0gKlxuZnMvZXZlbnRmZC5jOjMyMDogKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZXZlbnRmZCBmaWxlIHN0cnVjdHVyZSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG9yIHRoZVxuZnMvZXZlbnRmZC5jLTMyMS0gKiBmb2xsb3dpbmcgZXJyb3IgcG9pbnRlcjpcbi0tXG5mcy9ldmVudGZkLmMtMzIzLSAqIC1FQkFERiAgICA6IEludmFsaWQgQGZkIGZpbGUgZGVzY3JpcHRvci5cbmZzL2V2ZW50ZmQuYzozMjQ6ICogLUVJTlZBTCAgIDogVGhlIEBmZCBmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGFuIGV2ZW50ZmQgZmlsZS5cbmZzL2V2ZW50ZmQuYy0zMjUtICovXG5mcy9ldmVudGZkLmM6MzI2OnN0cnVjdCBmaWxlICpldmVudGZkX2ZnZXQoaW50IGZkKVxuZnMvZXZlbnRmZC5jLTMyNy17XG4tLVxuZnMvZXZlbnRmZC5jLTMzMi1cdFx0cmV0dXJuIEVSUl9QVFIoLUVCQURGKTtcbmZzL2V2ZW50ZmQuYzozMzM6XHRpZiAoZmlsZS1cdTAwM2VmX29wICE9IFx1MDAyNmV2ZW50ZmRfZm9wcykge1xuZnMvZXZlbnRmZC5jLTMzNC1cdFx0ZnB1dChmaWxlKTtcbi0tXG5mcy9ldmVudGZkLmMtMzM5LX1cbmZzL2V2ZW50ZmQuYzozNDA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9mZ2V0KTtcbmZzL2V2ZW50ZmQuYy0zNDEtXG5mcy9ldmVudGZkLmMtMzQyLS8qKlxuZnMvZXZlbnRmZC5jOjM0MzogKiBldmVudGZkX2N0eF9mZGdldCAtIEFjcXVpcmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXG5mcy9ldmVudGZkLmMtMzQ0LSAqIEBmZDogW2luXSBFdmVudGZkIGZpbGUgZGVzY3JpcHRvci5cbmZzL2V2ZW50ZmQuYy0zNDUtICpcbmZzL2V2ZW50ZmQuYzozNDY6ICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGV2ZW50ZmQgY29udGV4dCwgb3RoZXJ3aXNlIHRoZSBlcnJvclxuZnMvZXZlbnRmZC5jLTM0Ny0gKiBwb2ludGVycyByZXR1cm5lZCBieSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczpcbmZzL2V2ZW50ZmQuYy0zNDgtICpcbmZzL2V2ZW50ZmQuYzozNDk6ICogZXZlbnRmZF9mZ2V0XG5mcy9ldmVudGZkLmMtMzUwLSAqL1xuZnMvZXZlbnRmZC5jOjM1MTpzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmRfY3R4X2ZkZ2V0KGludCBmZClcbmZzL2V2ZW50ZmQuYy0zNTIte1xuLS1cbmZzL2V2ZW50ZmQuYy0zNTUtXHRcdHJldHVybiBFUlJfUFRSKC1FQkFERik7XG5mcy9ldmVudGZkLmM6MzU2Olx0cmV0dXJuIGV2ZW50ZmRfY3R4X2ZpbGVnZXQoZmRfZmlsZShmKSk7XG5mcy9ldmVudGZkLmMtMzU3LX1cbmZzL2V2ZW50ZmQuYzozNTg6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfZmRnZXQpO1xuZnMvZXZlbnRmZC5jLTM1OS1cbmZzL2V2ZW50ZmQuYy0zNjAtLyoqXG5mcy9ldmVudGZkLmM6MzYxOiAqIGV2ZW50ZmRfY3R4X2ZpbGVnZXQgLSBBY3F1aXJlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxuZnMvZXZlbnRmZC5jLTM2Mi0gKiBAZmlsZTogW2luXSBFdmVudGZkIGZpbGUgcG9pbnRlci5cbmZzL2V2ZW50ZmQuYy0zNjMtICpcbmZzL2V2ZW50ZmQuYzozNjQ6ICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGV2ZW50ZmQgY29udGV4dCwgb3RoZXJ3aXNlIHRoZSBlcnJvclxuZnMvZXZlbnRmZC5jLTM2NS0gKiBwb2ludGVyOlxuZnMvZXZlbnRmZC5jLTM2Ni0gKlxuZnMvZXZlbnRmZC5jOjM2NzogKiAtRUlOVkFMICAgOiBUaGUgQGZkIGZpbGUgZGVzY3JpcHRvciBpcyBub3QgYW4gZXZlbnRmZCBmaWxlLlxuZnMvZXZlbnRmZC5jLTM2OC0gKi9cbmZzL2V2ZW50ZmQuYzozNjk6c3RydWN0IGV2ZW50ZmRfY3R4ICpldmVudGZkX2N0eF9maWxlZ2V0KHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZXZlbnRmZC5jLTM3MC17XG5mcy9ldmVudGZkLmM6MzcxOlx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHg7XG5mcy9ldmVudGZkLmMtMzcyLVxuZnMvZXZlbnRmZC5jOjM3MzpcdGlmIChmaWxlLVx1MDAzZWZfb3AgIT0gXHUwMDI2ZXZlbnRmZF9mb3BzKVxuZnMvZXZlbnRmZC5jLTM3NC1cdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4tLVxuZnMvZXZlbnRmZC5jLTM3OS19XG5mcy9ldmVudGZkLmM6MzgwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X2ZpbGVnZXQpO1xuZnMvZXZlbnRmZC5jLTM4MS1cbmZzL2V2ZW50ZmQuYzozODI6c3RhdGljIGludCBkb19ldmVudGZkKHVuc2lnbmVkIGludCBjb3VudCwgaW50IGZsYWdzKVxuZnMvZXZlbnRmZC5jLTM4My17XG5mcy9ldmVudGZkLmM6Mzg0Olx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggX19mcmVlKGtmcmVlKSA9IE5VTEw7XG5mcy9ldmVudGZkLmMtMzg1LVxuLS1cbmZzL2V2ZW50ZmQuYy00MDYtXHRGRF9QUkVQQVJFKGZkZiwgZmxhZ3MsXG5mcy9ldmVudGZkLmM6NDA3Olx0XHQgICBhbm9uX2lub2RlX2dldGZpbGVfZm1vZGUoXCYjMzQ7W2V2ZW50ZmRdXCYjMzQ7LCBcdTAwMjZldmVudGZkX2ZvcHMsIGN0eCxcbmZzL2V2ZW50ZmQuYy00MDgtXHRcdFx0XHRcdCAgICBmbGFncywgRk1PREVfTk9XQUlUKSk7XG4tLVxuZnMvZXZlbnRmZC5jLTQxMS1cbmZzL2V2ZW50ZmQuYzo0MTI6XHRjdHgtXHUwMDNlaWQgPSBpZGFfYWxsb2MoXHUwMDI2ZXZlbnRmZF9pZGEsIEdGUF9LRVJORUwpO1xuZnMvZXZlbnRmZC5jLTQxMy1cdHJldGFpbl9hbmRfbnVsbF9wdHIoY3R4KTtcbi0tXG5mcy9ldmVudGZkLmMtNDE2LVxuZnMvZXZlbnRmZC5jOjQxNzpTWVNDQUxMX0RFRklORTIoZXZlbnRmZDIsIHVuc2lnbmVkIGludCwgY291bnQsIGludCwgZmxhZ3MpXG5mcy9ldmVudGZkLmMtNDE4LXtcbmZzL2V2ZW50ZmQuYzo0MTk6XHRyZXR1cm4gZG9fZXZlbnRmZChjb3VudCwgZmxhZ3MpO1xuZnMvZXZlbnRmZC5jLTQyMC19XG5mcy9ldmVudGZkLmMtNDIxLVxuZnMvZXZlbnRmZC5jOjQyMjpTWVNDQUxMX0RFRklORTEoZXZlbnRmZCwgdW5zaWduZWQgaW50LCBjb3VudClcbmZzL2V2ZW50ZmQuYy00MjMte1xuZnMvZXZlbnRmZC5jOjQyNDpcdHJldHVybiBkb19ldmVudGZkKGNvdW50LCAwKTtcbmZzL2V2ZW50ZmQuYy00MjUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODk5OQoJCQkJCQkJb3V0cHV0OiAxMzQKCQkJCQkJCXRob3VnaHRzOiA4NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggRXZhbHVhdGlvbjogQSBSZWZpbmVkIEFwcHJvYWNoIHRvIEV2ZW50ZmQgYW5kIFN5bmNvYmogSW50ZXJhY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpc3NlY3QgdGhlc2UgY2hhbmdlcyBtZXRob2RpY2FsbHkuIEZpcnN0LCBJIHNlZSBhIGNydWNpYWwgdXBkYXRlIGluIGBmcy9ldmVudGZkLmNgLiBUaGUgYGV2ZW50ZmRfY3R4X3B1dGAgZnVuY3Rpb24gaGFzIGJlZW4gaGFyZGVuZWQ7IGl0IG5vdyBncmFjZWZ1bGx5IGhhbmRsZXMgTlVMTCBgY3R4YCBwb2ludGVycy4gVGhpcyBpcyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBhIHNtYWxsIGJ1dCBpbXBvcnRhbnQgcmVmaW5lbWVudC4gVGhlIGNvcnJlc3BvbmRpbmcgYERFRklORV9GUkVFYCBtYWNybyBpbiBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGlzIGFsc28gcHJlc2VudC4gVGhpcyBpcyB0eXBpY2FsLCB0eWluZyBpbnRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBjaGFuZ2VzLgoKTm93LCBsZXQmIzM5O3MgbW92ZSBvbnRvIHRoZSBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgIGNoYW5nZXMuIFRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24gaXMgdGhlIHByaW1hcnkgdGFyZ2V0IGhlcmUuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHJlZmFjdG9yaW5nIGFyb3VuZCBlcnJvciBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYGV2ZW50ZmRfY3R4YC4gSXQgbG9va3MgbGlrZSB0aGUgYF9fZnJlZShldmVudGZkKWAgY2xlYW51cCBoZWxwZXIsIHByb2JhYmx5IGRlZmluZWQgYXMgcGFydCBvZiB0aGUgaW5pdGlhbCBjaGFuZ2UsIGlzIGJlaW5nIGxldmVyYWdlZCB0byBpbXByb3ZlIGxpZmV0aW1lIG1hbmFnZW1lbnQgb2YgYGV2X2ZkX2N0eGAuIFRoaXMgbG9va3MgY2xlYW4sIHVzaW5nIHRoZSBzdGFuZGFyZCBpZGlvbSB0byBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZiB0aGUgZXZlbnRmZCBjb250ZXh0IGluIHRoaXMgZnVuY3Rpb24uIFdlJiMzOTtyZSB1c2luZyBgZXZlbnRmZF9jdHhfZmRnZXRgIHRvIG9idGFpbiB0aGUgZXZlbnRmZCBjb250ZXh0LCBhbmQgdGhlbiBlaXRoZXIgYWRkaW5nIGl0IHRvIHRoZSBzeW5jb2JqIG9yIGNsZWFuaW5nIHVwLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgZnV6emluZyBpbXBsaWNhdGlvbnMuIFRoZSBwYXRjaCAqaXMqIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIG1vZGlmeWluZyByZWFjaGFibGUga2VybmVsIGNvZGUgd2l0aGluIGJvdGggYGV2ZW50ZmRgIGFuZCBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAuIFRoYXQgbWVhbnMgd2UmIzM5O3ZlIGdvdCBuZXcgb3IgbW9kaWZpZWQgY29kZSBwYXRocy4gSSYjMzk7ZCBldmFsdWF0ZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3M6IGBEUk1gIGFuZCBgRVZFTlRGRGAuCgpGb3IgbXkgZnV6emluZyBmb2N1cywgSSYjMzk7bSB0aGlua2luZzogYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YCBhcmUgdGhlIHN5bWJvbHMgb2YgaW50ZXJlc3QuCgpUaGUgcGF0Y2gmIzM5O3MgY29yZSBtb2RpZmljYXRpb24gdG8gYGV2ZW50ZmRfY3R4X3B1dCgpYCBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgbWFjcm8sIGNvdXBsZWQgd2l0aCBpdHMgdXNlIGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCwgaXMgYSB3ZWxsLWRlZmluZWQgdXNlIGNhc2UgdGhhdCYjMzk7cyBxdWl0ZSByZWFkYWJsZS4gSXQgYWxsIG1ha2VzIHNlbnNlIGFuZCBpdCBpcyBjbGVhbi4gVGhlIG92ZXJhbGwgcmVhc29uaW5nLCBpcyBzb2xpZC4gRXZlcnl0aGluZyBjaGVja3Mgb3V0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTSYjMzQ7LAogICAgJiMzNDtFVkVOVEZEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCYjMzQ7LAogICAgJiMzNDtldmVudGZkX2N0eF9wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2xlYW51cCBhdHRyaWJ1dGUgaGVscGVyIGBERUZJTkVfRlJFRShldmVudGZkLCAuLi4pYCBhbmQgdXBkYXRlcyBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgYXV0b21hdGljIGNsZWFudXAgKGBfX2ZyZWUoZXZlbnRmZClgKSBhbG9uZyB3aXRoIGBub19mcmVlX3B0cigpYCwgYW5kIGFkZHMgYSBOVUxMIGNoZWNrIHRvIGBldmVudGZkX2N0eF9wdXQoKWAuXG5cblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU3MzM5ZjlkM2JhNDBhYzA2M2NiZWI5ZTFlNTE4ZjUxOGUyZTFiNjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDEzOjA2OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwppbmRleCBjMjNhNWRlMjdlZmZhLi4yNjFkNTYwNmU4YmQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpAQCAtMTQ2Miw5ICYjNDM7MTQ2Miw5IEBAIGludAogZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSkKIHsKJiM0MzsJc3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHggX19mcmVlKGV2ZW50ZmQpID0gTlVMTDsKIAlzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7CiAJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqOwotCXN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4OwogCXN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5OwogCWludCByZXQ7CiAKQEAgLTE0ODQsMTYgJiM0MzsxNDg0LDE3IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLSZndDtmZCk7CiAJaWYgKElTX0VSUihldl9mZF9jdHgpKSB7CiAJCXJldCA9IFBUUl9FUlIoZXZfZmRfY3R4KTsKJiM0MzsJCWV2X2ZkX2N0eCA9IE5VTEw7CiAJCWdvdG8gZXJyX2ZkZ2V0OwogCX0KIAogCWVudHJ5ID0ga3phbGxvY19vYmooKmVudHJ5KTsKIAlpZiAoIWVudHJ5KSB7CiAJCXJldCA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyX2t6YWxsb2M7CiYjNDM7CQlnb3RvIGVycl9mZGdldDsKIAl9CiAJZW50cnktJmd0O3N5bmNvYmogPSBzeW5jb2JqOwotCWVudHJ5LSZndDtldl9mZF9jdHggPSBldl9mZF9jdHg7CiYjNDM7CWVudHJ5LSZndDtldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpOwogCWVudHJ5LSZndDtwb2ludCA9IGFyZ3MtJmd0O3BvaW50OwogCWVudHJ5LSZndDtmbGFncyA9IGFyZ3MtJmd0O2ZsYWdzOwogCkBAIC0xNTAyLDggJiM0MzsxNTAzLDYgQEAgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJcmV0dXJuIDA7CiAKLWVycl9remFsbG9jOgotCWV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpOwogZXJyX2ZkZ2V0OgogCWRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTsKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jCmluZGV4IDlkMzNhMDI3NTdkNTIuLjI0MTExYTE2Mjg0ZjEgMTAwNjQ0Ci0tLSBhL2ZzL2V2ZW50ZmQuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9ldmVudGZkLmMKQEAgLTEwMiw2ICYjNDM7MTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQogICovCiB2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCkKIHsKJiM0MzsJaWYgKCFjdHgpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJa3JlZl9wdXQoJmFtcDtjdHgtJmd0O2tyZWYsIGV2ZW50ZmRfZnJlZSk7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9wdXQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmggYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaAppbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaApAQCAtMTAsNiAmIzQzOzEwLDcgQEAKICNkZWZpbmUgX0xJTlVYX0VWRU5URkRfSAogCiAjaW5jbHVkZSAmbHQ7bGludXgvd2FpdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jbGVhbnVwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGVyY3B1LWRlZnMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUuaCZndDsKQEAgLTg5LDUgJiM0Mzs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCkKIAlldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7CiB9CiAKJiM0MztERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSkKJiM0MzsKICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXM6IEtNU0FOIEZ1enppbmcgRXZhbHVhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgd2hldGhlciB0aGlzIHBhdGNoLCB0b3VjaGluZyBEUk0gc3luYyBvYmplY3RzIGFuZCBldmVudGZkcywgbmVjZXNzaXRhdGVzIGEgZGVlcGVyIGRpdmUgd2l0aCBLTVNBTiBmdXp6aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaW1wbGljYXRpb25zLgoKRmlyc3QsIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW4gYGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jYDogVGhlIGtleSBhbHRlcmF0aW9uIGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCByZXZvbHZlcyBhcm91bmQgYHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4YC4gSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSB0cmFuc2l0aW9uaW5nIHRvIHVzZSBhIGRlZmluZWQgZnJlZSBmdW5jdGlvbiBgX19mcmVlKGV2ZW50ZmQpID0gTlVMTGAuIFRoZSBlcnJvciBoYW5kbGluZyBpcyBhbHNvIHRpZ2h0ZW5lZDsgaWYgYGV2ZW50ZmRfY3R4X2ZkZ2V0YCBmYWlscyAocmV0dXJuaW5nIGFuIGVycm9yKSwgYGV2X2ZkX2N0eGAgaXMgZXhwbGljaXRseSBzZXQgdG8gYE5VTExgIGJlZm9yZSBqdW1waW5nIHRvIGBlcnJfZmRnZXRgLiBJbXBvcnRhbnRseSwgYG5vX2ZyZWVfcHRyYCBpcyBiZWluZyB1c2VkIHRvIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgY29udGV4dCwgYW5kIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgZW50cnktJmd0O2V2X2ZkX2N0eGAgaXMgd2l0aCBgbm9fZnJlZV9wdHIoZXZfZmRfY3R4KWAuIEl0IGFsc28gbG9va3MgbGlrZSB0aGV5IGFyZSBnZXR0aW5nIHJpZCBvZiBgZXJyX2t6YWxsb2NgIGFuZCBtYW51YWwgYGV2ZW50ZmRfY3R4X3B1dGAgY2FsbHMsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLgoKTmV4dCwgSSBzZWUgYSBzbWFsbCBidXQgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGBmcy9ldmVudGZkLmNgIHdpdGhpbiBgZXZlbnRmZF9jdHhfcHV0YC4gQSBOVUxMLXNhZmV0eSBjaGVjayAoYGlmICghY3R4KSByZXR1cm47YCkgaGFzIGJlZW4gYWRkZWQuIFRoaXMgaXMgZ29vZCBwcmFjdGljZS4KCkZpbmFsbHksIHRoZSBpbmNsdXNpb24gb2YgYCZsdDtsaW51eC9jbGVhbnVwLmgmZ3Q7YCBhbmQgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gZm9yIGBldmVudGZkYCBpbiBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGNvbmZpcm1zIHRoaXMgaXMgYSBjb25zaXN0ZW50IHJlZmFjdG9yaW5nIHRvIHVzZSBhIHN0YW5kYXJkaXplZCBmcmVlIGZ1bmN0aW9uLCB3aGljaCBpcyBnZW5lcmFsbHkgYSBnb29kIHRoaW5nLgoKTm93LCB0aGUgY3JpdGljYWwgcXVlc3Rpb246IGlzIHRoZXJlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2s/IExldCBtZSBydW4gdGhyb3VnaCB0aGlzLiBgZXZfZmRfY3R4YCBpcyBpbml0aWFsaXplZCB0byBOVUxMIHdpdGggdGhlIGBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMYC4gSWYgYGV2ZW50ZmRfY3R4X2ZkZ2V0YCBmYWlscywgd2Ugc2V0IGBldl9mZF9jdHhgIHRvIE5VTEwsIHByZXZlbnRpbmcgYW4gYXR0ZW1wdCB0byBjbGVhbiB1cCBhbiBlcnJvciBwb2ludGVyLiBXaGVuIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgYG5vX2ZyZWVfcHRyYCB0YWtlcyBjb250cm9sIGFuZCByZXNldHMgYGV2X2ZkX2N0eGAuIEZ1cnRoZXJtb3JlLCB0aGUgYGVudHJ5YCBpcyB6ZXJvZWQgd2l0aCBga3phbGxvY19vYmpgLCBhbmQgdGhlcmUgYXJlIG5vIGRpcmVjdCBgY29weV90b191c2VyYCBvcGVyYXRpb25zIGludm9sdmVkLiBUaGVyZSYjMzk7cyBubyBpbW1lZGlhdGVseSBvYnZpb3VzIHBhdGggdG8gdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIHJlYWRzLCBpbmZvLWxlYWtzLCBvciB1bmluaXRpYWxpemVkIGJyYW5jaGluZyB0aGF0IEkgY2FuIHNlZS4gVGhlIHBhdGNoIGlzIHZlcnkgZm9jdXNlZCBvbiByZXNvdXJjZSBjbGVhbnVwIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4KCkdpdmVuIHRoaXMgYW5hbHlzaXMsIEkmIzM5O2Qgc2F5IHRoZSBwcmltYXJ5IHJpc2tzIGhlcmUgYXJlIG1vcmUgcmVsYXRlZCB0byBjbGFzc2ljIHJlc291cmNlIG1hbmFnZW1lbnQgaXNzdWVz4oCUbGVha3MsIGRvdWJsZSBmcmVlcywgb3IgdXNlLWFmdGVyLWZyZWXigJRyYXRoZXIgdGhhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIFRoZXNlIGtpbmRzIG9mIHByb2JsZW1zIGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIHNhbml0aXplcnMuIEtNU0FOIGlzbiYjMzk7dCB0aGUgcHJpb3JpdHkgZm9yIHRoaXMgcGF0Y2guIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGUgc3Vycm91bmRpbmcgY29kZSBvZiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgdG8gYmUgc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIGludGVyYWN0aW9ucywgYnV0IEkgdGhpbmsgdGhlIGNoYW5nZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTQ2MDpcdFxuMTQ2MTpcdGludFxuMTQ2MjpcdGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcbjE0NjM6XHRcdFx0XHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxuMTQ2NDpcdHtcbjE0NjU6XHRcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XG4xNDY2Olx0XHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XG4xNDY3Olx0XHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XG4xNDY4Olx0XHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbjE0Njk6XHRcdGludCByZXQ7XG4xNDcwOlx0XG4xNDcxOlx0XHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpXG4xNDcyOlx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjE0NzM6XHRcbjE0NzQ6XHRcdGlmIChhcmdzLVx1MDAzZWZsYWdzIFx1MDAyNiB+RFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0FWQUlMQUJMRSlcbjE0NzU6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xNDc2Olx0XG4xNDc3Olx0XHRpZiAoYXJncy1cdTAwM2VwYWQpXG4xNDc4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTQ3OTpcdFxuMTQ4MDpcdFx0c3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBhcmdzLVx1MDAzZWhhbmRsZSk7XG4xNDgxOlx0XHRpZiAoIXN5bmNvYmopXG4xNDgyOlx0XHRcdHJldHVybiAtRU5PRU5UO1xuMTQ4MzpcdFxuMTQ4NDpcdFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cdTAwM2VmZCk7XG4xNDg1Olx0XHRpZiAoSVNfRVJSKGV2X2ZkX2N0eCkpIHtcbjE0ODY6XHRcdFx0cmV0ID0gUFRSX0VSUihldl9mZF9jdHgpO1xuMTQ4NzpcdFx0XHRldl9mZF9jdHggPSBOVUxMO1xuMTQ4ODpcdFx0XHRnb3RvIGVycl9mZGdldDtcbjE0ODk6XHRcdH1cbjE0OTA6XHRcbjE0OTE6XHRcdGVudHJ5ID0ga3phbGxvY19vYmooKmVudHJ5KTtcbjE0OTI6XHRcdGlmICghZW50cnkpIHtcbjE0OTM6XHRcdFx0cmV0ID0gLUVOT01FTTtcbjE0OTQ6XHRcdFx0Z290byBlcnJfZmRnZXQ7XG4xNDk1Olx0XHR9XG4xNDk2Olx0XHRlbnRyeS1cdTAwM2VzeW5jb2JqID0gc3luY29iajtcbjE0OTc6XHRcdGVudHJ5LVx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XG4xNDk4Olx0XHRlbnRyeS1cdTAwM2Vwb2ludCA9IGFyZ3MtXHUwMDNlcG9pbnQ7XG4xNDk5Olx0XHRlbnRyeS1cdTAwM2VmbGFncyA9IGFyZ3MtXHUwMDNlZmxhZ3M7XG4xNTAwOlx0XG4xNTAxOlx0XHRkcm1fc3luY29ial9hZGRfZXZlbnRmZChzeW5jb2JqLCBlbnRyeSk7XG4xNTAyOlx0XHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XG4xNTAzOlx0XG4xNTA0Olx0XHRyZXR1cm4gMDtcbjE1MDU6XHRcbjE1MDY6XHRlcnJfZmRnZXQ6XG4xNTA3Olx0XHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XG4xNTA4Olx0XHRyZXR1cm4gcmV0O1xuMTUwOTpcdH1cbjE1MTA6XHRcbjE1MTE6XHRpbnRcbjE1MTI6XHRkcm1fc3luY29ial9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxuMTUxMzpcdFx0XHRcdHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxuMTUxNDpcdHtcbjE1MTU6XHRcdHN0cnVjdCBkcm1fc3luY29ial9hcnJheSAqYXJncyA9IGRhdGE7XG4xNTE2Olx0XHRzdHJ1Y3QgZHJtX3N5bmNvYmogKipzeW5jb2JqcztcbjE1MTc6XHRcdHVpbnQzMl90IGk7XG4xNTE4Olx0XHRpbnQgcmV0O1xuMTUxOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTU3CgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb2RlIENoYW5nZXMqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBpbXBsZW1lbnRpbmcgYERFRklORV9GUkVFKGV2ZW50ZmQsIC4uLilgIHdoaWNoIGlzIHRoZW4gYXBwbGllZCBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYC4gIEEgbmljZSwgY2xlYW4gd2F5IHRvIGhhbmRsZSBjbGVhbnVwLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGEgTlVMTCBjaGVjayBpbiBgZXZlbnRmZF9jdHhfcHV0KClgIGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuIEkmIzM5O3ZlIHNjYW5uZWQgdGhlIGNvZGUgZm9yIHR5cGljYWwgdnVsbmVyYWJpbGl0aWVzLgoKQ3J1Y2lhbGx5LCBJJiMzOTttIG5vdCBzZWVpbmcgYW55IHJlZCBmbGFncyByZWdhcmRpbmcgdW5pbml0aWFsaXplZCBkYXRhLCBhY2NpZGVudGFsIGRhdGEgbGVha3MgdG8gdXNlciBzcGFjZSwgdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3Nlcywgb3IgbWVtb3J5IGV4cG9zdXJlLiBJJiMzOTt2ZSBhbHdheXMgYmVlbiBlc3BlY2lhbGx5IGNhcmVmdWwgYWJvdXQgbGlmZXRpbWUgbWFuYWdlbWVudCwgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgY2xlYW51cCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhpbmdzIGNhbiBnZXQgbWVzc3kgZmFzdC4gQW55IG9mIHRob3NlIGNvbW1vbiBlcnJvcnMgLSB0aGUgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZS1mcmVlLCBvciBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaXNzdWVzIHRoYXQgY2FuIGhhdW50IHVzIC0gd291bGQgYmUgZmxhZ2dlZCBieSB0aGUgdXN1YWwgc3VzcGVjdHMgLSBLQVNBTiBvciB0aGUgc3RhbmRhcmQga2VybmVsIGRldGVjdG9ycywgbm90IEtNU0FOLgoKU2luY2UgSSBkb24mIzM5O3Qgc2VlIGFueSBvZiB0aG9zZSBLTVNBTi1zcGVjaWZpYyB2dWxuZXJhYmlsaXRpZXMgdGhhdCBJIHdvdWxkIGJlIGxvb2tpbmcgZm9yIGluIHRoaXMgcGFydGljdWxhciBjb250ZXh0LCBpdCYjMzk7cyBzYWZlIHRvIHNheTogYE5lZWRzS01TQU4gPSBmYWxzZWAuIE5vdywgSSYjMzk7bSByZWFkeSB0byBtb3ZlIG9uLiBMZXQmIzM5O3MgZ2V0IHRoZSBjYWxsIHRvIGBzZXQtcmVzdWx0c2AgcHJlcGFyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBjbGVhbnVwIGF0dHJpYnV0ZSBoZWxwZXIgYERFRklORV9GUkVFKGV2ZW50ZmQsIC4uLilgIGFuZCB1cGRhdGVzIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKClgIHRvIHVzZSBhdXRvbWF0aWMgY2xlYW51cCAoYF9fZnJlZShldmVudGZkKWApIGFsb25nIHdpdGggYG5vX2ZyZWVfcHRyKClgLCBhbmQgYWRkcyBhIE5VTEwgY2hlY2sgdG8gYGV2ZW50ZmRfY3R4X3B1dCgpYC5cblxuVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCB1bmluaXRpYWxpemVkIHN0cnVjdCByZWFkcywgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlIGludHJvZHVjZWQgb3IgYWZmZWN0ZWQgYnkgdGhlc2UgY2hhbmdlcy4gQW55IHBvdGVudGlhbCBidWdzIGluIHRoaXMgcmVmYWN0b3Jpbmcgd291bGQgcGVydGFpbiB0byByZWZlcmVuY2UgY291bnRpbmcsIGxpZmV0aW1lIG1hbmFnZW1lbnQsIG9yIHJlc291cmNlIGNsZWFudXAgKGUuZy4gdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpLCB3aGljaCBhcmUgaGFuZGxlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnIHRvb2xzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNsZWFudXAgYXR0cmlidXRlIGhlbHBlciBgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKWAgYW5kIHVwZGF0ZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyBjbGVhbnVwIChgX19mcmVlKGV2ZW50ZmQpYCkgYWxvbmcgd2l0aCBgbm9fZnJlZV9wdHIoKWAsIGFuZCBhZGRzIGEgTlVMTCBjaGVjayB0byBgZXZlbnRmZF9jdHhfcHV0KClgLlxuXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHJlYWRzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UgaW50cm9kdWNlZCBvciBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW4gdGhpcyByZWZhY3RvcmluZyB3b3VsZCBwZXJ0YWluIHRvIHJlZmVyZW5jZSBjb3VudGluZywgbGlmZXRpbWUgbWFuYWdlbWVudCwgb3IgcmVzb3VyY2UgY2xlYW51cCAoZS5nLiB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSksIHdoaWNoIGFyZSBoYW5kbGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA2OjIxLjI4OTc2Njc1M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMjgwNjU4NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTVwiLFxuICAgIFwiRVZFTlRGRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxcIixcbiAgICBcImV2ZW50ZmRfY3R4X3B1dFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNsZWFudXAgYXR0cmlidXRlIGhlbHBlciBgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKWAgYW5kIHVwZGF0ZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyBjbGVhbnVwIChgX19mcmVlKGV2ZW50ZmQpYCkgYWxvbmcgd2l0aCBgbm9fZnJlZV9wdHIoKWAsIGFuZCBhZGRzIGEgTlVMTCBjaGVjayB0byBgZXZlbnRmZF9jdHhfcHV0KClgLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgTlVMTCBjaGVjayBpbiBldmVudGZkX2N0eF9wdXQoKSwgZGVmaW5lcyBhIF9fZnJlZShldmVudGZkKSBjbGVhbnVwIGhhbmRsZXIsIGFuZCByZWZhY3RvcnMgcmVzb3VyY2UgbGlmZWN5Y2xlIGhhbmRsaW5nIGluIHRoZSByZWFjaGFibGUgRFJNIGlvY3RsIGhhbmRsZXIgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpLiBGdXp6aW5nIHdpbGwgdGVzdCB3aGV0aGVyIHRoZSBhbHRlcmVkIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgY2xlYW51cCBmbG93IGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwgYmVoYXZlIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDY6MjEuMjg5Nzc0MDczWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzIyODY4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlNzMzOWY5ZDNiYTQwYWMwNjNjYmViOWUxZTUxOGY1MThlMmUxYjYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMTM6MDY6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xcbmluZGV4IGMyM2E1ZGUyN2VmZmEuLjI2MWQ1NjA2ZThiZDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xcbkBAIC0xNDYyLDkgKzE0NjIsOSBAQCBpbnRcXG4gZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbiBcXHRcXHRcXHQgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxcbiB7XFxuK1xcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XFxuIFxcdHN0cnVjdCBkcm1fc3luY29ial9ldmVudGZkICphcmdzID0gZGF0YTtcXG4gXFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbi1cXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eDtcXG4gXFx0c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnk7XFxuIFxcdGludCByZXQ7XFxuIFxcbkBAIC0xNDg0LDE2ICsxNDg0LDE3IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4gXFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cXHUwMDNlZmQpO1xcbiBcXHRpZiAoSVNfRVJSKGV2X2ZkX2N0eCkpIHtcXG4gXFx0XFx0cmV0ID0gUFRSX0VSUihldl9mZF9jdHgpO1xcbitcXHRcXHRldl9mZF9jdHggPSBOVUxMO1xcbiBcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4gXFx0fVxcbiBcXG4gXFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xcbiBcXHRpZiAoIWVudHJ5KSB7XFxuIFxcdFxcdHJldCA9IC1FTk9NRU07XFxuLVxcdFxcdGdvdG8gZXJyX2t6YWxsb2M7XFxuK1xcdFxcdGdvdG8gZXJyX2ZkZ2V0O1xcbiBcXHR9XFxuIFxcdGVudHJ5LVxcdTAwM2VzeW5jb2JqID0gc3luY29iajtcXG4tXFx0ZW50cnktXFx1MDAzZWV2X2ZkX2N0eCA9IGV2X2ZkX2N0eDtcXG4rXFx0ZW50cnktXFx1MDAzZWV2X2ZkX2N0eCA9IG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eCk7XFxuIFxcdGVudHJ5LVxcdTAwM2Vwb2ludCA9IGFyZ3MtXFx1MDAzZXBvaW50O1xcbiBcXHRlbnRyeS1cXHUwMDNlZmxhZ3MgPSBhcmdzLVxcdTAwM2VmbGFncztcXG4gXFxuQEAgLTE1MDIsOCArMTUwMyw2IEBAIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4gXFxuIFxcdHJldHVybiAwO1xcbiBcXG4tZXJyX2t6YWxsb2M6XFxuLVxcdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xcbiBlcnJfZmRnZXQ6XFxuIFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXFxuaW5kZXggOWQzM2EwMjc1N2Q1Mi4uMjQxMTFhMTYyODRmMSAxMDA2NDRcXG4tLS0gYS9mcy9ldmVudGZkLmNcXG4rKysgYi9mcy9ldmVudGZkLmNcXG5AQCAtMTAyLDYgKzEwMiw5IEBAIHN0YXRpYyB2b2lkIGV2ZW50ZmRfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4gICovXFxuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbiB7XFxuK1xcdGlmICghY3R4KVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRrcmVmX3B1dChcXHUwMDI2Y3R4LVxcdTAwM2VrcmVmLCBldmVudGZkX2ZyZWUpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcXG5AQCAtMTAsNiArMTAsNyBAQFxcbiAjZGVmaW5lIF9MSU5VWF9FVkVOVEZEX0hcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jbGVhbnVwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9lcnIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmNwdS1kZWZzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJjcHUuaFxcdTAwM2VcXG5AQCAtODksNSArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuIFxcdGV2ZW50ZmRfc2lnbmFsX21hc2soY3R4LCAwKTtcXG4gfVxcbiBcXG4rREVGSU5FX0ZSRUUoZXZlbnRmZCwgc3RydWN0IGV2ZW50ZmRfY3R4ICosIGV2ZW50ZmRfY3R4X3B1dChfVCkpXFxuK1xcbiAjZW5kaWYgLyogX0xJTlVYX0VWRU5URkRfSCAqL1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDY6MjEuOTYyODUyMDYyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo3MTMwMTIxMjI5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1cIixcbiAgICBcIkVWRU5URkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkcm1fc3luY29ial9ldmVudGZkX2lvY3RsXCIsXG4gICAgXCJldmVudGZkX2N0eF9wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgTlVMTCBjaGVjayBpbiBldmVudGZkX2N0eF9wdXQoKSwgZGVmaW5lcyBhIF9fZnJlZShldmVudGZkKSBjbGVhbnVwIGhhbmRsZXIsIGFuZCByZWZhY3RvcnMgcmVzb3VyY2UgbGlmZWN5Y2xlIGhhbmRsaW5nIGluIHRoZSByZWFjaGFibGUgRFJNIGlvY3RsIGhhbmRsZXIgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpLiBGdXp6aW5nIHdpbGwgdGVzdCB3aGV0aGVyIHRoZSBhbHRlcmVkIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgY2xlYW51cCBmbG93IGluIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwgYmVoYXZlIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNzMzOWY5ZDNiYTQwYWMwNjNjYmViOWUxZTUxOGY1MThlMmUxYjYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowNjoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbmluZGV4IGMyM2E1ZGUyN2VmZmEuLjI2MWQ1NjA2ZThiZDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbkBAIC0xNDYyLDkgKzE0NjIsOSBAQCBpbnRcbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRcdFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcbiB7XG4rXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ4NCwxNiArMTQ4NCwxNyBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbiBcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuIFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4rXHRcdGV2X2ZkX2N0eCA9IE5VTEw7XG4gXHRcdGdvdG8gZXJyX2ZkZ2V0O1xuIFx0fVxuIFxuIFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuIFx0aWYgKCFlbnRyeSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9remFsbG9jO1xuK1x0XHRnb3RvIGVycl9mZGdldDtcbiBcdH1cbiBcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuLVx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gZXZfZmRfY3R4O1xuK1x0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbiBcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbiBcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbiBcbkBAIC0xNTAyLDggKzE1MDMsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfa3phbGxvYzpcbi1cdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xuIGVycl9mZGdldDpcbiBcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4yNDExMWExNjI4NGYxIDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4rKysgYi9mcy9ldmVudGZkLmNcbkBAIC0xMDIsNiArMTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuICAqL1xuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIHtcbitcdGlmICghY3R4KVxuK1x0XHRyZXR1cm47XG4rXG4gXHRrcmVmX3B1dChcdTAwMjZjdHgtXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5AQCAtMTAsNiArMTAsNyBAQFxuICNkZWZpbmUgX0xJTlVYX0VWRU5URkRfSFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG5AQCAtODksNSArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gfVxuIFxuK0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuK1xuICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjoyMS45NjI4NTQwMTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODA3MjU1OTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgcGF0Y2ggZG93bi4gVGhlIGZvY3VzIGhlcmUgc2VlbXMgdG8gYmUgb24gY2xlYW51cCBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IHJlbGF0aW5nIHRvIGBldmVudGZkYCBjb250ZXh0cyB3aXRoaW4gdGhlIERSTSBzeW5jb2JqIGZyYW1ld29yay4gSSdtIHNlZWluZyBjaGFuZ2VzIGFjcm9zcyB0aHJlZSBmaWxlczogYGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jYCwgYGZzL2V2ZW50ZmQuY2AsIGFuZCBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgLlxuXG5GaXJzdCwgdGhlIGBldmVudGZkLmNgIGNoYW5nZSBpcyBzdHJhaWdodGZvcndhcmQg4oCTIGEgbnVsbCBjaGVjayBpbiBgZXZlbnRmZF9jdHhfcHV0YC4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFsd2F5cyBhIGdvb2QgaWRlYS4gVGhlIGhlYWRlciBmaWxlIGludHJvZHVjZXMgYSBgREVGSU5FX0ZSRUVgIG1hY3JvIGZvciBgZXZlbnRmZGAsIGVzc2VudGlhbGx5IGF1dG9tYXRpbmcgdGhlIGNsZWFudXAgcHJvY2VzcyB3aXRoIGBldmVudGZkX2N0eF9wdXRgLiBUaGlzIGlzIGEgdXNlZnVsIGFic3RyYWN0aW9uIGFuZCBsaWtlbHkgaW1wcm92ZXMgY29kZSByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LlxuXG5UaGUgbWVhdCBvZiB0aGUgY2hhbmdlcywgaG93ZXZlciwgc2VlbSB0byBiZSBpbiBgZHJtX3N5bmNvYmouY2AsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLiAgV2UncmUgdXNpbmcgdGhlIGBfX2ZyZWUoZXZlbnRmZClgIGF0dHJpYnV0ZSBmb3IgY2xlYW51cCBvZiBgZXZfZmRfY3R4YCwgYW5kIGBldl9mZF9jdHhgIGlzIGV4cGxpY2l0bHkgc2V0IHRvIGBOVUxMYCB3aGVuIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLiBUaGlzIGxvb2tzIGxpa2UgYSBjbGVhciBhdHRlbXB0IHRvIGVuc3VyZSB0aGF0IHRoZSBldmVudGZkIGNvbnRleHQgaXMgcmVsZWFzZWQgcHJvcGVybHkgaW4gYWxsIGNvZGUgcGF0aHMsIGVzcGVjaWFsbHkgZXJyb3IgcGF0aHMuIFRoZSByZW1vdmFsIG9mIHRoZSBtYW51YWwgYGV2ZW50ZmRfY3R4X3B1dGAgYW5kIHRoZSBgZXJyX2t6YWxsb2NgIGxhYmVsIGZ1cnRoZXIgcmVpbmZvcmNlIHRoaXMgY2xlYW51cC1mb2N1c2VkIGFwcHJvYWNoLiAgVGhlIGBub19mcmVlX3B0cmAgdXNhZ2Ugd2hlbiBhc3NpZ25pbmcgdG8gYGVudHJ5LVx1MDAzZWV2X2ZkX2N0eGAgaXMgaW50ZXJlc3Rpbmc7IGl0IHN1Z2dlc3RzIHRoYXQgdGhlIG93bmVyc2hpcCBhbmQgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiBgZXZfZmRfY3R4YCBpcyBjYXJlZnVsbHkgaGFuZGxlZC5cblxuTm93LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBicm9hZGVyIGNvbnRleHQuICBXZSdyZSB0YWxraW5nIGFib3V0IERSTSBzeW5jb2JqLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBEUk0gY29yZSBhbmQgZXhwb3NlZCB2aWEgdGhlIHVzdWFsIERSTSBkZXZpY2UgaW9jdGxzLiBUaGlzIG1lYW5zIGFjY2Vzc2liaWxpdHkgaXMgdmlhIGRldmljZXMgbGlrZSBgL2Rldi9kcmkvY2FyZCpgLCBgL2Rldi9kcmkvcmVuZGVyRCpgLCBhbmQgZXZlbiB0aHJvdWdoIG1vY2sgZGV2aWNlcyBsaWtlIGB2Z2VtYCBvciBgdmttc2AuICBHaXZlbiB0aGUgbmF0dXJlIG9mIHRob3NlIGludGVyZmFjZXMsIHN5emthbGxlciB0ZXN0cyB0aGUgRFJNIGlvY3RscyBoZWF2aWx5LCBpbmNsdWRpbmcgYERSTV9JT0NUTF9TWU5DT0JKX0VWRU5URkRgLiBgZXZlbnRmZGAgaXRzZWxmIGlzIGEgY29yZSBrZXJuZWwgZmVhdHVyZS5cblxuU28sIEknbSBnb2luZyB0byBydW4gYSBmZXcgcXVpY2sgYGdyZXBgIHNlYXJjaGVzIGFuZCBLY29uZmlnIGNoZWNrcyB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHN5bWJvbHMgYXQgcGxheSBoZXJlLiBUaGlzIHBhdGNoIHNlZW1zIHNvdW5kIGF0IGZpcnN0IGdsYW5jZSwgYnV0IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBldmVyeXRoaW5nIGlzIGFzIGV4cGVjdGVkLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBjb250cmlidXRpb24gaW1wcm92aW5nIGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYnkgZW1wbG95aW5nIG1vcmUgbW9kZXJuIHRvb2xzIHRvIGRvIHNvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjY4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDY6NDAuMDM1NDE3MzYyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNjQ4MTExNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfRFJNfGNvbmZpZyBEUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODQxOSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNy0jXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6ODptZW51Y29uZmlnIERSTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlciAoWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyIERSSSBzdXBwb3J0KVxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTM0PWlmIERSTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM1LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjM2OmNvbmZpZyBEUk1fTUlQSV9EQklcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNDAtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6NDE6Y29uZmlnIERSTV9NSVBJX0RTSVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQyLVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQ0LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjQ1OmNvbmZpZyBEUk1fS01TX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01MS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo1Mjpjb25maWcgRFJNX0RSQVdcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01My1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy01NS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo1Njpjb25maWcgRFJNX1BBTklDXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNTctXFx0Ym9vbCBcXFwiRGlzcGxheSBhIHVzZXItZnJpZW5kbHkgbWVzc2FnZSB3aGVuIGEga2VybmVsIHBhbmljIG9jY3Vyc1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjY5OmNvbmZpZyBEUk1fUEFOSUNfRk9SRUdST1VORF9DT0xPUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTcwLVxcdGhleCBcXFwiRHJtIHBhbmljIHNjcmVlbiBmb3JlZ3JvdW5kIGNvbG9yLCBpbiBSR0JcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03My1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzo3NDpjb25maWcgRFJNX1BBTklDX0JBQ0tHUk9VTkRfQ09MT1JcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy03NS1cXHRoZXggXFxcIkRybSBwYW5pYyBzY3JlZW4gYmFja2dyb3VuZCBjb2xvciwgaW4gUkdCXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctNzgtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Nzk6Y29uZmlnIERSTV9QQU5JQ19ERUJVR1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkFkZCBhIGRlYnVnIGZzIGVudHJ5IHRvIHRyaWdnZXIgZHJtX3BhbmljXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctODctXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6ODg6Y29uZmlnIERSTV9QQU5JQ19TQ1JFRU5cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy04OS1cXHRzdHJpbmcgXFxcIlBhbmljIHNjcmVlbiBmb3JtYXR0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMDAtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTAxOmNvbmZpZyBEUk1fUEFOSUNfU0NSRUVOX1FSX0NPREVcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMDItXFx0Ym9vbCBcXFwiQWRkIGEgcGFuaWMgc2NyZWVuIHdpdGggYSBRUiBjb2RlXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTExLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjExMjpjb25maWcgRFJNX1BBTklDX1NDUkVFTl9RUl9DT0RFX1VSTFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTExMy1cXHRzdHJpbmcgXFxcIkJhc2UgVVJMIG9mIHRoZSBRUiBjb2RlIGluIHRoZSBwYW5pYyBzY3JlZW5cXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMjItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTIzOmNvbmZpZyBEUk1fUEFOSUNfU0NSRUVOX1FSX1ZFUlNJT05cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMjQtXFx0aW50IFxcXCJNYXhpbXVtIHZlcnNpb24gKHNpemUpIG9mIHRoZSBRUiBjb2RlLlxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTEzMi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxMzM6Y29uZmlnIERSTV9SQVNcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMzQtXFx0Ym9vbCBcXFwiRFJNIFJBUyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTQyLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE0Mzpjb25maWcgRFJNX0RFQlVHX0RQX01TVF9UT1BPTE9HWV9SRUZTXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTQ0LSAgICAgICAgYm9vbCBcXFwiRW5hYmxlIHJlZmNvdW50IGJhY2t0cmFjZSBoaXN0b3J5IGluIHRoZSBEUCBNU1QgaGVscGVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE1Ny1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNTg6Y29uZmlnIERSTV9ERUJVR19NT0RFU0VUX0xPQ0tcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNTktXFx0Ym9vbCBcXFwiRW5hYmxlIGJhY2t0cmFjZSBoaXN0b3J5IGZvciBsb2NrIGNvbnRlbnRpb25cXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xNzItXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTczOmNvbmZpZyBEUk1fQ0xJRU5UXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTc0LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTE4Mj1zb3VyY2UgXFxcImRyaXZlcnMvZ3B1L2RybS9jbGllbnRzL0tjb25maWdcXFwiXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTgzLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE4NDpjb25maWcgRFJNX0xPQURfRURJRF9GSVJNV0FSRVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE4NS1cXHRib29sIFxcXCJBbGxvdyB0byBzcGVjaWZ5IGFuIEVESUQgZGF0YSBzZXQgaW5zdGVhZCBvZiBwcm9iaW5nIGZvciBpdFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTE5Nj1zb3VyY2UgXFxcImRyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L0tjb25maWdcXFwiXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTk3LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjE5ODpjb25maWcgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTE5OS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjA2LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIwNzpjb25maWcgRFJNX0VYRUNcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMDgtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIxMi1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMTM6Y29uZmlnIERSTV9HUFVWTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIxNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjIxPWNvbmZpZyBSVVNUX0RSTV9HUFVWTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjI3LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIyODpjb25maWcgRFJNX0dQVVNWTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjM2LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIzNzpjb25maWcgRFJNX0JVRERZXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjM4LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDMtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjQ0OmNvbmZpZyBEUk1fVlJBTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNDUtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI0OS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNTA6Y29uZmlnIERSTV9UVE1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjUxLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNTktXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjYwOmNvbmZpZyBEUk1fR0VNX0RNQV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNjEtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI2OC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNjk6Y29uZmlnIERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjcwLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yNzg9Y29uZmlnIFJVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4NC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyODU6Y29uZmlnIERSTV9TVUJBTExPQ19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yODYtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4OC1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyODk6Y29uZmlnIERSTV9TQ0hFRFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5MC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjkzLSMgU2VwYXJhdGUgb3B0aW9uIGFzIG5vdCBhbGwgRFJNIGRyaXZlcnMgdXNlIGl0XFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6Mjk0OmNvbmZpZyBEUk1fUEFORUxfQkFDS0xJR0hUX1FVSVJLU1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5NS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5Ni1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyOTc6Y29uZmlnIERSTV9QUklWQUNZX1NDUkVFTlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI5OC1cXHRib29sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0zNjg9ZW5kaWZcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3MC0jIFNlcGFyYXRlIG9wdGlvbiBiZWNhdXNlIGRybV9wYW5lbF9vcmllbnRhdGlvbl9xdWlya3MuYyBpcyBzaGFyZWQgd2l0aCBmYmRldlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjM3MTpjb25maWcgRFJNX1BBTkVMX09SSUVOVEFUSU9OX1FVSVJLU1xcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTM3Mi1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6MTpjb25maWcgRFJNX1VTRV9EWU5BTUlDX0RFQlVHXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMi1cXHRib29sIFxcXCJ1c2UgZHluYW1pYyBkZWJ1ZyB0byBpbXBsZW1lbnQgZHJtLmRlYnVnXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTMtXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6MTQ6Y29uZmlnIERSTV9XRVJST1JcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy0xNS1cXHRib29sIFxcXCJDb21waWxlIHRoZSBkcm0gc3Vic3lzdGVtIHdpdGggd2FybmluZ3MgYXMgZXJyb3JzXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMjctXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc6Mjg6Y29uZmlnIERSTV9IRUFERVJfVEVTVFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTI5LVxcdGJvb2wgXFxcIkVuc3VyZSBEUk0gaGVhZGVycyBhcmUgc2VsZi1jb250YWluZWQgYW5kIHBhc3Mga2VybmVsLWRvY1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTM4LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjM5OmNvbmZpZyBEUk1fREVCVUdfTU1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy00MC1cXHRib29sIFxcXCJJbnNlcnQgZXh0cmEgY2hlY2tzIGFuZCBkZWJ1ZyBpbmZvIGludG8gdGhlIERSTSByYW5nZSBtYW5hZ2Vyc1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTUyLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjUzOmNvbmZpZyBEUk1fS1VOSVRfVEVTVF9IRUxQRVJTXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctNTQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTU5LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjYwOmNvbmZpZyBEUk1fS1VOSVRfVEVTVFxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTYxLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgRFJNXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy04NS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zzo4Njpjb25maWcgRFJNX1RUTV9LVU5JVF9URVNUXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctODctXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBUVE1cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTEwMS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1ZzoxMDI6Y29uZmlnIERSTV9TQ0hFRF9LVU5JVF9URVNUXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTAzLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgdGhlIERSTSBzY2hlZHVsZXJcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTExMy1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1ZzoxMTQ6Y29uZmlnIERSTV9FWFBPUlRfRk9SX1RFU1RTXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctMTE1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS01LVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo2OkNGTEFHUy0kKENPTkZJR19EUk1fVVNFX0RZTkFNSUNfREVCVUcpXFx0Kz0gLUREWU5BTUlDX0RFQlVHX01PRFVMRVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTI5PWVuZGlmXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMzItIyBFbmFibGUgLVdlcnJvciBpbiBDSSBhbmQgZGV2ZWxvcG1lbnRcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MzM6c3ViZGlyLWNjZmxhZ3MtJChDT05GSUdfRFJNX1dFUlJPUikgKz0gLVdlcnJvclxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0zNC1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MzU9ZHJtLXkgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTc1LVxcdGRybV93cml0ZWJhY2sub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo3Njpkcm0tJChDT05GSUdfRFJNX0NMSUVOVCkgKz0gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS03Ny1cXHRkcm1fY2xpZW50Lm8gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTgxPWRybS0kKENPTkZJR19DT01QQVQpICs9IGRybV9pb2MzMi5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjgyOmRybS0kKENPTkZJR19EUk1fUEFORUwpICs9IGRybV9wYW5lbC5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTgzLWRybS0kKENPTkZJR19PRikgKz0gZHJtX29mLm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT04NT1kcm0tJChDT05GSUdfREVCVUdfRlMpICs9IFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS04Ny1cXHRkcm1fZGVidWdmc19jcmMub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo4ODpkcm0tJChDT05GSUdfRFJNX0xPQURfRURJRF9GSVJNV0FSRSkgKz0gZHJtX2VkaWRfbG9hZC5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjg5OmRybS0kKENPTkZJR19EUk1fUFJJVkFDWV9TQ1JFRU4pICs9IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtOTAtXFx0ZHJtX3ByaXZhY3lfc2NyZWVuLm8gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS05MS1cXHRkcm1fcHJpdmFjeV9zY3JlZW5feDg2Lm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTI6ZHJtLSQoQ09ORklHX0RSTV9BQ0NFTCkgKz0gLi4vLi4vYWNjZWwvZHJtX2FjY2VsLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTM6ZHJtLSQoQ09ORklHX0RSTV9QQU5JQykgKz0gZHJtX3BhbmljLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6OTQ6ZHJtLSQoQ09ORklHX0RSTV9EUkFXKSArPSBkcm1fZHJhdy5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjk1OmRybS0kKENPTkZJR19EUk1fUEFOSUNfU0NSRUVOX1FSX0NPREUpICs9IGRybV9wYW5pY19xci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjk2OmRybS0kKENPTkZJR19EUk1fUkFTKSArPSBkcm1fcmFzLm8gZHJtX3Jhc19ubC5vIGRybV9yYXNfZ2VubF9mYW1pbHkub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo5NzpvYmotJChDT05GSUdfRFJNKVxcdCs9IGRybS5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTk4LVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo5OTpvYmotJChDT05GSUdfRFJNX1BBTkVMX09SSUVOVEFUSU9OX1FVSVJLUykgKz0gZHJtX3BhbmVsX29yaWVudGF0aW9uX3F1aXJrcy5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfRFJNX1BBTkVMX0JBQ0tMSUdIVF9RVUlSS1MpICs9IGRybV9wYW5lbF9iYWNrbGlnaHRfcXVpcmtzLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTAxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEwNS0jXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEwNjpvYmotJChDT05GSUdfRFJNX0VYRUMpICs9IGRybV9leGVjLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTA3Om9iai0kKENPTkZJR19EUk1fR1BVVk0pICs9IGRybV9ncHV2bS5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEwOC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMTE9ZHJtX2dwdXN2bV9oZWxwZXItJChDT05GSUdfWk9ORV9ERVZJQ0UpICs9IFxcXFxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTQtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjExNTpvYmotJChDT05GSUdfRFJNX0dQVVNWTSkgKz0gZHJtX2dwdXN2bV9oZWxwZXIub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTYtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjExNzpvYmotJChDT05GSUdfRFJNX0JVRERZKSArPSBkcm1fYnVkZHkub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMTgtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTExOT1kcm1fZG1hX2hlbHBlci15IDo9IGRybV9nZW1fZG1hX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyMDpkcm1fZG1hX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJkZXZfZG1hLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTIxOmRybV9kbWFfaGVscGVyLSQoQ09ORklHX0RSTV9LTVNfSEVMUEVSKSArPSBkcm1fZmJfZG1hX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyMjpvYmotJChDT05GSUdfRFJNX0dFTV9ETUFfSEVMUEVSKSArPSBkcm1fZG1hX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTEyMy1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTI0PWRybV9zaG1lbV9oZWxwZXIteSA6PSBkcm1fZ2VtX3NobWVtX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyNTpkcm1fc2htZW1faGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IGRybV9mYmRldl9zaG1lbS5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEyNjpvYmotJChDT05GSUdfRFJNX0dFTV9TSE1FTV9IRUxQRVIpICs9IGRybV9zaG1lbV9oZWxwZXIub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMjctXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTEyOD1kcm1fc3ViYWxsb2NfaGVscGVyLXkgOj0gZHJtX3N1YmFsbG9jLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTI5Om9iai0kKENPTkZJR19EUk1fU1VCQUxMT0NfSEVMUEVSKSArPSBkcm1fc3ViYWxsb2NfaGVscGVyLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTMwLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0xMzE9ZHJtX3ZyYW1faGVscGVyLXkgOj0gZHJtX2dlbV92cmFtX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfRFJNX1ZSQU1fSEVMUEVSKSArPSBkcm1fdnJhbV9oZWxwZXIub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMzMtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTEzND1kcm1fdHRtX2hlbHBlci15IDo9IGRybV9nZW1fdHRtX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjEzNTpkcm1fdHRtX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJkZXZfdHRtLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTM2Om9iai0kKENPTkZJR19EUk1fVFRNX0hFTFBFUikgKz0gZHJtX3R0bV9oZWxwZXIub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xMzctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MTQyPWRybV9rbXNfaGVscGVyLXkgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE1OC1cXHRkcm1fdmJsYW5rX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE1OTpkcm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fUEFORUxfQlJJREdFKSArPSBicmlkZ2UvcGFuZWwub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNjA6ZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0gZHJtX2ZiX2hlbHBlci5vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2MTpvYmotJChDT05GSUdfRFJNX0tNU19IRUxQRVIpICs9IGRybV9rbXNfaGVscGVyLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTYyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTE2Nz1vYmoteVxcdFxcdFxcdCs9IHRlc3RzL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0xNjgtXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE2OTpvYmotJChDT05GSUdfRFJNX01JUElfREJJKSArPSBkcm1fbWlwaV9kYmkub1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzA6b2JqLSQoQ09ORklHX0RSTV9NSVBJX0RTSSkgKz0gZHJtX21pcGlfZHNpLm9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMTcxLW9iai15XFx0XFx0XFx0Kz0gYXJtL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTE3Mz1vYmoteVxcdFxcdFxcdCs9IGRpc3BsYXkvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE3NDpvYmotJChDT05GSUdfRFJNX1RUTSlcXHQrPSB0dG0vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE3NTpvYmotJChDT05GSUdfRFJNX1NDSEVEKVxcdCs9IHNjaGVkdWxlci9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc2Om9iai0kKENPTkZJR19EUk1fUkFERU9OKSs9IHJhZGVvbi9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTc3Om9iai0kKENPTkZJR19EUk1fQU1ER1BVKSs9IGFtZC9hbWRncHUvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE3ODpvYmotJChDT05GSUdfRFJNX0FNREdQVSkrPSBhbWQvYW1keGNwL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxNzk6b2JqLSQoQ09ORklHX0RSTV9JOTE1KVxcdCs9IGk5MTUvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4MDpvYmotJChDT05GSUdfRFJNX1hFKVxcdCs9IHhlL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODE6b2JqLSQoQ09ORklHX0RSTV9LTUJfRElTUExBWSkgICs9IGttYi9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTgyOm9iai0kKENPTkZJR19EUk1fTUdBRzIwMCkgKz0gbWdhZzIwMC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTgzOm9iai0kKENPTkZJR19EUk1fVjNEKSAgKz0gdjNkL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODQ6b2JqLSQoQ09ORklHX0RSTV9WQzQpICArPSB2YzQvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4NTpvYmotJChDT05GSUdfRFJNX1ZNV0dGWCkrPSB2bXdnZngvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE4NjpvYmotJChDT05GSUdfRFJNX1ZHRU0pXFx0Kz0gdmdlbS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTg3Om9iai0kKENPTkZJR19EUk1fVktNUylcXHQrPSB2a21zL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxODg6b2JqLSQoQ09ORklHX0RSTV9OT1VWRUFVKSArPW5vdXZlYXUvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE4OS0jIG5vdmEtZHJtIGlzIGJ1aWx0IGZyb20gZHJpdmVycy9ncHUvTWFrZWZpbGUgdG9nZXRoZXIgd2l0aCBub3ZhLWNvcmUuXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5MDpvYmotJChDT05GSUdfRFJNX0VYWU5PUykgKz1leHlub3MvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5MTpvYmotJChDT05GSUdfRFJNX1JPQ0tDSElQKSArPXJvY2tjaGlwL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTI6b2JqLSQoQ09ORklHX0RSTV9HTUE1MDApICs9IGdtYTUwMC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTkzOm9iai0kKENPTkZJR19EUk1fVURMKSArPSB1ZGwvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5NDpvYmotJChDT05GSUdfRFJNX0FTVCkgKz0gYXN0L1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToxOTU6b2JqLSQoQ09ORklHX0RSTV9BUk1BREEpICs9IGFybWFkYS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MTk2Om9iai0kKENPTkZJR19EUk1fQVRNRUxfSExDREMpXFx0Kz0gYXRtZWwtaGxjZGMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTE5Ny1vYmoteVxcdFxcdFxcdCs9IHJlbmVzYXMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTE5OD1vYmoteVxcdFxcdFxcdCs9IG9tYXBkcm0vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjE5OTpvYmotJChDT05GSUdfRFJNX1NVTjRJKSArPSBzdW40aS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjAwLW9iai15XFx0XFx0XFx0Kz0gdGlsY2RjL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDE6b2JqLSQoQ09ORklHX0RSTV9RWEwpICs9IHF4bC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjAyOm9iai0kKENPTkZJR19EUk1fVklSVElPX0dQVSkgKz0gdmlydGlvL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDM6b2JqLSQoQ09ORklHX0RSTV9NU00pICs9IG1zbS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjA0Om9iai0kKENPTkZJR19EUk1fVEVHUkEpICs9IHRlZ3JhL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMDU6b2JqLSQoQ09ORklHX0RSTV9TVE0pICs9IHN0bS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjA2Om9iai0kKENPTkZJR19EUk1fU1RJKSArPSBzdGkvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIwNy1vYmoteSBcXHRcXHRcXHQrPSBpbXgvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIwODpvYmotJChDT05GSUdfRFJNX0lOR0VOSUMpICs9IGluZ2VuaWMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIwOTpvYmotJChDT05GSUdfRFJNX0xPR0lDVkMpICs9IGxvZ2ljdmMvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIxMDpvYmotJChDT05GSUdfRFJNX01FRElBVEVLKSArPSBtZWRpYXRlay9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjExOm9iai0kKENPTkZJR19EUk1fTUVTT04pXFx0Kz0gbWVzb24vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIxMi1vYmoteVxcdFxcdFxcdCs9IHBhbmVsL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yMTM9b2JqLXlcXHRcXHRcXHQrPSBicmlkZ2UvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIxNDpvYmotJChDT05GSUdfRFJNX0ZTTF9EQ1UpICs9IGZzbC1kY3UvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIxNTpvYmotJChDT05GSUdfRFJNX0VUTkFWSVYpICs9IGV0bmF2aXYvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIxNi1vYmoteVxcdFxcdFxcdCs9IGhpc2lsaWNvbi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yMTk9b2JqLXlcXHRcXHRcXHQrPSB0aW55L1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjA6b2JqLSQoQ09ORklHX0RSTV9QTDExMSkgKz0gcGwxMTEvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyMTpvYmotJChDT05GSUdfRFJNX1RWRTIwMCkgKz0gdHZlMjAwL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjI6b2JqLSQoQ09ORklHX0RSTV9BRFApICs9IGFkcC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjIzOm9iai0kKENPTkZJR19EUk1fWEVOKSArPSB4ZW4vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIyNDpvYmotJChDT05GSUdfRFJNX1ZCT1hWSURFTykgKz0gdmJveHZpZGVvL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjU6b2JqLSQoQ09ORklHX0RSTV9MSU1BKSAgKz0gbGltYS9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI2Om9iai0kKENPTkZJR19EUk1fUEFORlJPU1QpICs9IHBhbmZyb3N0L1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjc6b2JqLSQoQ09ORklHX0RSTV9QQU5USE9SKSArPSBwYW50aG9yL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMjg6b2JqLSQoQ09ORklHX0RSTV9UWVIpICs9IHR5ci9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjI5Om9iai0kKENPTkZJR19EUk1fQVNQRUVEX0dGWCkgKz0gYXNwZWVkL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzA6b2JqLSQoQ09ORklHX0RSTV9NQ0RFKSArPSBtY2RlL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzE6b2JqLSQoQ09ORklHX0RSTV9USURTUykgKz0gdGlkc3MvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIzMi1vYmoteVxcdFxcdFxcdCs9IHhsbngvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTIzMz1vYmoteVxcdFxcdFxcdCs9IGd1ZC9cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjM0Om9iai0kKENPTkZJR19EUk1fSFlQRVJWKSArPSBoeXBlcnYvXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTIzNS1vYmoteVxcdFxcdFxcdCs9IHNpdHJvbml4L1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yMzY9b2JqLXlcXHRcXHRcXHQrPSBzb2xvbW9uL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzc6b2JqLSQoQ09ORklHX0RSTV9TUFJEKSArPSBzcHJkL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyMzg6b2JqLSQoQ09ORklHX0RSTV9MT09OR1NPTikgKz0gbG9vbmdzb24vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlOjIzOTpvYmotJChDT05GSUdfRFJNX1BPV0VSVlIpICs9IGltYWdpbmF0aW9uL1xcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyNDA6b2JqLSQoQ09ORklHX0RSTV9WRVJJU0lMSUNPTl9EQykgKz0gdmVyaXNpbGljb24vXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTI0MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZT0yNDM9aGRydGVzdC1maWxlcyA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtMjQ2LVxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZToyNDc6YWx3YXlzLSQoQ09ORklHX0RSTV9IRUFERVJfVEVTVCkgKz0gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZS0yNDgtXFx0JChwYXRzdWJzdCAlLmgsJS5oZHJ0ZXN0LCAkKGhkcnRlc3QtZmlsZXMpKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlPTI1MT1xdWlldF9jbWRfaGRydGVzdCA9IEhEUlRFU1QgJChwYXRzdWJzdCAlLmhkcnRlc3QsJS5oLCRAKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTI1My1cXHRcXHQkKENDKSAkKGNfZmxhZ3MpIC1mc3ludGF4LW9ubHkgLXggYyAvZGV2L251bGwgLWluY2x1ZGUgJFxcdTAwM2MgLWluY2x1ZGUgJFxcdTAwM2M7IFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU6MjU0OlxcdFxcdCBQWVRIT05ET05UV1JJVEVCWVRFQ09ERT0xICQoUFlUSE9OMykgJChLRVJORUxET0MpIC1ub25lICQoaWYgJChDT05GSUdfV0VSUk9SKSQoQ09ORklHX0RSTV9XRVJST1IpLC1XZXJyb3IpICRcXHUwMDNjOyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTI1NS1cXHRcXHR0b3VjaCAkQFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIE1JVFxcbmRyaXZlcnMvZ3B1L2RybS9hZHAvS2NvbmZpZzoyOmNvbmZpZyBEUk1fQURQXFxuZHJpdmVycy9ncHUvZHJtL2FkcC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkRSTSBTdXBwb3J0IGZvciBwcmUtRENQIEFwcGxlIGRpc3BsYXkgY29udHJvbGxlcnNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYWRwL01ha2VmaWxlPTQ9YWRwZHJtLW1pcGkteSA6PSBhZHAtbWlwaS5vXFxuZHJpdmVycy9ncHUvZHJtL2FkcC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19EUk1fQURQKSArPSBhZHBkcm0ubyBhZHBkcm0tbWlwaS5vXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9LY29uZmlnPTI9bWVudSBcXFwiQUNQIChBdWRpbyBDb1Byb2Nlc3NvcikgQ29uZmlndXJhdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYWNwL0tjb25maWctNC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9LY29uZmlnOjU6Y29uZmlnIERSTV9BTURfQUNQXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hY3AvS2NvbmZpZy02LVxcdGJvb2wgXFxcIkVuYWJsZSBBTUQgQXVkaW8gQ29Qcm9jZXNzb3IgSVAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctMi1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjM6Y29uZmlnIERSTV9BTURHUFVcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkFNRCBHUFVcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc6NDE6Y29uZmlnIERSTV9BTURHUFVfU0lcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIkVuYWJsZSBhbWRncHUgc3VwcG9ydCBmb3IgU0kgcGFydHNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTU1LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWc6NTY6Y29uZmlnIERSTV9BTURHUFVfQ0lLXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy01Ny1cXHRib29sIFxcXCJFbmFibGUgYW1kZ3B1IHN1cHBvcnQgZm9yIENJSyBwYXJ0c1xcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctNzQtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo3NTpjb25maWcgRFJNX0FNREdQVV9VU0VSUFRSXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy03Ni1cXHRib29sIFxcXCJBbHdheXMgZW5hYmxlIHVzZXJwdHIgd3JpdGUgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctODMtXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzo4NDpjb25maWcgRFJNX0FNRF9JU1BcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTg1LVxcdGJvb2wgXFxcIkVuYWJsZSBBTUQgSW1hZ2UgU2lnbmFsIFByb2Nlc3NvciBJUCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZy05NC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjk1OmNvbmZpZyBEUk1fQU1ER1BVX1dFUlJPUlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L0tjb25maWctOTYtXFx0Ym9vbCBcXFwiRm9yY2UgdGhlIGNvbXBpbGVyIHRvIHRocm93IGFuIGVycm9yIGluc3RlYWQgb2YgYSB3YXJuaW5nIHdoZW4gY29tcGlsaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU9NDg9c3ViZGlyLWNjZmxhZ3MteSArPSAtV25vLW92ZXJyaWRlLWluaXRcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTo0OTpzdWJkaXItY2NmbGFncy0kKENPTkZJR19EUk1fQU1ER1BVX1dFUlJPUikgKz0gLVdlcnJvclxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTUwLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU9Nzk9YW1kZ3B1LSQoQ09ORklHX1BFUkZfRVZFTlRTKSArPSBhbWRncHVfcG11Lm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTgxLSMgYWRkIGFzaWMgc3BlY2lmaWMgYmxvY2tcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZTo4MjphbWRncHUtJChDT05GSUdfRFJNX0FNREdQVV9DSUspKz0gY2lrLm8gY2lrX2loLm8gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTgzLVxcdGRjZV92OF8wLm8gZ2Z4X3Y3XzAubyBjaWtfc2RtYS5vIHV2ZF92NF8yLm8gdmNlX3YyXzAub1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTg0LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjg1OmFtZGdwdS0kKENPTkZJR19EUk1fQU1ER1BVX1NJKSs9IHNpLm8gZ21jX3Y2XzAubyBnZnhfdjZfMC5vIHNpX2loLm8gc2lfZG1hLm8gZGNlX3Y2XzAubyBcXFxcXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtODYtXFx0dXZkX3YzXzEubyB2Y2VfdjFfMC5vXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZT0yODU9YW1kZ3B1LXkgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMjk4LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjI5OTppZm5lcSAoJChDT05GSUdfRFJNX0FNREdQVV9DSUspLClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0zMDAtYW1kZ3B1LXkgKz0gYW1kZ3B1X2FtZGtmZF9nZnhfdjcub1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU9MzA5PWFtZGdwdS15ICs9IGFtZGdwdV9qb2Iub1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzExLSMgQUNQIGNvbXBvbmV0XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU6MzEyOmlmbmVxICgkKENPTkZJR19EUk1fQU1EX0FDUCksKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMxMy1hbWRncHUteSArPSBhbWRncHVfYWNwLm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTMyOD1hbWRncHUteSArPSAkKEFNRF9QT1dFUlBMQVlfRklMRVMpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzI5LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjMzMDppZm5lcSAoJChDT05GSUdfRFJNX0FNRF9EQyksKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlLTMzMS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlPTMzNz1lbmRpZlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzM5LSMgYWRkIGlzcCBibG9ja1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjM0MDppZm5lcSAoJChDT05GSUdfRFJNX0FNRF9JU1ApLClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZS0zNDEtYW1kZ3B1LXkgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGU9MzUwPWFtZGdwdS15ICs9ICQoQU1EX0dQVV9SQVNfRklMRVMpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUtMzUxLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlOjM1MjpvYmotJChDT05GSUdfRFJNX0FNREdQVSkrPSBhbWRncHUub1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMTE4LSNpbmNsdWRlIFxcXCJhbWRncHVfYWNwaS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjExOTojaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9JU1ApXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMTIwLSNpbmNsdWRlIFxcXCJhbWRncHVfaXNwLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaD0yNDQ9ZXh0ZXJuIGludCBhbWRncHVfcmVzZXRfbWV0aG9kO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTI0NS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaDoyNDY6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMjQ3LWV4dGVybiBpbnQgYW1kZ3B1X3NpX3N1cHBvcnQ7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMjQ4LSNlbmRpZlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oOjI0OTojaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfQ0lLXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgtMjUwLWV4dGVybiBpbnQgYW1kZ3B1X2Npa19zdXBwb3J0O1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1Lmg9NjIxPXN0cnVjdCBhbWRncHVfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTYyNS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaDo2MjY6I2lmZGVmIENPTkZJR19EUk1fQU1EX0FDUFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTYyNy1cXHRzdHJ1Y3QgYW1kZ3B1X2FjcFxcdFxcdGFjcDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTc5OC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaDo3OTk6I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfSVNQKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oLTgwMC1cXHQvKiBpc3AgKi9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM9MTI5Mz1pbnQgYW1kZ3B1X2FjcGlfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmMtMTI5OC1cXHRcXHRpZiAoYWRldi1cXHUwMDNlZGNfZW5hYmxlZCkge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmM6MTI5OTojaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQylcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTEzMDAtXFx0XFx0XFx0c3RydWN0IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgKmRtID0gXFx1MDAyNmFkZXYtXFx1MDAzZWRtO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYz0xNTUzPWJvb2wgYW1kZ3B1X2FjcGlfaXNfczBpeF9hY3RpdmUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTE1ODctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYzoxNTg4OiNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fQU1EX0lTUClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jLTE1ODktc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBpc3Bfc2Vuc29yX2lkc1tdID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYz0xNTk5PWludCBhbWRncHVfYWNwaV9nZXRfaXNwNF9kZXYoc3RydWN0IGFjcGlfZGV2aWNlICoqZGV2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuYy0xNjE2LX1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5jOjE2MTc6I2VuZGlmIC8qIENPTkZJR19EUk1fQU1EX0lTUCAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcGkuaD0xNDU9c3RhdGljIGlubGluZSBib29sIGFtZGdwdV9hY3BpX2lzX3MzX2FjdGl2ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikgeyByZXR1cm4gZmFsc2U7IH1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmgtMTQ3LVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3BpLmg6MTQ4OiNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0lTUClcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwaS5oLTE0OS1pbnQgYW1kZ3B1X2FjcGlfZ2V0X2lzcDRfZGV2KHN0cnVjdCBhY3BpX2RldmljZSAqKmRldik7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuYz0xMDI3PWludCBhbWRncHVfYXRvbWJpb3NfZ2V0X2Nsb2NrX2RpdmlkZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmMtMTEyNC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuYzoxMTI1OiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9TSVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5jLTExMjYtaW50IGFtZGdwdV9hdG9tYmlvc19nZXRfbWVtb3J5X3BsbF9kaXZpZGVycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oPTE1NT1pbnQgYW1kZ3B1X2F0b21iaW9zX2dldF9jbG9ja19kaXZpZGVycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hdG9tYmlvcy5oLTE2MC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYXRvbWJpb3MuaDoxNjE6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2F0b21iaW9zLmgtMTYyLWludCBhbWRncHVfYXRvbWJpb3NfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jPTIxMzM9aW50IGFtZGdwdV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGVidWdmcy5jLTIxNzktXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RlYnVnZnMuYzoyMTgwOiNpZiBkZWZpbmVkKENPTkZJR19EUk1fQU1EX0RDKVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZWJ1Z2ZzLmMtMjE4MS1cXHRpZiAoYWRldi1cXHUwMDNlZGNfZW5hYmxlZClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy01Ni0jaW5jbHVkZSBcXFwiYW1kX3BjaWUuaFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM6NTc6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTU4LSNpbmNsdWRlIFxcXCJzaS5oXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy01OS0jZW5kaWZcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM6NjA6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX0NJS1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy02MS0jaW5jbHVkZSBcXFwiY2lrLmhcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmM9MTk4MT1zdGF0aWMgaW50IGFtZGdwdV9kZXZpY2VfaXBfZWFybHlfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0yMDEwLVxcdHN3aXRjaCAoYWRldi1cXHUwMDNlYXNpY190eXBlKSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjIwMTE6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX1NJXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTIwMTItXFx0Y2FzZSBDSElQX1ZFUkRFOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jLTIwMjItI2VuZGlmXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjIwMjM6I2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX0NJS1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0yMDI0LVxcdGNhc2UgQ0hJUF9CT05BSVJFOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jPTM0ODU9Ym9vbCBhbWRncHVfZGV2aWNlX2FzaWNfaGFzX2RjX3N1cHBvcnQoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMzQ4OC1cXHRzd2l0Y2ggKGFzaWNfdHlwZSkge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYzozNDg5OiNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9TSVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYy0zNDkwLVxcdGNhc2UgQ0hJUF9IQUlOQU46XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMtMzQ5NC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jOjM0OTU6I2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREMpXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA2OjQwLjg1MTkwOTI2OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0MDAzNjU2NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgYnVpbGQgcHJvY2VzcywgZm9jdXNpbmcgb24gYGRybV9zeW5jb2JqLm9gLCBhcyBkZXJpdmVkIGZyb20gYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWA6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIERSTSBNYWtlZmlsZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgYGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZWAgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBkcm1fc3luY29iai5vYCBvYmplY3QgZmlsZSBnZXRzIGNvbXBpbGVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgaW52b2x2ZWQsIGFuZCBhbnkgc3BlY2lmaWMgcnVsZXMgdGhhdCBtaWdodCBhcHBseSB0byBpdC4gIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSB0eXBpY2FsIG1ha2VmaWxlIHN0cnVjdHVyZTogdGFyZ2V0cywgcHJlcmVxdWlzaXRlcywgYW5kIHRoZSBjb21tYW5kcyB0byBidWlsZCB0aGUgb2JqZWN0LiBJJ20gbG9va2luZyBmb3IgYW55IHVudXN1YWwgdHdpc3RzIG9yIHNwZWNpYWwgY29uc2lkZXJhdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBzeW5jaHJvbml6YXRpb24gb2JqZWN0LiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGVzPyBTcGVjaWFsIGxpbmtlciBmbGFncz8gQW55dGhpbmcgdGhhdCBqdW1wcyBvdXQgYXMgYmVpbmcgc3BlY2lmaWNhbGx5IHRhaWxvcmVkIGZvciBzeW5jIG9iamVjdHM/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J2xsIHByb2JhYmx5IGZvbGxvdyBhIHN0YW5kYXJkIHBhdHRlcm4sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiAgSSdsbCBzdGFydCBieSBsb29raW5nIGZvciBhIHJ1bGUgdGhhdCBleHBsaWNpdGx5IG5hbWVzIGBkcm1fc3luY29iai5vYCwgb3IgYSBtb3JlIGdlbmVyaWMgcGF0dGVybiB0aGF0IHdvdWxkIGNvdmVyIGl0LiBJJ2xsIG5lZWQgdG8gcGF5IGF0dGVudGlvbiB0byBhbnkgdmFyaWFibGVzIGl0IG1pZ2h0IGJlIHVzaW5nIGFzIHdlbGwsIHRob3NlIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYW5kIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgdWx0aW1hdGVseSBzaGFwZXMgdGhlIG9iamVjdCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI2MiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA2OjQ0LjI1MjI3NzU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNjM0MTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fc3luY29ialwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNzE5IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGU9MzU9ZHJtLXkgOj0gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlLTY4LVxcdGRybV9yZWN0Lm8gXFxcXFxcbmRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZTo2OTpcXHRkcm1fc3luY29iai5vIFxcXFxcXG5kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUtNzAtXFx0ZHJtX3N5c2ZzLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMzMtI2luY2x1ZGUgXFx1MDAzY2RybS9hbWRncHVfZHJtLmhcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6MzQ6I2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fc3luY29iai5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTM1LSNpbmNsdWRlIFxcdTAwM2Nkcm0vdHRtL3R0bV90dC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM9NDcxPXN0YXRpYyBpbnQgYW1kZ3B1X3N5bmNvYmpfbG9va3VwX2FuZF9hZGQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy00NzctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6NDc4OlxcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKHAtXFx1MDAzZWZpbHAsIGhhbmRsZSwgcG9pbnQsIGZsYWdzLCBcXHUwMDI2ZmVuY2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTQ3OS1cXHRpZiAocikge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM9NTI4PXN0YXRpYyBpbnQgYW1kZ3B1X2NzX3AyX3N5bmNvYmpfb3V0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtNTQ5LVxcdFxcdHAtXFx1MDAzZXBvc3RfZGVwc1tpXS5zeW5jb2JqID1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzo1NTA6XFx0XFx0XFx0ZHJtX3N5bmNvYmpfZmluZChwLVxcdTAwM2VmaWxwLCBkZXBzW2ldLmhhbmRsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtNTUxLVxcdFxcdGlmICghcC1cXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmopXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYz01NjE9c3RhdGljIGludCBhbWRncHVfY3NfcDJfc3luY29ial90aW1lbGluZV9zaWduYWwoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy01ODktXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM6NTkwOlxcdFxcdGRlcC1cXHUwMDNlc3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQocC1cXHUwMDNlZmlscCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy01OTEtXFx0XFx0XFx0XFx0XFx0XFx0c3luY29ial9kZXBzW2ldLmhhbmRsZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYz0xMjY1PXN0YXRpYyB2b2lkIGFtZGdwdV9jc19wb3N0X2RlcGVuZGVuY2llcyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEyNzAtXFx0XFx0aWYgKHAtXFx1MDAzZXBvc3RfZGVwc1tpXS5jaGFpbiBcXHUwMDI2XFx1MDAyNiBwLVxcdTAwM2Vwb3N0X2RlcHNbaV0ucG9pbnQpIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxMjcxOlxcdFxcdFxcdGRybV9zeW5jb2JqX2FkZF9wb2ludChwLVxcdTAwM2Vwb3N0X2RlcHNbaV0uc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMjcyLVxcdFxcdFxcdFxcdFxcdCAgICAgIHAtXFx1MDAzZXBvc3RfZGVwc1tpXS5jaGFpbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEyNzUtXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxMjc2OlxcdFxcdFxcdGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UocC1cXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTI3Ny1cXHRcXHRcXHRcXHRcXHRcXHQgIHAtXFx1MDAzZWZlbmNlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jPTEzODY9c3RhdGljIHZvaWQgYW1kZ3B1X2NzX3BhcnNlcl9maW5pKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwYXJzZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xMzk1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwYXJzZXItXFx1MDAzZW51bV9wb3N0X2RlcHM7IGkrKykge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjEzOTY6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KHBhcnNlci1cXHUwMDNlcG9zdF9kZXBzW2ldLnN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTEzOTctXFx0XFx0a2ZyZWUocGFyc2VyLVxcdTAwM2Vwb3N0X2RlcHNbaV0uY2hhaW4pO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmM9MTU3Nj1pbnQgYW1kZ3B1X2NzX2ZlbmNlX3RvX2hhbmRsZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTU4MS1cXHRzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNTgyOlxcdHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTgzLVxcdHN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE1OTQtXFx0Y2FzZSBBTURHUFVfRkVOQ0VfVE9fSEFORExFX0dFVF9TWU5DT0JKOlxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjE1OTU6XFx0XFx0ciA9IGRybV9zeW5jb2JqX2NyZWF0ZShcXHUwMDI2c3luY29iaiwgMCwgZmVuY2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE1OTYtXFx0XFx0ZG1hX2ZlbmNlX3B1dChmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNTk4LVxcdFxcdFxcdHJldHVybiByO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjE1OTk6XFx0XFx0ciA9IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoZmlscCwgc3luY29iaiwgXFx1MDAyNmluZm8tXFx1MDAzZW91dC5oYW5kbGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jOjE2MDA6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jLTE2MDEtXFx0XFx0cmV0dXJuIHI7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNjAzLVxcdGNhc2UgQU1ER1BVX0ZFTkNFX1RPX0hBTkRMRV9HRVRfU1lOQ09CSl9GRDpcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA0OlxcdFxcdHIgPSBkcm1fc3luY29ial9jcmVhdGUoXFx1MDAyNnN5bmNvYmosIDAsIGZlbmNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNjA1LVxcdFxcdGRtYV9mZW5jZV9wdXQoZmVuY2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMtMTYwNy1cXHRcXHRcXHRyZXR1cm4gcjtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA4OlxcdFxcdHIgPSBkcm1fc3luY29ial9nZXRfZmQoc3luY29iaiwgKGludCAqKVxcdTAwMjZpbmZvLVxcdTAwM2VvdXQuaGFuZGxlKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYzoxNjA5OlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYy0xNjEwLVxcdFxcdHJldHVybiByO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmg9NDM9c3RydWN0IGFtZGdwdV9jc19wb3N0X2RlcCB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmg6NDQ6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5oLTQ1LVxcdHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKmNoYWluO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTQxLSNpbmNsdWRlIFxcdTAwM2Nkcm0vdHRtL3R0bV90dC5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzo0MjojaW5jbHVkZSBcXHUwMDNjZHJtL2RybV9zeW5jb2JqLmhcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTQzLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jPTUyPWFtZGdwdV9nZW1fYWRkX2lucHV0X2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlscCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy03NC1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6NzU6XFx0XFx0cmV0ID0gZHJtX3N5bmNvYmpfZmluZF9mZW5jZShmaWxwLCBzeW5jb2JqX2hhbmRsZXNbaV0sIDAsIDAsIFxcdTAwMjZmZW5jZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTc2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM9OTE9YW1kZ3B1X2dlbV91cGRhdGVfdGltZWxpbmVfbm9kZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtOTMtXFx0XFx0XFx0XFx0dWludDY0X3QgcG9pbnQsXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjk0OlxcdFxcdFxcdFxcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTk1LVxcdFxcdFxcdFxcdHN0cnVjdCBkbWFfZmVuY2VfY2hhaW4gKipjaGFpbilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy0xMDAtXFx0LyogRmluZCB0aGUgc3luYyBvYmplY3QgKi9cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6MTAxOlxcdCpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxwLCBzeW5jb2JqX2hhbmRsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMi1cXHRpZiAoISpzeW5jb2JqKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTExMC1cXHRpZiAoISpjaGFpbikge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYzoxMTE6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KCpzeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTEyLVxcdFxcdCpzeW5jb2JqID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYz04MzI9aW50IGFtZGdwdV9nZW1fdmFfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy04NDctXFx0c3RydWN0IGFtZGdwdV9ib192YSAqYm9fdmE7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjg0ODpcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnRpbWVsaW5lX3N5bmNvYmogPSBOVUxMO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYy04NDktXFx0c3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqdGltZWxpbmVfY2hhaW4gPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMDItXFx0XFx0XFx0XFx0LyogUmVwbGFjZSB0aGUgZXhpc3RpbmcgZmVuY2Ugd2hlbiBubyBwb2ludCBpcyBnaXZlbi4gKi9cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6MTAwMzpcXHRcXHRcXHRcXHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHRpbWVsaW5lX3N5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMDQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAwNi1cXHRcXHRcXHRcXHQvKiBBdHRhY2ggdGhlIGxhc3QtdXBkYXRlIGZlbmNlIGF0IGEgc3BlY2lmaWMgcG9pbnQuICovXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jOjEwMDc6XFx0XFx0XFx0XFx0ZHJtX3N5bmNvYmpfYWRkX3BvaW50KHRpbWVsaW5lX3N5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMDgtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgdGltZWxpbmVfY2hhaW4sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMtMTAyMC1cXHRpZiAodGltZWxpbmVfc3luY29iailcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmM6MTAyMTpcXHRcXHRkcm1fc3luY29ial9wdXQodGltZWxpbmVfc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jLTEwMjItXFx0ZHJtX2V4ZWNfZmluaShcXHUwMDI2ZXhlYyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy0yOS0jaW5jbHVkZSBcXHUwMDNjZHJtL2RybV9leGVjLmhcXHUwMDNlXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6MzA6I2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fc3luY29iai5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTMxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM9NDU1PWludCBhbWRncHVfdXNlcnFfc2lnbmFsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy00NjgtXFx0c3RydWN0IGFtZGdwdV91c2VycV9mZW5jZSAqZmVuY2U7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NDY5OlxcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmo7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNDcwLVxcdHN0cnVjdCBkcm1fZXhlYyBleGVjO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNDk2LVxcdGZvciAoZW50cnkgPSAwOyBlbnRyeSBcXHUwMDNjIG51bV9zeW5jb2JqX2hhbmRsZXM7IGVudHJ5KyspIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo0OTc6XFx0XFx0c3luY29ialtlbnRyeV0gPSBkcm1fc3luY29ial9maW5kKGZpbHAsIHN5bmNvYmpfaGFuZGxlc1tlbnRyeV0pO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTQ5OC1cXHRcXHRpZiAoIXN5bmNvYmpbZW50cnldKSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy01NzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV9zeW5jb2JqX2hhbmRsZXM7IGkrKylcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo1NzE6XFx0XFx0ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2JqW2ldLCBcXHUwMDI2ZmVuY2UtXFx1MDAzZWJhc2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTU3Mi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTU4OS1cXHR3aGlsZSAoZW50cnktLSBcXHUwMDNlIDApXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NTkwOlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqW2VudHJ5XSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNTkxLVxcdGtmcmVlKHN5bmNvYmopO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM9NjAwPWFtZGdwdV91c2VycV93YWl0X2NvdW50X2ZlbmNlcyhzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy02MjAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHdhaXRfaW5mby1cXHUwMDNlbnVtX3N5bmNvYmpfdGltZWxpbmVfaGFuZGxlczsgaSsrKSB7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NjIxOlxcdFxcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHRpbWVsaW5lX2hhbmRsZXNbaV0sXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmMtNjIyLVxcdFxcdFxcdFxcdFxcdCAgIHRpbWVsaW5lX3BvaW50c1tpXSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTYzNS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd2FpdF9pbmZvLVxcdTAwM2VudW1fc3luY29ial9oYW5kbGVzOyBpKyspIHtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYzo2MzY6XFx0XFx0ciA9IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2UoZmlscCwgc3luY29ial9oYW5kbGVzW2ldLCAwLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTYzNy1cXHRcXHRcXHRcXHRcXHQgICBEUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfRk9SX1NVQk1JVCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jPTcxMD1hbWRncHVfdXNlcnFfd2FpdF9yZXR1cm5fZmVuY2VfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NDMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV9wb2ludHM7IGkrKykge1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jOjc0NDpcXHRcXHRyID0gZHJtX3N5bmNvYmpfZmluZF9mZW5jZShmaWxwLCB0aW1lbGluZV9oYW5kbGVzW2ldLFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91c2VycV9mZW5jZS5jLTc0NS1cXHRcXHRcXHRcXHRcXHQgICB0aW1lbGluZV9wb2ludHNbaV0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NjctXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3VzZXJxX2ZlbmNlLmM6NzY4OlxcdFxcdHIgPSBkcm1fc3luY29ial9maW5kX2ZlbmNlKGZpbHAsIHN5bmNvYmpfaGFuZGxlc1tpXSwgMCxcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXNlcnFfZmVuY2UuYy03NjktXFx0XFx0XFx0XFx0XFx0ICAgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYz0xMzI9c3RydWN0IGRybV9maWxlICpkcm1fZmlsZV9hbGxvYyhzdHJ1Y3QgZHJtX21pbm9yICptaW5vcilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTE2Ny1cXHRpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYzoxNjg6XFx0XFx0ZHJtX3N5bmNvYmpfb3BlbihmaWxlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xNjktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0xODUtXFx0aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmM6MTg2OlxcdFxcdGRybV9zeW5jb2JqX3JlbGVhc2UoZmlsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMtMTg3LVxcdGlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYz0yMzM9dm9pZCBkcm1fZmlsZV9mcmVlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jLTI1Ny1cXHRpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYzoyNTg6XFx0XFx0ZHJtX3N5bmNvYmpfcmVsZWFzZShmaWxlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYy0yNTktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg9MjU5PWRybV9pb2N0bF90IGRybV9nZXRjbGllbnQ7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI2MC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjYxOi8qIGRybV9zeW5jb2JqLmMgKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjYyOnZvaWQgZHJtX3N5bmNvYmpfb3BlbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI2Mzp2b2lkIGRybV9zeW5jb2JqX3JlbGVhc2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjQ6aW50IGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjUtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oOjI2NjppbnQgZHJtX3N5bmNvYmpfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjctXFx0XFx0XFx0ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNjg6aW50IGRybV9zeW5jb2JqX2hhbmRsZV90b19mZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNjktXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzA6aW50IGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yNzEtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzI6aW50IGRybV9zeW5jb2JqX3RyYW5zZmVyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI3My1cXHRcXHRcXHQgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzQ6aW50IGRybV9zeW5jb2JqX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc1LVxcdFxcdFxcdCAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6Mjc2OmludCBkcm1fc3luY29ial90aW1lbGluZV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI3Ny1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyNzg6aW50IGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjc5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjgwOmludCBkcm1fc3luY29ial9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yODEtXFx0XFx0XFx0ICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmg6MjgyOmludCBkcm1fc3luY29ial9zaWduYWxfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgtMjgzLVxcdFxcdFxcdCAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyODQ6aW50IGRybV9zeW5jb2JqX3RpbWVsaW5lX3NpZ25hbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaC0yODUtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaDoyODY6aW50IGRybV9zeW5jb2JqX3F1ZXJ5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oLTI4Ny1cXHRcXHRcXHQgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jPTY0ND1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGRybV9pb2N0bHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MTctXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcxODpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0NSRUFURSwgZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MTktXFx0XFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcyMDpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0RFU1RST1ksIGRybV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyMS1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzIyOlxcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfSEFORExFX1RPX0ZELCBkcm1fc3luY29ial9oYW5kbGVfdG9fZmRfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyMy1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzI0OlxcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfRkRfVE9fSEFORExFLCBkcm1fc3luY29ial9mZF90b19oYW5kbGVfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyNS1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzI2OlxcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfVFJBTlNGRVIsIGRybV9zeW5jb2JqX3RyYW5zZmVyX2lvY3RsLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MjctXFx0XFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjcyODpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX1dBSVQsIGRybV9zeW5jb2JqX3dhaXRfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTcyOS1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmM6NzMwOlxcdERSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfVElNRUxJTkVfV0FJVCwgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdF9pb2N0bCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzMxLVxcdFxcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3MzI6XFx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZELCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYy03MzMtXFx0XFx0ICAgICAgRFJNX1JFTkRFUl9BTExPVyksXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jOjczNDpcXHREUk1fSU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX1JFU0VULCBkcm1fc3luY29ial9yZXNldF9pb2N0bCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzM1LVxcdFxcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3MzY6XFx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9TSUdOQUwsIGRybV9zeW5jb2JqX3NpZ25hbF9pb2N0bCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzM3LVxcdFxcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3Mzg6XFx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9USU1FTElORV9TSUdOQUwsIGRybV9zeW5jb2JqX3RpbWVsaW5lX3NpZ25hbF9pb2N0bCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMtNzM5LVxcdFxcdCAgICAgIERSTV9SRU5ERVJfQUxMT1cpLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYzo3NDA6XFx0RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9RVUVSWSwgZHJtX3N5bmNvYmpfcXVlcnlfaW9jdGwsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jLTc0MS1cXHRcXHQgICAgICBEUk1fUkVOREVSX0FMTE9XKSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMxLSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzI6ICogRFJNIHN5bmNocm9uaXNhdGlvbiBvYmplY3RzIChzeW5jb2JqLCBzZWUgc3RydWN0IFxcdTAwMjZkcm1fc3luY29iaikgcHJvdmlkZSBhXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzMtICogY29udGFpbmVyIGZvciBhIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgd2hpY2ggY2FuIGJlIHVzZWQgYnkgdXNlcnNwYWNlXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0xNjAtICogcmVzdWx0IG9mIGltcG9ydGluZyB0aG9zZSBmaWxlIGRlc2NyaXB0b3JzIG93biBhIHJlZmVyZW5jZSB0byB0aGVcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoxNjE6ICogc2FtZSB1bmRlcmx5aW5nIHN0cnVjdCBcXHUwMDI2ZHJtX3N5bmNvYmogYW5kIHRoZSBzeW5jb2JqIGNhbiBiZSB1c2VkXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMTYyLSAqIHBlcnNpc3RlbnRseSBhY3Jvc3MgYWxsIHRoZSBwcm9jZXNzZXMgd2l0aCB3aGljaCBpdCBpcyBzaGFyZWQuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMDktI2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fcHJpbnQuaFxcdTAwM2VcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyMTA6I2luY2x1ZGUgXFx1MDAzY2RybS9kcm1fc3luY29iai5oXFx1MDAzZVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIxMS0jaW5jbHVkZSBcXHUwMDNjZHJtL2RybV91dGlscy5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MjE1PXN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjIyLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjIyMzpzdGF0aWMgdm9pZCBzeW5jb2JqX3dhaXRfc3luY29ial9mdW5jKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMjQtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdCk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0yMjY9c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yMjktXFx0c3RydWN0IGRtYV9mZW5jZV9jYiBmZW5jZV9jYjtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyMzA6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTIzMS1cXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jPTIzNj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjIzNzpzeW5jb2JqX2V2ZW50ZmRfZW50cnlfZnVuYyhzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjM4LVxcdFxcdFxcdCAgIHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5KTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTI0MC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyNDE6ICogZHJtX3N5bmNvYmpfZmluZCAtIGxvb2t1cCBhbmQgcmVmZXJlbmNlIGEgc3luYyBvYmplY3QuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQyLSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQ1LSAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHN5bmNvYmogcG9pbnRlZCB0byBieSBoYW5kbGUgb3IgTlVMTC4gVGhlXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjQ2OiAqIHJlZmVyZW5jZSBtdXN0IGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgZHJtX3N5bmNvYmpfcHV0KCkuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQ3LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI0ODpzdHJ1Y3QgZHJtX3N5bmNvYmogKmRybV9zeW5jb2JqX2ZpbmQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjQ5LVxcdFxcdFxcdFxcdCAgICAgdTMyIGhhbmRsZSlcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNTAte1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI1MTpcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjUyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjU3LVxcdGlmIChzeW5jb2JqKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjI1ODpcXHRcXHRkcm1fc3luY29ial9nZXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMjYzLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzoyNjQ6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9maW5kKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNjUtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjY2OnN0YXRpYyB2b2lkIGRybV9zeW5jb2JqX2ZlbmNlX2FkZF93YWl0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yNjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yOTAtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MjkxOnN0YXRpYyB2b2lkIGRybV9zeW5jb2JqX3JlbW92ZV93YWl0KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0yOTItXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgKndhaXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYz0zMTQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMTU6ZHJtX3N5bmNvYmpfYWRkX2V2ZW50ZmQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMxNi1cXHRcXHRcXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMyNC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozMjU6ICogZHJtX3N5bmNvYmpfYWRkX3BvaW50IC0gYWRkIG5ldyB0aW1lbGluZSBwb2ludCB0byB0aGUgc3luY29ialxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMyNi0gKiBAc3luY29iajogc3luYyBvYmplY3QgdG8gYWRkIHRpbWVsaW5lIHBvaW50IGRvXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMzItICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzMzOnZvaWQgZHJtX3N5bmNvYmpfYWRkX3BvaW50KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMzQtXFx0XFx0XFx0ICAgc3RydWN0IGRtYV9mZW5jZV9jaGFpbiAqY2hhaW4sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNDUtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzQ2OlxcdHByZXYgPSBkcm1fc3luY29ial9mZW5jZV9nZXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzQ3LVxcdC8qIFlvdSBhcmUgYWRkaW5nIGFuIHVub3JkZXIgcG9pbnQgdG8gdGltZWxpbmUsIHdoaWNoIGNvdWxkIGNhdXNlIHBheWxvYWQgcmV0dXJuZWQgZnJvbSBxdWVyeV9pb2N0bCBpcyAwISAqL1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzYyLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzozNjM6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9hZGRfcG9pbnQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM2NC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNjUtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzY2OiAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSByZXBsYWNlIGZlbmNlIGluIGEgc3luYyBvYmplY3QuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzY3LSAqIEBzeW5jb2JqOiBTeW5jIG9iamVjdCB0byByZXBsYWNlIGZlbmNlIGluXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zNzEtICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzcyOnZvaWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtMzczLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTM5OC19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6Mzk5OkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDAwLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQwMS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MDI6ICogZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlIC0gYXNzaWduIGEgc3R1YiBmZW5jZSB0byB0aGUgc3luYyBvYmplY3RcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MDMtICogQHN5bmNvYmo6IHN5bmMgb2JqZWN0IHRvIGFzc2lnbiB0aGUgZmVuY2Ugb25cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQwNi0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MDc6c3RhdGljIGludCBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQwOC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MTMtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDE0OlxcdGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY29iaiwgZmVuY2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQxNS1cXHRkbWFfZmVuY2VfcHV0KGZlbmNlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQyMS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MjI6ICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1cCBhbmQgcmVmZXJlbmNlIHRoZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDIzLSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDI4LSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NDI5OiAqIFRoaXMgaXMganVzdCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY29tYmluZXMgZHJtX3N5bmNvYmpfZmluZCgpIGFuZFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjQzMDogKiBkcm1fc3luY29ial9mZW5jZV9nZXQoKS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy00MzEtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQzNS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0MzY6aW50IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDM3LVxcdFxcdFxcdCAgIHUzMiBoYW5kbGUsIHU2NCBwb2ludCwgdTY0IGZsYWdzLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDM5LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0NDA6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDQxLVxcdHN0cnVjdCBzeW5jb2JqX3dhaXRfZW50cnkgd2FpdDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2MS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0NjI6XFx0KmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2Ny1cXHRcXHRcXHQvKiBJZiB0aGUgcmVxdWVzdGVkIHNlcW5vIGlzIGFscmVhZHkgc2lnbmFsZWRcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0Njg6XFx0XFx0XFx0ICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSBtYXkgcmV0dXJuIGEgTlVMTFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ2OS1cXHRcXHRcXHQgKiBmZW5jZS4gVG8gbWFrZSBzdXJlIHRoZSByZWNpcGllbnQgZ2V0c1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNDg3LVxcdHdhaXQucG9pbnQgPSBwb2ludDtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo0ODg6XFx0ZHJtX3N5bmNvYmpfZmVuY2VfYWRkX3dhaXQoc3luY29iaiwgXFx1MDAyNndhaXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTQ4OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUxMi1cXHRpZiAod2FpdC5ub2RlLm5leHQpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTEzOlxcdFxcdGRybV9zeW5jb2JqX3JlbW92ZV93YWl0KHN5bmNvYmosIFxcdTAwMjZ3YWl0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MTQtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTE1LW91dDpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MTY6XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUxNy1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUxOS19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTIwOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmluZF9mZW5jZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTIxLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUyMi0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MjM6ICogZHJtX3N5bmNvYmpfZnJlZSAtIGZyZWUgYSBzeW5jIG9iamVjdC5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjQtICogQGtyZWY6IGtyZWYgdG8gZnJlZS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MjUtICpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MjY6ICogT25seSB0byBiZSBjYWxsZWQgZnJvbSBrcmVmX3B1dCBpbiBkcm1fc3luY29ial9wdXQuXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTI3LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjUyODp2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTI5LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1MzA6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gY29udGFpbmVyX29mKGtyZWYsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTMxOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBkcm1fc3luY29iaixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01MzItXFx0XFx0XFx0XFx0XFx0XFx0ICAgcmVmY291bnQpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTM0LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjUzNTpcXHRkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNvYmosIE5VTEwpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTUzNi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU0MS19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTQyOkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTQzLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU0NC0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NDU6ICogZHJtX3N5bmNvYmpfY3JlYXRlIC0gY3JlYXRlIGEgbmV3IHN5bmNvYmpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NDYtICogQG91dF9zeW5jb2JqOiByZXR1cm5lZCBzeW5jb2JqXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NTEtICogcHJvYmFibHkgd2FudCB0byBtYWtlIGl0IGF2YWlsYWJsZSB0byB1c2Vyc3BhY2UsIGVpdGhlciB0aHJvdWdoXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTUyOiAqIGRybV9zeW5jb2JqX2dldF9oYW5kbGUoKSBvciBkcm1fc3luY29ial9nZXRfZmQoKS5cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NTMtICpcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU1NS0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo1NTY6aW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKipvdXRfc3luY29iaiwgdWludDMyX3QgZmxhZ3MsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTU3LVxcdFxcdCAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU1OS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU2MDpcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTYxLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU2MjpcXHRzeW5jb2JqID0ga3phbGxvY19vYmooc3RydWN0IGRybV9zeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NjMtXFx0aWYgKCFzeW5jb2JqKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTcxLVxcdGlmIChmbGFncyBcXHUwMDI2IERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCkge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU3MjpcXHRcXHRyZXQgPSBkcm1fc3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTczLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTc0OlxcdFxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01NzUtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU3OS1cXHRpZiAoZmVuY2UpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTgwOlxcdFxcdGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY29iaiwgZmVuY2UpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU4MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTU4NC19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTg1OkVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfY3JlYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01ODYtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTg3LS8qKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU4ODogKiBkcm1fc3luY29ial9nZXRfaGFuZGxlIC0gZ2V0IGEgaGFuZGxlIGZyb20gYSBzeW5jb2JqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTg5LSAqIEBmaWxlX3ByaXZhdGU6IGRybSBmaWxlIHByaXZhdGUgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNTkyLSAqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTkzOiAqIEV4cG9ydHMgYSBzeW5jIG9iamVjdCBjcmVhdGVkIHdpdGggZHJtX3N5bmNvYmpfY3JlYXRlKCkgYXMgYSBoYW5kbGUgb25cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01OTQtICogQGZpbGVfcHJpdmF0ZSB0byB1c2Vyc3BhY2UuXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy01OTctICovXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NTk4OmludCBkcm1fc3luY29ial9nZXRfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjU5OTpcXHRcXHRcXHQgICBzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHUzMiAqaGFuZGxlKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYwMC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MDMtXFx0LyogdGFrZSBhIHJlZmVyZW5jZSB0byBwdXQgaW4gdGhlIHhhcnJheSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYwNDpcXHRkcm1fc3luY29ial9nZXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjA1LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjA4LVxcdGlmIChyZXQpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjA5OlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTAtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTItfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYxMzpFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2dldF9oYW5kbGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYxNC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MTU6c3RhdGljIGludCBkcm1fc3luY29ial9jcmVhdGVfYXNfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYxNi1cXHRcXHRcXHRcXHRcXHR1MzIgKmhhbmRsZSwgdWludDMyX3QgZmxhZ3MpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MTgtXFx0aW50IHJldDtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MTk6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYyMC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MjE6XFx0cmV0ID0gZHJtX3N5bmNvYmpfY3JlYXRlKFxcdTAwMjZzeW5jb2JqLCBmbGFncywgTlVMTCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjIyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MjQtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjI1OlxcdHJldCA9IGRybV9zeW5jb2JqX2dldF9oYW5kbGUoZmlsZV9wcml2YXRlLCBzeW5jb2JqLCBoYW5kbGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjYyNjpcXHRkcm1fc3luY29ial9wdXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjI3LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MjktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6NjMwOnN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZGVzdHJveShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02MzEtXFx0XFx0XFx0ICAgICAgIHUzMiBoYW5kbGUpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjMyLXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2MzM6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYzNC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTYzOC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2Mzk6XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY0MC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY0Mi1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDM6c3RhdGljIGludCBkcm1fc3luY29ial9maWxlX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjQ0LXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDU6XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY0Ni1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NDc6XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY0OC1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY1MC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NTE6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHJtX3N5bmNvYmpfZmlsZV9mb3BzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY1MjpcXHQucmVsZWFzZSA9IGRybV9zeW5jb2JqX2ZpbGVfcmVsZWFzZSxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NTMtfTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY1NS0vKipcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NTY6ICogZHJtX3N5bmNvYmpfZ2V0X2ZkIC0gZ2V0IGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYSBzeW5jb2JqXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjU3LSAqIEBzeW5jb2JqOiBTeW5jIG9iamVjdCB0byBleHBvcnRcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY1OS0gKlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY2MDogKiBFeHBvcnRzIGEgc3luYyBvYmplY3QgY3JlYXRlZCB3aXRoIGRybV9zeW5jb2JqX2NyZWF0ZSgpIGFzIGEgZmlsZSBkZXNjcmlwdG9yLlxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY2MS0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjYzLSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY2NDppbnQgZHJtX3N5bmNvYmpfZ2V0X2ZkKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgaW50ICpwX2ZkKVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY2NS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy02NzMtXFx0ZmlsZSA9IGFub25faW5vZGVfZ2V0ZmlsZShcXFwic3luY29ial9maWxlXFxcIixcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2NzQ6XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZHJtX3N5bmNvYmpfZmlsZV9mb3BzLFxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTY3NS1cXHRcXHRcXHRcXHQgIHN5bmNvYmosIDApO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjgwLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jOjY4MTpcXHRkcm1fc3luY29ial9nZXQoc3luY29iaik7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjgyLVxcdGZkX2luc3RhbGwoZmQsIGZpbGUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMtNjg2LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYzo2ODc6RVhQT1JUX1NZTUJPTChkcm1fc3luY29ial9nZXRfZmQpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo0NC44Nzg2MjU4NDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0ODg2Nzc5MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgY2hhbmdlcywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBvZiBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIERlZXAgaW50byBTeW5jb2JqIGFuZCBFdmVudGZkKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgY2hhbmdlZCBpbiBgZHJtX3N5bmNvYmouY2AgYW5kIGBmcy9ldmVudGZkLmNgLiBUaGUgYmVzdCB3YXkgdG8gZG8gdGhpcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBpcyB0byBhYnNvcmIgdGhlIGNvbXBsZXRlIG1vZGlmaWVkIHNlY3Rpb25zIG9mICpib3RoKiBmaWxlcy4gU2tpbW1pbmcgd29uJ3QgY3V0IGl0IGhlcmUuIEkgbmVlZCB0aGUgZnVsbCBjb250ZXh0IHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBjaGFuZ2VzIGluIGNvcmUgbG9naWMsIGRhdGEgc3RydWN0dXJlcywgb3IgaW50ZXJmYWNlIGNhbGxzLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gZGV0ZXJtaW5lIGltcGFjdCwgaW50ZWdyYXRpb24gYW5kIGFueSBwb3NzaWJsZSBvcHRpbWl6YXRpb24gdGhhdCBtYXkgYmUgYXZhaWxhYmxlLiBUaGlzIGlzIGhvdyBJIGJlc3QgZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIHdvcmsgZG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwOTAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo0OS43NjU0MDcyMjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ2MDpcXHRcXG4xNDYxOlxcdGludFxcbjE0NjI6XFx0ZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbjE0NjM6XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcXG4xNDY0OlxcdHtcXG4xNDY1OlxcdFxcdHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4IF9fZnJlZShldmVudGZkKSA9IE5VTEw7XFxuMTQ2NjpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfZXZlbnRmZCAqYXJncyA9IGRhdGE7XFxuMTQ2NzpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7XFxuMTQ2ODpcXHRcXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcXG4xNDY5OlxcdFxcdGludCByZXQ7XFxuMTQ3MDpcXHRcXG4xNDcxOlxcdFxcdGlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKX1RJTUVMSU5FKSlcXG4xNDcyOlxcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4xNDczOlxcdFxcbjE0NzQ6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZWZsYWdzIFxcdTAwMjYgfkRSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9BVkFJTEFCTEUpXFxuMTQ3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNDc2OlxcdFxcbjE0Nzc6XFx0XFx0aWYgKGFyZ3MtXFx1MDAzZXBhZClcXG4xNDc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE0Nzk6XFx0XFxuMTQ4MDpcXHRcXHRzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGFyZ3MtXFx1MDAzZWhhbmRsZSk7XFxuMTQ4MTpcXHRcXHRpZiAoIXN5bmNvYmopXFxuMTQ4MjpcXHRcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4xNDgzOlxcdFxcbjE0ODQ6XFx0XFx0ZXZfZmRfY3R4ID0gZXZlbnRmZF9jdHhfZmRnZXQoYXJncy1cXHUwMDNlZmQpO1xcbjE0ODU6XFx0XFx0aWYgKElTX0VSUihldl9mZF9jdHgpKSB7XFxuMTQ4NjpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XFxuMTQ4NzpcXHRcXHRcXHRldl9mZF9jdHggPSBOVUxMO1xcbjE0ODg6XFx0XFx0XFx0Z290byBlcnJfZmRnZXQ7XFxuMTQ4OTpcXHRcXHR9XFxuMTQ5MDpcXHRcXG4xNDkxOlxcdFxcdGVudHJ5ID0ga3phbGxvY19vYmooKmVudHJ5KTtcXG4xNDkyOlxcdFxcdGlmICghZW50cnkpIHtcXG4xNDkzOlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTQ5NDpcXHRcXHRcXHRnb3RvIGVycl9mZGdldDtcXG4xNDk1OlxcdFxcdH1cXG4xNDk2OlxcdFxcdGVudHJ5LVxcdTAwM2VzeW5jb2JqID0gc3luY29iajtcXG4xNDk3OlxcdFxcdGVudHJ5LVxcdTAwM2Vldl9mZF9jdHggPSBub19mcmVlX3B0cihldl9mZF9jdHgpO1xcbjE0OTg6XFx0XFx0ZW50cnktXFx1MDAzZXBvaW50ID0gYXJncy1cXHUwMDNlcG9pbnQ7XFxuMTQ5OTpcXHRcXHRlbnRyeS1cXHUwMDNlZmxhZ3MgPSBhcmdzLVxcdTAwM2VmbGFncztcXG4xNTAwOlxcdFxcbjE1MDE6XFx0XFx0ZHJtX3N5bmNvYmpfYWRkX2V2ZW50ZmQoc3luY29iaiwgZW50cnkpO1xcbjE1MDI6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbjE1MDM6XFx0XFxuMTUwNDpcXHRcXHRyZXR1cm4gMDtcXG4xNTA1OlxcdFxcbjE1MDY6XFx0ZXJyX2ZkZ2V0OlxcbjE1MDc6XFx0XFx0ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopO1xcbjE1MDg6XFx0XFx0cmV0dXJuIHJldDtcXG4xNTA5OlxcdH1cXG4xNTEwOlxcdFxcbjE1MTE6XFx0aW50XFxuMTUxMjpcXHRkcm1fc3luY29ial9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLFxcbjE1MTM6XFx0XFx0XFx0XFx0c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXFxuMTUxNDpcXHR7XFxuMTUxNTpcXHRcXHRzdHJ1Y3QgZHJtX3N5bmNvYmpfYXJyYXkgKmFyZ3MgPSBkYXRhO1xcbjE1MTY6XFx0XFx0c3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianM7XFxuMTUxNzpcXHRcXHR1aW50MzJfdCBpO1xcbjE1MTg6XFx0XFx0aW50IHJldDtcXG4xNTE5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo0OS43NjU1NjMxNDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjA0MDYyNDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgRXZlbnRmZCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoaXMgYGV2ZW50ZmRgIGlzc3VlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgaGVhZGVyIGZpbGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgYGV2ZW50ZmRgIGlzICphY3R1YWxseSogaW1wbGVtZW50ZWQuIFRoZSB0eXBpY2FsIGdvLXRvIGxvY2F0aW9ucyBmb3IgdGhhdCBzb3J0IG9mIGFuYWx5c2lzIGFyZSBgZnMvZXZlbnRmZC5jYCDigJMgd2hpY2ggc2hvdWxkIGNvbnRhaW4gdGhlIGZpbGUgc3lzdGVtIGxldmVsIGRyaXZlciBjb2RlIOKAkyBhbmQsIG9mIGNvdXJzZSwgdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIGZpbGUsIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgZm9yIHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBkZWZpbml0aW9ucy4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHVzZXJzcGFjZSBhbmQgdGhlIGtlcm5lbCwgc28gdGhpcyBpbml0aWFsIGNyb3NzLWNoZWNrIHNob3VsZCBwcm92aWRlIGEgc29saWQgYmFzaXMgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTg0LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo1NC4zNjk2MzAxNTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXZlbnRmZC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDkwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDkwOlxcdHtcXG4gIDkxOlxcdFxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBldmVudGZkX2N0eCwga3JlZik7XFxuICA5MjpcXHRcXG4gIDkzOlxcdFxcdGV2ZW50ZmRfZnJlZV9jdHgoY3R4KTtcXG4gIDk0OlxcdH1cXG4gIDk1OlxcdFxcbiAgOTY6XFx0LyoqXFxuICA5NzpcXHQgKiBldmVudGZkX2N0eF9wdXQgLSBSZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LlxcbiAgOTg6XFx0ICogQGN0eDogW2luXSBQb2ludGVyIHRvIGV2ZW50ZmQgY29udGV4dC5cXG4gIDk5OlxcdCAqXFxuIDEwMDpcXHQgKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxcbiAxMDE6XFx0ICogd2l0aCBldmVudGZkX2N0eF9mZGdldCgpIG9yIGV2ZW50ZmRfY3R4X2ZpbGVnZXQoKS5cXG4gMTAyOlxcdCAqL1xcbiAxMDM6XFx0dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuIDEwNDpcXHR7XFxuIDEwNTpcXHRcXHRpZiAoIWN0eClcXG4gMTA2OlxcdFxcdFxcdHJldHVybjtcXG4gMTA3OlxcdFxcbiAxMDg6XFx0XFx0a3JlZl9wdXQoXFx1MDAyNmN0eC1cXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcXG4gMTA5OlxcdH1cXG4gMTEwOlxcdEVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XFxuIDExMTpcXHRcXG4gMTEyOlxcdHN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiAxMTM6XFx0e1xcbiAxMTQ6XFx0XFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdHdha2VfdXBfcG9sbChcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIEVQT0xMSFVQKTtcXG4gMTE3OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbiAxMTg6XFx0XFx0cmV0dXJuIDA7XFxuIDExOTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA2OjU0LjM2OTcxNTkzNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTAyNTc2MjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYGV2ZW50ZmQuaGAgRGV0YWlscyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCdzIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgZmlsZS4gSSBuZWVkIGEgcmVmcmVzaGVyIG9uIHRoZSBpbnRyaWNhY2llcyBvZiBgZXZlbnRmZGAuIEkga25vdyB0aGUgYmFzaWMgY29uY2VwdCDigJMgaXQncyBhIGxpZ2h0d2VpZ2h0IG1lY2hhbmlzbSBmb3Igc2lnbmFsaW5nIGV2ZW50cyBiZXR3ZWVuIHVzZXJzcGFjZSBhbmQgdGhlIGtlcm5lbCwgb3IgYmV0d2VlbiBrZXJuZWwgdGhyZWFkcywgdXNpbmcgYSBmaWxlIGRlc2NyaXB0b3IuIEJ1dCBJIHdhbnQgdG8gbmFpbCBkb3duIHRoZSBzcGVjaWZpY3MsIHBhcnRpY3VsYXJseSBhcm91bmQgaXRzIGF0b21pYyBvcGVyYXRpb25zIGFuZCBob3cgaXQgaGFuZGxlcyBkaWZmZXJlbnQgc2lnbmFsaW5nIG1vZGVzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGVkZ2UgY2FzZXMgbHVya2luZyBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0aGF0IG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSBvciByZWxpYWJpbGl0eSBpbiBjb21wbGV4LCBoaWdoLWNvbmN1cnJlbmN5IHNjZW5hcmlvcy4gSSByZWNhbGwgc29tZSBkaXNjdXNzaW9ucyBhYm91dCB0aGUgcG90ZW50aWFsIG92ZXJoZWFkIGNvbXBhcmVkIHRvIG90aGVyIHNpZ25hbGluZyBtZXRob2RzLCBzbyBJ4oCZbGwgYmUgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbG9jay1mcmVlIGFzcGVjdHMgb2YgdGhlIGltcGxlbWVudGF0aW9uLiBJJ20gYWxzbyBjdXJpb3VzIGFib3V0IGFueSByZWNlbnQgY2hhbmdlcyBvciBwYXRjaGVzIHRvIHRoYXQgaGVhZGVyLCBvciBzdXJyb3VuZGluZyBjb2RlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBrbm93bGVkZ2Ugb2YgdGhlIG1lbW9yeSBiYXJyaWVycyB1c2VkIGFuZCBob3cgdGhlc2UgcHJvdGVjdCB0aGUgc2hhcmVkIGNvdW50ZXIgYW5kIGVuc3VyZSB2aXNpYmlsaXR5IG9mIGNoYW5nZXMuIEFueSByZWNlbnQgb3B0aW1pemF0aW9ucyB0aGF0IGFpbSB0byByZWR1Y2UgbGF0ZW5jeSBvciBpbXByb3ZlIHBlcmZvcm1hbmNlIGFyZSBvZiBwYXJ0aWN1bGFyIGludGVyZXN0IHRvIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg0MSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDY6NTkuODcyMjk2OTAyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluY2x1ZGUvbGludXgvZXZlbnRmZC5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDc1OlxcdFxcbiAgNzY6XFx0c3RhdGljIGlubGluZSBib29sIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQodm9pZClcXG4gIDc3OlxcdHtcXG4gIDc4OlxcdFxcdHJldHVybiB0cnVlO1xcbiAgNzk6XFx0fVxcbiAgODA6XFx0XFxuICA4MTpcXHRzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfZG9fcmVhZChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCwgX191NjQgKmNudClcXG4gIDgyOlxcdHtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0fVxcbiAgODU6XFx0XFxuICA4NjpcXHQjZW5kaWZcXG4gIDg3OlxcdFxcbiAgODg6XFx0c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsKHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbiAgODk6XFx0e1xcbiAgOTA6XFx0XFx0ZXZlbnRmZF9zaWduYWxfbWFzayhjdHgsIDApO1xcbiAgOTE6XFx0fVxcbiAgOTI6XFx0XFxuICA5MzpcXHRERUZJTkVfRlJFRShldmVudGZkLCBzdHJ1Y3QgZXZlbnRmZF9jdHggKiwgZXZlbnRmZF9jdHhfcHV0KF9UKSlcXG4gIDk0OlxcdFxcbiAgOTU6XFx0I2VuZGlmIC8qIF9MSU5VWF9FVkVOVEZEX0ggKi9cXG4gIDk2OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNjo1OS44NzIzNzU1MDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ3ODkxMjAzODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgVGhpcyBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSBhIHBhdGNoIHNlcmllcyB0aGF0IGludHJvZHVjZXMgYSBzaW1wbGUgbnVsbCBjaGVjayAoYGlmICghY3R4KSByZXR1cm47YCkgdG8gYGV2ZW50ZmRfY3R4X3B1dCgpYCwgYWRkcyBhIGBERUZJTkVfRlJFRWAgbWFjcm8gZm9yIGV2ZW50ZmQgY29udGV4dHMsIGFuZCByZWZhY3RvcnMgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYCB0byB1c2UgdGhhdCBuZXcgbWFjcm8gaW5zdGVhZCBvZiBtYW51YWwgZXJyb3IgaGFuZGxpbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlLiBBYnNvbHV0ZWx5ISBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgY2FsbGVkIHRocm91Z2ggdGhlIGBEUk1fSU9DVExfU1lOQ09CSl9FVkVOVEZEYCBpb2N0bCwgYW5kIHN5emthbGxlciBzdXBwb3J0cyBEUk0gaW9jdGxzLCBpbmNsdWRpbmcgdGhvc2UgdXNlZCBieSB2aXJ0dWFsIGRyaXZlcnMgbGlrZSBgdmttc2AgYW5kIG90aGVycy4gVGhpcyBtYWtlcyBpdCBhY2Nlc3NpYmxlLiBBbHNvLCBgZXZlbnRmZF9jdHhfcHV0YCBpcyBwYXJ0IG9mIGNvcmUga2VybmVsLCBLVk0sIHZmaW8sIHZob3N0LCBkcm0sIGlvX3VyaW5nLCBhbmQgb3RoZXJzLCBzbyBpdCdzIHdpZGVseSB1c2VkLlxuXG5Ob3csIGxldCdzIGNvbnN1bHQgdGhlIHRyaWFnZSBwaGlsb3NvcGh5LiBTZWN0aW9uIDEgc3BlY2lmaWNhbGx5IHdhcm5zIHVzICpub3QqIHRvIGJsaW5kbHkgdHJ1c3QgY2xhaW1zIG9mIFwibm8gZnVuY3Rpb25hbCBjaGFuZ2VcIiBvciBcInJlZmFjdG9yaW5nLlwiIFRoZXkgaGlnaGxpZ2h0IHRoYXQgZXZlbiByZWZhY3RvcmluZ3MgY2FuIGludHJvZHVjZSBzdWJ0bGUgYnVncy4gU2VjdGlvbiAzIHJlaW5mb3JjZXMgdGhpcyBieSBzdGF0aW5nIHRoYXQgYW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGNvZGUsIGluY2x1ZGluZyByZWZhY3RvcmluZ3MsIHJlcXVpcmVzIGZ1enppbmcuIFRoZSBwYXRjaCAqZG9lcyogdG91Y2ggcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgdGhlcmVmb3JlIEkgdGhpbmsgdGhlIGV2YWx1YXRpb24gc2hvdWxkIGJlIFdvcnRoRnV6emluZyA9IHRydWUuXG5cbk5leHQsIEkgbmVlZCB0byBkZWZpbmUgdGhlIGBGb2N1c1N5bWJvbHNgLiBDbGVhcmx5LCBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgaXMgZGlyZWN0bHkgbW9kaWZpZWQsIG1ha2luZyBpdCBhIHRhcmdldC4gVGhlIGBldmVudGZkX2N0eF9wdXRgIGlzIGRpcmVjdGx5IG1vZGlmaWVkLCB0b28uIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhhdCBvbmUsIHRob3VnaC5cblxuU2VjdGlvbiA0IHdhcm5zIGFnYWluc3QgbGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0uIElzIGBldmVudGZkX2N0eF9wdXRgIHViaXF1aXRvdXMsIG9yIGZvY3VzZWQ/IFRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24gaXMgc3BlY2lmaWMgdG8gYSBEUk0gaW9jdGwsIHNvIGl0J3MgYSBkZWZpbml0ZSBmb2N1cyBzeW1ib2wuIGBldmVudGZkX2N0eF9wdXRgIHJlbGVhc2VzIGV2ZW50ZmQgY29udGV4dHMsIGJ1dCBpcyBub3cgbW9kaWZpZWQgdG8gaGFuZGxlIG51bGwgYGN0eGAuIFNpbmNlIHRoaXMgaXMgYSBzcGVjaWZpYyBtb2RpZmljYXRpb24sIEkgdGhpbmsgSSdsbCBpbmNsdWRlIGl0IGluIHRoZSBmb2N1cyBzeW1ib2xzLlxuXG5JJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIGBldmVudGZkX2N0eF9wdXRgIGNhbGxlcnMgaW4gdGhlIGtlcm5lbCB0byBtYWtlIHN1cmUgdGhhdCBkZWNpc2lvbiBpcyBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM5NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjE0LjY2MTQ5ODM4OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzUzODc1Njk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJcXFxcYmV2ZW50ZmRfY3R4X3B1dFxcXFxiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE2IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MjcyNT12b2lkIGt2bV9odl9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzMxLVxcdGlkcl9mb3JfZWFjaF9lbnRyeShcXHUwMDI2aHYtXFx1MDAzZWNvbm5fdG9fZXZ0LCBldmVudGZkLCBpKVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNzMyOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjczMy1cXHRpZHJfZGVzdHJveShcXHUwMDI2aHYtXFx1MDAzZWNvbm5fdG9fZXZ0KTtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz0yNzM2PXN0YXRpYyBpbnQga3ZtX2h2X2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGNvbm5faWQsIGludCBmZClcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzU1LVxcdFxcdHJldCA9IC1FRVhJU1Q7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjI3NTY6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yNzU3LVxcdHJldHVybiByZXQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9Mjc2MD1zdGF0aWMgaW50IGt2bV9odl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGNvbm5faWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjc3Mi1cXHRzeW5jaHJvbml6ZV9zcmN1KFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoyNzczOlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjc3NC1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0yMTM0PXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2Fzc2lnbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjE5OS1cXHRpZiAoZXZlbnRmZClcXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjIwMDpcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyMDEtb3V0X25vZXZlbnRmZDpcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0yMjA2PXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjIxOC1cXHRpZiAoIWV2dGNobmZkLVxcdTAwM2VkZWxpdmVyLnBvcnQucG9ydClcXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjIxOTpcXHRcXHRldmVudGZkX2N0eF9wdXQoZXZ0Y2huZmQtXFx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjIwLVxcdGtmcmVlKGV2dGNobmZkKTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0yMjI0PXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjU3LVxcdFxcdGlmICghZXZ0Y2huZmQtXFx1MDAzZWRlbGl2ZXIucG9ydC5wb3J0KVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjU4OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNTktXFx0XFx0a2ZyZWUoZXZ0Y2huZmQpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTIzNTY9dm9pZCBrdm1feGVuX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTIzNjQtXFx0XFx0aWYgKCFldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXFxuYXJjaC94ODYva3ZtL3hlbi5jOjIzNjU6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVxcdTAwM2VkZWxpdmVyLmV2ZW50ZmQuY3R4KTtcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjM2Ni1cXHRcXHRrZnJlZShldnRjaG5mZCk7XFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jPTQ2MD1zdGF0aWMgdm9pZCBocHJpdl9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTUzNi1cXHRpZiAoaHByaXYtXFx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYzo1Mzc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGhwcml2LVxcdTAwM2Vub3RpZmllcl9ldmVudC5ldmVudGZkKTtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTUzOC1cXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jPTc5Mz1zdGF0aWMgaW50IGV2ZW50ZmRfdW5yZWdpc3RlcihzdHJ1Y3QgaGxfZnByaXYgKmhwcml2LCBzdHJ1Y3QgaGxfaW5mb19hcmdzICphcmdzKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9oYWJhbmFsYWJzX2lvY3RsLmMtODAwLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jOjgwMTpcXHRldmVudGZkX2N0eF9wdXQoaHByaXYtXFx1MDAzZW5vdGlmaWVyX2V2ZW50LmV2ZW50ZmQpO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vaGFiYW5hbGFic19pb2N0bC5jLTgwMi1cXHRocHJpdi1cXHUwMDNlbm90aWZpZXJfZXZlbnQuZXZlbnRmZCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2ZwZ2EvZGZsLmM9MTg2OT1zdGF0aWMgaW50IGRvX3NldF9pcnFfdHJpZ2dlcihzdHJ1Y3QgZGZsX2ZlYXR1cmUgKmZlYXR1cmUsIHVuc2lnbmVkIGludCBpZHgsXFxuLS1cXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTg4MC1cXHRcXHRrZnJlZShmZWF0dXJlLVxcdTAwM2VpcnFfY3R4W2lkeF0ubmFtZSk7XFxuZHJpdmVycy9mcGdhL2RmbC5jOjE4ODE6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGZlYXR1cmUtXFx1MDAzZWlycV9jdHhbaWR4XS50cmlnZ2VyKTtcXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTg4Mi1cXHRcXHRmZWF0dXJlLVxcdTAwM2VpcnFfY3R4W2lkeF0udHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2ZwZ2EvZGZsLmMtMTkwNi1cXG5kcml2ZXJzL2ZwZ2EvZGZsLmM6MTkwNzpcXHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XFxuZHJpdmVycy9mcGdhL2RmbC5jLTE5MDgtZnJlZV9uYW1lOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM9MzAzPXN5bmNvYmpfZXZlbnRmZF9lbnRyeV9mcmVlKHN0cnVjdCBzeW5jb2JqX2V2ZW50ZmRfZW50cnkgKmVudHJ5KVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jLTMwNC17XFxuZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmM6MzA1OlxcdGV2ZW50ZmRfY3R4X3B1dChlbnRyeS1cXHUwMDNlZXZfZmRfY3R4KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYy0zMDYtXFx0ZG1hX2ZlbmNlX3B1dChlbnRyeS1cXHUwMDNlZmVuY2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmM9NjkwPXN0YXRpYyB2b2lkIGludGVsX3ZncHVfcmVsZWFzZV9tc2lfZXZlbnRmZF9jdHgoc3RydWN0IGludGVsX3ZncHUgKnZncHUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYy02OTUtXFx0aWYgKHRyaWdnZXIpIHtcXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYzo2OTY6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHRyaWdnZXIpO1xcbmRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jLTY5Ny1cXHRcXHR2Z3B1LVxcdTAwM2Vtc2lfdHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTI1ND1zdGF0aWMgdm9pZCBtc2h2X2lycWZkX3NodXRkb3duKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjY3LVxcdFxcdG1zaHZfaXJxZmRfcmVzYW1wbGVyX3NodXRkb3duKGlycWZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjI2ODpcXHRcXHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXFx1MDAzZWlycWZkX3Jlc2FtcGxlZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjY5LVxcdH1cXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjczLVxcdCAqL1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6Mjc0OlxcdGV2ZW50ZmRfY3R4X3B1dChpcnFmZC1cXHUwMDNlaXJxZmRfZXZlbnRmZF9jdHgpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtMjc1LVxcdGtmcmVlKGlycWZkKTtcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9MzkzPXN0YXRpYyBpbnQgbXNodl9pcnFmZF9hc3NpZ24oc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTI5LVxcdGlmIChyZXNhbXBsZWZkIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIocmVzYW1wbGVmZCkpXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo1MzA6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KHJlc2FtcGxlZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTMxLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTMyLVxcdGlmIChldmVudGZkIFxcdTAwMjZcXHUwMDI2ICFJU19FUlIoZXZlbnRmZCkpXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYzo1MzM6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtNTM0LVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYz01NDM9c3RhdGljIGludCBtc2h2X2lycWZkX2RlYXNzaWduKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTU2Mi1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjU2MzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy9odi9tc2h2X2V2ZW50ZmQuYy01NjQtXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jPTYzMz1zdGF0aWMgdm9pZCBpb2V2ZW50ZmRfcmVsZWFzZShzdHJ1Y3QgbXNodl9pb2V2ZW50ZmQgKnAsIHU2NCBwYXJ0aXRpb25faWQpXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTYzNi1cXHRcXHRtc2h2X3VucmVnaXN0ZXJfZG9vcmJlbGwocGFydGl0aW9uX2lkLCBwLVxcdTAwM2Vpb3ZudGZkX2Rvb3JiZWxsX2lkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jOjYzNzpcXHRldmVudGZkX2N0eF9wdXQocC1cXHUwMDNlaW92bnRmZF9ldmVudGZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTYzOC1cXHRrZnJlZShwKTtcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NjczPXN0YXRpYyBpbnQgbXNodl9hc3NpZ25faW9ldmVudGZkKHN0cnVjdCBtc2h2X3BhcnRpdGlvbiAqcHQsXFxuLS1cXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTc2Ny1mYWlsOlxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6NzY4OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTc2OS1cXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM9NzczPXN0YXRpYyBpbnQgbXNodl9kZWFzc2lnbl9pb2V2ZW50ZmQoc3RydWN0IG1zaHZfcGFydGl0aW9uICpwdCxcXG4tLVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmMtODE0LVxcbmRyaXZlcnMvaHYvbXNodl9ldmVudGZkLmM6ODE1OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG5kcml2ZXJzL2h2L21zaHZfZXZlbnRmZC5jLTgxNi1cXG4tLVxcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jPTk3Mz1zdGF0aWMgaW50IG1zaHZfdnRsX3NpbnRfaW9jdGxfc2V0X2V2ZW50ZmQoc3RydWN0IG1zaHZfdnRsX3NldF9ldmVudGZkIF9fdXNlciAqYXJnKVxcbi0tXFxuZHJpdmVycy9odi9tc2h2X3Z0bF9tYWluLmMtOTk1LVxcdFxcdHN5bmNocm9uaXplX3JjdSgpO1xcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jOjk5NjpcXHRcXHRldmVudGZkX2N0eF9wdXQob2xkX2V2ZW50ZmQpO1xcbmRyaXZlcnMvaHYvbXNodl92dGxfbWFpbi5jLTk5Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9kZXZ4LmM9MjA3Mj1zdGF0aWMgaW50IFVWRVJCU19IQU5ETEVSKE1MWDVfSUJfTUVUSE9EX0RFVlhfU1VCU0NSSUJFX0VWRU5UKShcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yMjQ5LVxcdFxcdGlmIChldmVudF9zdWItXFx1MDAzZWV2ZW50ZmQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjIyNTA6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50X3N1Yi1cXHUwMDNlZXZlbnRmZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTIyNTEtXFx0XFx0dXZlcmJzX3VvYmplY3RfcHV0KFxcdTAwMjZldmVudF9zdWItXFx1MDAzZWV2X2ZpbGUtXFx1MDAzZXVvYmopO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jPTI5NDA9c3RhdGljIHZvaWQgZGV2eF9mcmVlX3N1YnNjcmlwdGlvbihzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2RldnguYy0yOTQ1LVxcdGlmIChldmVudF9zdWItXFx1MDAzZWV2ZW50ZmQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jOjI5NDY6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50X3N1Yi1cXHUwMDNlZXZlbnRmZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvZGV2eC5jLTI5NDctXFx0dXZlcmJzX3VvYmplY3RfcHV0KFxcdTAwMjZldmVudF9zdWItXFx1MDAzZWV2X2ZpbGUtXFx1MDAzZXVvYmopO1xcbi0tXFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jPTE5MT1zdGF0aWMgdm9pZCBpcnFfZnJlZSh2b2lkICpwcml2YXRlKVxcbi0tXFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jLTE5NC1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM6MTk1OlxcdGV2ZW50ZmRfY3R4X3B1dChldl9jdHgpO1xcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0xOTYtfVxcbi0tXFxuZHJpdmVycy9taXNjL29jeGwvZmlsZS5jPTE5OD1zdGF0aWMgbG9uZyBhZnVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmMtMjU5LVxcdFxcdGlmIChyYylcXG5kcml2ZXJzL21pc2Mvb2N4bC9maWxlLmM6MjYwOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldl9jdHgpO1xcbmRyaXZlcnMvbWlzYy9vY3hsL2ZpbGUuYy0yNjEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jPTQxMD1zdGF0aWMgaW50IHZmaW9fY2N3X21kZXZfc2V0X2lycXMoc3RydWN0IHZmaW9fY2N3X3ByaXZhdGUgKnByaXZhdGUsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ2MC1cXHRcXHRcXHRpZiAoKmN0eClcXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jOjQ2MTpcXHRcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoKmN0eCk7XFxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NjItXFx0XFx0XFx0KmN0eCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jLTQ3MC1cXHRcXHRcXHRpZiAoKmN0eClcXG5kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jOjQ3MTpcXHRcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoKmN0eCk7XFxuZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYy00NzItXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmM9MjE3Mj1zdGF0aWMgaW50IHZmaW9fYXBfc2V0X3JlcXVlc3RfaXJxKHN0cnVjdCBhcF9tYXRyaXhfbWRldiAqbWF0cml4X21kZXYsXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE4Ny1cXHRcXHRpZiAobWF0cml4X21kZXYtXFx1MDAzZXJlcV90cmlnZ2VyKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMTg4OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTg5LVxcdFxcdG1hdHJpeF9tZGV2LVxcdTAwM2VyZXFfdHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjE5NS1cXHRcXHRpZiAobWF0cml4X21kZXYtXFx1MDAzZXJlcV90cmlnZ2VyKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMTk2OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cXHUwMDNlcmVxX3RyaWdnZXIpO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMTk3LVxcbi0tXFxuZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jPTIyMDY9c3RhdGljIGludCB2ZmlvX2FwX3NldF9jZmdfY2hhbmdlX2lycShzdHJ1Y3QgYXBfbWF0cml4X21kZXYgKm1hdHJpeF9tZGV2LCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjIwLVxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjIxOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIyMi1cXHRcXHRtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYy0yMjI4LVxcdFxcdGlmIChtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vdmZpb19hcF9vcHMuYzoyMjI5OlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtYXRyaXhfbWRldi1cXHUwMDNlY2ZnX2NoZ190cmlnZ2VyKTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfb3BzLmMtMjIzMC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmM9MjI4OT1zdGF0aWMgdm9pZCBmZnNfZGF0YV9jbGVhcihzdHJ1Y3QgZmZzX2RhdGEgKmZmcylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmMtMjMxMy1cXHRpZiAoZmZzLVxcdTAwM2VmZnNfZXZlbnRmZCkge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX2ZzLmM6MjMxNDpcXHRcXHRldmVudGZkX2N0eF9wdXQoZmZzLVxcdTAwM2VmZnNfZXZlbnRmZCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfZnMuYy0yMzE1LVxcdFxcdGZmcy1cXHUwMDNlZmZzX2V2ZW50ZmQgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYz00OTY9c3RhdGljIHZvaWQgdmR1c2VfZGV2X3Jlc2V0KHN0cnVjdCB2ZHVzZV9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtNTMyLVxcdFxcdFxcdGlmICh2cS1cXHUwMDNla2lja2ZkKVxcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmM6NTMzOlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2cS1cXHUwMDNla2lja2ZkKTtcXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTUzNC1cXHRcXHRcXHR2cS1cXHUwMDNla2lja2ZkID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmM9MTE5OT1zdGF0aWMgaW50IHZkdXNlX2tpY2tmZF9zZXR1cChzdHJ1Y3QgdmR1c2VfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTEyMTktXFx0aWYgKHZxLVxcdTAwM2VraWNrZmQpXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzoxMjIwOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2cS1cXHUwMDNla2lja2ZkKTtcXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTEyMjEtXFx0dnEtXFx1MDAzZWtpY2tmZCA9IGN0eDtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jPTU4PXN0YXRpYyBpbnQgdmZpb19jZHhfbXNpX3NldF92ZWN0b3Jfc2lnbmFsKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy03MS1cXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLm5hbWUpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjcyOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2ZGV2LVxcdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLnRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jLTczLVxcdFxcdHZkZXYtXFx1MDAzZWNkeF9pcnFzW3ZlY3Rvcl0udHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy05My1cXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VjZHhfaXJxc1t2ZWN0b3JdLm5hbWUpO1xcbmRyaXZlcnMvdmZpby9jZHgvaW50ci5jOjk0OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L2ludHIuYy05NS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19pbnRyLmM9NjE9c3RhdGljIGludCB2ZmlvX3NldF90cmlnZ2VyKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy03Mi1cXHRcXHRrZnJlZShpcnEtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jOjczOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpcnEtXFx1MDAzZXRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jLTc0LVxcdFxcdGlycS1cXHUwMDNldHJpZ2dlciA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy05Ni1cXHRcXHRrZnJlZShpcnEtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfaW50ci5jOjk3OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX2ludHIuYy05OC1cXHRcXHRpcnEtXFx1MDAzZXRyaWdnZXIgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NDQ9c3RhdGljIHZvaWQgdmZpb19wY2lfZXZlbnRmZF9yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQ4LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjQ5OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkLVxcdTAwM2VjdHgpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTUwLVxcdGtmcmVlKGV2ZW50ZmQpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9NDEzPXN0YXRpYyBpbnQgdmZpb19wY2lfY29yZV9wbV9lbnRyeV93aXRoX3dha2V1cChcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTQzOC1cXHRpZiAocmV0KVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjQzOTpcXHRcXHRldmVudGZkX2N0eF9wdXQoZWZkY3R4KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NDAtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz00NDQ9c3RhdGljIHZvaWQgX192ZmlvX3BjaV9ydW50aW1lX3BtX2V4aXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtNDUwLVxcdFxcdGlmICh2ZGV2LVxcdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4KSB7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6NDUxOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2ZGV2LVxcdTAwM2VwbV93YWtlX2V2ZW50ZmRfY3R4KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy00NTItXFx0XFx0XFx0dmRldi1cXHUwMDNlcG1fd2FrZV9ldmVudGZkX2N0eCA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9MzI0PXN0YXRpYyBpbnQgdmZpb19pbnR4X3NldF9zaWduYWwoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTM0Mi1cXHRcXHR2ZmlvX3ZpcnFmZF9mbHVzaF90aHJlYWQoXFx1MDAyNmN0eC1cXHUwMDNldW5tYXNrKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6MzQzOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChvbGQpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy0zNDQtXFx0fVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTM0OT1zdGF0aWMgdm9pZCB2ZmlvX2ludHhfZGlzYWJsZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzYyLVxcdFxcdGlmIChjdHgtXFx1MDAzZXRyaWdnZXIpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjM2MzpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoY3R4LVxcdTAwM2V0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtMzY0LVxcdFxcdGtmcmVlKGN0eC1cXHUwMDNlbmFtZSk7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM9NDQ3PXN0YXRpYyBpbnQgdmZpb19tc2lfc2V0X3ZlY3Rvcl9zaWduYWwoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTQ2NS1cXHRcXHRrZnJlZShjdHgtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYzo0NjY6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eC1cXHUwMDNldHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTQ2Ny1cXHRcXHR2ZmlvX2lycV9jdHhfZnJlZSh2ZGV2LCBjdHgsIHZlY3Rvcik7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmMtNTI1LW91dF9wdXRfZXZlbnRmZF9jdHg6XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjUyNjpcXHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTUyNy1vdXRfZnJlZV9uYW1lOlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jPTYzND1zdGF0aWMgaW50IHZmaW9fcGNpX3NldF9pbnR4X3RyaWdnZXIoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTY2Mi1cXHRcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHRyaWdnZXIpXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jOjY2MzpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQodHJpZ2dlcik7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9pbnRycy5jLTY2NC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYz03MzQ9c3RhdGljIGludCB2ZmlvX3BjaV9zZXRfY3R4X3RyaWdnZXJfc2luZ2xlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy03OTMtXFx0XFx0XFx0aWYgKHJldClcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2ludHJzLmM6Nzk0OlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChlZmRjdHgpO1xcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfaW50cnMuYy03OTUtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYz0xODI9c3RhdGljIGludCB2ZmlvX3NldF90cmlnZ2VyKHN0cnVjdCB2ZmlvX3BsYXRmb3JtX2RldmljZSAqdmRldiwgaW50IGluZGV4LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMTg5LVxcdFxcdGRpc2FibGVfaXJxKGlycS1cXHUwMDNlaHdpcnEpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jOjE5MDpcXHRcXHRldmVudGZkX2N0eF9wdXQoaXJxLVxcdTAwM2V0cmlnZ2VyKTtcXG5kcml2ZXJzL3ZmaW8vcGxhdGZvcm0vdmZpb19wbGF0Zm9ybV9pcnEuYy0xOTEtXFx0XFx0aXJxLVxcdTAwM2V0cmlnZ2VyID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jPTM1MT12b2lkIHZmaW9fcGxhdGZvcm1faXJxX2NsZWFudXAoc3RydWN0IHZmaW9fcGxhdGZvcm1fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmMtMzYwLVxcdFxcdFxcdGlmICh2ZGV2LVxcdTAwM2VpcnFzW2ldLnRyaWdnZXIpXFxuZHJpdmVycy92ZmlvL3BsYXRmb3JtL3ZmaW9fcGxhdGZvcm1faXJxLmM6MzYxOlxcdFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dCh2ZGV2LVxcdTAwM2VpcnFzW2ldLnRyaWdnZXIpO1xcbmRyaXZlcnMvdmZpby9wbGF0Zm9ybS92ZmlvX3BsYXRmb3JtX2lycS5jLTM2Mi1cXHRcXHRcXHRrZnJlZSh2ZGV2LVxcdTAwM2VpcnFzW2ldLm5hbWUpO1xcbi0tXFxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jPTg1PXN0YXRpYyB2b2lkIHZpcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtOTEtXFx0Zmx1c2hfd29yayhcXHUwMDI2dmlycWZkLVxcdTAwM2VpbmplY3QpO1xcbmRyaXZlcnMvdmZpby92aXJxZmQuYzo5MjpcXHRldmVudGZkX2N0eF9wdXQodmlycWZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmMtOTMtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM9MTExPWludCB2ZmlvX3ZpcnFmZF9lbmFibGUodm9pZCAqb3BhcXVlLFxcbi0tXFxuZHJpdmVycy92ZmlvL3ZpcnFmZC5jLTE4NC1lcnJfYnVzeTpcXG5kcml2ZXJzL3ZmaW8vdmlycWZkLmM6MTg1OlxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmRyaXZlcnMvdmZpby92aXJxZmQuYy0xODYtZXJyX2ZkOlxcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmM9NTE5PXN0YXRpYyB2b2lkIHZob3N0X3ZkcGFfY29uZmlnX3B1dChzdHJ1Y3Qgdmhvc3RfdmRwYSAqdilcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdmRwYS5jLTUyMS1cXHRpZiAodi1cXHUwMDNlY29uZmlnX2N0eCkge1xcbmRyaXZlcnMvdmhvc3QvdmRwYS5jOjUyMjpcXHRcXHRldmVudGZkX2N0eF9wdXQodi1cXHUwMDNlY29uZmlnX2N0eCk7XFxuZHJpdmVycy92aG9zdC92ZHBhLmMtNTIzLVxcdFxcdHYtXFx1MDAzZWNvbmZpZ19jdHggPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmM9NTI3PXN0YXRpYyBsb25nIHZob3N0X3ZkcGFfc2V0X2NvbmZpZ19jYWxsKHN0cnVjdCB2aG9zdF92ZHBhICp2LCB1MzIgX191c2VyICphcmdwKVxcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmMtNTQxLVxcdGlmICghSVNfRVJSX09SX05VTEwoY3R4KSlcXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYzo1NDI6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGN0eCk7XFxuZHJpdmVycy92aG9zdC92ZHBhLmMtNTQzLVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTEyMDM9dm9pZCB2aG9zdF9kZXZfY2xlYW51cChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIwOC1cXHRcXHRpZiAoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWVycm9yX2N0eClcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIwOTpcXHRcXHRcXHRldmVudGZkX2N0eF9wdXQoZGV2LVxcdTAwM2V2cXNbaV0tXFx1MDAzZWVycm9yX2N0eCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTAtXFx0XFx0aWYgKGRldi1cXHUwMDNldnFzW2ldLVxcdTAwM2VraWNrKVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTItXFx0XFx0aWYgKGRldi1cXHUwMDNldnFzW2ldLVxcdTAwM2VjYWxsX2N0eC5jdHgpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjEyMTM6XFx0XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGRldi1cXHUwMDNldnFzW2ldLVxcdTAwM2VjYWxsX2N0eC5jdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0xMjE0LVxcdFxcdHZob3N0X3ZxX3Jlc2V0KGRldiwgZGV2LVxcdTAwM2V2cXNbaV0pO1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTEyMTctXFx0aWYgKGRldi1cXHUwMDNlbG9nX2N0eClcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MTIxODpcXHRcXHRldmVudGZkX2N0eF9wdXQoZGV2LVxcdTAwM2Vsb2dfY3R4KTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMTIxOS1cXHRkZXYtXFx1MDAzZWxvZ19jdHggPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTIxNTA9bG9uZyB2aG9zdF92cmluZ19pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHZvaWQgX191c2VyICphcmdwKVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzQtXFx0aWYgKCFJU19FUlJfT1JfTlVMTChjdHgpKVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMjc1OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMjc2LVxcdGlmIChmaWxlcClcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMzIxPWxvbmcgdmhvc3RfZGV2X2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjQxOS1cXHRcXHRpZiAoY3R4KVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyNDIwOlxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yNDIxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9NDM9c3RhdGljIHZvaWQgYWNybl9pb2V2ZW50ZmRfc2h1dGRvd24oc3RydWN0IGFjcm5fdm0gKnZtLCBzdHJ1Y3QgaHNtX2lvZXZlbnRmZCAqcClcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTQ2LVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjQ3OlxcdGV2ZW50ZmRfY3R4X3B1dChwLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy00OC1cXHRsaXN0X2RlbChcXHUwMDI2cC1cXHUwMDNlbGlzdCk7XFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYz03Nj1zdGF0aWMgaW50IGFjcm5faW9ldmVudGZkX2Fzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYy0xNDItZmFpbDpcXG5kcml2ZXJzL3ZpcnQvYWNybi9pb2V2ZW50ZmQuYzoxNDM6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jLTE0NC1cXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmM9MTQ3PXN0YXRpYyBpbnQgYWNybl9pb2V2ZW50ZmRfZGVhc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLFxcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTY4LVxcbmRyaXZlcnMvdmlydC9hY3JuL2lvZXZlbnRmZC5jOjE2OTpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaW9ldmVudGZkLmMtMTcwLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYz02MD1zdGF0aWMgdm9pZCBoc21faXJxZmRfc2h1dGRvd25fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jLTcyLVxcdGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKGlycWZkLVxcdTAwM2VldmVudGZkLCBcXHUwMDI2aXJxZmQtXFx1MDAzZXdhaXQsIFxcdTAwMjZjbnQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM6NzM6XFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jLTc0LVxcdGtmcmVlKGlycWZkKTtcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM9MTExPXN0YXRpYyBpbnQgYWNybl9pcnFmZF9hc3NpZ24oc3RydWN0IGFjcm5fdm0gKnZtLCBzdHJ1Y3QgYWNybl9pcnFmZCAqYXJncylcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTcwLWZhaWw6XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzoxNzE6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTcyLW91dDpcXG4tLVxcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmM9MTc3PXN0YXRpYyBpbnQgYWNybl9pcnFmZF9kZWFzc2lnbihzdHJ1Y3QgYWNybl92bSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnQvYWNybi9pcnFmZC5jLTE5NS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnZtLVxcdTAwM2VpcnFmZHNfbG9jayk7XFxuZHJpdmVycy92aXJ0L2Fjcm4vaXJxZmQuYzoxOTY6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbmRyaXZlcnMvdmlydC9hY3JuL2lycWZkLmMtMTk3LVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jPTkxMj1zdGF0aWMgdm9pZCBpcnFmZF9zaHV0ZG93bihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtOTIxLVxcdGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlKGtpcnFmZC1cXHUwMDNlZXZlbnRmZCwgXFx1MDAyNmtpcnFmZC1cXHUwMDNld2FpdCwgXFx1MDAyNmNudCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jOjkyMjpcXHRldmVudGZkX2N0eF9wdXQoa2lycWZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtOTIzLVxcdGtmcmVlKGtpcnFmZCk7XFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9OTc2PXN0YXRpYyBpbnQgcHJpdmNtZF9pcnFmZF9hc3NpZ24oc3RydWN0IHByaXZjbWRfaXJxZmQgKmlycWZkKVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEwNDQtZXJyb3JfZXZlbnRmZDpcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTA0NTpcXHRldmVudGZkX2N0eF9wdXQoa2lycWZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA0Ni1cXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xMDUyPXN0YXRpYyBpbnQgcHJpdmNtZF9pcnFmZF9kZWFzc2lnbihzdHJ1Y3QgcHJpdmNtZF9pcnFmZCAqaXJxZmQpXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTA3Mi1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTA3MzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEwNzQtXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTM0Nj1zdGF0aWMgdm9pZCBpb2V2ZW50ZmRfZnJlZShzdHJ1Y3QgcHJpdmNtZF9rZXJuZWxfaW9ldmVudGZkICpraW9ldmVudGZkKVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTEzNDgtXFx0bGlzdF9kZWwoXFx1MDAyNmtpb2V2ZW50ZmQtXFx1MDAzZWxpc3QpO1xcbmRyaXZlcnMveGVuL3ByaXZjbWQuYzoxMzQ5OlxcdGV2ZW50ZmRfY3R4X3B1dChraW9ldmVudGZkLVxcdTAwM2VldmVudGZkKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmMtMTM1MC1cXHRrZnJlZShraW9ldmVudGZkKTtcXG4tLVxcbmRyaXZlcnMveGVuL3ByaXZjbWQuYz0xMzUzPXN0YXRpYyBpbnQgcHJpdmNtZF9pb2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBwcml2Y21kX2lvZXZlbnRmZCAqaW9ldmVudGZkKVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0MDMtZXJyb3JfZXZlbnRmZDpcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTQwNDpcXHRldmVudGZkX2N0eF9wdXQoa2lvZXZlbnRmZC1cXHUwMDNlZXZlbnRmZCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0MDUtXFxuLS1cXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM9MTQxMT1zdGF0aWMgaW50IHByaXZjbWRfaW9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBwcml2Y21kX2lvZXZlbnRmZCAqaW9ldmVudGZkKVxcbi0tXFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0NTQtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZpb3JlcV9sb2NrKTtcXG5kcml2ZXJzL3hlbi9wcml2Y21kLmM6MTQ1NTpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnRmZCk7XFxuZHJpdmVycy94ZW4vcHJpdmNtZC5jLTE0NTYtXFxuLS1cXG5mcy9haW8uYz0xMTU2PXN0YXRpYyBpbmxpbmUgdm9pZCBpb2NiX2Rlc3Ryb3koc3RydWN0IGFpb19raW9jYiAqaW9jYilcXG4tLVxcbmZzL2Fpby5jLTExNTgtXFx0aWYgKGlvY2ItXFx1MDAzZWtpX2V2ZW50ZmQpXFxuZnMvYWlvLmM6MTE1OTpcXHRcXHRldmVudGZkX2N0eF9wdXQoaW9jYi1cXHUwMDNla2lfZXZlbnRmZCk7XFxuZnMvYWlvLmMtMTE2MC1cXHRpZiAoaW9jYi1cXHUwMDNla2lfZmlscClcXG4tLVxcbmZzL2V2ZW50ZmQuYz04OT1zdGF0aWMgdm9pZCBldmVudGZkX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXFxuLS1cXG5mcy9ldmVudGZkLmMtOTYtLyoqXFxuZnMvZXZlbnRmZC5jOjk3OiAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTk4LSAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXFxuLS1cXG5mcy9ldmVudGZkLmMtMTAyLSAqL1xcbmZzL2V2ZW50ZmQuYzoxMDM6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuZnMvZXZlbnRmZC5jLTEwNC17XFxuLS1cXG5mcy9ldmVudGZkLmMtMTA5LX1cXG5mcy9ldmVudGZkLmM6MTEwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XFxuZnMvZXZlbnRmZC5jLTExMS1cXG5mcy9ldmVudGZkLmM9MTEyPXN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZXZlbnRmZC5jLTExNi1cXHR3YWtlX3VwX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTEhVUCk7XFxuZnMvZXZlbnRmZC5jOjExNzpcXHRldmVudGZkX2N0eF9wdXQoY3R4KTtcXG5mcy9ldmVudGZkLmMtMTE4LVxcdHJldHVybiAwO1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9MzE9c3RydWN0IGZpbGU7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC0zNC1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDozNTp2b2lkIGV2ZW50ZmRfY3R4X3B1dChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCk7XFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmgtMzYtc3RydWN0IGZpbGUgKmV2ZW50ZmRfZmdldChpbnQgZmQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9ldmVudGZkLmg9NjE9c3RhdGljIGlubGluZSB2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaC02NC1cXG5pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaDo2NTpzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTY2LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oPTg4PXN0YXRpYyBpbmxpbmUgdm9pZCBldmVudGZkX3NpZ25hbChzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eClcXG4tLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTkyLVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oOjkzOkRFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxcbmluY2x1ZGUvbGludXgvZXZlbnRmZC5oLTk0LVxcbi0tXFxuaW9fdXJpbmcvZXZlbnRmZC5jPTI4PXN0YXRpYyB2b2lkIGlvX2V2ZW50ZmRfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbmlvX3VyaW5nL2V2ZW50ZmQuYy0zMS1cXG5pb191cmluZy9ldmVudGZkLmM6MzI6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2X2ZkLVxcdTAwM2VjcV9ldl9mZCk7XFxuaW9fdXJpbmcvZXZlbnRmZC5jLTMzLVxcdGtmcmVlKGV2X2ZkKTtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMDIwPXN0YXRpYyB2b2lkIG1lbWNnX2V2ZW50X3JlbW92ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTAzMi1cXG5tbS9tZW1jb250cm9sLXYxLmM6MTAzMzpcXHRldmVudGZkX2N0eF9wdXQoZXZlbnQtXFx1MDAzZWV2ZW50ZmQpO1xcbm1tL21lbWNvbnRyb2wtdjEuYy0xMDM0LVxcdGtmcmVlKGV2ZW50KTtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMDk0PXN0YXRpYyBzc2l6ZV90IG1lbWNnX3dyaXRlX2V2ZW50X2NvbnRyb2woc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxcbi0tXFxubW0vbWVtY29udHJvbC12MS5jLTEyMjctb3V0X3B1dF9ldmVudGZkOlxcbm1tL21lbWNvbnRyb2wtdjEuYzoxMjI4OlxcdGV2ZW50ZmRfY3R4X3B1dChldmVudC1cXHUwMDNlZXZlbnRmZCk7XFxubW0vbWVtY29udHJvbC12MS5jLTEyMjktb3V0X2tmcmVlOlxcbi0tXFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jPTE1MzQ9c3RhdGljIHZvaWQgbXR0eV9kaXNhYmxlX2ludHgoc3RydWN0IG1kZXZfc3RhdGUgKm1kZXZfc3RhdGUpXFxuLS1cXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTUzNi1cXHRpZiAobWRldl9zdGF0ZS1cXHUwMDNlaW50eF9ldnRmZCkge1xcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYzoxNTM3OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChtZGV2X3N0YXRlLVxcdTAwM2VpbnR4X2V2dGZkKTtcXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTUzOC1cXHRcXHRtZGV2X3N0YXRlLVxcdTAwM2VpbnR4X2V2dGZkID0gTlVMTDtcXG4tLVxcbnNhbXBsZXMvdmZpby1tZGV2L210dHkuYz0xNTQ0PXN0YXRpYyB2b2lkIG10dHlfZGlzYWJsZV9tc2koc3RydWN0IG1kZXZfc3RhdGUgKm1kZXZfc3RhdGUpXFxuLS1cXG5zYW1wbGVzL3ZmaW8tbWRldi9tdHR5LmMtMTU0Ni1cXHRpZiAobWRldl9zdGF0ZS1cXHUwMDNlbXNpX2V2dGZkKSB7XFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jOjE1NDc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KG1kZXZfc3RhdGUtXFx1MDAzZW1zaV9ldnRmZCk7XFxuc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jLTE1NDgtXFx0XFx0bWRldl9zdGF0ZS1cXHUwMDNlbXNpX2V2dGZkID0gTlVMTDtcXG4tLVxcbnZpcnQva3ZtL2V2ZW50ZmQuYz0xMjM9aXJxZmRfc2h1dGRvd24oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jLTE0Ni1cXHRcXHRpcnFmZF9yZXNhbXBsZXJfc2h1dGRvd24oaXJxZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYzoxNDc6XFx0XFx0ZXZlbnRmZF9jdHhfcHV0KGlycWZkLVxcdTAwM2VyZXNhbXBsZWZkKTtcXG52aXJ0L2t2bS9ldmVudGZkLmMtMTQ4LVxcdH1cXG4tLVxcbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNTUtI2VuZGlmXFxudmlydC9rdm0vZXZlbnRmZC5jOjE1NjpcXHRldmVudGZkX2N0eF9wdXQoaXJxZmQtXFx1MDAzZWV2ZW50ZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy0xNTctXFx0a2ZyZWUoaXJxZmQpO1xcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jPTM3MT1rdm1faXJxZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9pcnFmZCAqYXJncylcXG4tLVxcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTItXFx0aWYgKHJlc2FtcGxlZmQgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUihyZXNhbXBsZWZkKSlcXG52aXJ0L2t2bS9ldmVudGZkLmM6NTEzOlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChyZXNhbXBsZWZkKTtcXG52aXJ0L2t2bS9ldmVudGZkLmMtNTE0LVxcbnZpcnQva3ZtL2V2ZW50ZmQuYy01MTUtXFx0aWYgKGV2ZW50ZmQgXFx1MDAyNlxcdTAwMjYgIUlTX0VSUihldmVudGZkKSlcXG52aXJ0L2t2bS9ldmVudGZkLmM6NTE2OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldmVudGZkKTtcXG52aXJ0L2t2bS9ldmVudGZkLmMtNTE3LVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jPTU5MD1rdm1faXJxZmRfZGVhc3NpZ24oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycWZkICphcmdzKVxcbi0tXFxudmlydC9rdm0vZXZlbnRmZC5jLTYwNi1cXHRzcGluX3VubG9ja19pcnEoXFx1MDAyNmt2bS1cXHUwMDNlaXJxZmRzLmxvY2spO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYzo2MDc6XFx0ZXZlbnRmZF9jdHhfcHV0KGV2ZW50ZmQpO1xcbnZpcnQva3ZtL2V2ZW50ZmQuYy02MDgtXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDc6MTguMjAwMjYxNjA4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyMTgzOTg1NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIOKAkyBhIHByZXR0eSBuaWNoZSBmdW5jdGlvbiwgZGVmaW5pdGVseSBub3Qgc29tZXRoaW5nIEkgZW5jb3VudGVyIGV2ZXJ5IGRheS4gSSBhbHNvIHNlZSB0aGF0IGBldmVudGZkX2N0eF9wdXRgIGlzIGJlaW5nIG1vZGlmaWVkLCB3aGljaCBpcyBkaXJlY3RseSByZWxhdGVkLiBSaWdodCwgc28gd2hhdCBjb25maWdzIGFyZSBpbiBwbGF5IGhlcmU/IEkgbmVlZCB0byBnZXQgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5MZXQncyBzdGFydCB3aXRoIHRoZSBvYnZpb3VzOiBJIGtub3cgYGRybV9zeW5jb2JqLmNgIHVzZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLCBzbyBJIHNob3VsZCBjaGVjayBmb3IgYENPTkZJR19EUk1gLiBTaW1pbGFybHksIHNpbmNlIGBldmVudGZkX2N0eF9wdXRgIGRlYWxzIHdpdGgsIHdlbGwsIGBldmVudGZkYCwgaXQgaGFzIHRvIGJlIGBDT05GSUdfRVZFTlRGRGAuXG5cbk5vdywgYmVmb3JlIEkgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBjaGVjayB0aGUga2VybmVsJ3MgYGluaXQvS2NvbmZpZ2AgZmlsZSBhbmQgdmVyaWZ5IGlmIG15IGluaXRpYWwgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QgYWJvdXQgYENPTkZJR19FVkVOVEZEYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZmlyc3QgY2x1ZSBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNTIyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjIxLjQxODY2MzE3M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwODgxOTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFVkVOVEZEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTE5MjM9Y29uZmlnIFRJTUVSRkRcXG4tLVxcbmluaXQvS2NvbmZpZy0xOTMxLVxcbmluaXQvS2NvbmZpZzoxOTMyOmNvbmZpZyBFVkVOVEZEXFxuaW5pdC9LY29uZmlnLTE5MzMtXFx0Ym9vbCBcXFwiRW5hYmxlIGV2ZW50ZmQoKSBzeXN0ZW0gY2FsbFxcXCIgaWYgRVhQRVJUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjIxLjc0OTU0OTk3N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTk1OTg0MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFdmVudGZkIE1vZHVsZSBWZXJpZmljYXRpb24gaW4gZnMvTWFrZWZpbGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgYGV2ZW50ZmQub2Agd2l0aGluIHRoZSBgZnMvTWFrZWZpbGVgLiBJdCdzIGEgc3RhbmRhcmQgcHJvY2VkdXJlLCBidXQgSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGJ1aWx0IGFuZCBsaW5rZWQgY29ycmVjdGx5LCBlc3BlY2lhbGx5IGlmIHRoZXJlJ3MgYmVlbiBhbnkgcmVjZW50IGNodXJuIGluIHRoZSBmaWxlc3lzdGVtIGluZnJhc3RydWN0dXJlLiBJJ20gcHJpbWFyaWx5IGxvb2tpbmcgZm9yIHRoZSBpbmNsdWRlIHBhdGhzLCBkZXBlbmRlbmNpZXMsIGNvbXBpbGVyIGZsYWdzLCBhbmQgYW55IHBvdGVudGlhbGx5IHN1YnRsZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYGtidWlsZGAgc3lzdGVtIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBtb2R1bGUncyBiZWhhdmlvci4gSSB3YW50IHRvIHJ1bGUgb3V0IGFueSBidWlsZCBlbnZpcm9ubWVudCB3ZWlyZG5lc3MgdGhhdCBjb3VsZCBjYXVzZSBzaWxlbnQgZmFpbHVyZXMgZG93biB0aGUgbGluZSwgcG90ZW50aWFsbHkgbWFuaWZlc3RpbmcgYXMgc3VidGxlIHBlcmZvcm1hbmNlIGlzc3VlcyBvciBldmVuIGNyYXNoZXMuIEkgYWxzbyB3aWxsIGJlIGNoZWNraW5nIGFueSBvdGhlciBzaW1pbGFyIG1vZHVsZXMgdGhhdCBtYXkgYmUgc2hhcmluZyBzaW1pbGFyIGNvZGUgd2l0aCB0aGUgYGV2ZW50ZmQub2AgbW9kdWxlLiBUaGlzIGlzIGp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgYmVmb3JlIEkgZGlnIGRlZXBlciBpbnRvIGFueSBzcGVjaWZpYyBpc3N1ZXMsIGJ1dCBlc3NlbnRpYWwgdG8gbWFrZSBzdXJlIHRoZSBmb3VuZGF0aW9uIGlzIHNvbGlkIGJlZm9yZSBnZXR0aW5nIGJvZ2dlZCBkb3duIGluIHNwZWNpZmljcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5NDUsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzoyNC45NDU1Mzc3MjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjY2MzkxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJldmVudGZkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL01ha2VmaWxlPTI4PW9iai0kKENPTkZJR19USU1FUkZEKVxcdFxcdCs9IHRpbWVyZmQub1xcbmZzL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19FVkVOVEZEKVxcdFxcdCs9IGV2ZW50ZmQub1xcbmZzL01ha2VmaWxlLTMwLW9iai0kKENPTkZJR19BSU8pICAgICAgICAgICAgICAgKz0gYWlvLm9cXG4tLVxcbmZzL2Fpby5jLTM2LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWN1cml0eS5oXFx1MDAzZVxcbmZzL2Fpby5jOjM3OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldmVudGZkLmhcXHUwMDNlXFxuZnMvYWlvLmMtMzgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Jsa19wbHVnLmhcXHUwMDNlXFxuLS1cXG5mcy9haW8uYz0xOTc9c3RydWN0IGFpb19raW9jYiB7XFxuLS1cXG5mcy9haW8uYy0yMTUtXFx0ICogSWYgdGhlIGFpb19yZXNmZCBmaWVsZCBvZiB0aGUgdXNlcnNwYWNlIGlvY2IgaXMgbm90IHplcm8sXFxuZnMvYWlvLmM6MjE2OlxcdCAqIHRoaXMgaXMgdGhlIHVuZGVybHlpbmcgZXZlbnRmZCBjb250ZXh0IHRvIGRlbGl2ZXIgZXZlbnRzIHRvLlxcbmZzL2Fpby5jLTIxNy1cXHQgKi9cXG5mcy9haW8uYzoyMTg6XFx0c3RydWN0IGV2ZW50ZmRfY3R4XFx0KmtpX2V2ZW50ZmQ7XFxuZnMvYWlvLmMtMjE5LX07XFxuLS1cXG5mcy9haW8uYz0xMTA3PXN0YXRpYyBpbmxpbmUgc3RydWN0IGFpb19raW9jYiAqYWlvX2dldF9yZXEoc3RydWN0IGtpb2N0eCAqY3R4KVxcbi0tXFxuZnMvYWlvLmMtMTEyMy1cXHRyZWZjb3VudF9zZXQoXFx1MDAyNnJlcS1cXHUwMDNla2lfcmVmY250LCAyKTtcXG5mcy9haW8uYzoxMTI0OlxcdHJlcS1cXHUwMDNla2lfZXZlbnRmZCA9IE5VTEw7XFxuZnMvYWlvLmMtMTEyNS1cXHRyZXR1cm4gcmVxO1xcbi0tXFxuZnMvYWlvLmM9MTE1Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW9jYl9kZXN0cm95KHN0cnVjdCBhaW9fa2lvY2IgKmlvY2IpXFxuZnMvYWlvLmMtMTE1Ny17XFxuZnMvYWlvLmM6MTE1ODpcXHRpZiAoaW9jYi1cXHUwMDNla2lfZXZlbnRmZClcXG5mcy9haW8uYzoxMTU5OlxcdFxcdGV2ZW50ZmRfY3R4X3B1dChpb2NiLVxcdTAwM2VraV9ldmVudGZkKTtcXG5mcy9haW8uYy0xMTYwLVxcdGlmIChpb2NiLVxcdTAwM2VraV9maWxwKVxcbi0tXFxuZnMvYWlvLmM9MTE3ND1zdGF0aWMgdm9pZCBhaW9fY29tcGxldGUoc3RydWN0IGFpb19raW9jYiAqaW9jYilcXG4tLVxcbmZzL2Fpby5jLTEyMzAtXFx0ICogQ2hlY2sgaWYgdGhlIHVzZXIgYXNrZWQgdXMgdG8gZGVsaXZlciB0aGUgcmVzdWx0IHRocm91Z2ggYW5cXG5mcy9haW8uYzoxMjMxOlxcdCAqIGV2ZW50ZmQuIFRoZSBldmVudGZkX3NpZ25hbCgpIGZ1bmN0aW9uIGlzIHNhZmUgdG8gYmUgY2FsbGVkXFxuZnMvYWlvLmMtMTIzMi1cXHQgKiBmcm9tIElSUSBjb250ZXh0LlxcbmZzL2Fpby5jLTEyMzMtXFx0ICovXFxuZnMvYWlvLmM6MTIzNDpcXHRpZiAoaW9jYi1cXHUwMDNla2lfZXZlbnRmZClcXG5mcy9haW8uYzoxMjM1OlxcdFxcdGV2ZW50ZmRfc2lnbmFsKGlvY2ItXFx1MDAzZWtpX2V2ZW50ZmQpO1xcbmZzL2Fpby5jLTEyMzYtXFxuLS1cXG5mcy9haW8uYz0xODQwPXN0YXRpYyBpbnQgYWlvX3BvbGxfd2FrZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd2FpdCwgdW5zaWduZWQgbW9kZSwgaW50IHN5bmMsXFxuLS1cXG5mcy9haW8uYy0xODcxLVxcdFxcdGlvY2ItXFx1MDAzZWtpX3Jlcy5yZXMgPSBtYW5nbGVfcG9sbChtYXNrKTtcXG5mcy9haW8uYzoxODcyOlxcdFxcdGlmIChpb2NiLVxcdTAwM2VraV9ldmVudGZkIFxcdTAwMjZcXHUwMDI2ICFldmVudGZkX3NpZ25hbF9hbGxvd2VkKCkpIHtcXG5mcy9haW8uYy0xODczLVxcdFxcdFxcdGlvY2IgPSBOVUxMO1xcbi0tXFxuZnMvYWlvLmM9MjAyMj1zdGF0aWMgaW50IF9faW9fc3VibWl0X29uZShzdHJ1Y3Qga2lvY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBpb2NiICppb2NiLFxcbi0tXFxuZnMvYWlvLmMtMjAzMC1cXHRpZiAoaW9jYi1cXHUwMDNlYWlvX2ZsYWdzIFxcdTAwMjYgSU9DQl9GTEFHX1JFU0ZEKSB7XFxuZnMvYWlvLmM6MjAzMTpcXHRcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2ZW50ZmQ7XFxuZnMvYWlvLmMtMjAzMi1cXHRcXHQvKlxcbi0tXFxuZnMvYWlvLmMtMjAzNC1cXHRcXHQgKiBpbnN0YW5jZSBvZiB0aGUgZmlsZSogbm93LiBUaGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgYmVcXG5mcy9haW8uYzoyMDM1OlxcdFxcdCAqIGFuIGV2ZW50ZmQoKSBmZCwgYW5kIHdpbGwgYmUgc2lnbmFsZWQgZm9yIGVhY2ggY29tcGxldGVkXFxuZnMvYWlvLmM6MjAzNjpcXHRcXHQgKiBldmVudCB1c2luZyB0aGUgZXZlbnRmZF9zaWduYWwoKSBmdW5jdGlvbi5cXG5mcy9haW8uYy0yMDM3LVxcdFxcdCAqL1xcbmZzL2Fpby5jOjIwMzg6XFx0XFx0ZXZlbnRmZCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGlvY2ItXFx1MDAzZWFpb19yZXNmZCk7XFxuZnMvYWlvLmM6MjAzOTpcXHRcXHRpZiAoSVNfRVJSKGV2ZW50ZmQpKVxcbmZzL2Fpby5jOjIwNDA6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoZXZlbnRmZCk7XFxuZnMvYWlvLmMtMjA0MS1cXG5mcy9haW8uYzoyMDQyOlxcdFxcdHJlcS1cXHUwMDNla2lfZXZlbnRmZCA9IGV2ZW50ZmQ7XFxuZnMvYWlvLmMtMjA0My1cXHR9XFxuLS1cXG5mcy9ldmVudGZkLmMtMi0vKlxcbmZzL2V2ZW50ZmQuYzozOiAqICBmcy9ldmVudGZkLmNcXG5mcy9ldmVudGZkLmMtNC0gKlxcbi0tXFxuZnMvZXZlbnRmZC5jLTIxLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9rcmVmLmhcXHUwMDNlXFxuZnMvZXZlbnRmZC5jOjIyOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldmVudGZkLmhcXHUwMDNlXFxuZnMvZXZlbnRmZC5jLTIzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9wcm9jX2ZzLmhcXHUwMDNlXFxuLS1cXG5mcy9ldmVudGZkLmMtMjctXFxuZnMvZXZlbnRmZC5jOjI4OnN0YXRpYyBERUZJTkVfSURBKGV2ZW50ZmRfaWRhKTtcXG5mcy9ldmVudGZkLmMtMjktXFxuZnMvZXZlbnRmZC5jOjMwOnN0cnVjdCBldmVudGZkX2N0eCB7XFxuZnMvZXZlbnRmZC5jLTMxLVxcdHN0cnVjdCBrcmVmIGtyZWY7XFxuLS1cXG5mcy9ldmVudGZkLmMtMzMtXFx0LypcXG5mcy9ldmVudGZkLmM6MzQ6XFx0ICogRXZlcnkgdGltZSB0aGF0IGEgd3JpdGUoMikgaXMgcGVyZm9ybWVkIG9uIGFuIGV2ZW50ZmQsIHRoZVxcbmZzL2V2ZW50ZmQuYy0zNS1cXHQgKiB2YWx1ZSBvZiB0aGUgX191NjQgYmVpbmcgd3JpdHRlbiBpcyBhZGRlZCB0byBcXFwiY291bnRcXFwiIGFuZCBhXFxuLS1cXG5mcy9ldmVudGZkLmMtMzctXFx0ICogc3BlY2lmaWVkLCBhIHJlYWQoMikgd2lsbCByZXR1cm4gdGhlIFxcXCJjb3VudFxcXCIgdmFsdWUgdG8gdXNlcnNwYWNlLFxcbmZzL2V2ZW50ZmQuYzozODpcXHQgKiBhbmQgd2lsbCByZXNldCBcXFwiY291bnRcXFwiIHRvIHplcm8uIFRoZSBrZXJuZWwgc2lkZSBldmVudGZkX3NpZ25hbCgpXFxuZnMvZXZlbnRmZC5jLTM5LVxcdCAqIGFsc28sIGFkZHMgdG8gdGhlIFxcXCJjb3VudFxcXCIgY291bnRlciBhbmQgaXNzdWUgYSB3YWtldXAuXFxuLS1cXG5mcy9ldmVudGZkLmMtNDYtLyoqXFxuZnMvZXZlbnRmZC5jOjQ3OiAqIGV2ZW50ZmRfc2lnbmFsX21hc2sgLSBJbmNyZW1lbnQgdGhlIGV2ZW50IGNvdW50ZXJcXG5mcy9ldmVudGZkLmM6NDg6ICogQGN0eDogW2luXSBQb2ludGVyIHRvIHRoZSBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTQ5LSAqIEBtYXNrOiBbaW5dIHBvbGwgbWFza1xcbi0tXFxuZnMvZXZlbnRmZC5jLTU1LSAqL1xcbmZzL2V2ZW50ZmQuYzo1Njp2b2lkIGV2ZW50ZmRfc2lnbmFsX21hc2soc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fcG9sbF90IG1hc2spXFxuZnMvZXZlbnRmZC5jLTU3LXtcXG4tLVxcbmZzL2V2ZW50ZmQuYy02My1cXHQgKiBuZXN0ZWQgd2FpdHF1ZXVlcyB3aXRoIGN1c3RvbSB3YWtldXAgaGFuZGxlcnMsIHRoZW4gaXQgc2hvdWxkXFxuZnMvZXZlbnRmZC5jOjY0OlxcdCAqIGNoZWNrIGV2ZW50ZmRfc2lnbmFsX2FsbG93ZWQoKSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBJZlxcbmZzL2V2ZW50ZmQuYzo2NTpcXHQgKiBpdCByZXR1cm5zIGZhbHNlLCB0aGUgZXZlbnRmZF9zaWduYWwoKSBjYWxsIHNob3VsZCBiZSBkZWZlcnJlZCB0byBhXFxuZnMvZXZlbnRmZC5jLTY2LVxcdCAqIHNhZmUgY29udGV4dC5cXG5mcy9ldmVudGZkLmMtNjctXFx0ICovXFxuZnMvZXZlbnRmZC5jOjY4OlxcdGlmIChXQVJOX09OX09OQ0UoY3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCkpXFxuZnMvZXZlbnRmZC5jLTY5LVxcdFxcdHJldHVybjtcXG4tLVxcbmZzL2V2ZW50ZmQuYy03MS1cXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgubG9jaywgZmxhZ3MpO1xcbmZzL2V2ZW50ZmQuYzo3MjpcXHRjdXJyZW50LVxcdTAwM2Vpbl9ldmVudGZkID0gMTtcXG5mcy9ldmVudGZkLmMtNzMtXFx0aWYgKGN0eC1cXHUwMDNlY291bnQgXFx1MDAzYyBVTExPTkdfTUFYKVxcbi0tXFxuZnMvZXZlbnRmZC5jLTc2LVxcdFxcdHdha2VfdXBfbG9ja2VkX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTElOIHwgbWFzayk7XFxuZnMvZXZlbnRmZC5jOjc3OlxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbmZzL2V2ZW50ZmQuYy03OC1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZjdHgtXFx1MDAzZXdxaC5sb2NrLCBmbGFncyk7XFxuZnMvZXZlbnRmZC5jLTc5LX1cXG5mcy9ldmVudGZkLmM6ODA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9zaWduYWxfbWFzayk7XFxuZnMvZXZlbnRmZC5jLTgxLVxcbmZzL2V2ZW50ZmQuYzo4MjpzdGF0aWMgdm9pZCBldmVudGZkX2ZyZWVfY3R4KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxcbmZzL2V2ZW50ZmQuYy04My17XFxuZnMvZXZlbnRmZC5jLTg0LVxcdGlmIChjdHgtXFx1MDAzZWlkIFxcdTAwM2U9IDApXFxuZnMvZXZlbnRmZC5jOjg1OlxcdFxcdGlkYV9mcmVlKFxcdTAwMjZldmVudGZkX2lkYSwgY3R4LVxcdTAwM2VpZCk7XFxuZnMvZXZlbnRmZC5jLTg2LVxcdGtmcmVlKGN0eCk7XFxuLS1cXG5mcy9ldmVudGZkLmMtODgtXFxuZnMvZXZlbnRmZC5jOjg5OnN0YXRpYyB2b2lkIGV2ZW50ZmRfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG5mcy9ldmVudGZkLmMtOTAte1xcbmZzL2V2ZW50ZmQuYzo5MTpcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZXZlbnRmZF9jdHgsIGtyZWYpO1xcbmZzL2V2ZW50ZmQuYy05Mi1cXG5mcy9ldmVudGZkLmM6OTM6XFx0ZXZlbnRmZF9mcmVlX2N0eChjdHgpO1xcbmZzL2V2ZW50ZmQuYy05NC19XFxuLS1cXG5mcy9ldmVudGZkLmMtOTYtLyoqXFxuZnMvZXZlbnRmZC5jOjk3OiAqIGV2ZW50ZmRfY3R4X3B1dCAtIFJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jOjk4OiAqIEBjdHg6IFtpbl0gUG9pbnRlciB0byBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTk5LSAqXFxuZnMvZXZlbnRmZC5jOjEwMDogKiBUaGUgZXZlbnRmZCBjb250ZXh0IHJlZmVyZW5jZSBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFjcXVpcmVkIGVpdGhlclxcbmZzL2V2ZW50ZmQuYzoxMDE6ICogd2l0aCBldmVudGZkX2N0eF9mZGdldCgpIG9yIGV2ZW50ZmRfY3R4X2ZpbGVnZXQoKS5cXG5mcy9ldmVudGZkLmMtMTAyLSAqL1xcbmZzL2V2ZW50ZmQuYzoxMDM6dm9pZCBldmVudGZkX2N0eF9wdXQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXFxuZnMvZXZlbnRmZC5jLTEwNC17XFxuLS1cXG5mcy9ldmVudGZkLmMtMTA3LVxcbmZzL2V2ZW50ZmQuYzoxMDg6XFx0a3JlZl9wdXQoXFx1MDAyNmN0eC1cXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcXG5mcy9ldmVudGZkLmMtMTA5LX1cXG5mcy9ldmVudGZkLmM6MTEwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X3B1dCk7XFxuZnMvZXZlbnRmZC5jLTExMS1cXG5mcy9ldmVudGZkLmM6MTEyOnN0YXRpYyBpbnQgZXZlbnRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2V2ZW50ZmQuYy0xMTMte1xcbmZzL2V2ZW50ZmQuYzoxMTQ6XFx0c3RydWN0IGV2ZW50ZmRfY3R4ICpjdHggPSBmaWxlLVxcdTAwM2Vwcml2YXRlX2RhdGE7XFxuZnMvZXZlbnRmZC5jLTExNS1cXG5mcy9ldmVudGZkLmMtMTE2LVxcdHdha2VfdXBfcG9sbChcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIEVQT0xMSFVQKTtcXG5mcy9ldmVudGZkLmM6MTE3OlxcdGV2ZW50ZmRfY3R4X3B1dChjdHgpO1xcbmZzL2V2ZW50ZmQuYy0xMTgtXFx0cmV0dXJuIDA7XFxuLS1cXG5mcy9ldmVudGZkLmMtMTIwLVxcbmZzL2V2ZW50ZmQuYzoxMjE6c3RhdGljIF9fcG9sbF90IGV2ZW50ZmRfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcXG5mcy9ldmVudGZkLmMtMTIyLXtcXG5mcy9ldmVudGZkLmM6MTIzOlxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmZzL2V2ZW50ZmQuYy0xMjQtXFx0X19wb2xsX3QgZXZlbnRzID0gMDtcXG4tLVxcbmZzL2V2ZW50ZmQuYy0xNDktXFx0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrIGN0eC1cXHUwMDNlcXdoLmxvY2tcXG5mcy9ldmVudGZkLmM6MTUwOlxcdCAqICAgICBldmVudGZkX3BvbGwgcmV0dXJucyAwXFxuZnMvZXZlbnRmZC5jLTE1MS1cXHQgKlxcbi0tXFxuZnMvZXZlbnRmZC5jLTE2NC1cXHQgKiAgICAgdW5sb2NrIGN0eC1cXHUwMDNld3FoLmxvY2tcXG5mcy9ldmVudGZkLmM6MTY1OlxcdCAqICAgICBldmVudGZkX3BvbGwgcmV0dXJucyAwXFxuZnMvZXZlbnRmZC5jLTE2Ni1cXHQgKi9cXG4tLVxcbmZzL2V2ZW50ZmQuYy0xNzgtXFxuZnMvZXZlbnRmZC5jOjE3OTp2b2lkIGV2ZW50ZmRfY3R4X2RvX3JlYWQoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIF9fdTY0ICpjbnQpXFxuZnMvZXZlbnRmZC5jLTE4MC17XFxuLS1cXG5mcy9ldmVudGZkLmMtMTg1LX1cXG5mcy9ldmVudGZkLmM6MTg2OkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X2RvX3JlYWQpO1xcbmZzL2V2ZW50ZmQuYy0xODctXFxuZnMvZXZlbnRmZC5jLTE4OC0vKipcXG5mcy9ldmVudGZkLmM6MTg5OiAqIGV2ZW50ZmRfY3R4X3JlbW92ZV93YWl0X3F1ZXVlIC0gUmVhZCB0aGUgY3VycmVudCBjb3VudGVyIGFuZCByZW1vdmVzIHdhaXQgcXVldWUuXFxuZnMvZXZlbnRmZC5jOjE5MDogKiBAY3R4OiBbaW5dIFBvaW50ZXIgdG8gZXZlbnRmZCBjb250ZXh0LlxcbmZzL2V2ZW50ZmQuYy0xOTEtICogQHdhaXQ6IFtpbl0gV2FpdCBxdWV1ZSB0byBiZSByZW1vdmVkLlxcbi0tXFxuZnMvZXZlbnRmZC5jLTE5Ny0gKlxcbmZzL2V2ZW50ZmQuYzoxOTg6ICogVGhpcyBpcyB1c2VkIHRvIGF0b21pY2FsbHkgcmVtb3ZlIGEgd2FpdCBxdWV1ZSBlbnRyeSBmcm9tIHRoZSBldmVudGZkIHdhaXRcXG5mcy9ldmVudGZkLmMtMTk5LSAqIHF1ZXVlIGhlYWQsIGFuZCByZWFkL3Jlc2V0IHRoZSBjb3VudGVyIHZhbHVlLlxcbmZzL2V2ZW50ZmQuYy0yMDAtICovXFxuZnMvZXZlbnRmZC5jOjIwMTppbnQgZXZlbnRmZF9jdHhfcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgsIHdhaXRfcXVldWVfZW50cnlfdCAqd2FpdCxcXG5mcy9ldmVudGZkLmMtMjAyLVxcdFxcdFxcdFxcdCAgX191NjQgKmNudClcXG4tLVxcbmZzL2V2ZW50ZmQuYy0yMDYtXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmN0eC1cXHUwMDNld3FoLmxvY2ssIGZsYWdzKTtcXG5mcy9ldmVudGZkLmM6MjA3OlxcdGV2ZW50ZmRfY3R4X2RvX3JlYWQoY3R4LCBjbnQpO1xcbmZzL2V2ZW50ZmQuYy0yMDgtXFx0X19yZW1vdmVfd2FpdF9xdWV1ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIHdhaXQpO1xcbi0tXFxuZnMvZXZlbnRmZC5jLTIxNC19XFxuZnMvZXZlbnRmZC5jOjIxNTpFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9yZW1vdmVfd2FpdF9xdWV1ZSk7XFxuZnMvZXZlbnRmZC5jLTIxNi1cXG5mcy9ldmVudGZkLmM6MjE3OnN0YXRpYyBzc2l6ZV90IGV2ZW50ZmRfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuZnMvZXZlbnRmZC5jLTIxOC17XFxuZnMvZXZlbnRmZC5jLTIxOS1cXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXFx1MDAzZWtpX2ZpbHA7XFxuZnMvZXZlbnRmZC5jOjIyMDpcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG5mcy9ldmVudGZkLmMtMjIxLVxcdF9fdTY0IHVjbnQgPSAwO1xcbi0tXFxuZnMvZXZlbnRmZC5jLTIzNy1cXHR9XFxuZnMvZXZlbnRmZC5jOjIzODpcXHRldmVudGZkX2N0eF9kb19yZWFkKGN0eCwgXFx1MDAyNnVjbnQpO1xcbmZzL2V2ZW50ZmQuYzoyMzk6XFx0Y3VycmVudC1cXHUwMDNlaW5fZXZlbnRmZCA9IDE7XFxuZnMvZXZlbnRmZC5jLTI0MC1cXHRpZiAod2FpdHF1ZXVlX2FjdGl2ZShcXHUwMDI2Y3R4LVxcdTAwM2V3cWgpKVxcbmZzL2V2ZW50ZmQuYy0yNDEtXFx0XFx0d2FrZV91cF9sb2NrZWRfcG9sbChcXHUwMDI2Y3R4LVxcdTAwM2V3cWgsIEVQT0xMT1VUKTtcXG5mcy9ldmVudGZkLmM6MjQyOlxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbmZzL2V2ZW50ZmQuYy0yNDMtXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZjdHgtXFx1MDAzZXdxaC5sb2NrKTtcXG4tLVxcbmZzL2V2ZW50ZmQuYy0yNDktXFxuZnMvZXZlbnRmZC5jOjI1MDpzdGF0aWMgc3NpemVfdCBldmVudGZkX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXFxuZnMvZXZlbnRmZC5jLTI1MS1cXHRcXHRcXHQgICAgIGxvZmZfdCAqcHBvcylcXG5mcy9ldmVudGZkLmMtMjUyLXtcXG5mcy9ldmVudGZkLmM6MjUzOlxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmZzL2V2ZW50ZmQuYy0yNTQtXFx0c3NpemVfdCByZXM7XFxuLS1cXG5mcy9ldmVudGZkLmMtMjc0LVxcdFxcdGN0eC1cXHUwMDNlY291bnQgKz0gdWNudDtcXG5mcy9ldmVudGZkLmM6Mjc1OlxcdFxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAxO1xcbmZzL2V2ZW50ZmQuYy0yNzYtXFx0XFx0aWYgKHdhaXRxdWV1ZV9hY3RpdmUoXFx1MDAyNmN0eC1cXHUwMDNld3FoKSlcXG5mcy9ldmVudGZkLmMtMjc3LVxcdFxcdFxcdHdha2VfdXBfbG9ja2VkX3BvbGwoXFx1MDAyNmN0eC1cXHUwMDNld3FoLCBFUE9MTElOKTtcXG5mcy9ldmVudGZkLmM6Mjc4OlxcdFxcdGN1cnJlbnQtXFx1MDAzZWluX2V2ZW50ZmQgPSAwO1xcbmZzL2V2ZW50ZmQuYy0yNzktXFx0fVxcbi0tXFxuZnMvZXZlbnRmZC5jLTI4NS0jaWZkZWYgQ09ORklHX1BST0NfRlNcXG5mcy9ldmVudGZkLmM6Mjg2OnN0YXRpYyB2b2lkIGV2ZW50ZmRfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZmlsZSAqZilcXG5mcy9ldmVudGZkLmMtMjg3LXtcXG5mcy9ldmVudGZkLmM6Mjg4OlxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4ID0gZi1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbmZzL2V2ZW50ZmQuYy0yODktXFx0X191NjQgY250O1xcbi0tXFxuZnMvZXZlbnRmZC5jLTI5NS1cXHRzZXFfcHJpbnRmKG0sXFxuZnMvZXZlbnRmZC5jOjI5NjpcXHRcXHQgICBcXFwiZXZlbnRmZC1jb3VudDogJTE2bGx4XFxcXG5cXFwiXFxuZnMvZXZlbnRmZC5jOjI5NzpcXHRcXHQgICBcXFwiZXZlbnRmZC1pZDogJWRcXFxcblxcXCJcXG5mcy9ldmVudGZkLmM6Mjk4OlxcdFxcdCAgIFxcXCJldmVudGZkLXNlbWFwaG9yZTogJWRcXFxcblxcXCIsXFxuZnMvZXZlbnRmZC5jLTI5OS1cXHRcXHQgICBjbnQsXFxuLS1cXG5mcy9ldmVudGZkLmMtMzA0LVxcbmZzL2V2ZW50ZmQuYzozMDU6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXZlbnRmZF9mb3BzID0ge1xcbmZzL2V2ZW50ZmQuYy0zMDYtI2lmZGVmIENPTkZJR19QUk9DX0ZTXFxuZnMvZXZlbnRmZC5jOjMwNzpcXHQuc2hvd19mZGluZm9cXHQ9IGV2ZW50ZmRfc2hvd19mZGluZm8sXFxuZnMvZXZlbnRmZC5jLTMwOC0jZW5kaWZcXG5mcy9ldmVudGZkLmM6MzA5OlxcdC5yZWxlYXNlXFx0PSBldmVudGZkX3JlbGVhc2UsXFxuZnMvZXZlbnRmZC5jOjMxMDpcXHQucG9sbFxcdFxcdD0gZXZlbnRmZF9wb2xsLFxcbmZzL2V2ZW50ZmQuYzozMTE6XFx0LnJlYWRfaXRlclxcdD0gZXZlbnRmZF9yZWFkLFxcbmZzL2V2ZW50ZmQuYzozMTI6XFx0LndyaXRlXFx0XFx0PSBldmVudGZkX3dyaXRlLFxcbmZzL2V2ZW50ZmQuYy0zMTMtXFx0Lmxsc2Vla1xcdFxcdD0gbm9vcF9sbHNlZWssXFxuLS1cXG5mcy9ldmVudGZkLmMtMzE2LS8qKlxcbmZzL2V2ZW50ZmQuYzozMTc6ICogZXZlbnRmZF9mZ2V0IC0gQWNxdWlyZSBhIHJlZmVyZW5jZSBvZiBhbiBldmVudGZkIGZpbGUgZGVzY3JpcHRvci5cXG5mcy9ldmVudGZkLmMtMzE4LSAqIEBmZDogW2luXSBFdmVudGZkIGZpbGUgZGVzY3JpcHRvci5cXG5mcy9ldmVudGZkLmMtMzE5LSAqXFxuZnMvZXZlbnRmZC5jOjMyMDogKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZXZlbnRmZCBmaWxlIHN0cnVjdHVyZSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG9yIHRoZVxcbmZzL2V2ZW50ZmQuYy0zMjEtICogZm9sbG93aW5nIGVycm9yIHBvaW50ZXI6XFxuLS1cXG5mcy9ldmVudGZkLmMtMzIzLSAqIC1FQkFERiAgICA6IEludmFsaWQgQGZkIGZpbGUgZGVzY3JpcHRvci5cXG5mcy9ldmVudGZkLmM6MzI0OiAqIC1FSU5WQUwgICA6IFRoZSBAZmQgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdCBhbiBldmVudGZkIGZpbGUuXFxuZnMvZXZlbnRmZC5jLTMyNS0gKi9cXG5mcy9ldmVudGZkLmM6MzI2OnN0cnVjdCBmaWxlICpldmVudGZkX2ZnZXQoaW50IGZkKVxcbmZzL2V2ZW50ZmQuYy0zMjcte1xcbi0tXFxuZnMvZXZlbnRmZC5jLTMzMi1cXHRcXHRyZXR1cm4gRVJSX1BUUigtRUJBREYpO1xcbmZzL2V2ZW50ZmQuYzozMzM6XFx0aWYgKGZpbGUtXFx1MDAzZWZfb3AgIT0gXFx1MDAyNmV2ZW50ZmRfZm9wcykge1xcbmZzL2V2ZW50ZmQuYy0zMzQtXFx0XFx0ZnB1dChmaWxlKTtcXG4tLVxcbmZzL2V2ZW50ZmQuYy0zMzktfVxcbmZzL2V2ZW50ZmQuYzozNDA6RVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9mZ2V0KTtcXG5mcy9ldmVudGZkLmMtMzQxLVxcbmZzL2V2ZW50ZmQuYy0zNDItLyoqXFxuZnMvZXZlbnRmZC5jOjM0MzogKiBldmVudGZkX2N0eF9mZGdldCAtIEFjcXVpcmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTM0NC0gKiBAZmQ6IFtpbl0gRXZlbnRmZCBmaWxlIGRlc2NyaXB0b3IuXFxuZnMvZXZlbnRmZC5jLTM0NS0gKlxcbmZzL2V2ZW50ZmQuYzozNDY6ICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGludGVybmFsIGV2ZW50ZmQgY29udGV4dCwgb3RoZXJ3aXNlIHRoZSBlcnJvclxcbmZzL2V2ZW50ZmQuYy0zNDctICogcG9pbnRlcnMgcmV0dXJuZWQgYnkgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XFxuZnMvZXZlbnRmZC5jLTM0OC0gKlxcbmZzL2V2ZW50ZmQuYzozNDk6ICogZXZlbnRmZF9mZ2V0XFxuZnMvZXZlbnRmZC5jLTM1MC0gKi9cXG5mcy9ldmVudGZkLmM6MzUxOnN0cnVjdCBldmVudGZkX2N0eCAqZXZlbnRmZF9jdHhfZmRnZXQoaW50IGZkKVxcbmZzL2V2ZW50ZmQuYy0zNTIte1xcbi0tXFxuZnMvZXZlbnRmZC5jLTM1NS1cXHRcXHRyZXR1cm4gRVJSX1BUUigtRUJBREYpO1xcbmZzL2V2ZW50ZmQuYzozNTY6XFx0cmV0dXJuIGV2ZW50ZmRfY3R4X2ZpbGVnZXQoZmRfZmlsZShmKSk7XFxuZnMvZXZlbnRmZC5jLTM1Ny19XFxuZnMvZXZlbnRmZC5jOjM1ODpFWFBPUlRfU1lNQk9MX0dQTChldmVudGZkX2N0eF9mZGdldCk7XFxuZnMvZXZlbnRmZC5jLTM1OS1cXG5mcy9ldmVudGZkLmMtMzYwLS8qKlxcbmZzL2V2ZW50ZmQuYzozNjE6ICogZXZlbnRmZF9jdHhfZmlsZWdldCAtIEFjcXVpcmVzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcm5hbCBldmVudGZkIGNvbnRleHQuXFxuZnMvZXZlbnRmZC5jLTM2Mi0gKiBAZmlsZTogW2luXSBFdmVudGZkIGZpbGUgcG9pbnRlci5cXG5mcy9ldmVudGZkLmMtMzYzLSAqXFxuZnMvZXZlbnRmZC5jOjM2NDogKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgZXZlbnRmZCBjb250ZXh0LCBvdGhlcndpc2UgdGhlIGVycm9yXFxuZnMvZXZlbnRmZC5jLTM2NS0gKiBwb2ludGVyOlxcbmZzL2V2ZW50ZmQuYy0zNjYtICpcXG5mcy9ldmVudGZkLmM6MzY3OiAqIC1FSU5WQUwgICA6IFRoZSBAZmQgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdCBhbiBldmVudGZkIGZpbGUuXFxuZnMvZXZlbnRmZC5jLTM2OC0gKi9cXG5mcy9ldmVudGZkLmM6MzY5OnN0cnVjdCBldmVudGZkX2N0eCAqZXZlbnRmZF9jdHhfZmlsZWdldChzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9ldmVudGZkLmMtMzcwLXtcXG5mcy9ldmVudGZkLmM6MzcxOlxcdHN0cnVjdCBldmVudGZkX2N0eCAqY3R4O1xcbmZzL2V2ZW50ZmQuYy0zNzItXFxuZnMvZXZlbnRmZC5jOjM3MzpcXHRpZiAoZmlsZS1cXHUwMDNlZl9vcCAhPSBcXHUwMDI2ZXZlbnRmZF9mb3BzKVxcbmZzL2V2ZW50ZmQuYy0zNzQtXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuLS1cXG5mcy9ldmVudGZkLmMtMzc5LX1cXG5mcy9ldmVudGZkLmM6MzgwOkVYUE9SVF9TWU1CT0xfR1BMKGV2ZW50ZmRfY3R4X2ZpbGVnZXQpO1xcbmZzL2V2ZW50ZmQuYy0zODEtXFxuZnMvZXZlbnRmZC5jOjM4MjpzdGF0aWMgaW50IGRvX2V2ZW50ZmQodW5zaWduZWQgaW50IGNvdW50LCBpbnQgZmxhZ3MpXFxuZnMvZXZlbnRmZC5jLTM4My17XFxuZnMvZXZlbnRmZC5jOjM4NDpcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmN0eCBfX2ZyZWUoa2ZyZWUpID0gTlVMTDtcXG5mcy9ldmVudGZkLmMtMzg1LVxcbi0tXFxuZnMvZXZlbnRmZC5jLTQwNi1cXHRGRF9QUkVQQVJFKGZkZiwgZmxhZ3MsXFxuZnMvZXZlbnRmZC5jOjQwNzpcXHRcXHQgICBhbm9uX2lub2RlX2dldGZpbGVfZm1vZGUoXFxcIltldmVudGZkXVxcXCIsIFxcdTAwMjZldmVudGZkX2ZvcHMsIGN0eCxcXG5mcy9ldmVudGZkLmMtNDA4LVxcdFxcdFxcdFxcdFxcdCAgICBmbGFncywgRk1PREVfTk9XQUlUKSk7XFxuLS1cXG5mcy9ldmVudGZkLmMtNDExLVxcbmZzL2V2ZW50ZmQuYzo0MTI6XFx0Y3R4LVxcdTAwM2VpZCA9IGlkYV9hbGxvYyhcXHUwMDI2ZXZlbnRmZF9pZGEsIEdGUF9LRVJORUwpO1xcbmZzL2V2ZW50ZmQuYy00MTMtXFx0cmV0YWluX2FuZF9udWxsX3B0cihjdHgpO1xcbi0tXFxuZnMvZXZlbnRmZC5jLTQxNi1cXG5mcy9ldmVudGZkLmM6NDE3OlNZU0NBTExfREVGSU5FMihldmVudGZkMiwgdW5zaWduZWQgaW50LCBjb3VudCwgaW50LCBmbGFncylcXG5mcy9ldmVudGZkLmMtNDE4LXtcXG5mcy9ldmVudGZkLmM6NDE5OlxcdHJldHVybiBkb19ldmVudGZkKGNvdW50LCBmbGFncyk7XFxuZnMvZXZlbnRmZC5jLTQyMC19XFxuZnMvZXZlbnRmZC5jLTQyMS1cXG5mcy9ldmVudGZkLmM6NDIyOlNZU0NBTExfREVGSU5FMShldmVudGZkLCB1bnNpZ25lZCBpbnQsIGNvdW50KVxcbmZzL2V2ZW50ZmQuYy00MjMte1xcbmZzL2V2ZW50ZmQuYzo0MjQ6XFx0cmV0dXJuIGRvX2V2ZW50ZmQoY291bnQsIDApO1xcbmZzL2V2ZW50ZmQuYy00MjUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzoyNS4wNzgyMjA2OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MDQ4MzEzODMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEV2YWx1YXRpb246IEEgUmVmaW5lZCBBcHByb2FjaCB0byBFdmVudGZkIGFuZCBTeW5jb2JqIEludGVyYWN0aW9uKipcblxuT2theSwgbGV0J3MgZGlzc2VjdCB0aGVzZSBjaGFuZ2VzIG1ldGhvZGljYWxseS4gRmlyc3QsIEkgc2VlIGEgY3J1Y2lhbCB1cGRhdGUgaW4gYGZzL2V2ZW50ZmQuY2AuIFRoZSBgZXZlbnRmZF9jdHhfcHV0YCBmdW5jdGlvbiBoYXMgYmVlbiBoYXJkZW5lZDsgaXQgbm93IGdyYWNlZnVsbHkgaGFuZGxlcyBOVUxMIGBjdHhgIHBvaW50ZXJzLiBUaGlzIGlzIGEgZ29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcgcHJhY3RpY2UsIGEgc21hbGwgYnV0IGltcG9ydGFudCByZWZpbmVtZW50LiBUaGUgY29ycmVzcG9uZGluZyBgREVGSU5FX0ZSRUVgIG1hY3JvIGluIGBpbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaGAgaXMgYWxzbyBwcmVzZW50LiBUaGlzIGlzIHR5cGljYWwsIHR5aW5nIGludG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGNoYW5nZXMuXG5cbk5vdywgbGV0J3MgbW92ZSBvbnRvIHRoZSBgZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNgIGNoYW5nZXMuIFRoZSBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAgZnVuY3Rpb24gaXMgdGhlIHByaW1hcnkgdGFyZ2V0IGhlcmUuIEknbSBmb2N1c2luZyBvbiB0aGUgcmVmYWN0b3JpbmcgYXJvdW5kIGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgZXZlbnRmZF9jdHhgLiBJdCBsb29rcyBsaWtlIHRoZSBgX19mcmVlKGV2ZW50ZmQpYCBjbGVhbnVwIGhlbHBlciwgcHJvYmFibHkgZGVmaW5lZCBhcyBwYXJ0IG9mIHRoZSBpbml0aWFsIGNoYW5nZSwgaXMgYmVpbmcgbGV2ZXJhZ2VkIHRvIGltcHJvdmUgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiBgZXZfZmRfY3R4YC4gVGhpcyBsb29rcyBjbGVhbiwgdXNpbmcgdGhlIHN0YW5kYXJkIGlkaW9tIHRvIG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBldmVudGZkIGNvbnRleHQgaW4gdGhpcyBmdW5jdGlvbi4gV2UncmUgdXNpbmcgYGV2ZW50ZmRfY3R4X2ZkZ2V0YCB0byBvYnRhaW4gdGhlIGV2ZW50ZmQgY29udGV4dCwgYW5kIHRoZW4gZWl0aGVyIGFkZGluZyBpdCB0byB0aGUgc3luY29iaiBvciBjbGVhbmluZyB1cC5cblxuTm93LCBsZXQncyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSBmdXp6aW5nIGltcGxpY2F0aW9ucy4gVGhlIHBhdGNoICppcyogd29ydGggZnV6emluZy4gSXQncyBtb2RpZnlpbmcgcmVhY2hhYmxlIGtlcm5lbCBjb2RlIHdpdGhpbiBib3RoIGBldmVudGZkYCBhbmQgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgLiBUaGF0IG1lYW5zIHdlJ3ZlIGdvdCBuZXcgb3IgbW9kaWZpZWQgY29kZSBwYXRocy4gSSdkIGV2YWx1YXRlIHRoZSBmb2xsb3dpbmcgY29uZmlnczogYERSTWAgYW5kIGBFVkVOVEZEYC5cblxuRm9yIG15IGZ1enppbmcgZm9jdXMsIEknbSB0aGlua2luZzogYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIGFuZCBgZXZlbnRmZF9jdHhfcHV0YCBhcmUgdGhlIHN5bWJvbHMgb2YgaW50ZXJlc3QuXG5cblRoZSBwYXRjaCdzIGNvcmUgbW9kaWZpY2F0aW9uIHRvIGBldmVudGZkX2N0eF9wdXQoKWAgYW5kIGl0cyBjb3JyZXNwb25kaW5nIG1hY3JvLCBjb3VwbGVkIHdpdGggaXRzIHVzZSBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bGAsIGlzIGEgd2VsbC1kZWZpbmVkIHVzZSBjYXNlIHRoYXQncyBxdWl0ZSByZWFkYWJsZS4gSXQgYWxsIG1ha2VzIHNlbnNlIGFuZCBpdCBpcyBjbGVhbi4gVGhlIG92ZXJhbGwgcmVhc29uaW5nLCBpcyBzb2xpZC4gRXZlcnl0aGluZyBjaGVja3Mgb3V0LCB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg5OTksIk91dHB1dFRva2VucyI6MTM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjMzLjEyNjUzOTI4MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzUyMjA5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNXCIsXG4gICAgXCJFVkVOVEZEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bFwiLFxuICAgIFwiZXZlbnRmZF9jdHhfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNXCIsXG4gICAgXCJFVkVOVEZEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bFwiLFxuICAgIFwiZXZlbnRmZF9jdHhfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIE5VTEwgY2hlY2sgaW4gZXZlbnRmZF9jdHhfcHV0KCksIGRlZmluZXMgYSBfX2ZyZWUoZXZlbnRmZCkgY2xlYW51cCBoYW5kbGVyLCBhbmQgcmVmYWN0b3JzIHJlc291cmNlIGxpZmVjeWNsZSBoYW5kbGluZyBpbiB0aGUgcmVhY2hhYmxlIERSTSBpb2N0bCBoYW5kbGVyIGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKS4gRnV6emluZyB3aWxsIHRlc3Qgd2hldGhlciB0aGUgYWx0ZXJlZCByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNsZWFudXAgZmxvdyBpbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsIGJlaGF2ZSBjb3JyZWN0bHkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjMzLjI2NDA2OTMyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMwNjM0NTM5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEzOjA3OjMzLjI2NDc1MjVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDMwNTY1ODI0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNsZWFudXAgYXR0cmlidXRlIGhlbHBlciBgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKWAgYW5kIHVwZGF0ZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyBjbGVhbnVwIChgX19mcmVlKGV2ZW50ZmQpYCkgYWxvbmcgd2l0aCBgbm9fZnJlZV9wdHIoKWAsIGFuZCBhZGRzIGEgTlVMTCBjaGVjayB0byBgZXZlbnRmZF9jdHhfcHV0KClgLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlNzMzOWY5ZDNiYTQwYWMwNjNjYmViOWUxZTUxOGY1MThlMmUxYjYzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMzowNjoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbmluZGV4IGMyM2E1ZGUyN2VmZmEuLjI2MWQ1NjA2ZThiZDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmNcbkBAIC0xNDYyLDkgKzE0NjIsOSBAQCBpbnRcbiBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRcdFx0ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSlcbiB7XG4rXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xuIFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xuLVx0c3RydWN0IGV2ZW50ZmRfY3R4ICpldl9mZF9jdHg7XG4gXHRzdHJ1Y3Qgc3luY29ial9ldmVudGZkX2VudHJ5ICplbnRyeTtcbiBcdGludCByZXQ7XG4gXG5AQCAtMTQ4NCwxNiArMTQ4NCwxNyBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXHRldl9mZF9jdHggPSBldmVudGZkX2N0eF9mZGdldChhcmdzLVx1MDAzZWZkKTtcbiBcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xuIFx0XHRyZXQgPSBQVFJfRVJSKGV2X2ZkX2N0eCk7XG4rXHRcdGV2X2ZkX2N0eCA9IE5VTEw7XG4gXHRcdGdvdG8gZXJyX2ZkZ2V0O1xuIFx0fVxuIFxuIFx0ZW50cnkgPSBremFsbG9jX29iaigqZW50cnkpO1xuIFx0aWYgKCFlbnRyeSkge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9remFsbG9jO1xuK1x0XHRnb3RvIGVycl9mZGdldDtcbiBcdH1cbiBcdGVudHJ5LVx1MDAzZXN5bmNvYmogPSBzeW5jb2JqO1xuLVx0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gZXZfZmRfY3R4O1xuK1x0ZW50cnktXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcbiBcdGVudHJ5LVx1MDAzZXBvaW50ID0gYXJncy1cdTAwM2Vwb2ludDtcbiBcdGVudHJ5LVx1MDAzZWZsYWdzID0gYXJncy1cdTAwM2VmbGFncztcbiBcbkBAIC0xNTAyLDggKzE1MDMsNiBAQCBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsXG4gXG4gXHRyZXR1cm4gMDtcbiBcbi1lcnJfa3phbGxvYzpcbi1cdGV2ZW50ZmRfY3R4X3B1dChldl9mZF9jdHgpO1xuIGVycl9mZGdldDpcbiBcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZnMvZXZlbnRmZC5jIGIvZnMvZXZlbnRmZC5jXG5pbmRleCA5ZDMzYTAyNzU3ZDUyLi4yNDExMWExNjI4NGYxIDEwMDY0NFxuLS0tIGEvZnMvZXZlbnRmZC5jXG4rKysgYi9mcy9ldmVudGZkLmNcbkBAIC0xMDIsNiArMTAyLDkgQEAgc3RhdGljIHZvaWQgZXZlbnRmZF9mcmVlKHN0cnVjdCBrcmVmICprcmVmKVxuICAqL1xuIHZvaWQgZXZlbnRmZF9jdHhfcHV0KHN0cnVjdCBldmVudGZkX2N0eCAqY3R4KVxuIHtcbitcdGlmICghY3R4KVxuK1x0XHRyZXR1cm47XG4rXG4gXHRrcmVmX3B1dChcdTAwMjZjdHgtXHUwMDNla3JlZiwgZXZlbnRmZF9mcmVlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwoZXZlbnRmZF9jdHhfcHV0KTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50ZmQuaCBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5pbmRleCBlMzJiZWU0MzQ1ZmI5Li42ODkzNThjMmIwYWU3IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9ldmVudGZkLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRmZC5oXG5AQCAtMTAsNiArMTAsNyBAQFxuICNkZWZpbmUgX0xJTlVYX0VWRU5URkRfSFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dhaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NsZWFudXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LWRlZnMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG5AQCAtODksNSArOTAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZXZlbnRmZF9zaWduYWwoc3RydWN0IGV2ZW50ZmRfY3R4ICpjdHgpXG4gXHRldmVudGZkX3NpZ25hbF9tYXNrKGN0eCwgMCk7XG4gfVxuIFxuK0RFRklORV9GUkVFKGV2ZW50ZmQsIHN0cnVjdCBldmVudGZkX2N0eCAqLCBldmVudGZkX2N0eF9wdXQoX1QpKVxuK1xuICNlbmRpZiAvKiBfTElOVVhfRVZFTlRGRF9IICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzozMy4yNjQ3NTM0OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTYyMTA1MzYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBLTVNBTiBGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB3aGV0aGVyIHRoaXMgcGF0Y2gsIHRvdWNoaW5nIERSTSBzeW5jIG9iamVjdHMgYW5kIGV2ZW50ZmRzLCBuZWNlc3NpdGF0ZXMgYSBkZWVwZXIgZGl2ZSB3aXRoIEtNU0FOIGZ1enppbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpbXBsaWNhdGlvbnMuXG5cbkZpcnN0LCBJJ20gc2VlaW5nIGNoYW5nZXMgaW4gYGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jYDogVGhlIGtleSBhbHRlcmF0aW9uIGluIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsYCByZXZvbHZlcyBhcm91bmQgYHN0cnVjdCBldmVudGZkX2N0eCAqZXZfZmRfY3R4YC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyYW5zaXRpb25pbmcgdG8gdXNlIGEgZGVmaW5lZCBmcmVlIGZ1bmN0aW9uIGBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMYC4gVGhlIGVycm9yIGhhbmRsaW5nIGlzIGFsc28gdGlnaHRlbmVkOyBpZiBgZXZlbnRmZF9jdHhfZmRnZXRgIGZhaWxzIChyZXR1cm5pbmcgYW4gZXJyb3IpLCBgZXZfZmRfY3R4YCBpcyBleHBsaWNpdGx5IHNldCB0byBgTlVMTGAgYmVmb3JlIGp1bXBpbmcgdG8gYGVycl9mZGdldGAuIEltcG9ydGFudGx5LCBgbm9fZnJlZV9wdHJgIGlzIGJlaW5nIHVzZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIG9mIHRoZSBjb250ZXh0LCBhbmQgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBlbnRyeS1cdTAwM2Vldl9mZF9jdHhgIGlzIHdpdGggYG5vX2ZyZWVfcHRyKGV2X2ZkX2N0eClgLiBJdCBhbHNvIGxvb2tzIGxpa2UgdGhleSBhcmUgZ2V0dGluZyByaWQgb2YgYGVycl9remFsbG9jYCBhbmQgbWFudWFsIGBldmVudGZkX2N0eF9wdXRgIGNhbGxzLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy5cblxuTmV4dCwgSSBzZWUgYSBzbWFsbCBidXQgc2lnbmlmaWNhbnQgY2hhbmdlIGluIGBmcy9ldmVudGZkLmNgIHdpdGhpbiBgZXZlbnRmZF9jdHhfcHV0YC4gQSBOVUxMLXNhZmV0eSBjaGVjayAoYGlmICghY3R4KSByZXR1cm47YCkgaGFzIGJlZW4gYWRkZWQuIFRoaXMgaXMgZ29vZCBwcmFjdGljZS5cblxuRmluYWxseSwgdGhlIGluY2x1c2lvbiBvZiBgXHUwMDNjbGludXgvY2xlYW51cC5oXHUwMDNlYCBhbmQgdGhlIGBERUZJTkVfRlJFRWAgbWFjcm8gZm9yIGBldmVudGZkYCBpbiBgaW5jbHVkZS9saW51eC9ldmVudGZkLmhgIGNvbmZpcm1zIHRoaXMgaXMgYSBjb25zaXN0ZW50IHJlZmFjdG9yaW5nIHRvIHVzZSBhIHN0YW5kYXJkaXplZCBmcmVlIGZ1bmN0aW9uLCB3aGljaCBpcyBnZW5lcmFsbHkgYSBnb29kIHRoaW5nLlxuXG5Ob3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlzaz8gTGV0IG1lIHJ1biB0aHJvdWdoIHRoaXMuIGBldl9mZF9jdHhgIGlzIGluaXRpYWxpemVkIHRvIE5VTEwgd2l0aCB0aGUgYF9fZnJlZShldmVudGZkKSA9IE5VTExgLiBJZiBgZXZlbnRmZF9jdHhfZmRnZXRgIGZhaWxzLCB3ZSBzZXQgYGV2X2ZkX2N0eGAgdG8gTlVMTCwgcHJldmVudGluZyBhbiBhdHRlbXB0IHRvIGNsZWFuIHVwIGFuIGVycm9yIHBvaW50ZXIuIFdoZW4gdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCBgbm9fZnJlZV9wdHJgIHRha2VzIGNvbnRyb2wgYW5kIHJlc2V0cyBgZXZfZmRfY3R4YC4gRnVydGhlcm1vcmUsIHRoZSBgZW50cnlgIGlzIHplcm9lZCB3aXRoIGBremFsbG9jX29iamAsIGFuZCB0aGVyZSBhcmUgbm8gZGlyZWN0IGBjb3B5X3RvX3VzZXJgIG9wZXJhdGlvbnMgaW52b2x2ZWQuIFRoZXJlJ3Mgbm8gaW1tZWRpYXRlbHkgb2J2aW91cyBwYXRoIHRvIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCByZWFkcywgaW5mby1sZWFrcywgb3IgdW5pbml0aWFsaXplZCBicmFuY2hpbmcgdGhhdCBJIGNhbiBzZWUuIFRoZSBwYXRjaCBpcyB2ZXJ5IGZvY3VzZWQgb24gcmVzb3VyY2UgY2xlYW51cCBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuXG5cbkdpdmVuIHRoaXMgYW5hbHlzaXMsIEknZCBzYXkgdGhlIHByaW1hcnkgcmlza3MgaGVyZSBhcmUgbW9yZSByZWxhdGVkIHRvIGNsYXNzaWMgcmVzb3VyY2UgbWFuYWdlbWVudCBpc3N1ZXPigJRsZWFrcywgZG91YmxlIGZyZWVzLCBvciB1c2UtYWZ0ZXItZnJlZeKAlHJhdGhlciB0aGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gVGhlc2Uga2luZHMgb2YgcHJvYmxlbXMgYXJlIHR5cGljYWxseSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQgc2FuaXRpemVycy4gS01TQU4gaXNuJ3QgdGhlIHByaW9yaXR5IGZvciB0aGlzIHBhdGNoLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgb2YgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGxgIHRvIGJlIHN1cmUgdGhlcmUgYXJlIG5vIHN1YnRsZSBpbnRlcmFjdGlvbnMsIGJ1dCBJIHRoaW5rIHRoZSBjaGFuZ2VzIGFyZSBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODAsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzozOC40MjY4NjIxMDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NjAsXG4gIFwiTGluZUNvdW50XCI6IDYwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE0NjA6XFx0XFxuMTQ2MTpcXHRpbnRcXG4xNDYyOlxcdGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4xNDYzOlxcdFxcdFxcdFxcdCAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpXFxuMTQ2NDpcXHR7XFxuMTQ2NTpcXHRcXHRzdHJ1Y3QgZXZlbnRmZF9jdHggKmV2X2ZkX2N0eCBfX2ZyZWUoZXZlbnRmZCkgPSBOVUxMO1xcbjE0NjY6XFx0XFx0c3RydWN0IGRybV9zeW5jb2JqX2V2ZW50ZmQgKmFyZ3MgPSBkYXRhO1xcbjE0Njc6XFx0XFx0c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqO1xcbjE0Njg6XFx0XFx0c3RydWN0IHN5bmNvYmpfZXZlbnRmZF9lbnRyeSAqZW50cnk7XFxuMTQ2OTpcXHRcXHRpbnQgcmV0O1xcbjE0NzA6XFx0XFxuMTQ3MTpcXHRcXHRpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSl9USU1FTElORSkpXFxuMTQ3MjpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuMTQ3MzpcXHRcXG4xNDc0OlxcdFxcdGlmIChhcmdzLVxcdTAwM2VmbGFncyBcXHUwMDI2IH5EUk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQVZBSUxBQkxFKVxcbjE0NzU6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTQ3NjpcXHRcXG4xNDc3OlxcdFxcdGlmIChhcmdzLVxcdTAwM2VwYWQpXFxuMTQ3ODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xNDc5OlxcdFxcbjE0ODA6XFx0XFx0c3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBhcmdzLVxcdTAwM2VoYW5kbGUpO1xcbjE0ODE6XFx0XFx0aWYgKCFzeW5jb2JqKVxcbjE0ODI6XFx0XFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuMTQ4MzpcXHRcXG4xNDg0OlxcdFxcdGV2X2ZkX2N0eCA9IGV2ZW50ZmRfY3R4X2ZkZ2V0KGFyZ3MtXFx1MDAzZWZkKTtcXG4xNDg1OlxcdFxcdGlmIChJU19FUlIoZXZfZmRfY3R4KSkge1xcbjE0ODY6XFx0XFx0XFx0cmV0ID0gUFRSX0VSUihldl9mZF9jdHgpO1xcbjE0ODc6XFx0XFx0XFx0ZXZfZmRfY3R4ID0gTlVMTDtcXG4xNDg4OlxcdFxcdFxcdGdvdG8gZXJyX2ZkZ2V0O1xcbjE0ODk6XFx0XFx0fVxcbjE0OTA6XFx0XFxuMTQ5MTpcXHRcXHRlbnRyeSA9IGt6YWxsb2Nfb2JqKCplbnRyeSk7XFxuMTQ5MjpcXHRcXHRpZiAoIWVudHJ5KSB7XFxuMTQ5MzpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjE0OTQ6XFx0XFx0XFx0Z290byBlcnJfZmRnZXQ7XFxuMTQ5NTpcXHRcXHR9XFxuMTQ5NjpcXHRcXHRlbnRyeS1cXHUwMDNlc3luY29iaiA9IHN5bmNvYmo7XFxuMTQ5NzpcXHRcXHRlbnRyeS1cXHUwMDNlZXZfZmRfY3R4ID0gbm9fZnJlZV9wdHIoZXZfZmRfY3R4KTtcXG4xNDk4OlxcdFxcdGVudHJ5LVxcdTAwM2Vwb2ludCA9IGFyZ3MtXFx1MDAzZXBvaW50O1xcbjE0OTk6XFx0XFx0ZW50cnktXFx1MDAzZWZsYWdzID0gYXJncy1cXHUwMDNlZmxhZ3M7XFxuMTUwMDpcXHRcXG4xNTAxOlxcdFxcdGRybV9zeW5jb2JqX2FkZF9ldmVudGZkKHN5bmNvYmosIGVudHJ5KTtcXG4xNTAyOlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG4xNTAzOlxcdFxcbjE1MDQ6XFx0XFx0cmV0dXJuIDA7XFxuMTUwNTpcXHRcXG4xNTA2OlxcdGVycl9mZGdldDpcXG4xNTA3OlxcdFxcdGRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTtcXG4xNTA4OlxcdFxcdHJldHVybiByZXQ7XFxuMTUwOTpcXHR9XFxuMTUxMDpcXHRcXG4xNTExOlxcdGludFxcbjE1MTI6XFx0ZHJtX3N5bmNvYmpfcmVzZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSxcXG4xNTEzOlxcdFxcdFxcdFxcdHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKVxcbjE1MTQ6XFx0e1xcbjE1MTU6XFx0XFx0c3RydWN0IGRybV9zeW5jb2JqX2FycmF5ICphcmdzID0gZGF0YTtcXG4xNTE2OlxcdFxcdHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzO1xcbjE1MTc6XFx0XFx0dWludDMyX3QgaTtcXG4xNTE4OlxcdFxcdGludCByZXQ7XFxuMTUxOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTM6MDc6MzguNDI3MTA3NTkxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUxNDMyODM4OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBDaGFuZ2VzKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCBzZWVtcyB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBpbXBsZW1lbnRpbmcgYERFRklORV9GUkVFKGV2ZW50ZmQsIC4uLilgIHdoaWNoIGlzIHRoZW4gYXBwbGllZCBpbiBgZHJtX3N5bmNvYmpfZXZlbnRmZF9pb2N0bCgpYC4gIEEgbmljZSwgY2xlYW4gd2F5IHRvIGhhbmRsZSBjbGVhbnVwLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGEgTlVMTCBjaGVjayBpbiBgZXZlbnRmZF9jdHhfcHV0KClgIGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuIEkndmUgc2Nhbm5lZCB0aGUgY29kZSBmb3IgdHlwaWNhbCB2dWxuZXJhYmlsaXRpZXMuXG5cbkNydWNpYWxseSwgSSdtIG5vdCBzZWVpbmcgYW55IHJlZCBmbGFncyByZWdhcmRpbmcgdW5pbml0aWFsaXplZCBkYXRhLCBhY2NpZGVudGFsIGRhdGEgbGVha3MgdG8gdXNlciBzcGFjZSwgdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3Nlcywgb3IgbWVtb3J5IGV4cG9zdXJlLiBJJ3ZlIGFsd2F5cyBiZWVuIGVzcGVjaWFsbHkgY2FyZWZ1bCBhYm91dCBsaWZldGltZSBtYW5hZ2VtZW50LCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCBjbGVhbnVwIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoaW5ncyBjYW4gZ2V0IG1lc3N5IGZhc3QuIEFueSBvZiB0aG9zZSBjb21tb24gZXJyb3JzIC0gdGhlIHVzZS1hZnRlci1mcmVlLCBkb3VibGUtZnJlZSwgb3IgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGlzc3VlcyB0aGF0IGNhbiBoYXVudCB1cyAtIHdvdWxkIGJlIGZsYWdnZWQgYnkgdGhlIHVzdWFsIHN1c3BlY3RzIC0gS0FTQU4gb3IgdGhlIHN0YW5kYXJkIGtlcm5lbCBkZXRlY3RvcnMsIG5vdCBLTVNBTi5cblxuU2luY2UgSSBkb24ndCBzZWUgYW55IG9mIHRob3NlIEtNU0FOLXNwZWNpZmljIHZ1bG5lcmFiaWxpdGllcyB0aGF0IEkgd291bGQgYmUgbG9va2luZyBmb3IgaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQsIGl0J3Mgc2FmZSB0byBzYXk6IGBOZWVkc0tNU0FOID0gZmFsc2VgLiBOb3csIEknbSByZWFkeSB0byBtb3ZlIG9uLiBMZXQncyBnZXQgdGhlIGNhbGwgdG8gYHNldC1yZXN1bHRzYCBwcmVwYXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1NywiT3V0cHV0VG9rZW5zIjoxNzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMzowNzo0My41NzAzOTM3NTNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjbGVhbnVwIGF0dHJpYnV0ZSBoZWxwZXIgYERFRklORV9GUkVFKGV2ZW50ZmQsIC4uLilgIGFuZCB1cGRhdGVzIGBkcm1fc3luY29ial9ldmVudGZkX2lvY3RsKClgIHRvIHVzZSBhdXRvbWF0aWMgY2xlYW51cCAoYF9fZnJlZShldmVudGZkKWApIGFsb25nIHdpdGggYG5vX2ZyZWVfcHRyKClgLCBhbmQgYWRkcyBhIE5VTEwgY2hlY2sgdG8gYGV2ZW50ZmRfY3R4X3B1dCgpYC5cXG5cXG5UaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHJlYWRzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UgaW50cm9kdWNlZCBvciBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW4gdGhpcyByZWZhY3RvcmluZyB3b3VsZCBwZXJ0YWluIHRvIHJlZmVyZW5jZSBjb3VudGluZywgbGlmZXRpbWUgbWFuYWdlbWVudCwgb3IgcmVzb3VyY2UgY2xlYW51cCAoZS5nLiB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSksIHdoaWNoIGFyZSBoYW5kbGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWcgdG9vbHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNsZWFudXAgYXR0cmlidXRlIGhlbHBlciBgREVGSU5FX0ZSRUUoZXZlbnRmZCwgLi4uKWAgYW5kIHVwZGF0ZXMgYGRybV9zeW5jb2JqX2V2ZW50ZmRfaW9jdGwoKWAgdG8gdXNlIGF1dG9tYXRpYyBjbGVhbnVwIChgX19mcmVlKGV2ZW50ZmQpYCkgYWxvbmcgd2l0aCBgbm9fZnJlZV9wdHIoKWAsIGFuZCBhZGRzIGEgTlVMTCBjaGVjayB0byBgZXZlbnRmZF9jdHhfcHV0KClgLlxcblxcblRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcmVhZHMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSBpbnRyb2R1Y2VkIG9yIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuIEFueSBwb3RlbnRpYWwgYnVncyBpbiB0aGlzIHJlZmFjdG9yaW5nIHdvdWxkIHBlcnRhaW4gdG8gcmVmZXJlbmNlIGNvdW50aW5nLCBsaWZldGltZSBtYW5hZ2VtZW50LCBvciByZXNvdXJjZSBjbGVhbnVwIChlLmcuIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSwgd2hpY2ggYXJlIGhhbmRsZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1ZyB0b29scy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[1] Phase: Succeeded StartedAt: 2026-09-09 13:07:55 +0000 UTC FinishedAt: 2026-09-09 13:07:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-09 13:07:55 +0000 UTC FinishedAt: 2026-09-09 13:07:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2] Phase: Succeeded StartedAt: 2026-09-09 13:07:55 +0000 UTC FinishedAt: 2026-09-09 16:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-09 13:07:55 +0000 UTC FinishedAt: 2026-09-09 16:58:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-09 13:07:55 +0000 UTC FinishedAt: 2026-09-09 13:08:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-09 13:07:55 +0000 UTC FinishedAt: 2026-09-09 13:08:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-convert-artifact-987467470/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-09 13:08:05 +0000 UTC FinishedAt: 2026-09-09 13:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-09 13:08:05 +0000 UTC FinishedAt: 2026-09-09 13:28:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9c9fdc7e-e6a2-46fc-8f1a-c39ecec94a45,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-convert-artifact-987467470/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c16e1daa-be56-417e-ba52-60322d704792", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-2749495092/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-09 13:08:05 +0000 UTC FinishedAt: 2026-09-09 13:28:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9c9fdc7e-e6a2-46fc-8f1a-c39ecec94a45,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-convert-artifact-987467470/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c16e1daa-be56-417e-ba52-60322d704792", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-2749495092/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-09 13:28:31 +0000 UTC FinishedAt: 2026-09-09 13:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-09 13:28:31 +0000 UTC FinishedAt: 2026-09-09 13:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-09 13:28:31 +0000 UTC FinishedAt: 2026-09-09 13:28:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-09 13:28:31 +0000 UTC FinishedAt: 2026-09-09 13:28:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-convert-artifact-1337864641/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-09 13:28:41 +0000 UTC FinishedAt: 2026-09-09 13:30:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-09 13:28:41 +0000 UTC FinishedAt: 2026-09-09 13:30:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c16e1daa-be56-417e-ba52-60322d704792,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-2749495092/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-09 13:30:40 +0000 UTC FinishedAt: 2026-09-09 13:30:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-09 13:30:40 +0000 UTC FinishedAt: 2026-09-09 13:30:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-09 13:30:40 +0000 UTC FinishedAt: 2026-09-09 13:51:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-09 13:30:40 +0000 UTC FinishedAt: 2026-09-09 13:51:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9c9fdc7e-e6a2-46fc-8f1a-c39ecec94a45,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-convert-artifact-1337864641/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "6a7c92c6-617a-4e61-89f5-2f04884c6f0f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-4120922957/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-09 13:30:40 +0000 UTC FinishedAt: 2026-09-09 13:51:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9c9fdc7e-e6a2-46fc-8f1a-c39ecec94a45,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-convert-artifact-1337864641/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "6a7c92c6-617a-4e61-89f5-2f04884c6f0f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-4120922957/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-09 13:51:27 +0000 UTC FinishedAt: 2026-09-09 13:51:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-09 13:51:27 +0000 UTC FinishedAt: 2026-09-09 13:51:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-09 13:51:27 +0000 UTC FinishedAt: 2026-09-09 13:53:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-09 13:51:27 +0000 UTC FinishedAt: 2026-09-09 13:53:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6a7c92c6-617a-4e61-89f5-2f04884c6f0f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-4120922957/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-09 13:53:19 +0000 UTC FinishedAt: 2026-09-09 16:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-09 13:53:19 +0000 UTC FinishedAt: 2026-09-09 16:58:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*c16e1daa-be56-417e-ba52-60322d704792,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6a7c92c6-617a-4e61-89f5-2f04884c6f0f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-2749495092/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-4120922957/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-09 13:53:19 +0000 UTC FinishedAt: 2026-09-09 13:53:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-09 13:53:19 +0000 UTC FinishedAt: 2026-09-09 13:53:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-convert-artifact-2056577110/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-09 13:53:19 +0000 UTC FinishedAt: 2026-09-09 13:53:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-09 13:53:19 +0000 UTC FinishedAt: 2026-09-09 13:53:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-09 13:53:19 +0000 UTC FinishedAt: 2026-09-09 13:53:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-09 13:53:29 +0000 UTC FinishedAt: 2026-09-09 16:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkltr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["drm_syncobj_eventfd_ioctl","eventfd_ctx_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"893e11787f78e43b534e252249ac3fff4d1333f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM","EVENTFD"],"series_id":"4dc70d0d-10f9-412e-a60f-05edd56d52d1","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-09 13:53:29 +0000 UTC FinishedAt: 2026-09-09 16:58:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c16e1daa-be56-417e-ba52-60322d704792,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6a7c92c6-617a-4e61-89f5-2f04884c6f0f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-2749495092/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-build-action-4120922957/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkltr/series-workflowhkltr-convert-artifact-2056577110/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}