Name: series-workflowxgv5n Phase: Succeeded StartedAt: 2026-07-25 11:41:55 +0000 UTC FinishedAt: 2026-07-25 13:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[0] Phase: Succeeded StartedAt: 2026-07-25 11:41:55 +0000 UTC FinishedAt: 2026-07-25 12:03:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 11:41:55 +0000 UTC FinishedAt: 2026-07-25 12:03:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MEDIATEK", "CFG80211", "MAC80211", "USB", "MT7925U", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MEDIATEK", "CFG80211", "MAC80211", "USB", "MT7925U", "DEBUG_FS" ], "series_id": "902de955-db8d-47e0-a4fe-d624ae5adeb5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7928_get_txpwr_info", "mt7928_txpwr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjhfZ2V0X3R4cHdyX2luZm8mIzM0OywKICAgICYjMzQ7bXQ3OTI4X3R4cHdyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZGVidWdmcyBlbnRyaWVzIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiBsb2dpYyB0byByZXRyaWV2ZSBUWCBwb3dlciBpbmZvcm1hdGlvbiBmb3IgdGhlIE1UNzkyOCBkZXZpY2UgKGhhbmRsZWQgYnkgdGhlIG10NzkyNSBkcml2ZXIpLiBUaGUgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgZnVuY3Rpb24gc2VuZHMgYSBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UuIFNpbmNlIHRoZSBNVDc5MjUgZHJpdmVyIHN1cHBvcnRzIFVTQiAodmlhIGBDT05GSUdfTVQ3OTI1VWApLCB0aGUgZGV2aWNlIGFuZCBpdHMgTUNVIHJlc3BvbnNlcyBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nICh2aGNpKS4gVGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyBpdHMgbGVuZ3RoLCB3aGljaCBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYSBtYWxpY2lvdXMgVVNCIGRldmljZSByZXR1cm5zIGEgc2hvcnQgcmVzcG9uc2UuIFRoaXMgbWFrZXMgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmY4YWVlMzg1MTE0NGEzNjViMzY5YmE3ZGFjMTM2OTJhNTFhOWQxNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjAxOjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuY1xuaW5kZXggZDAxZmY0OWRlNDdhZjcuLjE2ODQzZTUwOTcxNjllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcbkBAIC0xNzgsNiAmIzQzOzE3OCwxNDcgQEAgbXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWRcbiYjNDM7bXQ3OTI4X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbiYjNDM7e1xuJiM0MztcdHNlcV9wcmludGYocywgXCYjMzQ7JS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcblwmIzM0OyxcbiYjNDM7XHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0O21jczBcJiMzNDssIFwmIzM0O21jczFcJiMzNDssIFwmIzM0O21jczJcJiMzNDssIFwmIzM0O21jczNcJiMzNDssIFwmIzM0O21jczRcJiMzNDssIFwmIzM0O21jczVcJiMzNDssXG4mIzQzO1x0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3M4XCYjMzQ7LCBcJiMzNDttY3M5XCYjMzQ7LCBcJiMzNDttY3MxMFwmIzM0OywgXCYjMzQ7bWNzMTFcJiMzNDssXG4mIzQzO1x0XHQgICBcJiMzNDttY3MxMlwmIzM0OywgXCYjMzQ7bWNzMTNcJiMzNDssIFwmIzM0O21jczE0XCYjMzQ7LCBcJiMzNDttY3MxNVwmIzM0Oyk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMTA2LCBlaHQxMDYsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjQyLCBlaHQyNDIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyLCBlaHQ5OTZ4MiwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4NCwgZWh0OTk2eDQsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzEwNiwgZWh0MjZfMTA2LCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NF8yNDIsIGVodDQ4NF8yNDIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0XzI0MiwgZWh0OTk2XzQ4NF8yNDIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDJfNDg0LCBlaHQ5OTZ4Ml80ODQsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzXzQ4NCwgZWh0OTk2eDNfNDg0LCBiYW5kX2lkeCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnRcbiYjNDM7bXQ3OTI4X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3ciA9IE5VTEw7XG4mIzQzO1x0dTggYmFuZF9pZHggPSBkZXYtXHUwMDNlbXBoeS5iYW5kX2lkeDtcbiYjNDM7XHRpbnQgcmV0ID0gMDtcbiYjNDM7XG4mIzQzO1x0dHhwd3IgPSBkZXZtX2ttYWxsb2MoZGV2LVx1MDAzZW10NzYuZGV2LCBzaXplb2YoKnR4cHdyKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1xuJiM0MztcdGlmICghdHhwd3IpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiYjNDM7XHRyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LVx1MDAzZXR4cHdyX3RibCwgdHhwd3IpO1xuJiM0MztcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4mIzQzO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0LyogRGlzcGxheSBwb3dlciB0YWJsZSBuYW1lIGJhc2VkIG9uIHRoZSBpbmRleCAqL1xuJiM0MztcdHN3aXRjaCAoZGV2LVx1MDAzZXR4cHdyX3RibCkge1xuJiM0MztcdGNhc2UgMDpcbiYjNDM7XHRcdHNlcV9wcmludGYocywgXCYjMzQ7UG93ZXIgVGFibGU6ICVkIChTVEFfU0lTTylcXG5cJiMzNDssIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSAxOlxuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDtQb3dlciBUYWJsZTogJWQgKFNUQV9DREQpXFxuXCYjMzQ7LCBkZXYtXHUwMDNldHhwd3JfdGJsKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgMjpcbiYjNDM7XHRcdHNlcV9wcmludGYocywgXCYjMzQ7UG93ZXIgVGFibGU6ICVkIChTVEFfTUlNTylcXG5cJiMzNDssIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSAzOlxuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDtQb3dlciBUYWJsZTogJWQgKFAyUF9TSVNPKVxcblwmIzM0OywgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIDQ6XG4mIzQzO1x0XHRzZXFfcHJpbnRmKHMsIFwmIzM0O1Bvd2VyIFRhYmxlOiAlZCAoUDJQX0NERClcXG5cJiMzNDssIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSA1OlxuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDtQb3dlciBUYWJsZTogJWQgKFAyUF9NSU1PKVxcblwmIzM0OywgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDtQb3dlciBUYWJsZTogJWQgKFVua25vd24pXFxuXCYjMzQ7LCBkZXYtXHUwMDNldHhwd3JfdGJsKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c2VxX3ByaW50ZihzLCBcJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7IFwmIzM0OywgXCYjMzQ7MW1cJiMzNDssIFwmIzM0OzJtXCYjMzQ7LCBcJiMzNDs1bVwmIzM0OywgXCYjMzQ7MTFtXCYjMzQ7KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2ssIGJhbmRfaWR4KTtcbiYjNDM7XG4mIzQzO1x0c2VxX3ByaW50ZihzLCBcJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcblwmIzM0OyxcbiYjNDM7XHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0OzZtXCYjMzQ7LCBcJiMzNDs5bVwmIzM0OywgXCYjMzQ7MTJtXCYjMzQ7LCBcJiMzNDsxOG1cJiMzNDssIFwmIzM0OzI0bVwmIzM0OywgXCYjMzQ7MzZtXCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7NDhtXCYjMzQ7LCBcJiMzNDs1NG1cJiMzNDspO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMjAsIG9mZG0yMCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNNDAsIG9mZG00MCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNODAsIG9mZG04MCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMTYwLCBvZmRtMTYwLCBiYW5kX2lkeCk7XG4mIzQzO1xuJiM0MztcdHNlcV9wcmludGYocywgXCYjMzQ7JS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cJiMzNDssXG4mIzQzO1x0XHQgICBcJiMzNDsgXCYjMzQ7LCBcJiMzNDttY3MwXCYjMzQ7LCBcJiMzNDttY3MxXCYjMzQ7LCBcJiMzNDttY3MyXCYjMzQ7LCBcJiMzNDttY3MzXCYjMzQ7LCBcJiMzNDttY3M0XCYjMzQ7LCBcJiMzNDttY3M1XCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0Oyk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTtcbiYjNDM7XG4mIzQzO1x0c2VxX3ByaW50ZihzLCBcJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cJiMzNDssXG4mIzQzO1x0XHQgICBcJiMzNDsgXCYjMzQ7LCBcJiMzNDttY3MwXCYjMzQ7LCBcJiMzNDttY3MxXCYjMzQ7LCBcJiMzNDttY3MyXCYjMzQ7LCBcJiMzNDttY3MzXCYjMzQ7LCBcJiMzNDttY3M0XCYjMzQ7LCBcJiMzNDttY3M1XCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzMzJcJiMzNDspO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XG4mIzQzO1xuJiM0MztcdHNlcV9wcmludGYocywgXCYjMzQ7JS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7IFwmIzM0OywgXCYjMzQ7bWNzMFwmIzM0OywgXCYjMzQ7bWNzMVwmIzM0OywgXCYjMzQ7bWNzMlwmIzM0OywgXCYjMzQ7bWNzM1wmIzM0OywgXCYjMzQ7bWNzNFwmIzM0OywgXCYjMzQ7bWNzNVwmIzM0OyxcbiYjNDM7XHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDssIFwmIzM0O21jczhcJiMzNDssIFwmIzM0O21jczlcJiMzNDssIFwmIzM0O21jczEwXCYjMzQ7LCBcJiMzNDttY3MxMVwmIzM0Oyk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpO1xuJiM0MztcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNiwgaGUyNiwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI0MiwgaGUyNDIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XG4mIzQzO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xuJiM0MztcbiYjNDM7XHRtdDc5MjhfZWh0X3R4cHdyKHMsIHR4cHdyLCBiYW5kX2lkeCk7XG4mIzQzO1xuJiM0MztvdXQ6XG4mIzQzO1x0ZGV2bV9rZnJlZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIHR4cHdyKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50XG4mIzQzO210NzkyOF90eHB3cl90Ymxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbiYjNDM7XG4mIzQzO1x0ZGV2LVx1MDAzZXR4cHdyX3RibCA9ICh1OCl2YWw7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50XG4mIzQzO210NzkyOF90eHB3cl90YmxfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG4mIzQzO1xuJiM0MztcdCp2YWwgPSBkZXYtXHUwMDNldHhwd3JfdGJsO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfdHhwd3JfdGJsLCBtdDc5MjhfdHhwd3JfdGJsX2dldCxcbiYjNDM7XHRcdFx0IG10NzkyOF90eHB3cl90Ymxfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbiYjNDM7XG4gc3RhdGljIGludFxuIG10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbiB7XG5AQCAtMzAxLDggJiM0Mzs0NDIsMTQgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O2FjcVwmIzM0OywgZGlyLFxuIFx0XHRcdFx0ICAgIG10NzkyeF9xdWV1ZXNfYWNxKTtcbi1cdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O3R4cG93ZXJfc2t1XCYjMzQ7LCBkaXIsXG4tXHRcdFx0XHQgICAgbXQ3OTI1X3R4cHdyKTtcbiYjNDM7XHRpZiAoaXNfbXQ3OTI4KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuJiM0MztcdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbiYjNDM7XHRcdFx0XHRcdCAgICBtdDc5MjhfdHhwd3IpO1xuJiM0MztcdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt0eHBvd2VyX3RibFwmIzM0OywgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfdHhwd3JfdGJsKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbiYjNDM7XHRcdFx0XHRcdCAgICBtdDc5MjVfdHhwd3IpO1xuJiM0MztcdH1cbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7dHhfc3RhdHNcJiMzNDssIDA0MDAsIGRpciwgZGV2LCBcdTAwMjZtdDc5MnhfdHhfc3RhdHNfZm9wcyk7XG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O2Z3X2RlYnVnXCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19md19kZWJ1Zyk7XG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3J1bnRpbWUtcG1cJiMzNDssIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX3BtKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBlOTRmYTU0NGZmMjA3Ny4uZTk5NWM3NWZlOTRlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC0yMTcxLDYgJiM0MzsyMTcxLDMzIEBAIGludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHN0cnVjdCBtdDc5MjVfdHhwXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO2ludCBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHU4IHBvd2VyX3RibCxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQgKmV2ZW50O1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfdHhwd3JfcmVxIHJlcSA9IHtcbiYjNDM7XHRcdC50YWcgPSBjcHVfdG9fbGUxNihUWF9QT1dFUl9TSE9XX0lORk8pLFxuJiM0MztcdFx0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEpIC0gNCksXG4mIzQzO1x0XHQuY2F0ZyA9IFRYUE9XRVJfQUxMX1JBVEVfUE9XRVJfSU5GTyxcbiYjNDM7XHRcdC5iYW5kX2lkeCA9IGJhbmRfaWR4LFxuJiM0MztcdFx0LnBvd2VyX3RibCA9IHBvd2VyX3RibCxcbiYjNDM7XHR9O1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoVFhQT1dFUiksXG4mIzQzO1x0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLVx1MDAzZWRhdGE7XG4mIzQzO1x0bWVtY3B5KHR4cHdyLCBcdTAwMjZldmVudC1cdTAwM2V0eHB3ciwgc2l6ZW9mKCp0eHB3cikpO1xuJiM0MztcbiYjNDM7XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBtdDc5MjVfbWN1X3NldF9zbmlmZmVyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0ICAgYm9vbCBlbmFibGUpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcbmluZGV4IDI5M2YxNzNiMjNkZGFmLi5lOWQ0NzRiODgwNzAwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuQEAgLTY5LDcgJiM0Mzs2OSw3IEBAIHN0cnVjdCBtdDc5MjVfdHhwd3JfcmVxIHtcbiBcdHU4IGZvcm1hdF9pZDtcbiBcdHU4IGNhdGc7XG4gXHR1OCBiYW5kX2lkeDtcbi1cdHU4IF9yc3YxO1xuJiM0MztcdHU4IHBvd2VyX3RibDtcbiB9IF9fcGFja2VkO1xuIFxuIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQge1xuQEAgLTkwLDYgJiM0Mzs5MCwyNCBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX2V2ZW50IHtcbiBcdHU4IHJzdjE7XG4gfSBfX3BhY2tlZDtcbiBcbiYjNDM7c3RydWN0IG10NzkyOF90eHB3cl9ldmVudCB7XG4mIzQzO1x0dTggcnN2WzRdO1xuJiM0MztcdF9fbGUxNiB0YWc7XG4mIzQzO1x0X19sZTE2IGxlbjtcbiYjNDM7XG4mIzQzO1x0dTggY2F0ZztcbiYjNDM7XHR1OCBiYW5kX2lkeDtcbiYjNDM7XHR1OCBjaF9iYW5kO1xuJiM0MztcdHU4IGZvcm1hdDsgLyogMDpMZWdhY3ksIDE6SEUgKi9cbiYjNDM7XG4mIzQzO1x0LyogUmF0ZSBwb3dlciBpbmZvICovXG4mIzQzO1x0c3RydWN0IG10NzkyOF90eHB3ciB0eHB3cjtcbiYjNDM7XG4mIzQzO1x0czggcHdyX21heDtcbiYjNDM7XHRzOCBwd3JfbWluO1xuJiM0MztcdHU4IHJzdjE7XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuIGVudW0ge1xuIFx0VE1fU1dJVENIX01PREUsXG4gXHRUTV9TRVRfQVRfQ01ELFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbmluZGV4IDRjYzI1OTQxOGFmY2E4Li5iNTMzMzBhMjgyNjhkZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxuQEAgLTI1Miw2ICYjNDM7MjUyLDQzIEBAIHN0cnVjdCBtdDc5MjVfdHhwd3Ige1xuIFx0czggZWh0OTk2eDNfNDg0WzE2XVsyXTtcbiB9O1xuIFxuJiM0MztzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHtcbiYjNDM7XHRzOCBjY2tbNF1bMl07XG4mIzQzO1x0czggb2ZkbTIwWzhdWzJdO1xuJiM0MztcdHM4IG9mZG00MFs4XVsyXTtcbiYjNDM7XHRzOCBvZmRtODBbOF1bMl07XG4mIzQzO1x0czggb2ZkbTE2MFs4XVsyXTtcbiYjNDM7XHRzOCBodDIwWzhdWzJdO1xuJiM0MztcdHM4IGh0NDBbOV1bMl07XG4mIzQzO1x0czggdmh0MjBbMTJdWzJdO1xuJiM0MztcdHM4IHZodDQwWzEyXVsyXTtcbiYjNDM7XHRzOCB2aHQ4MFsxMl1bMl07XG4mIzQzO1x0czggdmh0MTYwWzEyXVsyXTtcbiYjNDM7XHRzOCBoZTI2WzEyXVsyXTtcbiYjNDM7XHRzOCBoZTUyWzEyXVsyXTtcbiYjNDM7XHRzOCBoZTEwNlsxMl1bMl07XG4mIzQzO1x0czggaGUyNDJbMTJdWzJdO1xuJiM0MztcdHM4IGhlNDg0WzEyXVsyXTtcbiYjNDM7XHRzOCBoZTk5NlsxMl1bMl07XG4mIzQzO1x0czggaGU5OTZ4MlsxMl1bMl07XG4mIzQzO1x0czggZWh0MjZbMTZdWzJdO1xuJiM0MztcdHM4IGVodDUyWzE2XVsyXTtcbiYjNDM7XHRzOCBlaHQxMDZbMTZdWzJdO1xuJiM0MztcdHM4IGVodDI0MlsxNl1bMl07XG4mIzQzO1x0czggZWh0NDg0WzE2XVsyXTtcbiYjNDM7XHRzOCBlaHQ5OTZbMTZdWzJdO1xuJiM0MztcdHM4IGVodDk5NngyWzE2XVsyXTtcbiYjNDM7XHRzOCBlaHQ5OTZ4NFsxNl1bMl07XG4mIzQzO1x0czggZWh0MjZfNTJbMTZdWzJdO1xuJiM0MztcdHM4IGVodDI2XzEwNlsxNl1bMl07XG4mIzQzO1x0czggZWh0NDg0XzI0MlsxNl1bMl07XG4mIzQzO1x0czggZWh0OTk2XzQ4NFsxNl1bMl07XG4mIzQzO1x0czggZWh0OTk2XzQ4NF8yNDJbMTZdWzJdO1xuJiM0MztcdHM4IGVodDk5NngyXzQ4NFsxNl1bMl07XG4mIzQzO1x0czggZWh0OTk2eDNbMTZdWzJdO1xuJiM0MztcdHM4IGVodDk5NngzXzQ4NFsxNl1bMl07XG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgdTggbXQ3OTI3X2JhbmRfaWR4KGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXG4ge1xuIFx0c3dpdGNoIChiYW5kKSB7XG5AQCAtMzMxLDYgJiM0MzszNjgsOCBAQCBpbnQgbXQ3OTI1X21jdV91bmlfYnNzX3BzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4gdm9pZCBtdDc5MjVfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuIGludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsXG4gXHRcdFx0ICBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3cik7XG4mIzQzO2ludCBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHU4IHBvd2VyX3RibCxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cik7XG4gdm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4gXHRcdFx0XHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeCk7XG4gdm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuaW5kZXggNzAwNzNiNDNhZjU0MzEuLmJlZjJjNmVkYmE0ODgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuQEAgLTI2Nyw2ICYjNDM7MjY3LDcgQEAgc3RydWN0IG10NzkyeF9kZXYge1xuIFxuIFx0dTggZndfZGVidWc7XG4gXHR1OCBmd19mZWF0dXJlcztcbiYjNDM7XHR1OCB0eHB3cl90Ymw7XG4gXG4gXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gcG07XG4gXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfY29yZWR1bXAgY29yZWR1bXA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjhfZ2V0X3R4cHdyX2luZm8mIzM0OywKICAgICYjMzQ7bXQ3OTI4X3R4cHdyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZGVidWdmcyBlbnRyaWVzIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiBsb2dpYyB0byByZXRyaWV2ZSBUWCBwb3dlciBpbmZvcm1hdGlvbiBmb3IgdGhlIE1UNzkyOCBkZXZpY2UgKGhhbmRsZWQgYnkgdGhlIG10NzkyNSBkcml2ZXIpLiBUaGUgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgZnVuY3Rpb24gc2VuZHMgYSBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UuIFNpbmNlIHRoZSBNVDc5MjUgZHJpdmVyIHN1cHBvcnRzIFVTQiAodmlhIGBDT05GSUdfTVQ3OTI1VWApLCB0aGUgZGV2aWNlIGFuZCBpdHMgTUNVIHJlc3BvbnNlcyBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nICh2aGNpKS4gVGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyBpdHMgbGVuZ3RoLCB3aGljaCBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYSBtYWxpY2lvdXMgVVNCIGRldmljZSByZXR1cm5zIGEgc2hvcnQgcmVzcG9uc2UuIFRoaXMgbWFrZXMgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmY4YWVlMzg1MTE0NGEzNjViMzY5YmE3ZGFjMTM2OTJhNTFhOWQxNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDEyOjAxOjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jCmluZGV4IGQwMWZmNDlkZTQ3YWY3Li4xNjg0M2U1MDk3MTY5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYwpAQCAtMTc4LDYgJiM0MzsxNzgsMTQ3IEBAIG10NzkyNV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZAomIzQzO210NzkyOF9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpCiYjNDM7ewomIzQzOwlzZXFfcHJpbnRmKHMsICYjMzQ7JS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xuJiMzNDssCiYjNDM7CQkgICAmIzM0OyAmIzM0OywgJiMzNDttY3MwJiMzNDssICYjMzQ7bWNzMSYjMzQ7LCAmIzM0O21jczImIzM0OywgJiMzNDttY3MzJiMzNDssICYjMzQ7bWNzNCYjMzQ7LCAmIzM0O21jczUmIzM0OywKJiM0MzsJCSAgICYjMzQ7bWNzNiYjMzQ7LCAmIzM0O21jczcmIzM0OywgJiMzNDttY3M4JiMzNDssICYjMzQ7bWNzOSYjMzQ7LCAmIzM0O21jczEwJiMzNDssICYjMzQ7bWNzMTEmIzM0OywKJiM0MzsJCSAgICYjMzQ7bWNzMTImIzM0OywgJiMzNDttY3MxMyYjMzQ7LCAmIzM0O21jczE0JiMzNDssICYjMzQ7bWNzMTUmIzM0Oyk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNiwgZWh0MjYsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDUyLCBlaHQ1MiwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMTA2LCBlaHQxMDYsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODQsIGVodDQ4NCwgYmFuZF9pZHgpOwomIzQzOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2LCBlaHQ5OTYsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyLCBlaHQ5OTZ4MiwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl81MiwgZWh0MjZfNTIsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzEwNiwgZWh0MjZfMTA2LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0LCBlaHQ5OTZfNDg0LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0XzI0MiwgZWh0OTk2XzQ4NF8yNDIsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MywgZWh0OTk2eDMsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzXzQ4NCwgZWh0OTk2eDNfNDg0LCBiYW5kX2lkeCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQKJiM0MzttdDc5MjhfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLSZndDtwcml2YXRlKTsKJiM0MzsJc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IgPSBOVUxMOwomIzQzOwl1OCBiYW5kX2lkeCA9IGRldi0mZ3Q7bXBoeS5iYW5kX2lkeDsKJiM0MzsJaW50IHJldCA9IDA7CiYjNDM7CiYjNDM7CXR4cHdyID0gZGV2bV9rbWFsbG9jKGRldi0mZ3Q7bXQ3Ni5kZXYsIHNpemVvZigqdHhwd3IpLCBHRlBfS0VSTkVMKTsKJiM0MzsKJiM0MzsJaWYgKCF0eHB3cikKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwltdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpOwomIzQzOwlyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LSZndDt0eHB3cl90YmwsIHR4cHdyKTsKJiM0MzsJbXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTsKJiM0MzsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwkvKiBEaXNwbGF5IHBvd2VyIHRhYmxlIG5hbWUgYmFzZWQgb24gdGhlIGluZGV4ICovCiYjNDM7CXN3aXRjaCAoZGV2LSZndDt0eHB3cl90YmwpIHsKJiM0MzsJY2FzZSAwOgomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O1Bvd2VyIFRhYmxlOiAlZCAoU1RBX1NJU08pXG4mIzM0OywgZGV2LSZndDt0eHB3cl90YmwpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgMToKJiM0MzsJCXNlcV9wcmludGYocywgJiMzNDtQb3dlciBUYWJsZTogJWQgKFNUQV9DREQpXG4mIzM0OywgZGV2LSZndDt0eHB3cl90YmwpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgMjoKJiM0MzsJCXNlcV9wcmludGYocywgJiMzNDtQb3dlciBUYWJsZTogJWQgKFNUQV9NSU1PKVxuJiMzNDssIGRldi0mZ3Q7dHhwd3JfdGJsKTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIDM6CiYjNDM7CQlzZXFfcHJpbnRmKHMsICYjMzQ7UG93ZXIgVGFibGU6ICVkIChQMlBfU0lTTylcbiYjMzQ7LCBkZXYtJmd0O3R4cHdyX3RibCk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSA0OgomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O1Bvd2VyIFRhYmxlOiAlZCAoUDJQX0NERClcbiYjMzQ7LCBkZXYtJmd0O3R4cHdyX3RibCk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSA1OgomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O1Bvd2VyIFRhYmxlOiAlZCAoUDJQX01JTU8pXG4mIzM0OywgZGV2LSZndDt0eHB3cl90YmwpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlzZXFfcHJpbnRmKHMsICYjMzQ7UG93ZXIgVGFibGU6ICVkIChVbmtub3duKVxuJiMzNDssIGRldi0mZ3Q7dHhwd3JfdGJsKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNlcV9wcmludGYocywgJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzXG4mIzM0OywKJiM0MzsJCSAgICYjMzQ7ICYjMzQ7LCAmIzM0OzFtJiMzNDssICYjMzQ7Mm0mIzM0OywgJiMzNDs1bSYjMzQ7LCAmIzM0OzExbSYjMzQ7KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7CiYjNDM7CiYjNDM7CXNlcV9wcmludGYocywgJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xuJiMzNDssCiYjNDM7CQkgICAmIzM0OyAmIzM0OywgJiMzNDs2bSYjMzQ7LCAmIzM0OzltJiMzNDssICYjMzQ7MTJtJiMzNDssICYjMzQ7MThtJiMzNDssICYjMzQ7MjRtJiMzNDssICYjMzQ7MzZtJiMzNDssCiYjNDM7CQkgICAmIzM0OzQ4bSYjMzQ7LCAmIzM0OzU0bSYjMzQ7KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0yMCwgb2ZkbTIwLCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNNDAsIG9mZG00MCwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETTgwLCBvZmRtODAsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0xNjAsIG9mZG0xNjAsIGJhbmRfaWR4KTsKJiM0MzsKJiM0MzsJc2VxX3ByaW50ZihzLCAmIzM0OyUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzXG4mIzM0OywKJiM0MzsJCSAgICYjMzQ7ICYjMzQ7LCAmIzM0O21jczAmIzM0OywgJiMzNDttY3MxJiMzNDssICYjMzQ7bWNzMiYjMzQ7LCAmIzM0O21jczMmIzM0OywgJiMzNDttY3M0JiMzNDssICYjMzQ7bWNzNSYjMzQ7LAomIzQzOwkJICAgJiMzNDttY3M2JiMzNDssICYjMzQ7bWNzNyYjMzQ7KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTsKJiM0MzsKJiM0MzsJc2VxX3ByaW50ZihzLCAmIzM0OyUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xuJiMzNDssCiYjNDM7CQkgICAmIzM0OyAmIzM0OywgJiMzNDttY3MwJiMzNDssICYjMzQ7bWNzMSYjMzQ7LCAmIzM0O21jczImIzM0OywgJiMzNDttY3MzJiMzNDssICYjMzQ7bWNzNCYjMzQ7LCAmIzM0O21jczUmIzM0OywKJiM0MzsJCSAgICYjMzQ7bWNzNiYjMzQ7LCAmIzM0O21jczcmIzM0OywgJiMzNDttY3MzMiYjMzQ7KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTsKJiM0MzsKJiM0MzsJc2VxX3ByaW50ZihzLCAmIzM0OyUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xuJiMzNDssCiYjNDM7CQkgICAmIzM0OyAmIzM0OywgJiMzNDttY3MwJiMzNDssICYjMzQ7bWNzMSYjMzQ7LCAmIzM0O21jczImIzM0OywgJiMzNDttY3MzJiMzNDssICYjMzQ7bWNzNCYjMzQ7LCAmIzM0O21jczUmIzM0OywKJiM0MzsJCSAgICYjMzQ7bWNzNiYjMzQ7LCAmIzM0O21jczcmIzM0OywgJiMzNDttY3M4JiMzNDssICYjMzQ7bWNzOSYjMzQ7LCAmIzM0O21jczEwJiMzNDssICYjMzQ7bWNzMTEmIzM0Oyk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjAsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpOwomIzQzOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpOwomIzQzOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNiwgaGUyNiwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI0MiwgaGUyNDIsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpOwomIzQzOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7CiYjNDM7CiYjNDM7CW10NzkyOF9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CWRldm1fa2ZyZWUoZGV2LSZndDttdDc2LmRldiwgdHhwd3IpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50CiYjNDM7bXQ3OTI4X3R4cHdyX3RibF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhOwomIzQzOwomIzQzOwlkZXYtJmd0O3R4cHdyX3RibCA9ICh1OCl2YWw7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50CiYjNDM7bXQ3OTI4X3R4cHdyX3RibF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTsKJiM0MzsKJiM0MzsJKnZhbCA9IGRldi0mZ3Q7dHhwd3JfdGJsOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfdHhwd3JfdGJsLCBtdDc5MjhfdHhwd3JfdGJsX2dldCwKJiM0MzsJCQkgbXQ3OTI4X3R4cHdyX3RibF9zZXQsICYjMzQ7JWxsZFxuJiMzNDspOwomIzQzOwogc3RhdGljIGludAogbXQ3OTI1X3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogewpAQCAtMzAxLDggJiM0Mzs0NDIsMTQgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAogCWRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtJmd0O210NzYuZGV2LCAmIzM0O2FjcSYjMzQ7LCBkaXIsCiAJCQkJICAgIG10NzkyeF9xdWV1ZXNfYWNxKTsKLQlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LSZndDttdDc2LmRldiwgJiMzNDt0eHBvd2VyX3NrdSYjMzQ7LCBkaXIsCi0JCQkJICAgIG10NzkyNV90eHB3cik7CiYjNDM7CWlmIChpc19tdDc5MjgoJmFtcDtkZXYtJmd0O210NzYpKSB7CiYjNDM7CQlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LSZndDttdDc2LmRldiwgJiMzNDt0eHBvd2VyX3NrdSYjMzQ7LCBkaXIsCiYjNDM7CQkJCQkgICAgbXQ3OTI4X3R4cHdyKTsKJiM0MzsJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDt0eHBvd2VyX3RibCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgJmFtcDtmb3BzX3R4cHdyX3RibCk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LSZndDttdDc2LmRldiwgJiMzNDt0eHBvd2VyX3NrdSYjMzQ7LCBkaXIsCiYjNDM7CQkJCQkgICAgbXQ3OTI1X3R4cHdyKTsKJiM0MzsJfQogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDt0eF9zdGF0cyYjMzQ7LCAwNDAwLCBkaXIsIGRldiwgJmFtcDttdDc5MnhfdHhfc3RhdHNfZm9wcyk7CiAJZGVidWdmc19jcmVhdGVfZmlsZSgmIzM0O2Z3X2RlYnVnJiMzNDssIDA2MDAsIGRpciwgZGV2LCAmYW1wO2ZvcHNfZndfZGVidWcpOwogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtydW50aW1lLXBtJiMzNDssIDA2MDAsIGRpciwgZGV2LCAmYW1wO2ZvcHNfcG0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwppbmRleCBlOTRmYTU0NGZmMjA3Ny4uZTk5NWM3NWZlOTRlZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCkBAIC0yMTcxLDYgJiM0MzsyMTcxLDMzIEBAIGludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHN0cnVjdCBtdDc5MjVfdHhwCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztpbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsCiYjNDM7CQkJICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQgKmV2ZW50OwomIzQzOwlzdHJ1Y3QgbXQ3OTI1X3R4cHdyX3JlcSByZXEgPSB7CiYjNDM7CQkudGFnID0gY3B1X3RvX2xlMTYoVFhfUE9XRVJfU0hPV19JTkZPKSwKJiM0MzsJCS5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIDQpLAomIzQzOwkJLmNhdGcgPSBUWFBPV0VSX0FMTF9SQVRFX1BPV0VSX0lORk8sCiYjNDM7CQkuYmFuZF9pZHggPSBiYW5kX2lkeCwKJiM0MzsJCS5wb3dlcl90YmwgPSBwb3dlcl90YmwsCiYjNDM7CX07CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coJmFtcDtkZXYtJmd0O210NzYsIE1DVV9VTklfQ01EKFRYUE9XRVIpLAomIzQzOwkJCQkJJmFtcDtyZXEsIHNpemVvZihyZXEpLCB0cnVlLCAmYW1wO3NrYik7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLSZndDtkYXRhOwomIzQzOwltZW1jcHkodHhwd3IsICZhbXA7ZXZlbnQtJmd0O3R4cHdyLCBzaXplb2YoKnR4cHdyKSk7CiYjNDM7CiYjNDM7CWRldl9rZnJlZV9za2Ioc2tiKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogaW50IG10NzkyNV9tY3Vfc2V0X3NuaWZmZXIoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAkJCSAgIGJvb2wgZW5hYmxlKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaAppbmRleCAyOTNmMTczYjIzZGRhZi4uZTlkNDc0Yjg4MDcwMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCkBAIC02OSw3ICYjNDM7NjksNyBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX3JlcSB7CiAJdTggZm9ybWF0X2lkOwogCXU4IGNhdGc7CiAJdTggYmFuZF9pZHg7Ci0JdTggX3JzdjE7CiYjNDM7CXU4IHBvd2VyX3RibDsKIH0gX19wYWNrZWQ7CiAKIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQgewpAQCAtOTAsNiAmIzQzOzkwLDI0IEBAIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQgewogCXU4IHJzdjE7CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IG10NzkyOF90eHB3cl9ldmVudCB7CiYjNDM7CXU4IHJzdls0XTsKJiM0MzsJX19sZTE2IHRhZzsKJiM0MzsJX19sZTE2IGxlbjsKJiM0MzsKJiM0MzsJdTggY2F0ZzsKJiM0MzsJdTggYmFuZF9pZHg7CiYjNDM7CXU4IGNoX2JhbmQ7CiYjNDM7CXU4IGZvcm1hdDsgLyogMDpMZWdhY3ksIDE6SEUgKi8KJiM0MzsKJiM0MzsJLyogUmF0ZSBwb3dlciBpbmZvICovCiYjNDM7CXN0cnVjdCBtdDc5MjhfdHhwd3IgdHhwd3I7CiYjNDM7CiYjNDM7CXM4IHB3cl9tYXg7CiYjNDM7CXM4IHB3cl9taW47CiYjNDM7CXU4IHJzdjE7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKIGVudW0gewogCVRNX1NXSVRDSF9NT0RFLAogCVRNX1NFVF9BVF9DTUQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCmluZGV4IDRjYzI1OTQxOGFmY2E4Li5iNTMzMzBhMjgyNjhkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgKQEAgLTI1Miw2ICYjNDM7MjUyLDQzIEBAIHN0cnVjdCBtdDc5MjVfdHhwd3IgewogCXM4IGVodDk5NngzXzQ4NFsxNl1bMl07CiB9OwogCiYjNDM7c3RydWN0IG10NzkyOF90eHB3ciB7CiYjNDM7CXM4IGNja1s0XVsyXTsKJiM0MzsJczggb2ZkbTIwWzhdWzJdOwomIzQzOwlzOCBvZmRtNDBbOF1bMl07CiYjNDM7CXM4IG9mZG04MFs4XVsyXTsKJiM0MzsJczggb2ZkbTE2MFs4XVsyXTsKJiM0MzsJczggaHQyMFs4XVsyXTsKJiM0MzsJczggaHQ0MFs5XVsyXTsKJiM0MzsJczggdmh0MjBbMTJdWzJdOwomIzQzOwlzOCB2aHQ0MFsxMl1bMl07CiYjNDM7CXM4IHZodDgwWzEyXVsyXTsKJiM0MzsJczggdmh0MTYwWzEyXVsyXTsKJiM0MzsJczggaGUyNlsxMl1bMl07CiYjNDM7CXM4IGhlNTJbMTJdWzJdOwomIzQzOwlzOCBoZTEwNlsxMl1bMl07CiYjNDM7CXM4IGhlMjQyWzEyXVsyXTsKJiM0MzsJczggaGU0ODRbMTJdWzJdOwomIzQzOwlzOCBoZTk5NlsxMl1bMl07CiYjNDM7CXM4IGhlOTk2eDJbMTJdWzJdOwomIzQzOwlzOCBlaHQyNlsxNl1bMl07CiYjNDM7CXM4IGVodDUyWzE2XVsyXTsKJiM0MzsJczggZWh0MTA2WzE2XVsyXTsKJiM0MzsJczggZWh0MjQyWzE2XVsyXTsKJiM0MzsJczggZWh0NDg0WzE2XVsyXTsKJiM0MzsJczggZWh0OTk2WzE2XVsyXTsKJiM0MzsJczggZWh0OTk2eDJbMTZdWzJdOwomIzQzOwlzOCBlaHQ5OTZ4NFsxNl1bMl07CiYjNDM7CXM4IGVodDI2XzUyWzE2XVsyXTsKJiM0MzsJczggZWh0MjZfMTA2WzE2XVsyXTsKJiM0MzsJczggZWh0NDg0XzI0MlsxNl1bMl07CiYjNDM7CXM4IGVodDk5Nl80ODRbMTZdWzJdOwomIzQzOwlzOCBlaHQ5OTZfNDg0XzI0MlsxNl1bMl07CiYjNDM7CXM4IGVodDk5NngyXzQ4NFsxNl1bMl07CiYjNDM7CXM4IGVodDk5NngzWzE2XVsyXTsKJiM0MzsJczggZWh0OTk2eDNfNDg0WzE2XVsyXTsKJiM0Mzt9OwomIzQzOwogc3RhdGljIGlubGluZSB1OCBtdDc5MjdfYmFuZF9pZHgoZW51bSBubDgwMjExX2JhbmQgYmFuZCkKIHsKIAlzd2l0Y2ggKGJhbmQpIHsKQEAgLTMzMSw2ICYjNDM7MzY4LDggQEAgaW50IG10NzkyNV9tY3VfdW5pX2Jzc19wcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LAogdm9pZCBtdDc5MjVfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogaW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwKIAkJCSAgc3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IpOwomIzQzO2ludCBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHU4IHBvd2VyX3RibCwKJiM0MzsJCQkgIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyKTsKIHZvaWQgbXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LAogCQkJCSAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTsKIHZvaWQgbXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaAppbmRleCA3MDA3M2I0M2FmNTQzMS4uYmVmMmM2ZWRiYTQ4ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaApAQCAtMjY3LDYgJiM0MzsyNjcsNyBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7CiAKIAl1OCBmd19kZWJ1ZzsKIAl1OCBmd19mZWF0dXJlczsKJiM0MzsJdTggdHhwd3JfdGJsOwogCiAJc3RydWN0IG10NzZfY29ubmFjX3BtIHBtOwogCXN0cnVjdCBtdDc2X2Nvbm5hY19jb3JlZHVtcCBjb3JlZHVtcDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDUzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIE1UNzYgVFggUG93ZXIgRGVidWdmcyBQYXRjaGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyBmb3IgdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIGBtdDc5MjVgIGRyaXZlciBhbmQgYWRkaW5nIGRlYnVnZnMgZW50cmllcyB0byBleHBvc2UgVFggcG93ZXIgaW5mb3JtYXRpb24gZm9yIGBtdDc5MjhgLiBUaGUgYWRkZWQgZnVuY3Rpb25zIGFyZSBhbGwgYWJvdXQgZ2V0dGluZyBhbmQgc2V0dGluZyBUWCBwb3dlciB0YWJsZXMgYW5kIHNlbmRpbmcgY29tbWFuZHMgdG8gdGhlIE1lZGlhVGVrIE1DVSwgcHJpbWFyaWx5IGZvciB1c2Ugd2l0aCB0aGUgZGVidWdmcyBlbnRyaWVzIGB0eHBvd2VyX3NrdWAgYW5kIGB0eHBvd2VyX3RibGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgZXZlbiBmdXp6LXdvcnRoeS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGludGVyYWN0aW5nIHdpdGggdGhpcyBNQ1UgdG8gcmV0cmlldmUgVFggcG93ZXIgZGV0YWlscy4gVGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgaXMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIHdoaWNoIGNhbGxzIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCB0byBzZW5kIGEgY29tbWFuZC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2sgaWYgdGhpcyBpcyByZWFjaGFibGUuIFJlYWRpbmcgZnJvbSBkZWJ1Z2ZzIGlzIGEgZGVmaW5pdGUgeWVzLiBCdXQsIGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/CgpUaGUgcHJvbXB0IGhhcyBjbGVhciBjcml0ZXJpYS4gSXQgc3VnZ2VzdHMgYXZvaWRpbmcgcGF0Y2hlcyBjb250YWluaW5nIG9ubHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIGBtdDc2YCBpcyBhIHBoeXNpY2FsIFdpLUZpIGRyaXZlciwgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGVzZSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdHJhbnNsYXRlIHRvIGEgdmlydHVhbGl6ZWQgc2V0dGluZy4gYG1hYzgwMjExX2h3c2ltYCBpc24mIzM5O3QgcmVsZXZhbnQsIGl0IGRvZXNuJiMzOTt0IHNpbXVsYXRlIHRoZSBgbXQ3NmAgaGFyZHdhcmUuIEJ1dCB3YWl0LCBgbXQ3NmAgaGFzIGJvdGggVVNCIGFuZCBQQ0llIGRyaXZlcnMuIENhbiBJIGVtdWxhdGUgaXQgc29tZWhvdz8gTm90IHdpdGggVVNCIGdhZGdldCwgaXQmIzM5O3MgZm9yIHRoZSBkZXZpY2Ugc2lkZS4gV2FpdCwgc3l6a2FsbGVyIGhhcyB2aGNpIGZvciBVU0IgZGV2aWNlIGVtdWxhdGlvbi4gU28gVVNCIFdpLUZpIGRvbmdsZXMgY2FuIGJlIGVtdWxhdGVkIQoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGlzIGBtdDc5MjVgIGEgVVNCIGRldmljZT8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgc3BlY2lmaWNzIHRvIGRldGVybWluZSBpZiB0aGUgY2hhbmdlcyBhcmUgaW5kZWVkIHRlc3RhYmxlIHdpdGhpbiBhIGZ1enppbmcgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDMyNTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1LWNvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc5MjVFKSAmIzQzOz0gbXQ3OTI1ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NzptdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo4Om10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjk6bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXCYjMzQ7bXQ3OTI1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg6bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0Olx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODpcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjVfcmVnX2dldCwgbXQ3OTI1X3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXHRcdFx0IFwmIzM0OzB4JTA4bGx4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0zOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzk6bXQ3OTI1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUtXHRkZXYtXHUwMDNlZndfZGVidWcgPSAodTgpdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ2Olx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVx1MDAzZWZ3X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9NTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjU0Om10NzkyNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2NDpcdFx0XHQgbXQ3OTI1X2Z3X2RlYnVnX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTY4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTcwLVx0XHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy04NC0oe1x0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4NTpcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFwmIzM0OyAodG1hYylcJiMzNDssXHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVx0XHRcdCAgICAgIHR4cHdyLVx1MDAzZXJhdGUsXHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTkxPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjkyOm10NzkyNV9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05Ny1cdFx0ICAgXCYjMzQ7bWNzMTJcJiMzNDssIFwmIzM0O21jczEzXCYjMzQ7LCBcJiMzNDttY3MxNFwmIzM0OywgXCYjMzQ7bWNzMTVcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDUyLCBlaHQ1MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNDIsIGVodDI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODQsIGVodDQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2LCBlaHQ5OTYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDU6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA2Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nng0LCBlaHQ5OTZ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl81MiwgZWh0MjZfNTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0XzI0MiwgZWh0NDg0XzI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0LCBlaHQ5OTZfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTExOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4Ml80ODQsIGVodDk5NngyXzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MywgZWh0OTk2eDMsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMTUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExODptdDc5MjVfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcdHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjItXHR1OCBiYW5kX2lkeCA9IGRldi1cdTAwM2VtcGh5LmJhbmRfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzMTpcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMyLVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTM4LVx0XHQgICBcJiMzNDsgXCYjMzQ7LCBcJiMzNDsxbVwmIzM0OywgXCYjMzQ7Mm1cJiMzNDssIFwmIzM0OzVtXCYjMzQ7LCBcJiMzNDsxMW1cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzOTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVx0XHQgICBcJiMzNDs0OG1cJiMzNDssIFwmIzM0OzU0bVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0sIG9mZG0sIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0OC1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1My1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzMzJcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE1NDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTgtXHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDssIFwmIzM0O21jczhcJiMzNDssIFwmIzM0O21jczlcJiMzNDssIFwmIzM0O21jczEwXCYjMzQ7LCBcJiMzNDttY3MxMVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNiwgaGUyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI0MiwgaGUyNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNzI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNzQ6XHRtdDc5MjVfZWh0X3R4cHdyKHMsIHR4cHdyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xODI9bXQ3OTI4X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTg3LVx0XHQgICBcJiMzNDttY3MxMlwmIzM0OywgXCYjMzQ7bWNzMTNcJiMzNDssIFwmIzM0O21jczE0XCYjMzQ7LCBcJiMzNDttY3MxNVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTg4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE4OTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTA6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMTA2LCBlaHQxMDYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTE6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjQyLCBlaHQyNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk1Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyLCBlaHQ5OTZ4MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5NjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4NCwgZWh0OTk2eDQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTc6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzEwNiwgZWh0MjZfMTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NF8yNDIsIGVodDQ4NF8yNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDA6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwMTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0XzI0MiwgZWh0OTk2XzQ4NF8yNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDJfNDg0LCBlaHQ5OTZ4Ml80ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDM6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjA0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzXzQ4NCwgZWh0OTk2eDNfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA4PW10NzkyOF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1My1cdFx0ICAgXCYjMzQ7IFwmIzM0OywgXCYjMzQ7MW1cJiMzNDssIFwmIzM0OzJtXCYjMzQ7LCBcJiMzNDs1bVwmIzM0OywgXCYjMzQ7MTFtXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNTQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2ssIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1OC1cdFx0ICAgXCYjMzQ7NDhtXCYjMzQ7LCBcJiMzNDs1NG1cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI1OTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMjAsIG9mZG0yMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNNDAsIG9mZG00MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNODAsIG9mZG04MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMTYwLCBvZmRtMTYwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjYtXHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2NzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDIwLCBodDIwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzEtXHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDssIFwmIzM0O21jczMyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNzI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQ0MCwgaHQ0MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc2LVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3M4XCYjMzQ7LCBcJiMzNDttY3M5XCYjMzQ7LCBcJiMzNDttY3MxMFwmIzM0OywgXCYjMzQ7bWNzMTFcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI3NzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNzg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUNDAsIHZodDQwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4MDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ4MCwgdmh0ODAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODE6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjgzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4NTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTEwNiwgaGUxMDYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODY6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjkwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2eDIsIGhlOTk2eDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTMyMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzIzOm10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNDYtXHRwbS1cdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNDc6XHRtdDc5MjVfc2V0X3J1bnRpbWVfcG0oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNDgtXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBwbSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM1NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzU2Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2NTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM2Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzY4Om10NzkyNV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM2OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM4My1cdHBtLVx1MDAzZWRzX2VuYWJsZSA9IGVuYWJsZSBcdTAwMjZcdTAwMjYgIW1vbml0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzg0Olx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIHBtLVx1MDAzZWRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzg1LW91dDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MzkxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTI6bXQ3OTI1X2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM5My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0MDE6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZHMsIG10NzkyNV9kZWVwX3NsZWVwX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0MDI6XHRcdFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTQwND1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDA3OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MTktXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDIwOlx0XHRyZXQgPSBtdDc5MjVfbWN1X2NoaXBfY29uZmlnKGRldiwgXCYjMzQ7YXNzZXJ0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MjEtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0Mjg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDMwOmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUwLVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt0eHBvd2VyX3NrdVwmIzM0OywgZGlyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ1MTpcdFx0XHRcdFx0ICAgIG10NzkyNV90eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXCYjMzQ7cmVnZC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE0OnN0YXRpYyBzc2l6ZV90IG10NzkyNV90aGVybWFsX3RlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXHRcdFx0XHRcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XHRcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTM2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozOTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbXQ3OTI1X2h3bW9uX2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXHRcdTAwMjZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIuYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo0MzpBVFRSSUJVVEVfR1JPVVBTKG10NzkyNV9od21vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo1NDpcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIEdGUF9LRVJORUwsIFwmIzM0O210NzkyNV8lc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01NS1cdFx0XHQgICAgICB3aXBoeV9uYW1lKHdpcGh5KSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVx0aHdtb24gPSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyhcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIG5hbWUsIHBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo2MDpcdFx0XHRcdFx0XHQgICAgICAgbXQ3OTI1X2h3bW9uX2dyb3Vwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cdFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXHUwMDI2IEdFTk1BU0soNywgMCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjc0Olx0XHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MnhfV1RCTF9TSVpFOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcdFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXHRcdFx0XHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6OTI6XHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2Olx0cmV0ID0gbXQ3OTI1X21hY19pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVx0aWYgKGlzX210NzkyNyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XHRcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTMzOnN0YXRpYyBpbnQgbXQ3OTI1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MnhfTUNVX0lOSVRfUkVUUllfQ09VTlQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQwOlx0XHRyZXQgPSBfX210NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQxLVx0XHRpZiAoIXJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE1NTpzdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTYxOlx0cmV0ID0gbXQ3OTI1X2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNjUtXHRtdDc2X3NldF9zdHJlYW1fY2FwcyhcdTAwMjZkZXYtXHUwMDNlbXBoeSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTY2Olx0bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY3LVx0bXQ3OTJ4X2NvbmZpZ19tYWNfYWRkcl9saXN0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE2OTpcdHJldCA9IG10NzkyNV9pbml0X21sb19jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE3MC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE4MjpcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxODg6XHRyZXQgPSBtdDc5MjVfdGhlcm1hbF9pbml0KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NDpcdHJldCA9IG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMzpcdG10NzkyNV9tY3Vfc2V0X2RlZXBfc2xlZXAoZGV2LCBkZXYtXHUwMDNlcG0uZHNfZW5hYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDY6aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTYtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlcG0ucHNfd29yaywgbXQ3OTJ4X3BtX3Bvd2VyX3NhdmVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE3Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcG0ud2FrZV93b3JrLCBtdDc5MnhfcG1fd2FrZV93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI0LVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyNV9zY2FuX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyNjpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vjb3JlZHVtcC53b3JrLCBtdDc5MjVfY29yZWR1bXBfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI3LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyODpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlaXB2Nl9uc193b3JrLCBtdDc5MjVfc2V0X2lwdjZfbnNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI5LVx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZkZXYtXHUwMDNlaXB2Nl9uc19saXN0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzNDpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yaywgbXQ3OTI1X21hY19yZXNldF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzU6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yaywgbXQ3OTI1X2luaXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzNzpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY193b3JrLCBtdDc5MjVfcm9jX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzOC1cdHRpbWVyX3NldHVwKFx1MDAyNmRldi1cdTAwM2VwaHkucm9jX3RpbWVyLCBtdDc5Mnhfcm9jX3RpbWVyLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2NTpcdGh3LVx1MDAzZXdpcGh5LVx1MDAzZXJlZ19ub3RpZmllciA9IG10NzkyNV9yZWdkX25vdGlmaWVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2Ni1cdGRldi1cdTAwM2VtcGh5LnNiYW5kXzJnLnNiYW5kLmh0X2NhcC5jYXAgfD1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3JlZ2lzdGVyX2RldmljZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNi0jaW5jbHVkZSBcdTAwM2NsaW51eC90aW1la2VlcGluZy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3OiNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04LSNpbmNsdWRlIFwmIzM0Oy4uL2RtYS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzpib29sIG10NzkyNV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoyMjpzdGF0aWMgdm9pZCBtdDc5MjVfbWFjX3N0YV9wb2xsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0yMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTgtXHRcdGlkeCA9IG1saW5rLVx1MDAzZXdjaWQuaWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTk6XHRcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCBNVF9XVEJMX0FDMF9DVFRfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTYwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc3LVx0XHRpZiAoY2xlYXIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc4Olx0XHRcdG10NzkyNV9tYWNfd3RibF91cGRhdGUoZGV2LCBpZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy03OS1cdFx0XHRcdFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTIzOlx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgNik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjQtXHRcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNS1cdFx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IFJBVEVfSU5GT19GTEFHU19FSFRfTUNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjY6XHRcdFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI3LVx0XHRcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDEtXHRcdC8qIGdldCBzaWduYWwgc3RyZW5ndGggb2YgcmVzcCBmcmFtZXMgKENUUy9CQS9BQ0spICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDI6XHRcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCAzNCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDMtXHRcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNTc6dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNTgtXHRcdFx0XHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjgtLyogVGhlIEhXIGRvZXMgbm90IHRyYW5zbGF0ZSB0aGUgbWFjIGhlYWRlciB0byA4MDIuMyBmb3IgbWVzaCBwb2ludCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY5OnN0YXRpYyBpbnQgbXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBoZHJfZ2FwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTcwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0yNDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MjQ5Om10NzkyNV9tYWNfZmlsbF9yeF9yYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0yNTAtXHRcdFx0c3RydWN0IG10NzZfcnhfc3RhdHVzICpzdGF0dXMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MzU4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjM1OTptdDc5MjVfbWFjX2ZpbGxfcngoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTM2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTM5Olx0XHRyZXQgPSBtdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShkZXYsIHN0YXR1cywgc2JhbmQsIHJ4diwgXHUwMDI2bW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NDAtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTUyLVx0aWYgKGhkcl90cmFucyBcdTAwMjZcdTAwMjYgaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo1NTM6XHRcdGlmIChtdDc5MjVfcmV2ZXJzZV9mcmFnMF9oZHJfdHJhbnMoc2tiLCBoZHJfZ2FwKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1NC1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02MjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjYyNzptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02MjgtXHRcdFx0ICAgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NjE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2MjptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY2My1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz03Mjk9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzMwOm10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzMxLVx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTgxOC1cdGlmIChpc184MDIzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODE5Olx0XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyh0eHdpLCBza2IsIHdjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODIwLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODIxOlx0XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoZGV2LCB0eHdpLCBza2IsIGtleSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX3dyaXRlX3R4d2kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQ0OnN0YXRpYyB2b2lkIG10NzkyNV90eF9jaGVja19hZ2dyKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDUtXHRcdFx0XHQgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz04OTg9c3RhdGljIGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg5OTptdDc5MjVfbWFjX2FkZF90eHNfc2tiKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy05MDAtXHRcdCAgICAgICBpbnQgcGlkLCBfX2xlMzIgKnR4c19kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMDM2OnZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTA2NDpcdG10NzkyNV9tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4c19kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwNjUtXHRpZiAoIXdjaWQtXHUwMDNlc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMDc0OnZvaWQgbXQ3OTI1X3R4d2lfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTA3NS1cdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDg4LVx0XHRpZiAobGlrZWx5KHQtXHUwMDNlc2tiLVx1MDAzZXByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTA4OTpcdFx0XHRtdDc5MjVfdHhfY2hlY2tfYWdncihzdGEsIHQtXHUwMDNlc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwOTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTEwMC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTAxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV90eHdpX2ZyZWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTExMDM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjExMDQ6bXQ3OTI1X21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTE3MTpcdFx0XHRtdDc5MjVfdHh3aV9mcmVlKGRldiwgdHh3aSwgc3RhLCB3Y2lkLCBcdTAwMjZmcmVlX2xpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE3Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTExNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTc1Olx0bXQ3OTI1X21hY19zdGFfcG9sbChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE3Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTE4ODpib29sIG10NzkyNV9yeF9jaGVjayhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTg5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjA2LVx0XHQvKiBQS1RfVFlQRV9UWFJYX05PVElGWSBjYW4gYmUgcmVjZWl2ZWQgb25seSBieSBtbWlvIGRldmljZXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEyMDc6XHRcdG10NzkyNV9tYWNfdHhfZnJlZShkZXYsIGRhdGEsIGxlbik7IC8qIG1taW8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMDgtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE3NwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDgwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nPyBBIERlYnVnZnMgRGl2ZSBpbnRvIE1UNzkyNSBVU0IgRW11bGF0aW9uKioKCk9rYXksIHNvIEkgc2VlIGBtdDc5MjV1LXkgOj0gdXNiLm9gIGluIHRoZSBNYWtlZmlsZS4gVGhhdCBpbW1lZGlhdGVseSBzcGFya3MgbXkgaW50ZXJlc3Qg4oCTIGEgVVNCIGRyaXZlciBmb3IgYG10NzkyNWAhIFRoYXQmIzM5O3MgZXhjZWxsZW50IG5ld3MgYmVjYXVzZSBpdCBtZWFucyB3ZSAqY2FuKiBsaWtlbHkgZW11bGF0ZSBpdCBpbiBzeXprYWxsZXIgdXNpbmcgVVNCIGdhZGdldC92aGNpLiBUaGlzIG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF2ZW51ZSBmb3IgZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBhbmFseXplIHRoZSBwYXRjaCBhbmQgZGV0ZXJtaW5lIGlmIGl0IHRvdWNoZXMgYW55IGNvcmUga2VybmVsIGxvZ2ljLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgbXQ3OTI4X3R4cHdyYCBhbmQgYG10NzkyOF9laHRfdHhwd3JgLCB3aGljaCBhcmUgZGVidWdmcyBjYWxsYmFja3MsIHBsdXMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIHdoaWNoIGludm9sdmVzIHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBNQ1UuIE5vdyBJIGhhdmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgZnV6emFibGUuCgpJIG5lZWQgdG8gcmVmZXIgdG8gdGhlIHByb21wdDogaXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nPyBUaGUgcHJvbXB0IHN0YXRlcyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4gLi4uIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7CgpCdXQgd2FpdCwgY2FuIGBtdDc5MjVgIGhhcmR3YXJlIGJlIGVtdWxhdGVkIHZpYSBVU0I/IFN5emthbGxlciYjMzk7cyB2aGNpIGNhbiBlbXVsYXRlIGFueSBVU0IgZGV2aWNlIGFzIGxvbmcgYXMgdGhlIGNvcnJlY3QgZGVzY3JpcHRvcnMgYXJlIHByb3ZpZGVkLiBTbywgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiBpcyByZWFjaGFibGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0LiBCdXQgSSBzZWUgdGhhdCB0aGUgTUNVIGNvbW11bmljYXRpb24gKGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCkgc2VuZHMgYSBjb21tYW5kIGFuZCB3YWl0cyBmb3IgYSByZXNwb25zZS4gSW4gc3l6a2FsbGVyLCB3ZSBjYW4gc3VwcGx5IGFyYml0cmFyeSByZXNwb25zZXMgdG8gVVNCIHJlcXVlc3RzLiBTbywgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgKmNhbiogYmUgZXhlY3V0ZWQsIGFuZCB0aGUgcmVzcG9uc2UgKmNhbiogYmUgcGFyc2VkLgoKSG93ZXZlciwgdGhlIHBhdGNoICptb3N0bHkqIGFkZHMgZGVidWdmcyBlbnRyaWVzLiBJcyBkZWJ1Z2ZzIGNvbnNpZGVyZWQgYSAmIzM0O2Z1bmN0aW9uYWwgY2hhbmdlJiMzNDs/IFRoZSBwcm9tcHQgZG9lc24mIzM5O3QgZXhwbGljaXRseSBjYXRlZ29yaXplIGRlYnVnZnMuCgpJJiMzOTttIHRoaW5raW5nIHRoYXQgZGVidWdmcyBpcyBhY2Nlc3NpYmxlIGFuZCBjYW4gYmUgZnV6emVkLCBidXQgSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZTogdGhlIHByb21wdCBzYWlkIG5vdCB0byBmdXp6IGNoYW5nZXMgdGhhdCBhcmUgJiMzNDtwdXJlbHkgZGVjb3JhdGl2ZSYjMzQ7LgoKSSBuZWVkIHRvIGFuYWx5emUgYG10NzkyOF90eHB3cmAgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eS4gSSBzZWUgaXQgYWxsb2NhdGVzIG1lbW9yeSwgY2FsbHMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIGFuZCB0aGVuIHByaW50cyB0aGUgcmVzdWx0cyB1c2luZyBgc2VxX3ByaW50ZmAgYW5kIGBtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnlgLiBJdCBhbHNvIGFkZHMgYG10NzkyOF90eHB3cl90Ymxfc2V0YCBhbmQgYG10NzkyOF90eHB3cl90YmxfZ2V0YCwgd2hpY2ggYXJlIHNpbXBsZSBnZXQvc2V0IG9wZXJhdGlvbnMgb24gYGRldi0mZ3Q7dHhwd3JfdGJsYC4gSXMgdGhhdCBmdW5jdGlvbmFsPyBJdCYjMzk7cyByZWFkaW5nL3dyaXRpbmcgYSBkZWJ1Z2ZzIGZpbGUgdG8gc2V0L2dldCBhIHZhcmlhYmxlLCBhbmQgYW5vdGhlciBkZWJ1Z2ZzIGZpbGUgdG8gcXVlcnkgdGhlIE1DVSBhbmQgcHJpbnQgdGhlIHJlc3VsdC4gQnV0IGlzIHRoaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZz8KCkFoYSEgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgcGFyc2VzIHRoZSBNQ1UmIzM5O3MgcmVzcG9uc2UuIFRoZSBjb2RlIGlzOgoKYGBgYwpldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLSZndDtkYXRhOwptZW1jcHkodHhwd3IsICZhbXA7ZXZlbnQtJmd0O3R4cHdyLCBzaXplb2YoKnR4cHdyKSk7CmBgYAoKVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcG9pbnQuIElmIHRoZSBNQ1UsIHdoaWNoIGlzIGVtdWxhdGVkIGJ5IHN5emthbGxlciwgcmV0dXJucyBhIG1hbGZvcm1lZCBvciB0cnVuY2F0ZWQgU0tCLCBgc2tiLSZndDtkYXRhYCBtaWdodCBub3QgYmUgbGFyZ2UgZW5vdWdoIGZvciBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudGAuIFRoaXMgd2lsbCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGF0IGBtZW1jcHlgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4gTm93IEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCB2YWxpZGF0ZXMgdGhlIGxlbmd0aCBvZiB0aGUgU0tCIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfbWN1X3NlbmRfYW5kX2dldF9tc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jPTU0PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZfbWN1X3J4X2V2ZW50KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjU2OmludCBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy01Ny1cdFx0XHQgICAgICBpbnQgbGVuLCBib29sIHdhaXRfcmVzcCwgc3RydWN0IHNrX2J1ZmYgKipyZXRfc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYzo3MDpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTkxNT1zdHJ1Y3Qgc2tfYnVmZiAqbXQ3Nl9tY3VfZ2V0X3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkxNi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgZXhwaXJlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxOTE3OmludCBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkxOC1cdFx0XHQgICAgICBpbnQgbGVuLCBib29sIHdhaXRfcmVzcCwgc3RydWN0IHNrX2J1ZmYgKipyZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE5MzM9bXQ3Nl9tY3Vfc2VuZF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBjbWQsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxOTM2Olx0cmV0dXJuIG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coZGV2LCBjbWQsIGRhdGEsIGxlbiwgd2FpdF9yZXNwLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5MzctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIyMDY9aW50IG10NzkxNV9tY3VfbXVydV9kZWJ1Z19nZXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjIyMTpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKE1VUlVfQ1RSTCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMjIyLVx0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI4OTQ9aW50IG10NzkxNV9tY3VfZ2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqcmVhZF9idWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI5MDU6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkwNi1cdFx0XHRcdFx0TUNVX0VYVF9RVUVSWShFRlVTRV9BQ0NFU1MpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI5MjE9aW50IG10NzkxNV9tY3VfZ2V0X2VlcHJvbV9mcmVlX2Jsb2NrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4ICpibG9ja19udW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI5MzQ6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkzNS1cdFx0XHRcdFx0TUNVX0VYVF9RVUVSWShFRlVTRV9GUkVFX0JMT0NLKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0zMTQ1PWludCBtdDc5MTVfbWN1X2dldF9jaGFuX21pYl9pbmZvKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGJvb2wgY2hhbl9zd2l0Y2gpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMzE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjMxODU6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfRVhUX0NNRChHRVRfTUlCX0lORk8pLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMzE4Ni1cdFx0XHRcdFx0cmVxLCBsZW4gKiBzaXplb2YocmVxWzBdKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0zNTEwPWludCBtdDc5MTVfbWN1X2dldF90eHBvd2VyX3NrdShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBzOCAqdHhwb3dlciwgaW50IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MzUyODpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zNTI5LVx0XHRcdFx0XHRNQ1VfRVhUX0NNRChUWF9QT1dFUl9GRUFUVVJFX0NUUkwpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTM4NjI9aW50IG10NzkxNV9tY3VfZ2V0X3J4X3JhdGUoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zODgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6Mzg4NDpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKFBIWV9TVEFUX0lORk8pLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMzg4NS1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz00MTAzPWludCBtdDc5MTVfbWN1X3dlZF93YV90eF9zdGF0cyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MTYgd2xhbl9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtNDEzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjQxMzc6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV0FfUEFSQU1fQ01EKFFVRVJZKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTQxMzgtXHRcdFx0XHRcdFx1MDAyNnJlcSwgbGVuLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTQxNzE9aW50IG10NzkxNV9tY3VfcmZfcmVndmFsKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy00MTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6NDE4OTpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfUVVFUlkoUkZfUkVHX0FDQ0VTUyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy00MTkwLVx0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTc1PXN0YXRpYyBpbnQgbXQ3OTIxX21jdV9yZWFkX2VlcHJvbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6ODQ6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfRVhUX1FVRVJZKEVGVVNFX0FDQ0VTUyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy04NS1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz01NTQ9c3RhdGljIGludCBtdDc5MjFfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqbXBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy01NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo1NjQ6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKHBoeS1cdTAwM2VkZXYsIE1DVV9DRV9DTUQoR0VUX05JQ19DQVBBQiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy01NjUtXHRcdFx0XHRcdE5VTEwsIDAsIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9MTEwNj1pbnQgbXQ3OTIxX2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MjFfdHhwd3IgKnR4cHdyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTExMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzoxMTE1Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX0NFX0NNRChHRVRfVFhQV1IpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtMTExNi1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS90ZXN0bW9kZS5jPTg1PW10NzkyMV90bV9xdWVyeShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTIxX3RtX2NtZCAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3Rlc3Rtb2RlLmMtOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS90ZXN0bW9kZS5jOjk3Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX0NFX0NNRChURVNUX0NUUkwpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdGVzdG1vZGUuYy05OC1cdFx0XHRcdFx0XHUwMDI2Y21kLCBzaXplb2YoY21kKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz01Nz1pbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjEwMTpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMDItXHRcdFx0XHRcdE1DVV9XTV9VTklfQ01EX1FVRVJZKFJFR19BQ0NFU1MpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1MD1zdGF0aWMgaW50IG10NzkyNV9tY3VfcmVhZF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIG9mZnNldCwgdTggKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3ODU6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRF9RVUVSWShFRlVTRV9DVFJMKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc4Ni1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz04ODg9aW50IG10NzkyNV9tY3VfZndfbG9nXzJfaG9zdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjdHJsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjkwNTpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9VTklfQ01EKFdTWVNfQ09ORklHKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwNi1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9OTEwPWludCBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjkzMDpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy05MzEtXHRcdFx0XHRcdE1DVV9XTV9VTklfQ01EX1FVRVJZKFRIRVJNQUwpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTk5ND1tdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEwMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxMDEzOlx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoQ0hJUF9DT05GSUcpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTAxNC1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNTM1PWludCBtdDc5MjVfbWN1X3NldF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTU1MjpcdHJldHVybiBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChFRlVTRV9DVFJMKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTE1NTMtXHRcdFx0XHRcdCBcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0yMTQ3PWludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIxNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoyMTYxOlx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoVFhQT1dFUiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTYyLVx0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIxNzQ9aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIxODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoyMTg4Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoVFhQT1dFUiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTg5LVx0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTM5MzU9aW50IG10NzkyNV9tY3Vfd2ZfcmZfcGluX2N0cmwoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zOTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Mzk1NzpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zOTU4LVx0XHRcdFx0XHRNQ1VfVU5JX0NNRChSQURJT19TVEFUVVMpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmM9ODc9bXQ3OTI1X3RtX3F1ZXJ5KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MjVfdG1fY21kICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdGVzdG1vZGUuYy05OC1cdGlmICgqKCh1aW50MTZfdCAqKXJlcS1cdTAwM2VwYWRkaW5nKSA9PSBNQ1VfVU5JX0NNRF9URVNUTU9ERV9DVFJMKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdGVzdG1vZGUuYzo5OTpcdFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9RVUVSWShURVNUTU9ERV9DVFJMKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmMtMTAwLVx0XHRcdFx0XHRcdFx1MDAyNmNtZCwgc2l6ZW9mKGNtZCksIHRydWUsIFx1MDAyNnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jLTEwMS1cdGVsc2UgaWYgKCooKHVpbnQxNl90ICopcmVxLVx1MDAzZXBhZGRpbmcpID09IE1DVV9VTklfQ01EX1RFU1RNT0RFX1JYX1NUQVQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jOjEwMjpcdFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9RVUVSWShURVNUTU9ERV9SWF9TVEFUKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmMtMTAzLVx0XHRcdFx0XHRcdFx1MDAyNmNtZCwgc2l6ZW9mKGNtZCksIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDMxMj1pbnQgbXQ3OTk2X21jdV9nZXRfZWVwcm9tKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICpidWYsIHUzMiBidWZfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQzMzktXHRyZXEuaW5mby5hZGRyID0gY3B1X3RvX2xlMzIoYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0MzQwOlx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgY21kLCBcdTAwMjZyZXEsIHNpemVvZihyZXEpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDM0MS1cdFx0XHRcdFx0dHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00MzgxPWludCBtdDc5OTZfbWN1X2dldF9lZnVzZV9mcmVlX2Jsb2NrKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHU4ICpibG9ja19udW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDM5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjQ0MDA6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRF9RVUVSWShFRlVTRV9DVFJMKSwgXHUwMDI2cmVxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQwMS1cdFx0XHRcdFx0c2l6ZW9mKHJlcSksIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDQxMT1pbnQgbXQ3OTk2X21jdV9nZXRfY2hpcF9jb25maWcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdTMyICpjYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjQ0Mjc6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQyOC1cdFx0XHRcdFx0TUNVX1dNX1VOSV9DTURfUVVFUlkoQ0hJUF9DT05GSUcpLCBcdTAwMjZyZXEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDQ1Nj1pbnQgbXQ3OTk2X21jdV9nZXRfY2hhbl9taWJfaW5mbyhzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBib29sIGNoYW5fc3dpdGNoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ0OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NDk3Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoR0VUX01JQl9JTkZPKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ0OTgtXHRcdFx0XHRcdFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDUzNT1pbnQgbXQ3OTk2X21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00NTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NDU2ODpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2cGh5LVx1MDAzZWRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRChUSEVSTUFMKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ1NjktXHRcdFx0XHRcdFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NTE3MD1pbnQgbXQ3OTk2X21jdV9yZl9yZWd2YWwoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTUxOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo1MTk2Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTUxOTctXHRcdFx0XHRcdE1DVV9XTV9VTklfQ01EX1FVRVJZKFJFR19BQ0NFU1MpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDAxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgYG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dgIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgYG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dgIGZ1bmN0aW9uJiMzOTtzIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcywgYW5kIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpcm13YXJlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscywgbm90IGEgaGlnaC1sZXZlbCBvdmVydmlldy4gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgdXNlZCBoZXJlPyBTcGVjaWZpY2FsbHksIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBob3cgdGhlIG1lc3NhZ2UgaXMgY29uc3RydWN0ZWQsIGhvdyB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsIChsaWtlbHkgcmVnaXN0ZXJzIG9yIERNQSkgaXMgbWFuYWdlZCwgYW5kIHRoZSBoYW5kc2hha2luZyB3aXRoIHRoZSBNQ1UuIEFyZSB0aGVyZSBhbnkgY3JpdGljYWwgc2VjdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3I/IEkgd2FudCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZy4gSG93IGFyZSB0aW1lb3V0cyBtYW5hZ2VkPyBXaGF0IGFyZSB0aGUgcmV0cnkgbWVjaGFuaXNtcz8gQW55IHBvdGVudGlhbCBkZWFkbG9jayBzaXR1YXRpb25zPyBBbnkgcG90ZW50aWFsIGZvciBidWZmZXIgb3ZlcmZsb3dzPyBMZXQmIzM5O3MgZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTY6XHRpbnQgbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGNtZCwgY29uc3Qgdm9pZCAqZGF0YSxcbiAgNTc6XHRcdFx0XHQgICAgICBpbnQgbGVuLCBib29sIHdhaXRfcmVzcCwgc3RydWN0IHNrX2J1ZmYgKipyZXRfc2tiKVxuICA1ODpcdHtcbiAgNTk6XHRcdHN0cnVjdCBza19idWZmICpza2I7XG4gIDYwOlx0XG4gIDYxOlx0XHRpZiAoZGV2LVx1MDAzZW1jdV9vcHMtXHUwMDNlbWN1X3NlbmRfbXNnKVxuICA2MjpcdFx0XHRyZXR1cm4gZGV2LVx1MDAzZW1jdV9vcHMtXHUwMDNlbWN1X3NlbmRfbXNnKGRldiwgY21kLCBkYXRhLCBsZW4sIHdhaXRfcmVzcCk7XG4gIDYzOlx0XG4gIDY0Olx0XHRza2IgPSBtdDc2X21jdV9tc2dfYWxsb2MoZGV2LCBkYXRhLCBsZW4pO1xuICA2NTpcdFx0aWYgKCFza2IpXG4gIDY2Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA2NzpcdFxuICA2ODpcdFx0cmV0dXJuIG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnKGRldiwgc2tiLCBjbWQsIHdhaXRfcmVzcCwgcmV0X3NrYik7XG4gIDY5Olx0fVxuICA3MDpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2cpO1xuICA3MTpcdFxuICA3MjpcdGludCBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAgNzM6XHRcdFx0XHRcdCAgaW50IGNtZCwgYm9vbCB3YWl0X3Jlc3AsXG4gIDc0Olx0XHRcdFx0XHQgIHN0cnVjdCBza19idWZmICoqcmV0X3NrYilcbiAgNzU6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUwODUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHRoZSBzdWJqZWN0IG9mIGBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZ2AsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgZ2VuZXJhbCBsYW5kc2NhcGUgb2YgZW1iZWRkZWQgd2lyZWxlc3MgZHJpdmVycy4KCioqRGVlcCBEaXZlOiBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgKioKCkFscmlnaHQsIEkgc2VlIHRoaXMgZnVuY3Rpb24gbmFtZTogYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYC4gSW1tZWRpYXRlbHksIG15IG1lbnRhbCBnZWFycyBzdGFydCB0dXJuaW5nLiAmIzM0O210NzYmIzM0OyBzdWdnZXN0cyBpdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byBNZWRpYVRlayYjMzk7cyA4MDIuMTEgY2hpcHNldCBmYW1pbHkuIFRoZSAmIzM0O21jdSYjMzQ7IGxpa2VseSByZWZlcnMgdG8gYSBtaWNyb2NvbnRyb2xsZXIsIHdoaWNoIGlzIHR5cGljYWwgZm9yIG1hbmFnaW5nIGxvdy1sZXZlbCByYWRpbyBvcGVyYXRpb25zLCBmaXJtd2FyZSwgYW5kIHBvc3NpYmx5IG9mZmxvYWRpbmcgdGFza3MgZnJvbSB0aGUgbWFpbiBDUFUuIFRoZSAmIzM0O3NrYiYjMzQ7IGltcGxpZXMgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgJiMzNDtzb2NrZXQgYnVmZmVyJiMzNDsg4oCTIHRob3NlIGFyZSB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGZvciBuZXR3b3JrIGRhdGEgaW4gdGhlIExpbnV4IGtlcm5lbC4gJiMzNDtTZW5kX2FuZF9nZXRfbXNnJiMzNDsgaXMgdGhlIGtleSBoZXJlIC0gaXQgbWVhbnMgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igc2VuZGluZyBhIG1lc3NhZ2UgKGxpa2VseSBjb21tYW5kIG9yIGRhdGEpIHRvIHRoZSBtaWNyb2NvbnRyb2xsZXIgYW5kIHRoZW4gcmV0cmlldmluZyB0aGUgcmVzcG9uc2UuCgpJIGV4cGVjdCB0aGlzIGlzIGEgZmFpcmx5IGNyaXRpY2FsIGZ1bmN0aW9uIHdpdGhpbiB0aGUgbXQ3NiBkcml2ZXIuIEl0JiMzOTtzIHByb2JhYmx5IHRoZSBjb3JlIG9mIHRoZSBjb21tdW5pY2F0aW9uIHBhdGggYmV0d2VlbiB0aGUgaG9zdCBMaW51eCBzeXN0ZW0gYW5kIHRoZSBXaS1GaSBjaGlwc2V0JiMzOTtzIGZpcm13YXJlIHJ1bm5pbmcgb24gdGhlIE1DVS4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGhhbmRsZXM6CgoqICAgKipNZXNzYWdlIGZyYW1pbmc6KiogSG93IGFyZSB0aGVzZSBtZXNzYWdlcyBzdHJ1Y3R1cmVkPyBBcmUgdGhlcmUgc3BlY2lmaWMgaGVhZGVycywgY2hlY2tzdW1zLCBvciBmcmFtaW5nIG1lY2hhbmlzbXM/IElzIGl0IGp1c3QgcmF3IGRhdGEsIG9yIGlzIHRoZXJlIGEgZGVmaW5lZCBwcm90b2NvbD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIga25vd3Mgd2hlbiBvbmUgbWVzc2FnZSBlbmRzIGFuZCBhbm90aGVyIGJlZ2lucy4KKiAgICoqRXJyb3IgaGFuZGxpbmc6KiogV2hhdCBoYXBwZW5zIGlmIHRoZSBzZW5kIGZhaWxzPyBXaGF0IGFib3V0IHRoZSByZWNlaXZlPyBXaGF0IHRpbWVvdXRzIGFyZSB1c2VkPyBEb2VzIGl0IHN1cHBvcnQgcmV0cmllcz8gQXJlIHRoZXJlIHNwZWNpZmljIGVycm9yIGNvZGVzIHJldHVybmVkPwoqICAgKipTeW5jaHJvbml6YXRpb246KiogVGhpcyBpcyBtdWx0aS10aHJlYWRlZC4gV2hhdCBsb2NraW5nIG1lY2hhbmlzbXMgYXJlIGVtcGxveWVkIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdoZW4gbXVsdGlwbGUgcGFydHMgb2YgdGhlIGRyaXZlciB3YW50IHRvIHNlbmQvcmVjZWl2ZSBtZXNzYWdlcyBjb25jdXJyZW50bHk/IElzIHRoZXJlIGEgbXV0ZXgsIGEgc2VtYXBob3JlLCBvciBzb21ldGhpbmcgZWxzZSBpbnZvbHZlZD8KKiAgICoqQnVmZmVyaW5nOioqIEhvdyBpcyB0aGUgYHNrYmAgdXNlZD8gSXMgaXQgZGlyZWN0bHkgc2VudCwgb3IgaXMgaXQgY29waWVkPyBBcmUgdGhlcmUgYW55IGJ1ZmZlciBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgdG8gYXZvaWQgbWVtb3J5IGxlYWtzIG9yIGluZWZmaWNpZW5jaWVzLCBlc3BlY2lhbGx5IHNpbmNlIG5ldHdvcmsgZGF0YSBpcyBvZnRlbiB0aW1lLXNlbnNpdGl2ZT8KKiAgICoqSW50ZXJydXB0czoqKiBEb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJhY3Qgd2l0aCBhbnkgaW50ZXJydXB0cyBmcm9tIHRoZSBNQ1U/IEl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGUgTUNVIHNlbmRzIGludGVycnVwdHMgdG8gc2lnbmFsIGEgcmVzcG9uc2UuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGFyZSBoYW5kbGVkIGFuZCBob3cgdGhleSB0aWUgaW50byB0aGUgcmVzcG9uc2UgcmV0cmlldmFsIHByb2Nlc3MuCiogICAqKlNlY3VyaXR5OioqIEFyZSB0aGVyZSBhbnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgaW4gdGhlIG1lc3NhZ2luZyBwcm9jZXNzPyBEb2VzIGl0IHN1cHBvcnQgYW55IHNlY3VyaXR5IG1lY2hhbmlzbXMsIHN1Y2ggYXMgZW5jcnlwdGlvbiBvciBhdXRoZW50aWNhdGlvbiwgYXQgdGhpcyBsZXZlbD8KCk15IGZvY3VzIHdvdWxkIHRoZW4gYmUgb24gZGlzc2VjdGluZyB0aGUgY29kZSByZWxhdGVkIHRvIHRoZXNlIHBvaW50cyBhbmQsIG9mIGNvdXJzZSwgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgd2l0aGluIHRoZSBmdW5jdGlvbi4gTXkgZXhwZXJ0aXNlIGFsbG93cyBtZSB0byBhbnRpY2lwYXRlIGNvbW1vbiBwaXRmYWxscyBhbmQgb3B0aW1pemF0aW9ucyB0aGF0IHdvdWxkIGJlIGFwcGxpZWQgaW4gYW4gZW1iZWRkZWQgd2lyZWxlc3MgZHJpdmVyLCBzbyBJIHdvdWxkIGxvb2sgZm9yIGNsdWVzIHRvIHRob3NlIHBhdHRlcm5zIHJpZ2h0IGF3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzI6XHRpbnQgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gIDczOlx0XHRcdFx0XHQgIGludCBjbWQsIGJvb2wgd2FpdF9yZXNwLFxuICA3NDpcdFx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqKnJldF9za2IpXG4gIDc1Olx0e1xuICA3NjpcdFx0dW5zaWduZWQgaW50IHJldHJ5ID0gMDtcbiAgNzc6XHRcdHN0cnVjdCBza19idWZmICpvcmlnX3NrYiA9IE5VTEw7XG4gIDc4Olx0XHR1bnNpZ25lZCBsb25nIGV4cGlyZXM7XG4gIDc5Olx0XHRpbnQgcmV0LCBzZXE7XG4gIDgwOlx0XG4gIDgxOlx0XHRpZiAobXQ3Nl9pc19zZGlvKGRldikpXG4gIDgyOlx0XHRcdGlmICh0ZXN0X2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSBcdTAwMjZcdTAwMjYgYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZWJ1c19odW5nKSlcbiAgODM6XHRcdFx0XHRyZXR1cm4gLUVJTztcbiAgODQ6XHRcbiAgODU6XHRcdGlmIChyZXRfc2tiKVxuICA4NjpcdFx0XHQqcmV0X3NrYiA9IE5VTEw7XG4gIDg3Olx0XG4gIDg4Olx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuICA4OTpcdFxuICA5MDpcdFx0aWYgKGRldi1cdTAwM2VtY3Vfb3BzLVx1MDAzZW1jdV9za2JfcHJlcGFyZV9tc2cpIHtcbiAgOTE6XHRcdFx0b3JpZ19za2IgPSBza2I7XG4gIDkyOlx0XHRcdHJldCA9IGRldi1cdTAwM2VtY3Vfb3BzLVx1MDAzZW1jdV9za2JfcHJlcGFyZV9tc2coZGV2LCBza2IsIGNtZCwgXHUwMDI2c2VxKTtcbiAgOTM6XHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAgOTQ6XHRcdFx0XHRnb3RvIG91dDtcbiAgOTU6XHRcdH1cbiAgOTY6XHRcbiAgOTc6XHRyZXRyeTpcbiAgOTg6XHRcdC8qIG9yaWcgc2tiIG1pZ2h0IGJlIG5lZWRlZCBmb3IgcmV0cnksIG1jdV9za2Jfc2VuZF9tc2cgY29uc3VtZXMgaXQgKi9cbiAgOTk6XHRcdGlmIChvcmlnX3NrYilcbiAxMDA6XHRcdFx0c2tiX2dldChvcmlnX3NrYik7XG4gMTAxOlx0XHRyZXQgPSBkZXYtXHUwMDNlbWN1X29wcy1cdTAwM2VtY3Vfc2tiX3NlbmRfbXNnKGRldiwgc2tiLCBjbWQsIHdhaXRfcmVzcCA/IFx1MDAyNnNlcSA6IE5VTEwpO1xuIDEwMjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAxMDM6XHRcdFx0Z290byBvdXQ7XG4gMTA0Olx0XG4gMTA1Olx0XHRpZiAoIXdhaXRfcmVzcCkge1xuIDEwNjpcdFx0XHRyZXQgPSAwO1xuIDEwNzpcdFx0XHRnb3RvIG91dDtcbiAxMDg6XHRcdH1cbiAxMDk6XHRcbiAxMTA6XHRcdGV4cGlyZXMgPSBqaWZmaWVzICYjNDM7IGRldi1cdTAwM2VtY3UudGltZW91dDtcbiAxMTE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzOTIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBEZWVwZXIgaW50byBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgKioKCkFscmlnaHQsIEkmIzM5O20gYXQgYSBwb2ludCB3aGVyZSBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZ2AuIFNvbWV0aGluZyYjMzk7cyBuYWdnaW5nIGF0IG1lLCBhIHBvdGVudGlhbCBlZGdlIGNhc2Ugb3IgcGVyaGFwcyBhIHN1YnRsZSBidWcgbHVya2luZyB3aXRoaW4uIFdlJiMzOTt2ZSBsaWtlbHkgaXNvbGF0ZWQgYW4gaXNzdWUgZG93biB0byB0aGlzIGZ1bmN0aW9uLCBvciBhdCBsZWFzdCBoYXZlIGEgc3Ryb25nIHN1c3BpY2lvbiwgYW5kIG5vdyBpdOKAmXMgdGltZSBmb3IgYSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyB3aXRoaW4gdGhpcyBjb3JlIGZ1bmN0aW9uIG9mIHRoZSBtdDc2IGZpcm13YXJlLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgU0tCIGlzIGJ1aWx0LCB0cmFuc21pdHRlZCB0byB0aGUgTUNVLCBhbmQgaG93IHRoZSByZXNwb25zZSBpcyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgdG8gc2VlIGhvdyBpdCBtaWdodCBiZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBjb25jdXJyZW5jeSBvZiB0aGUgc3lzdGVtLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB3ZSYjMzk7cmUgcHJvcGVybHkgbWFuYWdpbmcgcmV0cmllcywgdGltZW91dHMsIGFuZCBlcnJvciBjb25kaXRpb25zLiBJcyBpdCBiZWhhdmluZyBhcyBleHBlY3RlZCB3aGVuIHRoZSBNQ1UgaXMgYnVzeSBvciB1bmRlciBoZWF2eSBsb2FkPyBJJiMzOTttIGN1cmlvdXMgaWYgd2UmIzM5O3JlIHByb3Blcmx5IHZhbGlkYXRpbmcgdGhlIHJldHVybmVkIG1lc3NhZ2UgZnJvbSB0aGUgTUNVLiBBbnkgc3VidGxlIG1pc2ludGVycHJldGF0aW9uIG9mIHRoZSBtZXNzYWdlIGZvcm1hdCBjb3VsZCBsZWFkIHRvIGluc3RhYmlsaXR5IG9yIGV2ZW4gc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbiBhbmQgcmUtZXZhbHVhdGUgdGhpcyBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgd2Fsa2luZyB0aHJvdWdoIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEyOlx0XHRkbyB7XG4gMTEzOlx0XHRcdHNrYiA9IG10NzZfbWN1X2dldF9yZXNwb25zZShkZXYsIGV4cGlyZXMpO1xuIDExNDpcdFx0XHRpZiAoIXNrYiBcdTAwMjZcdTAwMjYgIXRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSBcdTAwMjZcdTAwMjZcbiAxMTU6XHRcdFx0ICAgIG9yaWdfc2tiIFx1MDAyNlx1MDAyNiByZXRyeSYjNDM7JiM0MzsgXHUwMDNjIGRldi1cdTAwM2VtY3Vfb3BzLVx1MDAzZW1heF9yZXRyeSkge1xuIDExNjpcdFx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCYjMzQ7UmV0cnkgbWVzc2FnZSAlMDh4IChzZXEgJWQpXFxuXCYjMzQ7LFxuIDExNzpcdFx0XHRcdFx0Y21kLCBzZXEpO1xuIDExODpcdFx0XHRcdHNrYiA9IG9yaWdfc2tiO1xuIDExOTpcdFx0XHRcdGdvdG8gcmV0cnk7XG4gMTIwOlx0XHRcdH1cbiAxMjE6XHRcbiAxMjI6XHRcdFx0cmV0ID0gZGV2LVx1MDAzZW1jdV9vcHMtXHUwMDNlbWN1X3BhcnNlX3Jlc3BvbnNlKGRldiwgY21kLCBza2IsIHNlcSk7XG4gMTIzOlx0XHRcdGlmICghcmV0IFx1MDAyNlx1MDAyNiByZXRfc2tiKVxuIDEyNDpcdFx0XHRcdCpyZXRfc2tiID0gc2tiO1xuIDEyNTpcdFx0XHRlbHNlXG4gMTI2Olx0XHRcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuIDEyNzpcdFx0fSB3aGlsZSAocmV0ID09IC1FQUdBSU4pO1xuIDEyODpcdFxuIDEyOTpcdFxuIDEzMDpcdG91dDpcbiAxMzE6XHRcdGRldl9rZnJlZV9za2Iob3JpZ19za2IpO1xuIDEzMjpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuIDEzMzpcdFxuIDEzNDpcdFx0cmV0dXJuIHJldDtcbiAxMzU6XHR9XG4gMTM2Olx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2cpO1xuIDEzNzpcdFxuIDEzODpcdGludCBfX210NzZfbWN1X3NlbmRfZmlybXdhcmUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBjbWQsIGNvbnN0IHZvaWQgKmRhdGEsXG4gMTM5Olx0XHRcdFx0ICAgICBpbnQgbGVuLCBpbnQgbWF4X2xlbilcbiAxNDA6XHR7XG4gMTQxOlx0XHRpbnQgZXJyLCBjdXJfbGVuO1xuIDE0MjpcdFxuIDE0MzpcdFx0d2hpbGUgKGxlbiBcdTAwM2UgMCkge1xuIDE0NDpcdFx0XHRjdXJfbGVuID0gbWluX3QoaW50LCBtYXhfbGVuLCBsZW4pO1xuIDE0NTpcdFxuIDE0NjpcdFx0XHRlcnIgPSBtdDc2X21jdV9zZW5kX21zZyhkZXYsIGNtZCwgZGF0YSwgY3VyX2xlbiwgZmFsc2UpO1xuIDE0NzpcdFx0XHRpZiAoZXJyKVxuIDE0ODpcdFx0XHRcdHJldHVybiBlcnI7XG4gMTQ5Olx0XG4gMTUwOlx0XHRcdGRhdGEgJiM0Mzs9IGN1cl9sZW47XG4gMTUxOlx0XHRcdGxlbiAtPSBjdXJfbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQwMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3NiBNQ1UgUmVzcG9uc2UgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGlzIGBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZ2AgZnVuY3Rpb24gd29ya3MsIGFuZCBpdCYjMzk7cyBjYWxsaW5nIGBtY3VfcGFyc2VfcmVzcG9uc2VgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBgbWN1X3BhcnNlX3Jlc3BvbnNlYCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgYG10NzkyNWAgY2hpcHNldC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGhhbmRsZXMgdGhlIHJlc3BvbnNlIHRvIE1DVSBjb21tYW5kcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIGlzIHBhcnNlZCwgaG93IGVycm9ycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgcmVzdWx0cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRyaXZlcuKAmXMgb3ZlcmFsbCBvcGVyYXRpb24uIEkmIzM5O20gYmV0dGluZyB0aGVyZSYjMzk7cyBzb21lIGRldmljZS1zcGVjaWZpYyBsb2dpYyBpbiB0aGVyZSwgc28gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBpbiBvbiB0aGUgTVQ3OTI1JiMzOTtzIGltcGxlbWVudGF0aW9uIHRvIHNlZSBob3cgaXQmIzM5O3MgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWN1X3BhcnNlX3Jlc3BvbnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQ6aW50IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBpbnQgY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTUtXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy01NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo1NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM3OT12b2lkIG10NzkyNV90eHdpX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zODEtXHRcdCAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVfbGlzdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozODI6aW50IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBpbnQgY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzgzLVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIGludCBzZXEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYz0yNz1pbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy0zMS1cdFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MjVfbWN1X3NlbmRfbWVzc2FnZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzozMjpcdFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtMzMtXHR9O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTU2PXN0YXRpYyBpbnQgbXQ3OTI1dV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTYyLVx0XHQubWN1X3NrYl9zZW5kX21zZyA9IG10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjYzOlx0XHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTY0LVx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1NDMKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZWAuIEkga25vdyB0aGlzIHJvdXRpbmU7IGl0JiMzOTtzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGludGVycHJldGluZyB0aGUgcmVzcG9uc2VzIHdlIGdldCBiYWNrIGZyb20gdGhlIE1DVSBvbiB0aGUgTVQ3OTI1IGNoaXBzZXQuIE15IGJyYWluIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBzY2VuYXJpb3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHlwZSBvZiBtZXNzYWdlIGl0IGlzLCB0aGUgZXhwZWN0ZWQgZm9ybWF0LCBhbmQgaG93IHRvIGhhbmRsZSBhbnkgZXJyb3JzLiBUaGUgY29yZSBvZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGEgc3dpdGNoIHN0YXRlbWVudCwgSSYjMzk7bSBndWVzc2luZywgYmFzZWQgb24gdGhlIG1lc3NhZ2UgSUQgZmllbGQuCgpJJiMzOTttIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2g6IElzIHRoZXJlIGEgaGVhZGVyPyBXaGF0IGZpZWxkcyBkbyBJIG5lZWQgdG8gZXh0cmFjdD8gRXJyb3IgY29kZXMsIGRhdGEgbGVuZ3RocywgcG9zc2libHkgc29tZSBjb250cm9sIGZsYWdzPyBJ4oCZbSB0aGlua2luZyBhYm91dCBob3cgdGhlIGJpdCBmaWVsZHMgd2lsbCBiZSBwYWNrZWQgYW5kIHBhcnNlZC4gSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBwb3RlbnRpYWwgYWxpZ25tZW50IGlzc3VlczsgcGFkZGluZyBpcyBhbHdheXMgYSBzb3VyY2Ugb2YgdHJvdWJsZSBpZiB5b3UmIzM5O3JlIG5vdCBjYXJlZnVsLiBJIGhvcGUgdGhpcyBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGFuZCB1c2VzIGNsZWFyIHZhcmlhYmxlIG5hbWVzOyBpdCYjMzk7bGwgbWFrZSBteSBsaWZlIGVhc2llciB3aGVuIEkmIzM5O20gZGVidWdnaW5nIGEgdHJpY2t5IGNvbW11bmljYXRpb24gaXNzdWUgZG93biB0aGUgbGluZS4KCkkmIzM5O20gYW50aWNpcGF0aW5nIHBvdGVudGlhbGx5IGhhdmluZyB0byBkZWFsIHdpdGggZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBNQ1UgZmlybXdhcmUuIEkgbmVlZCB0byBsb29rIGZvciB2ZXJzaW9uIGNoZWNrcyBvciBmZWF0dXJlIGZsYWdzIHRoYXQgbWlnaHQgZGljdGF0ZSBkaWZmZXJlbnQgcmVzcG9uc2UgZm9ybWF0cyBvciBleHBlY3RlZCBkYXRhLiBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJvYnVzdCwgZ3JhY2VmdWxseSBoYW5kbGluZyBhbnkgdW5leHBlY3RlZCByZXNwb25zZXMgb3IgY29ycnVwdGVkIGRhdGEuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBzdGFydCB0aGlua2luZyBhYm91dCBob3cgdG8gc2lnbmFsIHRoZXNlIGlzc3VlcyBiYWNrIHRvIHRoZSBoaWdoZXItbGV2ZWwgYXBwbGljYXRpb24gYW5kIGlmIGFueSByZXRyaWVzIHNob3VsZCBiZSBhdHRlbXB0ZWQuIEFscmlnaHQsIHRpbWUgdG8gZGlnIGluIGFuZCBjb25maXJtIHRoZXNlIGluaXRpYWwgdGhvdWdodHMuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaW1wbGVtZW50ZWQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE0Olx0aW50IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBpbnQgY21kLFxuICAxNTpcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIGludCBzZXEpXG4gIDE2Olx0e1xuICAxNzpcdFx0aW50IG1jdV9jbWQgPSBGSUVMRF9HRVQoX19NQ1VfQ01EX0ZJRUxEX0lELCBjbWQpO1xuICAxODpcdFx0c3RydWN0IG10NzkyNV9tY3VfcnhkICpyeGQ7XG4gIDE5Olx0XHRpbnQgcmV0ID0gMDtcbiAgMjA6XHRcbiAgMjE6XHRcdGlmICghc2tiKSB7XG4gIDIyOlx0XHRcdGRldl9lcnIobWRldi1cdTAwM2VkZXYsIFwmIzM0O01lc3NhZ2UgJTA4eCAoc2VxICVkKSB0aW1lb3V0XFxuXCYjMzQ7LCBjbWQsIHNlcSk7XG4gIDIzOlx0XHRcdG10NzkyeF9yZXNldChtZGV2KTtcbiAgMjQ6XHRcbiAgMjU6XHRcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gIDI2Olx0XHR9XG4gIDI3Olx0XG4gIDI4Olx0XHRyeGQgPSAoc3RydWN0IG10NzkyNV9tY3VfcnhkICopc2tiLVx1MDAzZWRhdGE7XG4gIDI5Olx0XHRpZiAoc2VxICE9IHJ4ZC1cdTAwM2VzZXEpXG4gIDMwOlx0XHRcdHJldHVybiAtRUFHQUlOO1xuICAzMTpcdFxuICAzMjpcdFx0aWYgKGNtZCA9PSBNQ1VfQ01EKFBBVENIX1NFTV9DT05UUk9MKSB8fFxuICAzMzpcdFx0ICAgIGNtZCA9PSBNQ1VfQ01EKFBBVENIX0ZJTklTSF9SRVEpKSB7XG4gIDM0Olx0XHRcdHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpyeGQpIC0gNCk7XG4gIDM1Olx0XHRcdHJldCA9ICpza2ItXHUwMDNlZGF0YTtcbiAgMzY6XHRcdH0gZWxzZSBpZiAoY21kID09IE1DVV9VTklfQ01EKERFVl9JTkZPX1VQREFURSkgfHxcbiAgMzc6XHRcdFx0ICAgY21kID09IE1DVV9VTklfQ01EKEJTU19JTkZPX1VQREFURSkgfHxcbiAgMzg6XHRcdFx0ICAgY21kID09IE1DVV9VTklfQ01EKFNUQV9SRUNfVVBEQVRFKSB8fFxuICAzOTpcdFx0XHQgICBjbWQgPT0gTUNVX1VOSV9DTUQoT0ZGTE9BRCkgfHxcbiAgNDA6XHRcdFx0ICAgY21kID09IE1DVV9VTklfQ01EKFNVU1BFTkQpKSB7XG4gIDQxOlx0XHRcdHN0cnVjdCBtdDc5MjVfbWN1X3VuaV9ldmVudCAqZXZlbnQ7XG4gIDQyOlx0XG4gIDQzOlx0XHRcdHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpyeGQpKTtcbiAgNDQ6XHRcdFx0ZXZlbnQgPSAoc3RydWN0IG10NzkyNV9tY3VfdW5pX2V2ZW50ICopc2tiLVx1MDAzZWRhdGE7XG4gIDQ1Olx0XHRcdHJldCA9IGxlMzJfdG9fY3B1KGV2ZW50LVx1MDAzZXN0YXR1cyk7XG4gIDQ2Olx0XHRcdC8qIHNraXAgaW52YWxpZCBldmVudCAqL1xuICA0NzpcdFx0XHRpZiAobWN1X2NtZCAhPSBldmVudC1cdTAwM2VjaWQpXG4gIDQ4Olx0XHRcdFx0cmV0ID0gLUVBR0FJTjtcbiAgNDk6XHRcdH0gZWxzZSB7XG4gIDUwOlx0XHRcdHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpyeGQpKTtcbiAgNTE6XHRcdH1cbiAgNTI6XHRcbiAgNTM6XHRcdHJldHVybiByZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NTk1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWdWxuZXJhYmlsaXR5IElkZW50aWZpZWQ6IE91dC1vZi1Cb3VuZHMgUmVhZCBpbiBNVDc5MjUvTVQ3OTI4IERyaXZlcioqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZm91bmQuIFRoZSBgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZWAgZnVuY3Rpb24gZXh0cmFjdHMgYHNpemVvZigqcnhkKWAgZnJvbSB0aGUgc2tiIChzb2NrZXQgYnVmZmVyKS4gVGhhdCBza2IgaXMgdGhlbiByZXR1cm5lZCB2aWEgYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYC4gU3Vic2VxdWVudGx5LCBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyBjYWxsZWQsIGFuZCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEl0IHVzZXMgYG1lbWNweWAgdG8gY29weSBkYXRhIGZyb20gdGhlIGBza2ItJmd0O2RhdGFgIHRvIHRoZSBgdHhwd3JgIGJ1ZmZlciwgZXhwZWN0aW5nIHRoZSBza2IgdG8gY29udGFpbiBhIGBzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50YC4KClRoZSBjcml0aWNhbCBvdmVyc2lnaHQgaXMgdGhhdCB0aGVyZSYjMzk7cyAqbm8qIGNoZWNrIHRvIHZlcmlmeSBpZiBgc2tiLSZndDtsZW5gIGlzIHN1ZmZpY2llbnQgdG8gaG9sZCB0aGUgZW50aXJlIGBzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50YCBwYXlsb2FkLiBgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZWAgb25seSBhY2NvdW50cyBmb3IgdGhlIE1DVSBoZWFkZXIsIG5vdCB0aGUgZnVsbCBldmVudCBzaXplLiBJZiB0aGUgTUNVIHJldHVybnMgYSByZXNwb25zZSB0aGF0JiMzOTtzIHNob3J0ZXIgdGhhbiBleHBlY3RlZCwgYG1lbWNweWAgd2lsbCByZWFkIGJleW9uZCB0aGUgYm91bmRzIG9mIGBza2ItJmd0O2RhdGFgLgoKVGhpcyBgdHhwd3JgIGJ1ZmZlciBpdHNlbGYgaXMgYWxsb2NhdGVkIHVzaW5nIGBkZXZtX2ttYWxsb2NgIHdpdGhpbiB0aGUgZHJpdmVyLCBhbmQgbG9va2luZyBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IG10NzkyOF90eHB3cmAsIEkgY2FuIHNlZSBpdCYjMzk7cyBxdWl0ZSBsYXJnZS4gSXQgY29udGFpbnMgbnVtZXJvdXMgYXJyYXlzIG9mIGBzOFsuLl1bMl1gLCBhZGRpbmcgdXAgdG8gbWFueSBodW5kcmVkcyBvZiBieXRlcy4gU28sIGlmIHRoZSBVU0IgZGV2aWNlIHJldHVybnMgYSBzbWFsbCByZXNwb25zZSwgc2F5IDEwIGJ5dGVzLCB0aGUgYHNrYmAgYnVmZmVyIHdpbGwgYmUgZXF1YWxseSBzbWFsbC4gVGhlIGBtZW1jcHlgIHdpbGwgdGhlbiBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIHJlYWQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBzbGFiLW91dC1vZi1ib3VuZHMgdnVsbmVyYWJpbGl0eS4KClRoZSBgc2tiLSZndDtkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIGJ5IHRoZSBVU0IgZHJpdmVyIHdoZW4gcmVjZWl2aW5nIHRoZSByZXNwb25zZS4gVGhpcyBtZWFucyB0aGF0IGEgZGVsaWJlcmF0ZWx5IGNyYWZ0ZWQgc2hvcnQgcmVzcG9uc2UgZnJvbSBhIG1hbGljaW91cyBVU0IgZGV2aWNlIGNvdWxkIGV4cGxvaXQgdGhpcy4gVGhpcyBpcyBhIGNsYXNzaWMgVVNCIGRldmljZSB2dWxuZXJhYmlsaXR5IHNjZW5hcmlvLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgYnVnLCBhbmQgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb25lLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdGhlIFVTQiBpbnRlcmZhY2UuIEl0JiMzOTtzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgY2FuIGRlZmluaXRlbHkgYmUgZXhwbG9pdGVkIHRvIGNyYXNoIHRoZSBzeXN0ZW0uCgpJJiMzOTt2ZSBqdXN0IGNvbmZpcm1lZCB0aGUgc2l6ZSBvZiBgc3RydWN0IG10NzkyOF90eHB3cmA7IGl0JiMzOTtzIHN1YnN0YW50aWFsLCBhbmQgdGhhdCBqdXN0IHJlaW5mb3JjZXMgdGhlIHNldmVyaXR5IG9mIHRoaXMgdnVsbmVyYWJpbGl0eS4gQSBzbWFsbCByZXNwb25zZSBsZWFkcyB0byBhIGxhcmdlLCB1bnZhbGlkYXRlZCByZWFkLiBUaGlzIGlzIGEgY2xlYXIgcGF0aCB0byBleHBsb2l0YXRpb24uCgpOb3cgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWdzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2AsIHNvIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBtdDc5MjVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjc0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE1UNzkyNSBLY29uZmlnKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNVDc5MjUgY2hpcHNldC4gSSYjMzk7bSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlIGJyb2FkZXIgTVQ3NiBmcmFtZXdvcmssIHNvIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG51YW5jZXMgdGhhdCB0aGlzIHNwZWNpZmljIGRldmljZSBmYW1pbHkgaW50cm9kdWNlcy4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIG9wdGlvbnMgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgZHJpdmVyIGl0c2VsZiwgcGVyaGFwcyBmZWF0dXJlcyBsaWtlIGNhbGlicmF0aW9uIGRhdGEgbG9hZGluZywgcG93ZXIgbWFuYWdlbWVudCBjb250cm9scyBzcGVjaWZpYyB0byB0aGUgTVQ3OTI1JiMzOTtzIGFyY2hpdGVjdHVyZSwgYW5kIG9mIGNvdXJzZSwgYW55IHZlbmRvci1zcGVjaWZpYyBhZGRpdGlvbnMgb3IgbW9kaWZpY2F0aW9ucy4gSSYjMzk7bGwgYmUgd2F0Y2hpbmcgZm9yIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnM7IHRoZXNlIGNhbiBnZXQgY29tcGxleCBxdWlja2x5LCBlc3BlY2lhbGx5IHdpdGggdGhlIGludGVycGxheSBiZXR3ZWVuIGRpZmZlcmVudCByZWd1bGF0b3J5IGRvbWFpbnMgYW5kIHdpcmVsZXNzIHN0YW5kYXJkcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGVzZSBvcHRpb25zLiBBcmUgdGhleSBzZW5zaWJsZSBkZWZhdWx0cyB0aGF0IHdvcmsgd2VsbCBvdXQtb2YtdGhlLWJveCBvciBkbyB0aGV5IHJlcXVpcmUgc29tZSB1c2VyIGludGVydmVudGlvbiBvciBhZGFwdGF0aW9uIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB0aGVyZSB3aWxsIGJlIG9wdGlvbnMgZm9yIGRlYnVnZ2luZywgbG9nZ2luZywgYW5kIHRyYWNlIGZlYXR1cmVzLCB3aGljaCBpcyBjcnVjaWFsIGZvciBteSB3b3JrLiBVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYWJsZSBhc3BlY3RzIG9mIHRoZSBNVDc5MjUgZHJpdmVyIHNvIHRoYXQgSSBjYW4gYW50aWNpcGF0ZSBwb3RlbnRpYWwgcHJvYmxlbXMsIG9wdGltaXplIGl0cyB1c2UsIGFuZCBiZSByZWFkeSB0byB0cm91Ymxlc2hvb3QgYW55IGlzc3VlcyB0aGF0IGFyaXNlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSBoYXMgaW4gc3RvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzkyeF9MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFxuICAgNzpcdGNvbmZpZyBNVDc5MjVFXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gICA5Olx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXG4gIDE0Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjU0OQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyNSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgY29uZmlndXJpbmcgdGhpcyBgTVQ3OTI1YCBkcml2ZXIgYW5kIGhlcmUmIzM5O3Mgd2hhdCYjMzk7cyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBlc3NlbnRpYWxzIGVuYWJsZWQ6IGBNVDc5MjVVYCBmb3IgVVNCIGVtdWxhdGlvbiBpcyBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LiBJJiMzOTtsbCBhbHNvIGJyaW5nIGluIGBNVDc5MjVFYCBmb3IgUENJZSBzdXBwb3J0LCBldmVuIGlmIGl0JiMzOTtzIG5vdCBjdXJyZW50bHkgZW11bGF0ZWQg4oCTIGdvb2QgdG8gaGF2ZSBmb3IgZnV0dXJlIHBvc3NpYmlsaXRpZXMuIE9mIGNvdXJzZSwgYE1BQzgwMjExYCBpcyBmdW5kYW1lbnRhbCwgYW5kIHRoZW4gYFVTQmAgYW5kIGBQQ0lgIGFzIGJhc2UgZGVwZW5kZW5jaWVzLgoKSGFuZyBvbiBhIHNlY29uZOKApiBJIG5lZWQgdG8gY29uZmlybSB0aG9zZSBkZXBlbmRlbmNpZXMuIExldCBtZSBjaGVjazogYE1UNzkyNVVgIGRlcGVuZHMgb24gYm90aCBgTUFDODAyMTFgIGFuZCBgVVNCYC4gR29vZCwgbWFraW5nIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGlyZWN0IGRlcGVuZGVuY2llcyBvbiBgTVQ3OTI1VWAgd2hpbGUgSSYjMzk7bSBhdCBpdC4gQWgsIGxvb2tzIGxpa2UgYE1UNzkyeF9VU0JgIGhhcyBiZWVuIHNlbGVjdGVkOyB0aGF0IG1ha2VzIHNlbnNlLgoKUmlnaHQsIG5leHQgY3J1Y2lhbCBkZXRhaWw6IEkgKm5lZWQqIGBERUJVR19GU2AgZW5hYmxlZCB0byBhY3R1YWxseSBnZXQgdG8gdGhlIGRlYnVnZnMgZW50cmllcywgd2hpY2ggYXJlIGVzc2VudGlhbCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcy4gSXMgYERFQlVHX0ZTYCByZXF1aXJlZD8gSXQmIzM5O3MgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gc3l6a2FsbGVyLCBidXQgSSBtaWdodCBuZWVkIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSBpdCBqdXN0IHRvIGJlIHN1cmUuIEl0JiMzOTtzIGJldHRlciB0byBiZSBleHBsaWNpdC4KCldhaXQsIHRoZSBgbXQ3OTI4X3R4cHdyYCBtb2R1bGUgaXMgaW4gYGRlYnVnZnMuY2AuIE5vdywgaXMgYGRlYnVnZnMuY2AgYWx3YXlzIGNvbXBpbGVkLCBvciBpcyBpdCBjb25kaXRpb25hbD8gQmVzdCBjaGVjayB0aGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgYnVpbGQgcnVsZXMuIFRoaXMgaXMgZ2V0dGluZyB0byB0aGUgZGV0YWlscywgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBiZSBtZXRob2RpY2FsIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRcbiAgIDM6XHRvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgJiM0Mzs9IG10NzkyNS1jb21tb24ub1xuICAgNDpcdG9iai0kKENPTkZJR19NVDc5MjVFKSAmIzQzOz0gbXQ3OTI1ZS5vXG4gICA1Olx0b2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm9cbiAgIDY6XHRcbiAgIDc6XHRtdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vXG4gICA4Olx0bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuICAgOTpcdG10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vXG4gIDEwOlx0bXQ3OTI1dS15IDo9IHVzYi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgRGVidWdmcyBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2h5IGEgcGFydGljdWxhciBtb2R1bGUgaXMgbWlzYmVoYXZpbmcgYW5kIEkgdGhpbmsgaXQmIzM5O3MgcmVsYXRlZCB0byBob3cgYGRlYnVnZnNgIGlzIGhhbmRsZWQuIFJpZ2h0LCBgZGVidWdmcy5vYCBpcyAqYWx3YXlzKiBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIHRoYXQgbXVjaCBpcyBjbGVhci4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoYXQgYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAgaXMganVzdCBhIG1hY3JvLCBvciBldmVuIGEgc3R1YiwgaWYgdGhlIGBDT05GSUdfREVCVUdfRlNgIG9wdGlvbiBpc24mIzM5O3QgZW5hYmxlZC4gU28sIHRoZSBsaWtlbHkgZml4IGhlcmUgaXMgdG8gZW5zdXJlIHRoYXQgYERFQlVHX0ZTYCBpcyBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLgoKU2luY2UgdGhpcyBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGEgd2lyZWxlc3MgbW9kdWxlLCBzcGVjaWZpY2FsbHkgYSBNZWRpYVRlayBkcml2ZXIsIEkgYWxzbyBoYXZlIHRvIGNvbnNpZGVyIHRoZSBtb2R1bGUgZGVwZW5kZW5jaWVzLiBJIHN1c3BlY3QgYFdMQU5gIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgIG1pZ2h0IGJlIHJlcXVpcmVkIHRvIGV2ZW4gcmVhY2ggdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgIHRvIGJlIGNlcnRhaW4uIFRoYXQmIzM5O3MgbXkgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TWVkaWFUZWsgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTI6XHRcbiAgMTM6XHRpZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuICAxNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcJiMzNDtcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDA2NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgV0xBTiBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gY29uZmlndXJlIHRoaXMgZHJpdmVyIGNvcnJlY3RseS4gVGhlIHN5c3RlbSByZXF1aXJlcyBzdXBwb3J0IGZvciBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEFuZCwgb2YgY291cnNlLCB0aGUgZ2VuZXJpYyBgV0xBTmAgZmVhdHVyZSBpcyBlc3NlbnRpYWwsIHNvIHRoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCB0b28uIFJpZ2h0LiBOb3csIHdoZXJlIGRvIEkgZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzPyBBaCwgeWVzLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB3aXRoaW4gdGhlIE1lZGlhdGVrLXNwZWNpZmljIGRyaXZlciBzdHJ1Y3R1cmUuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IHNwZWNpZmljIGFyZWE6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgLiBJJiMzOTtsbCBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciBpbiB0aGVyZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHBhcnNlIHRoYXQgZmlsZSwgbWFraW5nIHN1cmUgdG8gbG9jYXRlIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTM5CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBhbmQgRm9jdXMgU3ltYm9scyBmb3IgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgZW52aXJvbm1lbnQgaXMgcHJvcGVybHkgc2V0IHVwLiBJdCBsb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkOiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3OTI1VWAsIGFuZCBgREVCVUdfRlNgLiBJJiMzOTtsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRob3NlIGFyZSBhbGwgaW5jbHVkZWQgaW4gbXkgYnVpbGQgY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5IHRoZSBrZXkgZm9jdXMgc3ltYm9scyB3aXRoaW4gdGhlIGNvZGUuIExvb2tzIGxpa2UgdGhlIHBhdGNoIGFkZHMgYG10NzkyOF9laHRfdHhwd3JgLCBgbXQ3OTI4X3R4cHdyYCwgYG10NzkyOF90eHB3cl90Ymxfc2V0YCwgYG10NzkyOF90eHB3cl90YmxfZ2V0YCwgYW5kIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gLiBUaGUgZmlyc3QsIGBtdDc5MjhfZWh0X3R4cHdyYCwgaXMgc3RhdGljIGlubGluZSwgc28gdGhhdCYjMzk7cyBwcm9iYWJseSBub3QgYSBwcmltYXJ5IHN5bWJvbCBmb3IgaW4tZGVwdGggYW5hbHlzaXMuIEhvd2V2ZXIsIGBtdDc5MjhfdHhwd3JgIGlzIHN0YXRpYyBidXQgaXMgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGluIGEgYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAgY2FsbCwgd2hpY2ggbWFrZXMgaXQgaW50ZXJlc3RpbmcuIGBtdDc5MjhfdHhwd3JfdGJsX3NldGAgYW5kIGBtdDc5MjhfdHhwd3JfdGJsX2dldGAgYXJlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgdGhlIHRyYW5zbWl0IHBvd2VyIHRhYmxlLCBhbmQgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgaXMgbm9uLXN0YXRpYy4gVGhlIGV4cG9ydCBzdGF0dXMgb2YgdGhlIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIHN5bWJvbCBpcyBzb21ldGhpbmcgdG8gbG9vayBpbnRvISBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGV4cG9ydGVkLCB3aGljaCB3b3VsZCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggb3RoZXIgbW9kdWxlcyBvciB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCBhbiBleWUgb24gdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI4X2dldF90eHB3cl9pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMDg9bXQ3OTI4X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIwLVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjE6XHRyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LVx1MDAzZXR4cHdyX3RibCwgdHhwd3IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyMi1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MjE0Nz1pbnQgbXQ3OTI1X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MjE3NDppbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTc1LVx0XHRcdCAgc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY5PWludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXHRcdFx0ICBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcyLVx0XHRcdCAgc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTg1MAoJCQkJCQkJb3V0cHV0OiAyNzkKCQkJCQkJCXRob3VnaHRzOiAxMTg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFRYIFBvd2VyIEluZm8gUmV0cmlldmFsIGluIHRoZSBNVDc5MjUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYG10NzkyNWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIFRYIHBvd2VyIGluZm8gcmV0cmlldmFsLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBoZXJlLiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpbW1lZGlhdGVseSBzdGFuZHMgb3V0LiBJdCYjMzk7cyAqbm90KiBzdGF0aWMsIGFuZCBpdCYjMzk7cyBub3QgaW5saW5lZCwgd2hpY2ggbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgYW5hbHlzaXMuIGBtdDc5MjhfdHhwd3JgIGlzIGFsc28gaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGEgY2FsbGJhY2sgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBzbyBpdCYjMzk7cyBwcm9iYWJseSB3b3J0aCBhIGxvb2suIGBtdDc5MjhfdHhwd3JfdGJsX3NldGAgYW5kIGBtdDc5MjhfdHhwd3JfdGJsX2dldGAgc2VlbSBsaWtlIHNtYWxsZXIsIHBvc3NpYmx5IGlubGluZWQsIGNhbGxiYWNrcywgYnV0IEkmIzM5O2xsIG5vdGUgdGhlbS4KCkkgY2hlY2tlZCBgbXQ3OTI4X3R4cHdyYCBhbmQgdmVyaWZpZWQgaXQgaXMgKm5vdCogaW5saW5lZC4gQWZ0ZXIgbGlzdGluZyB0aGVtLCBJIGNvbmNsdWRlZCB0aGF0IGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGFuZCBgbXQ3OTI4X3R4cHdyYCB3ZXJlIHRoZSBtb3N0IGltcG9ydGFudCwgYnV0IHRoZW4gSSByZWFsaXplZCBgbXQ3OTI4X3R4cHdyX3RibF9zZXRgIGFuZCBgbXQ3OTI4X3R4cHdyX3RibF9nZXRgIGFyZSBxdWl0ZSBzbWFsbCBzbyB0aGV5IGFyZSBwcm9iYWJseSBpbmxpbmVkLCBvciBqdXN0IG5vdCB0aGF0IGludGVyZXN0aW5nLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEl0JiMzOTtzIG5vdCBleHBsaWNpdGx5IGBFWFBPUlRfU1lNQk9MYCYjMzk7ZCwgYnV0IGl0JiMzOTtzIGRlZmluZWQgaW4gYG1jdS5jYCBhbmQgY2FsbGVkIGZyb20gYGRlYnVnZnMuY2AsIG1lYW5pbmcgaXQmIzM5O3MgYSBnbG9iYWwgc3ltYm9sIHdpdGhpbiB0aGUgYG10NzkyNS1jb21tb25gIG1vZHVsZS4gR29vZCB0byBrbm93LgoKTmV4dCwgSSYjMzk7bSBjaGVja2luZyB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBJIHNlZSBgTVQ3OTI1VWAsIGBNQUM4MDIxMWAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGFuZCBgREVCVUdfRlNgLiBMZXQmIzM5O3MgZmlsbCBpbiBhbnkgZGVwZW5kZW5jaWVzOiBJIGFsc28gaW5jbHVkZSBgTVQ3OTI1RWAgKFBDSWUpIGp1c3QgaW4gY2FzZS4gQWxzbywgYENGRzgwMjExYCBpcyBuZWVkZWQgYnkgYE1BQzgwMjExYC4gU28sIG15IGxpc3QgaXM6IGBXTEFOYCwgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYFVTQmAsIGBNVDc5MjVVYCwgYERFQlVHX0ZTYCwgYE1UNzkyNUVgLCBgUENJYC4KCk15IHRoaW5raW5nIG5vdyBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgY29tcG9uZW50cyBmb3IgZnV6emluZy4gVGhlIHBhdGNoIGlzIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiB0byBnZXQgVFggcG93ZXIgaW5mby4gVGhlIE1UNzkyNSBkcml2ZXIgc3VwcG9ydHMgVVNCIHZpYSBgQ09ORklHX01UNzkyNVVgLiBUaGF0IG1lYW5zIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyAoc3BlY2lmaWNhbGx5IHZoY2kpIGlzIGEgdmlhYmxlIHBhdGguIFRoZSBmdW5jdGlvbiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyB0aGUgaW1wb3J0YW50IG9uZSBiZWNhdXNlIGl0IHNlbmRzIGEgY29tbWFuZCB0byB0aGUgZGV2aWNlIGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlLiBCZWNhdXNlIHRoZSByZXNwb25zZSBwYXJzaW5nIGluIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGJsaW5kbHkgY29waWVzIGRhdGEgZnJvbSB0aGUgU0tCIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGxlbmd0aCwgdGhpcyBpcyBhIHBlcmZlY3Qgb3Bwb3J0dW5pdHkgZm9yIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMuIEEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgY291bGQgcmV0dXJuIGEgc2hvcnQgcmVzcG9uc2UsIGxlYWRpbmcgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEkgc2VlIHRoZSBjb2RlOgoKYGBgYwpldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLSZndDtkYXRhOwptZW1jcHkodHhwd3IsICZhbXA7ZXZlbnQtJmd0O3R4cHdyLCBzaXplb2YoKnR4cHdyKSk7CmBgYAoKWWVwLCBgc2tiLSZndDtkYXRhYCBnZXRzIGNhc3QgdG8gYHN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQgKmAsIGFuZCB0aGVuIGEgYG1lbWNweWAgcmVhZHMgYHNpemVvZigqdHhwd3IpYCBieXRlcyBmcm9tIGAmYW1wO2V2ZW50LSZndDt0eHB3cmAuIElmIGBza2ItJmd0O2xlbmAgaXMgbGVzcyB0aGFuIGBzaXplb2Yoc3RydWN0IG10NzkyOF90eHB3cl9ldmVudClgLCB0aGVuIHdlIGhhdmUgYSBidWZmZXIgb3Zlci1yZWFkLiBJdCYjMzk7cyBhIGNsYXNzaWMsIGV4cGxvaXRhYmxlIGJ1Zy4gVGhpcyBpcyB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLgoKSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI4X2dldF90eHB3cl9pbmZvJiMzNDssCiAgICAmIzM0O210NzkyOF90eHB3ciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGRlYnVnZnMgZW50cmllcyBhbmQgTUNVIGNvbW11bmljYXRpb24gbG9naWMgdG8gcmV0cmlldmUgVFggcG93ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBNVDc5MjggZGV2aWNlIChoYW5kbGVkIGJ5IHRoZSBtdDc5MjUgZHJpdmVyKS4gVGhlIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGZ1bmN0aW9uIHNlbmRzIGEgY29tbWFuZCB0byB0aGUgZGV2aWNlIGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlLiBTaW5jZSB0aGUgTVQ3OTI1IGRyaXZlciBzdXBwb3J0cyBVU0IgKHZpYSBgQ09ORklHX01UNzkyNVVgKSwgdGhlIGRldmljZSBhbmQgaXRzIE1DVSByZXNwb25zZXMgY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyAodmhjaSkuIFRoZSByZXNwb25zZSBwYXJzaW5nIGluIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGJsaW5kbHkgY29waWVzIGRhdGEgZnJvbSB0aGUgU0tCIHdpdGhvdXQgY2hlY2tpbmcgaXRzIGxlbmd0aCwgd2hpY2ggY2FuIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgcmV0dXJucyBhIHNob3J0IHJlc3BvbnNlLiBUaGlzIG1ha2VzIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyOF9nZXRfdHhwd3JfaW5mbyYjMzQ7LAogICAgJiMzNDttdDc5MjhfdHhwd3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBkZWJ1Z2ZzIGVudHJpZXMgYW5kIE1DVSBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIHJldHJpZXZlIFRYIHBvd2VyIGluZm9ybWF0aW9uIGZvciB0aGUgTVQ3OTI4IGRldmljZSAoaGFuZGxlZCBieSB0aGUgbXQ3OTI1IGRyaXZlcikuIFRoZSBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBmdW5jdGlvbiBzZW5kcyBhIGNvbW1hbmQgdG8gdGhlIGRldmljZSBhbmQgcGFyc2VzIHRoZSByZXNwb25zZS4gU2luY2UgdGhlIE1UNzkyNSBkcml2ZXIgc3VwcG9ydHMgVVNCICh2aWEgYENPTkZJR19NVDc5MjVVYCksIHRoZSBkZXZpY2UgYW5kIGl0cyBNQ1UgcmVzcG9uc2VzIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgKHZoY2kpLiBUaGUgcmVzcG9uc2UgcGFyc2luZyBpbiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBibGluZGx5IGNvcGllcyBkYXRhIGZyb20gdGhlIFNLQiB3aXRob3V0IGNoZWNraW5nIGl0cyBsZW5ndGgsIHdoaWNoIGNhbiBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpZiBhIG1hbGljaW91cyBVU0IgZGV2aWNlIHJldHVybnMgYSBzaG9ydCByZXNwb25zZS4gVGhpcyBtYWtlcyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTowNC40NDYzMTE1NDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTM1ODkwODExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI4X2dldF90eHB3cl9pbmZvXCIsXG4gICAgXCJtdDc5MjhfdHhwd3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGRlYnVnZnMgZW50cmllcyBhbmQgTUNVIGNvbW11bmljYXRpb24gbG9naWMgdG8gcmV0cmlldmUgVFggcG93ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBNVDc5MjggZGV2aWNlIChoYW5kbGVkIGJ5IHRoZSBtdDc5MjUgZHJpdmVyKS4gVGhlIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGZ1bmN0aW9uIHNlbmRzIGEgY29tbWFuZCB0byB0aGUgZGV2aWNlIGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlLiBTaW5jZSB0aGUgTVQ3OTI1IGRyaXZlciBzdXBwb3J0cyBVU0IgKHZpYSBgQ09ORklHX01UNzkyNVVgKSwgdGhlIGRldmljZSBhbmQgaXRzIE1DVSByZXNwb25zZXMgY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlcidzIFVTQiBmdXp6aW5nICh2aGNpKS4gVGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyBpdHMgbGVuZ3RoLCB3aGljaCBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYSBtYWxpY2lvdXMgVVNCIGRldmljZSByZXR1cm5zIGEgc2hvcnQgcmVzcG9uc2UuIFRoaXMgbWFrZXMgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTowNC40NDYzMzA3NDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzQ2OTg4MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2ZjhhZWUzODUxMTQ0YTM2NWIzNjliYTdkYWMxMzY5MmE1MWE5ZDE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjAxOjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuY1xcbmluZGV4IGQwMWZmNDlkZTQ3YWY3Li4xNjg0M2U1MDk3MTY5ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcXG5AQCAtMTc4LDYgKzE3OCwxNDcgQEAgbXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkXFxuK210NzkyOF9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpXFxuK3tcXG4rXFx0c2VxX3ByaW50ZihzLCBcXFwiJS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcXFxuXFxcIixcXG4rXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwibWNzMFxcXCIsIFxcXCJtY3MxXFxcIiwgXFxcIm1jczJcXFwiLCBcXFwibWNzM1xcXCIsIFxcXCJtY3M0XFxcIiwgXFxcIm1jczVcXFwiLFxcbitcXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIsXFxuK1xcdFxcdCAgIFxcXCJtY3MxMlxcXCIsIFxcXCJtY3MxM1xcXCIsIFxcXCJtY3MxNFxcXCIsIFxcXCJtY3MxNVxcXCIpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDEwNiwgZWh0MTA2LCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNDIsIGVodDI0MiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTYsIGVodDk5NiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4NCwgZWh0OTk2eDQsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzUyLCBlaHQyNl81MiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NF8yNDIsIGVodDQ4NF8yNDIsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODQsIGVodDk5Nl80ODQsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDJfNDg0LCBlaHQ5OTZ4Ml80ODQsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzLCBlaHQ5OTZ4MywgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG4rfVxcbitcXG4rc3RhdGljIGludFxcbittdDc5MjhfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuK1xcdHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyID0gTlVMTDtcXG4rXFx0dTggYmFuZF9pZHggPSBkZXYtXFx1MDAzZW1waHkuYmFuZF9pZHg7XFxuK1xcdGludCByZXQgPSAwO1xcbitcXG4rXFx0dHhwd3IgPSBkZXZtX2ttYWxsb2MoZGV2LVxcdTAwM2VtdDc2LmRldiwgc2l6ZW9mKCp0eHB3ciksIEdGUF9LRVJORUwpO1xcbitcXG4rXFx0aWYgKCF0eHB3cilcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbitcXHRyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LVxcdTAwM2V0eHB3cl90YmwsIHR4cHdyKTtcXG4rXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4rXFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0LyogRGlzcGxheSBwb3dlciB0YWJsZSBuYW1lIGJhc2VkIG9uIHRoZSBpbmRleCAqL1xcbitcXHRzd2l0Y2ggKGRldi1cXHUwMDNldHhwd3JfdGJsKSB7XFxuK1xcdGNhc2UgMDpcXG4rXFx0XFx0c2VxX3ByaW50ZihzLCBcXFwiUG93ZXIgVGFibGU6ICVkIChTVEFfU0lTTylcXFxcblxcXCIsIGRldi1cXHUwMDNldHhwd3JfdGJsKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgMTpcXG4rXFx0XFx0c2VxX3ByaW50ZihzLCBcXFwiUG93ZXIgVGFibGU6ICVkIChTVEFfQ0REKVxcXFxuXFxcIiwgZGV2LVxcdTAwM2V0eHB3cl90YmwpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSAyOlxcbitcXHRcXHRzZXFfcHJpbnRmKHMsIFxcXCJQb3dlciBUYWJsZTogJWQgKFNUQV9NSU1PKVxcXFxuXFxcIiwgZGV2LVxcdTAwM2V0eHB3cl90YmwpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSAzOlxcbitcXHRcXHRzZXFfcHJpbnRmKHMsIFxcXCJQb3dlciBUYWJsZTogJWQgKFAyUF9TSVNPKVxcXFxuXFxcIiwgZGV2LVxcdTAwM2V0eHB3cl90YmwpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSA0OlxcbitcXHRcXHRzZXFfcHJpbnRmKHMsIFxcXCJQb3dlciBUYWJsZTogJWQgKFAyUF9DREQpXFxcXG5cXFwiLCBkZXYtXFx1MDAzZXR4cHdyX3RibCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIDU6XFxuK1xcdFxcdHNlcV9wcmludGYocywgXFxcIlBvd2VyIFRhYmxlOiAlZCAoUDJQX01JTU8pXFxcXG5cXFwiLCBkZXYtXFx1MDAzZXR4cHdyX3RibCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRzZXFfcHJpbnRmKHMsIFxcXCJQb3dlciBUYWJsZTogJWQgKFVua25vd24pXFxcXG5cXFwiLCBkZXYtXFx1MDAzZXR4cHdyX3RibCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRzZXFfcHJpbnRmKHMsIFxcXCIlLTIycyAgJTZzICU2cyAlNnMgJTZzXFxcXG5cXFwiLFxcbitcXHRcXHQgICBcXFwiIFxcXCIsIFxcXCIxbVxcXCIsIFxcXCIybVxcXCIsIFxcXCI1bVxcXCIsIFxcXCIxMW1cXFwiKTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7XFxuK1xcbitcXHRzZXFfcHJpbnRmKHMsIFxcXCIlLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcXFxuXFxcIixcXG4rXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwiNm1cXFwiLCBcXFwiOW1cXFwiLCBcXFwiMTJtXFxcIiwgXFxcIjE4bVxcXCIsIFxcXCIyNG1cXFwiLCBcXFwiMzZtXFxcIixcXG4rXFx0XFx0ICAgXFxcIjQ4bVxcXCIsIFxcXCI1NG1cXFwiKTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0yMCwgb2ZkbTIwLCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNNDAsIG9mZG00MCwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETTgwLCBvZmRtODAsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0xNjAsIG9mZG0xNjAsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdHNlcV9wcmludGYocywgXFxcIiUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzXFxcXG5cXFwiLFxcbitcXHRcXHQgICBcXFwiIFxcXCIsIFxcXCJtY3MwXFxcIiwgXFxcIm1jczFcXFwiLCBcXFwibWNzMlxcXCIsIFxcXCJtY3MzXFxcIiwgXFxcIm1jczRcXFwiLCBcXFwibWNzNVxcXCIsXFxuK1xcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiKTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdHNlcV9wcmludGYocywgXFxcIiUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcXFxuXFxcIixcXG4rXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwibWNzMFxcXCIsIFxcXCJtY3MxXFxcIiwgXFxcIm1jczJcXFwiLCBcXFwibWNzM1xcXCIsIFxcXCJtY3M0XFxcIiwgXFxcIm1jczVcXFwiLFxcbitcXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczMyXFxcIik7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XFxuK1xcbitcXHRzZXFfcHJpbnRmKHMsIFxcXCIlLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXFxcblxcXCIsXFxuK1xcdFxcdCAgIFxcXCIgXFxcIiwgXFxcIm1jczBcXFwiLCBcXFwibWNzMVxcXCIsIFxcXCJtY3MyXFxcIiwgXFxcIm1jczNcXFwiLCBcXFwibWNzNFxcXCIsIFxcXCJtY3M1XFxcIixcXG4rXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3M4XFxcIiwgXFxcIm1jczlcXFwiLCBcXFwibWNzMTBcXFwiLCBcXFwibWNzMTFcXFwiKTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUNDAsIHZodDQwLCBiYW5kX2lkeCk7XFxuK1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpO1xcbitcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNTIsIGhlNTIsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTQ4NCwgaGU0ODQsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2eDIsIGhlOTk2eDIsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdG10NzkyOF9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcXG4rXFxuK291dDpcXG4rXFx0ZGV2bV9rZnJlZShkZXYtXFx1MDAzZW10NzYuZGV2LCB0eHB3cik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnRcXG4rbXQ3OTI4X3R4cHdyX3RibF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG4rXFxuK1xcdGRldi1cXHUwMDNldHhwd3JfdGJsID0gKHU4KXZhbDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50XFxuK210NzkyOF90eHB3cl90YmxfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbitcXG4rXFx0KnZhbCA9IGRldi1cXHUwMDNldHhwd3JfdGJsO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK0RFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3R4cHdyX3RibCwgbXQ3OTI4X3R4cHdyX3RibF9nZXQsXFxuK1xcdFxcdFxcdCBtdDc5MjhfdHhwd3JfdGJsX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbitcXG4gc3RhdGljIGludFxcbiBtdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuIHtcXG5AQCAtMzAxLDggKzQ0MiwxNCBAQCBpbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiBcXG4gXFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJhY3FcXFwiLCBkaXIsXFxuIFxcdFxcdFxcdFxcdCAgICBtdDc5MnhfcXVldWVzX2FjcSk7XFxuLVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuLVxcdFxcdFxcdFxcdCAgICBtdDc5MjVfdHhwd3IpO1xcbitcXHRpZiAoaXNfbXQ3OTI4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuK1xcdFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBtdDc5MjhfdHhwd3IpO1xcbitcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0eHBvd2VyX3RibFxcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc190eHB3cl90YmwpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInR4cG93ZXJfc2t1XFxcIiwgZGlyLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgbXQ3OTI1X3R4cHdyKTtcXG4rXFx0fVxcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0eF9zdGF0c1xcXCIsIDA0MDAsIGRpciwgZGV2LCBcXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJmd19kZWJ1Z1xcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19md19kZWJ1Zyk7XFxuIFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInJ1bnRpbWUtcG1cXFwiLCAwNjAwLCBkaXIsIGRldiwgXFx1MDAyNmZvcHNfcG0pO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLmU5OTVjNzVmZTk0ZWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5AQCAtMjE3MSw2ICsyMTcxLDMzIEBAIGludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHN0cnVjdCBtdDc5MjVfdHhwXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsXFxuK1xcdFxcdFxcdCAgc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IpXFxuK3tcXG4rXFx0c3RydWN0IG10NzkyOF90eHB3cl9ldmVudCAqZXZlbnQ7XFxuK1xcdHN0cnVjdCBtdDc5MjVfdHhwd3JfcmVxIHJlcSA9IHtcXG4rXFx0XFx0LnRhZyA9IGNwdV90b19sZTE2KFRYX1BPV0VSX1NIT1dfSU5GTyksXFxuK1xcdFxcdC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIDQpLFxcbitcXHRcXHQuY2F0ZyA9IFRYUE9XRVJfQUxMX1JBVEVfUE9XRVJfSU5GTyxcXG4rXFx0XFx0LmJhbmRfaWR4ID0gYmFuZF9pZHgsXFxuK1xcdFxcdC5wb3dlcl90YmwgPSBwb3dlcl90YmwsXFxuK1xcdH07XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKFRYUE9XRVIpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLVxcdTAwM2VkYXRhO1xcbitcXHRtZW1jcHkodHhwd3IsIFxcdTAwMjZldmVudC1cXHUwMDNldHhwd3IsIHNpemVvZigqdHhwd3IpKTtcXG4rXFxuK1xcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBpbnQgbXQ3OTI1X21jdV9zZXRfc25pZmZlcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRcXHRcXHQgICBib29sIGVuYWJsZSlcXG4ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXFxuaW5kZXggMjkzZjE3M2IyM2RkYWYuLmU5ZDQ3NGI4ODA3MDA0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcXG5AQCAtNjksNyArNjksNyBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX3JlcSB7XFxuIFxcdHU4IGZvcm1hdF9pZDtcXG4gXFx0dTggY2F0ZztcXG4gXFx0dTggYmFuZF9pZHg7XFxuLVxcdHU4IF9yc3YxO1xcbitcXHR1OCBwb3dlcl90Ymw7XFxuIH0gX19wYWNrZWQ7XFxuIFxcbiBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX2V2ZW50IHtcXG5AQCAtOTAsNiArOTAsMjQgQEAgc3RydWN0IG10NzkyNV90eHB3cl9ldmVudCB7XFxuIFxcdHU4IHJzdjE7XFxuIH0gX19wYWNrZWQ7XFxuIFxcbitzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50IHtcXG4rXFx0dTggcnN2WzRdO1xcbitcXHRfX2xlMTYgdGFnO1xcbitcXHRfX2xlMTYgbGVuO1xcbitcXG4rXFx0dTggY2F0ZztcXG4rXFx0dTggYmFuZF9pZHg7XFxuK1xcdHU4IGNoX2JhbmQ7XFxuK1xcdHU4IGZvcm1hdDsgLyogMDpMZWdhY3ksIDE6SEUgKi9cXG4rXFxuK1xcdC8qIFJhdGUgcG93ZXIgaW5mbyAqL1xcbitcXHRzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHR4cHdyO1xcbitcXG4rXFx0czggcHdyX21heDtcXG4rXFx0czggcHdyX21pbjtcXG4rXFx0dTggcnN2MTtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuIGVudW0ge1xcbiBcXHRUTV9TV0lUQ0hfTU9ERSxcXG4gXFx0VE1fU0VUX0FUX0NNRCxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxcbmluZGV4IDRjYzI1OTQxOGFmY2E4Li5iNTMzMzBhMjgyNjhkZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXFxuQEAgLTI1Miw2ICsyNTIsNDMgQEAgc3RydWN0IG10NzkyNV90eHB3ciB7XFxuIFxcdHM4IGVodDk5NngzXzQ4NFsxNl1bMl07XFxuIH07XFxuIFxcbitzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHtcXG4rXFx0czggY2NrWzRdWzJdO1xcbitcXHRzOCBvZmRtMjBbOF1bMl07XFxuK1xcdHM4IG9mZG00MFs4XVsyXTtcXG4rXFx0czggb2ZkbTgwWzhdWzJdO1xcbitcXHRzOCBvZmRtMTYwWzhdWzJdO1xcbitcXHRzOCBodDIwWzhdWzJdO1xcbitcXHRzOCBodDQwWzldWzJdO1xcbitcXHRzOCB2aHQyMFsxMl1bMl07XFxuK1xcdHM4IHZodDQwWzEyXVsyXTtcXG4rXFx0czggdmh0ODBbMTJdWzJdO1xcbitcXHRzOCB2aHQxNjBbMTJdWzJdO1xcbitcXHRzOCBoZTI2WzEyXVsyXTtcXG4rXFx0czggaGU1MlsxMl1bMl07XFxuK1xcdHM4IGhlMTA2WzEyXVsyXTtcXG4rXFx0czggaGUyNDJbMTJdWzJdO1xcbitcXHRzOCBoZTQ4NFsxMl1bMl07XFxuK1xcdHM4IGhlOTk2WzEyXVsyXTtcXG4rXFx0czggaGU5OTZ4MlsxMl1bMl07XFxuK1xcdHM4IGVodDI2WzE2XVsyXTtcXG4rXFx0czggZWh0NTJbMTZdWzJdO1xcbitcXHRzOCBlaHQxMDZbMTZdWzJdO1xcbitcXHRzOCBlaHQyNDJbMTZdWzJdO1xcbitcXHRzOCBlaHQ0ODRbMTZdWzJdO1xcbitcXHRzOCBlaHQ5OTZbMTZdWzJdO1xcbitcXHRzOCBlaHQ5OTZ4MlsxNl1bMl07XFxuK1xcdHM4IGVodDk5Nng0WzE2XVsyXTtcXG4rXFx0czggZWh0MjZfNTJbMTZdWzJdO1xcbitcXHRzOCBlaHQyNl8xMDZbMTZdWzJdO1xcbitcXHRzOCBlaHQ0ODRfMjQyWzE2XVsyXTtcXG4rXFx0czggZWh0OTk2XzQ4NFsxNl1bMl07XFxuK1xcdHM4IGVodDk5Nl80ODRfMjQyWzE2XVsyXTtcXG4rXFx0czggZWh0OTk2eDJfNDg0WzE2XVsyXTtcXG4rXFx0czggZWh0OTk2eDNbMTZdWzJdO1xcbitcXHRzOCBlaHQ5OTZ4M180ODRbMTZdWzJdO1xcbit9O1xcbitcXG4gc3RhdGljIGlubGluZSB1OCBtdDc5MjdfYmFuZF9pZHgoZW51bSBubDgwMjExX2JhbmQgYmFuZClcXG4ge1xcbiBcXHRzd2l0Y2ggKGJhbmQpIHtcXG5AQCAtMzMxLDYgKzM2OCw4IEBAIGludCBtdDc5MjVfbWN1X3VuaV9ic3NfcHMoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4gdm9pZCBtdDc5MjVfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBpbnQgbXQ3OTI1X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyKTtcXG4raW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxcbitcXHRcXHRcXHQgIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyKTtcXG4gdm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTtcXG4gdm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcXG5pbmRleCA3MDA3M2I0M2FmNTQzMS4uYmVmMmM2ZWRiYTQ4ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcXG5AQCAtMjY3LDYgKzI2Nyw3IEBAIHN0cnVjdCBtdDc5MnhfZGV2IHtcXG4gXFxuIFxcdHU4IGZ3X2RlYnVnO1xcbiBcXHR1OCBmd19mZWF0dXJlcztcXG4rXFx0dTggdHhwd3JfdGJsO1xcbiBcXG4gXFx0c3RydWN0IG10NzZfY29ubmFjX3BtIHBtO1xcbiBcXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfY29yZWR1bXAgY29yZWR1bXA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjA1Ljc4MzIzOTY0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk0MDIxOTY4MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjhfZ2V0X3R4cHdyX2luZm9cIixcbiAgICBcIm10NzkyOF90eHB3clwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZGVidWdmcyBlbnRyaWVzIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiBsb2dpYyB0byByZXRyaWV2ZSBUWCBwb3dlciBpbmZvcm1hdGlvbiBmb3IgdGhlIE1UNzkyOCBkZXZpY2UgKGhhbmRsZWQgYnkgdGhlIG10NzkyNSBkcml2ZXIpLiBUaGUgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgZnVuY3Rpb24gc2VuZHMgYSBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UuIFNpbmNlIHRoZSBNVDc5MjUgZHJpdmVyIHN1cHBvcnRzIFVTQiAodmlhIGBDT05GSUdfTVQ3OTI1VWApLCB0aGUgZGV2aWNlIGFuZCBpdHMgTUNVIHJlc3BvbnNlcyBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgKHZoY2kpLiBUaGUgcmVzcG9uc2UgcGFyc2luZyBpbiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBibGluZGx5IGNvcGllcyBkYXRhIGZyb20gdGhlIFNLQiB3aXRob3V0IGNoZWNraW5nIGl0cyBsZW5ndGgsIHdoaWNoIGNhbiBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpZiBhIG1hbGljaW91cyBVU0IgZGV2aWNlIHJldHVybnMgYSBzaG9ydCByZXNwb25zZS4gVGhpcyBtYWtlcyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZmOGFlZTM4NTExNDRhMzY1YjM2OWJhN2RhYzEzNjkyYTUxYTlkMTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjowMTowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuY1xuaW5kZXggZDAxZmY0OWRlNDdhZjcuLjE2ODQzZTUwOTcxNjllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcbkBAIC0xNzgsNiArMTc4LDE0NyBAQCBtdDc5MjVfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkXG4rbXQ3OTI4X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbit7XG4rXHRzZXFfcHJpbnRmKHMsIFwiJS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcblwiLFxuK1x0XHQgICBcIiBcIiwgXCJtY3MwXCIsIFwibWNzMVwiLCBcIm1jczJcIiwgXCJtY3MzXCIsIFwibWNzNFwiLCBcIm1jczVcIixcbitcdFx0ICAgXCJtY3M2XCIsIFwibWNzN1wiLCBcIm1jczhcIiwgXCJtY3M5XCIsIFwibWNzMTBcIiwgXCJtY3MxMVwiLFxuK1x0XHQgICBcIm1jczEyXCIsIFwibWNzMTNcIiwgXCJtY3MxNFwiLCBcIm1jczE1XCIpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDUyLCBlaHQ1MiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDEwNiwgZWh0MTA2LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjQyLCBlaHQyNDIsIGJhbmRfaWR4KTtcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODQsIGVodDQ4NCwgYmFuZF9pZHgpO1xuK1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcbit9XG4rXG4rc3RhdGljIGludFxuK210NzkyOF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4re1xuK1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuK1x0c3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IgPSBOVUxMO1xuK1x0dTggYmFuZF9pZHggPSBkZXYtXHUwMDNlbXBoeS5iYW5kX2lkeDtcbitcdGludCByZXQgPSAwO1xuK1xuK1x0dHhwd3IgPSBkZXZtX2ttYWxsb2MoZGV2LVx1MDAzZW10NzYuZGV2LCBzaXplb2YoKnR4cHdyKSwgR0ZQX0tFUk5FTCk7XG4rXG4rXHRpZiAoIXR4cHdyKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG4rXHRyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LVx1MDAzZXR4cHdyX3RibCwgdHhwd3IpO1xuK1x0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbitcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0LyogRGlzcGxheSBwb3dlciB0YWJsZSBuYW1lIGJhc2VkIG9uIHRoZSBpbmRleCAqL1xuK1x0c3dpdGNoIChkZXYtXHUwMDNldHhwd3JfdGJsKSB7XG4rXHRjYXNlIDA6XG4rXHRcdHNlcV9wcmludGYocywgXCJQb3dlciBUYWJsZTogJWQgKFNUQV9TSVNPKVxcblwiLCBkZXYtXHUwMDNldHhwd3JfdGJsKTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIDE6XG4rXHRcdHNlcV9wcmludGYocywgXCJQb3dlciBUYWJsZTogJWQgKFNUQV9DREQpXFxuXCIsIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgMjpcbitcdFx0c2VxX3ByaW50ZihzLCBcIlBvd2VyIFRhYmxlOiAlZCAoU1RBX01JTU8pXFxuXCIsIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgMzpcbitcdFx0c2VxX3ByaW50ZihzLCBcIlBvd2VyIFRhYmxlOiAlZCAoUDJQX1NJU08pXFxuXCIsIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgNDpcbitcdFx0c2VxX3ByaW50ZihzLCBcIlBvd2VyIFRhYmxlOiAlZCAoUDJQX0NERClcXG5cIiwgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSA1OlxuK1x0XHRzZXFfcHJpbnRmKHMsIFwiUG93ZXIgVGFibGU6ICVkIChQMlBfTUlNTylcXG5cIiwgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0c2VxX3ByaW50ZihzLCBcIlBvd2VyIFRhYmxlOiAlZCAoVW5rbm93bilcXG5cIiwgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK1xuK1x0c2VxX3ByaW50ZihzLCBcIiUtMjJzICAlNnMgJTZzICU2cyAlNnNcXG5cIixcbitcdFx0ICAgXCIgXCIsIFwiMW1cIiwgXCIybVwiLCBcIjVtXCIsIFwiMTFtXCIpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7XG4rXG4rXHRzZXFfcHJpbnRmKHMsIFwiJS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cIixcbitcdFx0ICAgXCIgXCIsIFwiNm1cIiwgXCI5bVwiLCBcIjEybVwiLCBcIjE4bVwiLCBcIjI0bVwiLCBcIjM2bVwiLFxuK1x0XHQgICBcIjQ4bVwiLCBcIjU0bVwiKTtcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMjAsIG9mZG0yMCwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE00MCwgb2ZkbTQwLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETTgwLCBvZmRtODAsIGJhbmRfaWR4KTtcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMTYwLCBvZmRtMTYwLCBiYW5kX2lkeCk7XG4rXG4rXHRzZXFfcHJpbnRmKHMsIFwiJS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cIixcbitcdFx0ICAgXCIgXCIsIFwibWNzMFwiLCBcIm1jczFcIiwgXCJtY3MyXCIsIFwibWNzM1wiLCBcIm1jczRcIiwgXCJtY3M1XCIsXG4rXHRcdCAgIFwibWNzNlwiLCBcIm1jczdcIik7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xuK1xuK1x0c2VxX3ByaW50ZihzLCBcIiUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcblwiLFxuK1x0XHQgICBcIiBcIiwgXCJtY3MwXCIsIFwibWNzMVwiLCBcIm1jczJcIiwgXCJtY3MzXCIsIFwibWNzNFwiLCBcIm1jczVcIixcbitcdFx0ICAgXCJtY3M2XCIsIFwibWNzN1wiLCBcIm1jczMyXCIpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcbitcbitcdHNlcV9wcmludGYocywgXCIlLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cIixcbitcdFx0ICAgXCIgXCIsIFwibWNzMFwiLCBcIm1jczFcIiwgXCJtY3MyXCIsIFwibWNzM1wiLCBcIm1jczRcIiwgXCJtY3M1XCIsXG4rXHRcdCAgIFwibWNzNlwiLCBcIm1jczdcIiwgXCJtY3M4XCIsIFwibWNzOVwiLCBcIm1jczEwXCIsIFwibWNzMTFcIik7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMjAsIHZodDIwLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUNDAsIHZodDQwLCBiYW5kX2lkeCk7XG4rXG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcbitcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpO1xuK1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2LCBoZTk5NiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2eDIsIGhlOTk2eDIsIGJhbmRfaWR4KTtcbitcbitcdG10NzkyOF9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcbitcbitvdXQ6XG4rXHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgdHhwd3IpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludFxuK210NzkyOF90eHB3cl90Ymxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4re1xuK1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG4rXG4rXHRkZXYtXHUwMDNldHhwd3JfdGJsID0gKHU4KXZhbDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50XG4rbXQ3OTI4X3R4cHdyX3RibF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4re1xuK1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG4rXG4rXHQqdmFsID0gZGV2LVx1MDAzZXR4cHdyX3RibDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc190eHB3cl90YmwsIG10NzkyOF90eHB3cl90YmxfZ2V0LFxuK1x0XHRcdCBtdDc5MjhfdHhwd3JfdGJsX3NldCwgXCIlbGxkXFxuXCIpO1xuK1xuIHN0YXRpYyBpbnRcbiBtdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4ge1xuQEAgLTMwMSw4ICs0NDIsMTQgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwiYWNxXCIsIGRpcixcbiBcdFx0XHRcdCAgICBtdDc5MnhfcXVldWVzX2FjcSk7XG4tXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcInR4cG93ZXJfc2t1XCIsIGRpcixcbi1cdFx0XHRcdCAgICBtdDc5MjVfdHhwd3IpO1xuK1x0aWYgKGlzX210NzkyOChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbitcdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCJ0eHBvd2VyX3NrdVwiLCBkaXIsXG4rXHRcdFx0XHRcdCAgICBtdDc5MjhfdHhwd3IpO1xuK1x0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwidHhwb3dlcl90YmxcIiwgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfdHhwd3JfdGJsKTtcbitcdH0gZWxzZSB7XG4rXHRcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwidHhwb3dlcl9za3VcIiwgZGlyLFxuK1x0XHRcdFx0XHQgICAgbXQ3OTI1X3R4cHdyKTtcbitcdH1cbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJ0eF9zdGF0c1wiLCAwNDAwLCBkaXIsIGRldiwgXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcImZ3X2RlYnVnXCIsIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX2Z3X2RlYnVnKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJydW50aW1lLXBtXCIsIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX3BtKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBlOTRmYTU0NGZmMjA3Ny4uZTk5NWM3NWZlOTRlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC0yMTcxLDYgKzIxNzEsMzMgQEAgaW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgc3RydWN0IG10NzkyNV90eHBcbiBcdHJldHVybiAwO1xuIH1cbiBcbitpbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsXG4rXHRcdFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cilcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICpldmVudDtcbitcdHN0cnVjdCBtdDc5MjVfdHhwd3JfcmVxIHJlcSA9IHtcbitcdFx0LnRhZyA9IGNwdV90b19sZTE2KFRYX1BPV0VSX1NIT1dfSU5GTyksXG4rXHRcdC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIDQpLFxuK1x0XHQuY2F0ZyA9IFRYUE9XRVJfQUxMX1JBVEVfUE9XRVJfSU5GTyxcbitcdFx0LmJhbmRfaWR4ID0gYmFuZF9pZHgsXG4rXHRcdC5wb3dlcl90YmwgPSBwb3dlcl90YmwsXG4rXHR9O1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChUWFBPV0VSKSxcbitcdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLVx1MDAzZWRhdGE7XG4rXHRtZW1jcHkodHhwd3IsIFx1MDAyNmV2ZW50LVx1MDAzZXR4cHdyLCBzaXplb2YoKnR4cHdyKSk7XG4rXG4rXHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gaW50IG10NzkyNV9tY3Vfc2V0X3NuaWZmZXIoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdFx0XHQgICBib29sIGVuYWJsZSlcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuaW5kZXggMjkzZjE3M2IyM2RkYWYuLmU5ZDQ3NGI4ODA3MDA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXG5AQCAtNjksNyArNjksNyBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX3JlcSB7XG4gXHR1OCBmb3JtYXRfaWQ7XG4gXHR1OCBjYXRnO1xuIFx0dTggYmFuZF9pZHg7XG4tXHR1OCBfcnN2MTtcbitcdHU4IHBvd2VyX3RibDtcbiB9IF9fcGFja2VkO1xuIFxuIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQge1xuQEAgLTkwLDYgKzkwLDI0IEBAIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQge1xuIFx0dTggcnN2MTtcbiB9IF9fcGFja2VkO1xuIFxuK3N0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQge1xuK1x0dTggcnN2WzRdO1xuK1x0X19sZTE2IHRhZztcbitcdF9fbGUxNiBsZW47XG4rXG4rXHR1OCBjYXRnO1xuK1x0dTggYmFuZF9pZHg7XG4rXHR1OCBjaF9iYW5kO1xuK1x0dTggZm9ybWF0OyAvKiAwOkxlZ2FjeSwgMTpIRSAqL1xuK1xuK1x0LyogUmF0ZSBwb3dlciBpbmZvICovXG4rXHRzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHR4cHdyO1xuK1xuK1x0czggcHdyX21heDtcbitcdHM4IHB3cl9taW47XG4rXHR1OCByc3YxO1xuK30gX19wYWNrZWQ7XG4rXG4gZW51bSB7XG4gXHRUTV9TV0lUQ0hfTU9ERSxcbiBcdFRNX1NFVF9BVF9DTUQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxuaW5kZXggNGNjMjU5NDE4YWZjYTguLmI1MzMzMGEyODI2OGRmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMjUyLDYgKzI1Miw0MyBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyIHtcbiBcdHM4IGVodDk5NngzXzQ4NFsxNl1bMl07XG4gfTtcbiBcbitzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHtcbitcdHM4IGNja1s0XVsyXTtcbitcdHM4IG9mZG0yMFs4XVsyXTtcbitcdHM4IG9mZG00MFs4XVsyXTtcbitcdHM4IG9mZG04MFs4XVsyXTtcbitcdHM4IG9mZG0xNjBbOF1bMl07XG4rXHRzOCBodDIwWzhdWzJdO1xuK1x0czggaHQ0MFs5XVsyXTtcbitcdHM4IHZodDIwWzEyXVsyXTtcbitcdHM4IHZodDQwWzEyXVsyXTtcbitcdHM4IHZodDgwWzEyXVsyXTtcbitcdHM4IHZodDE2MFsxMl1bMl07XG4rXHRzOCBoZTI2WzEyXVsyXTtcbitcdHM4IGhlNTJbMTJdWzJdO1xuK1x0czggaGUxMDZbMTJdWzJdO1xuK1x0czggaGUyNDJbMTJdWzJdO1xuK1x0czggaGU0ODRbMTJdWzJdO1xuK1x0czggaGU5OTZbMTJdWzJdO1xuK1x0czggaGU5OTZ4MlsxMl1bMl07XG4rXHRzOCBlaHQyNlsxNl1bMl07XG4rXHRzOCBlaHQ1MlsxNl1bMl07XG4rXHRzOCBlaHQxMDZbMTZdWzJdO1xuK1x0czggZWh0MjQyWzE2XVsyXTtcbitcdHM4IGVodDQ4NFsxNl1bMl07XG4rXHRzOCBlaHQ5OTZbMTZdWzJdO1xuK1x0czggZWh0OTk2eDJbMTZdWzJdO1xuK1x0czggZWh0OTk2eDRbMTZdWzJdO1xuK1x0czggZWh0MjZfNTJbMTZdWzJdO1xuK1x0czggZWh0MjZfMTA2WzE2XVsyXTtcbitcdHM4IGVodDQ4NF8yNDJbMTZdWzJdO1xuK1x0czggZWh0OTk2XzQ4NFsxNl1bMl07XG4rXHRzOCBlaHQ5OTZfNDg0XzI0MlsxNl1bMl07XG4rXHRzOCBlaHQ5OTZ4Ml80ODRbMTZdWzJdO1xuK1x0czggZWh0OTk2eDNbMTZdWzJdO1xuK1x0czggZWh0OTk2eDNfNDg0WzE2XVsyXTtcbit9O1xuK1xuIHN0YXRpYyBpbmxpbmUgdTggbXQ3OTI3X2JhbmRfaWR4KGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXG4ge1xuIFx0c3dpdGNoIChiYW5kKSB7XG5AQCAtMzMxLDYgKzM2OCw4IEBAIGludCBtdDc5MjVfbWN1X3VuaV9ic3NfcHMoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbiB2b2lkIG10NzkyNV9jb3JlZHVtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gaW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCxcbiBcdFx0XHQgIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyKTtcbitpbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsXG4rXHRcdFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cik7XG4gdm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4gXHRcdFx0XHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeCk7XG4gdm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuaW5kZXggNzAwNzNiNDNhZjU0MzEuLmJlZjJjNmVkYmE0ODgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuQEAgLTI2Nyw2ICsyNjcsNyBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7XG4gXG4gXHR1OCBmd19kZWJ1ZztcbiBcdHU4IGZ3X2ZlYXR1cmVzO1xuK1x0dTggdHhwd3JfdGJsO1xuIFxuIFx0c3RydWN0IG10NzZfY29ubmFjX3BtIHBtO1xuIFx0c3RydWN0IG10NzZfY29ubmFjX2NvcmVkdW1wIGNvcmVkdW1wO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MDUuNzgzMjQyNzI3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI1NzgyMjI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIE1UNzYgVFggUG93ZXIgRGVidWdmcyBQYXRjaGVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgZm9yIHRoZSBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBgbXQ3OTI1YCBkcml2ZXIgYW5kIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMgdG8gZXhwb3NlIFRYIHBvd2VyIGluZm9ybWF0aW9uIGZvciBgbXQ3OTI4YC4gVGhlIGFkZGVkIGZ1bmN0aW9ucyBhcmUgYWxsIGFib3V0IGdldHRpbmcgYW5kIHNldHRpbmcgVFggcG93ZXIgdGFibGVzIGFuZCBzZW5kaW5nIGNvbW1hbmRzIHRvIHRoZSBNZWRpYVRlayBNQ1UsIHByaW1hcmlseSBmb3IgdXNlIHdpdGggdGhlIGRlYnVnZnMgZW50cmllcyBgdHhwb3dlcl9za3VgIGFuZCBgdHhwb3dlcl90YmxgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGV2ZW4gZnV6ei13b3J0aHkuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGludGVyYWN0aW5nIHdpdGggdGhpcyBNQ1UgdG8gcmV0cmlldmUgVFggcG93ZXIgZGV0YWlscy4gVGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgaXMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIHdoaWNoIGNhbGxzIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCB0byBzZW5kIGEgY29tbWFuZC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjaGVjayBpZiB0aGlzIGlzIHJlYWNoYWJsZS4gUmVhZGluZyBmcm9tIGRlYnVnZnMgaXMgYSBkZWZpbml0ZSB5ZXMuIEJ1dCwgaXMgaXQgd29ydGggdGhlIGVmZm9ydD9cblxuVGhlIHByb21wdCBoYXMgY2xlYXIgY3JpdGVyaWEuIEl0IHN1Z2dlc3RzIGF2b2lkaW5nIHBhdGNoZXMgY29udGFpbmluZyBvbmx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcgb3IgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uIGBtdDc2YCBpcyBhIHBoeXNpY2FsIFdpLUZpIGRyaXZlciwgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGVzZSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdHJhbnNsYXRlIHRvIGEgdmlydHVhbGl6ZWQgc2V0dGluZy4gYG1hYzgwMjExX2h3c2ltYCBpc24ndCByZWxldmFudCwgaXQgZG9lc24ndCBzaW11bGF0ZSB0aGUgYG10NzZgIGhhcmR3YXJlLiBCdXQgd2FpdCwgYG10NzZgIGhhcyBib3RoIFVTQiBhbmQgUENJZSBkcml2ZXJzLiBDYW4gSSBlbXVsYXRlIGl0IHNvbWVob3c/IE5vdCB3aXRoIFVTQiBnYWRnZXQsIGl0J3MgZm9yIHRoZSBkZXZpY2Ugc2lkZS4gV2FpdCwgc3l6a2FsbGVyIGhhcyB2aGNpIGZvciBVU0IgZGV2aWNlIGVtdWxhdGlvbi4gU28gVVNCIFdpLUZpIGRvbmdsZXMgY2FuIGJlIGVtdWxhdGVkIVxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgaXMgYG10NzkyNWAgYSBVU0IgZGV2aWNlPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHNwZWNpZmljcyB0byBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZXMgYXJlIGluZGVlZCB0ZXN0YWJsZSB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMToxMy4wNDEwNjgzOTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4NTU3OTMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzI1OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSArPSBtdDc5MjUtY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc5MjVFKSArPSBtdDc5MjVlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSArPSBtdDc5MjV1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjc6bXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjg6bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6OTptdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz03PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcXHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Mzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cXHRkZXYtXFx1MDAzZWZ3X2RlYnVnID0gKHU4KXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XFx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVxcdTAwM2Vmd19kZWJ1Zyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NjQ6XFx0XFx0XFx0IG10NzkyNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy03MC1cXHRcXHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODQtKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1OlxcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFxcXCIgKHRtYWMpXFxcIixcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVxcdFxcdFxcdCAgICAgIHR4cHdyLVxcdTAwM2VyYXRlLFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz05MT1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVxcdFxcdCAgIFxcXCJtY3MxMlxcXCIsIFxcXCJtY3MxM1xcXCIsIFxcXCJtY3MxNFxcXCIsIFxcXCJtY3MxNVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo5ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTg6bXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcXHRzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cXHR1OCBiYW5kX2lkeCA9IGRldi1cXHUwMDNlbXBoeS5iYW5kX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlxcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMi1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzOC1cXHRcXHQgICBcXFwiIFxcXCIsIFxcXCIxbVxcXCIsIFxcXCIybVxcXCIsIFxcXCI1bVxcXCIsIFxcXCIxMW1cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVxcdFxcdCAgIFxcXCI0OG1cXFwiLCBcXFwiNTRtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDIwLCBodDIwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTMtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3MzMlxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTc0OlxcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4Mj1tdDc5MjhfZWh0X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IsIHU4IGJhbmRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE4Ny1cXHRcXHQgICBcXFwibWNzMTJcXFwiLCBcXFwibWNzMTNcXFwiLCBcXFwibWNzMTRcXFwiLCBcXFwibWNzMTVcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTg4OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNiwgZWh0MjYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTg5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTkwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5NTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5NjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwMzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwNDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMDg9bXQ3OTI4X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTMtXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwiMW1cXFwiLCBcXFwiMm1cXFwiLCBcXFwiNW1cXFwiLCBcXFwiMTFtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI1NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2ssIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1OC1cXHRcXHQgICBcXFwiNDhtXFxcIiwgXFxcIjU0bVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNTk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0yMCwgb2ZkbTIwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETTQwLCBvZmRtNDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNODAsIG9mZG04MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0xNjAsIG9mZG0xNjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2Ni1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjcxLVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiLCBcXFwibWNzMzJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjcyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzYtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3M4XFxcIiwgXFxcIm1jczlcXFwiLCBcXFwibWNzMTBcXFwiLCBcXFwibWNzMTFcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc3OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc4OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjgzOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODY6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODc6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI5MDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MzIyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzIzOm10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNDYtXFx0cG0tXFx1MDAzZWVuYWJsZV91c2VyID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNDc6XFx0bXQ3OTI1X3NldF9ydW50aW1lX3BtKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM0OC1cXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHBtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0zNTU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNTY6bXQ3OTI1X3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2NTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM2Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2ODptdDc5MjVfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zODMtXFx0cG0tXFx1MDAzZWRzX2VuYWJsZSA9IGVuYWJsZSBcXHUwMDI2XFx1MDAyNiAhbW9uaXRvcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzg0OlxcdG10NzkyNV9tY3Vfc2V0X2RlZXBfc2xlZXAoZGV2LCBwbS1cXHUwMDNlZHNfZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzg1LW91dDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0zOTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTI6bXQ3OTI1X2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDAxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjVfZGVlcF9zbGVlcF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQwMjpcXHRcXHRcXHQgbXQ3OTI1X2RlZXBfc2xlZXBfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9NDA0PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0MDc6c3RhdGljIGludCBtdDc5MjVfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQxOS1cXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0MjA6XFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9jaGlwX2NvbmZpZyhkZXYsIFxcXCJhc3NlcnRcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDIxLVxcdFxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0Mjg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDMwOmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQzMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUwLVxcdFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ1MTpcXHRcXHRcXHRcXHRcXHQgICAgbXQ3OTI1X3R4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9maXJtd2FyZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXFxcInJlZ2QuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ6c3RhdGljIHNzaXplX3QgbXQ3OTI1X3RoZXJtYWxfdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1OlxcdFxcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYtXFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjM5OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptdDc5MjVfaHdtb25fYXR0cnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXFx0XFx1MDAyNnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9pbnB1dC5kZXZfYXR0ci5hdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQyLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQzOkFUVFJJQlVURV9HUk9VUFMobXQ3OTI1X2h3bW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQ1OnN0YXRpYyBpbnQgbXQ3OTI1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjU0OlxcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcXHUwMDI2d2lwaHktXFx1MDAzZWRldiwgR0ZQX0tFUk5FTCwgXFxcIm10NzkyNV8lc1xcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU1LVxcdFxcdFxcdCAgICAgIHdpcGh5X25hbWUod2lwaHkpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01OS1cXHRod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBuYW1lLCBwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjYwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBtdDc5MjVfaHdtb25fZ3JvdXBzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhod21vbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjY0OnN0YXRpYyB2b2lkIG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzMtXFx0XFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXFx1MDAyNiBHRU5NQVNLKDcsIDApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NzQ6XFx0XFx0bXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShkZXYsIGlkeCwgcmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1UNzkyeF9XVEJMX1NJWkU7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6ODc6XFx0XFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTg4LVxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5MjpcXHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTEyOlxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2VlcHJvbShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjExNjpcXHRyZXQgPSBtdDc5MjVfbWFjX2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVxcdGlmIChpc19tdDc5MjcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTIxOlxcdFxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMzM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTJ4X01DVV9JTklUX1JFVFJZX0NPVU5UOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQwOlxcdFxcdHJldCA9IF9fbXQ3OTI1X2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQxLVxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTU1OnN0YXRpYyB2b2lkIG10NzkyNV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTYxOlxcdHJldCA9IG10NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2NS1cXHRtdDc2X3NldF9zdHJlYW1fY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTY2OlxcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Ny1cXHRtdDc5MnhfY29uZmlnX21hY19hZGRyX2xpc3QoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjk6XFx0cmV0ID0gbXQ3OTI1X2luaXRfbWxvX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTcwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE4MjpcXHRyZXQgPSBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4My1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxODg6XFx0cmV0ID0gbXQ3OTI1X3RoZXJtYWxfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTk0OlxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjAzOlxcdG10NzkyNV9tY3Vfc2V0X2RlZXBfc2xlZXAoZGV2LCBkZXYtXFx1MDAzZXBtLmRzX2VuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjA2OmludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE2LVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTc6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmssIG10NzkyNV9tbG9fcG1fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcG0ud2FrZV93b3JrLCBtdDc5MnhfcG1fd2FrZV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjQtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5tYWNfd29yaywgbXQ3OTJ4X21hY193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyNV9zY2FuX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMjY6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlY29yZWR1bXAud29yaywgbXQ3OTI1X2NvcmVkdW1wX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjctI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyODpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaXB2Nl9uc193b3JrLCBtdDc5MjVfc2V0X2lwdjZfbnNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyOS1cXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWlwdjZfbnNfbGlzdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzQ6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmssIG10NzkyNV9tYWNfcmVzZXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzNTpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrLCBtdDc5MjVfaW5pdF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzc6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTI1X3JvY193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjM4LVxcdHRpbWVyX3NldHVwKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5yb2NfdGltZXIsIG10NzkyeF9yb2NfdGltZXIsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjY1OlxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlcmVnX25vdGlmaWVyID0gbXQ3OTI1X3JlZ2Rfbm90aWZpZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2Ni1cXHRkZXYtXFx1MDAzZW1waHkuc2JhbmRfMmcuc2JhbmQuaHRfY2FwLmNhcCB8PVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI5MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RpbWVrZWVwaW5nLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzojaW5jbHVkZSBcXFwibXQ3OTI1LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOC0jaW5jbHVkZSBcXFwiLi4vZG1hLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzpib29sIG10NzkyNV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MjI6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19zdGFfcG9sbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU4LVxcdFxcdGlkeCA9IG1saW5rLVxcdTAwM2V3Y2lkLmlkeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo1OTpcXHRcXHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgTVRfV1RCTF9BQzBfQ1RUX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy03Ny1cXHRcXHRpZiAoY2xlYXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3ODpcXHRcXHRcXHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEyMzpcXHRcXHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgNik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI0LVxcdFxcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjUtXFx0XFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgUkFURV9JTkZPX0ZMQUdTX0VIVF9NQ1MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjY6XFx0XFx0XFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNy1cXHRcXHRcXHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDEtXFx0XFx0LyogZ2V0IHNpZ25hbCBzdHJlbmd0aCBvZiByZXNwIGZyYW1lcyAoQ1RTL0JBL0FDSykgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDI6XFx0XFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDM0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDMtXFx0XFx0dmFsID0gbXQ3Nl9ycihkZXYsIGFkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1Nzp2b2lkIG10NzkyNV9tYWNfc2V0X2ZpeGVkX3JhdGVfdGFibGUoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNTgtXFx0XFx0XFx0XFx0ICAgICB1OCB0YmxfaWR4LCB1MTYgcmF0ZV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjgtLyogVGhlIEhXIGRvZXMgbm90IHRyYW5zbGF0ZSB0aGUgbWFjIGhlYWRlciB0byA4MDIuMyBmb3IgbWVzaCBwb2ludCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2OTpzdGF0aWMgaW50IG10NzkyNV9yZXZlcnNlX2ZyYWcwX2hkcl90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgaGRyX2dhcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MjQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoyNDk6bXQ3OTI1X21hY19maWxsX3J4X3JhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0yNTAtXFx0XFx0XFx0c3RydWN0IG10NzZfcnhfc3RhdHVzICpzdGF0dXMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0zNTg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjM1OTptdDc5MjVfbWFjX2ZpbGxfcngoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0zNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjUzOTpcXHRcXHRyZXQgPSBtdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShkZXYsIHN0YXR1cywgc2JhbmQsIHJ4diwgXFx1MDAyNm1vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU0MC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1Mi1cXHRpZiAoaGRyX3RyYW5zIFxcdTAwMjZcXHUwMDI2IGllZWU4MDIxMV9oYXNfbW9yZWZyYWdzKGZjKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjU1MzpcXHRcXHRpZiAobXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHNrYiwgaGRyX2dhcCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTU0LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NjI2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NjI3Om10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIzKF9fbGUzMiAqdHh3aSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02MjgtXFx0XFx0XFx0ICAgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTY2MT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2MjptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NjMtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz03Mjk9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjczMDptdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy03MzEtXFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTgxOC1cXHRpZiAoaXNfODAyMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MTk6XFx0XFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjModHh3aSwgc2tiLCB3Y2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MjAtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjgyMTpcXHRcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoZGV2LCB0eHdpLCBza2IsIGtleSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NDI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQ0OnN0YXRpYyB2b2lkIG10NzkyNV90eF9jaGVja19hZ2dyKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQ1LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9ODk4PXN0YXRpYyBib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODk5Om10NzkyNV9tYWNfYWRkX3R4c19za2Ioc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy05MDAtXFx0XFx0ICAgICAgIGludCBwaWQsIF9fbGUzMiAqdHhzX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEwMzY6dm9pZCBtdDc5MjVfbWFjX2FkZF90eHMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTA2NDpcXHRtdDc5MjVfbWFjX2FkZF90eHNfc2tiKGRldiwgd2NpZCwgcGlkLCB0eHNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTA2NS1cXHRpZiAoIXdjaWQtXFx1MDAzZXN0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTA3NDp2b2lkIG10NzkyNV90eHdpX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDc1LVxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDg4LVxcdFxcdGlmIChsaWtlbHkodC1cXHUwMDNlc2tiLVxcdTAwM2Vwcm90b2NvbCAhPSBjcHVfdG9fYmUxNihFVEhfUF9QQUUpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMDg5OlxcdFxcdFxcdG10NzkyNV90eF9jaGVja19hZ2dyKHN0YSwgdC1cXHUwMDNlc2tiLCB3Y2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTEwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTEwMTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdHh3aV9mcmVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTExMDM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTA0Om10NzkyNV9tYWNfdHhfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTExMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTcxOlxcdFxcdFxcdG10NzkyNV90eHdpX2ZyZWUoZGV2LCB0eHdpLCBzdGEsIHdjaWQsIFxcdTAwMjZmcmVlX2xpc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTExNzItXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTc1OlxcdG10NzkyNV9tYWNfc3RhX3BvbGwoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTc2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTg4OmJvb2wgbXQ3OTI1X3J4X2NoZWNrKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMDYtXFx0XFx0LyogUEtUX1RZUEVfVFhSWF9OT1RJRlkgY2FuIGJlIHJlY2VpdmVkIG9ubHkgYnkgbW1pbyBkZXZpY2VzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTIwNzpcXHRcXHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBkYXRhLCBsZW4pOyAvKiBtbWlvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTIwOC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MTUuMjI2NjUzOTU4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMTYxMzUyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZz8gQSBEZWJ1Z2ZzIERpdmUgaW50byBNVDc5MjUgVVNCIEVtdWxhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGBtdDc5MjV1LXkgOj0gdXNiLm9gIGluIHRoZSBNYWtlZmlsZS4gVGhhdCBpbW1lZGlhdGVseSBzcGFya3MgbXkgaW50ZXJlc3Qg4oCTIGEgVVNCIGRyaXZlciBmb3IgYG10NzkyNWAhIFRoYXQncyBleGNlbGxlbnQgbmV3cyBiZWNhdXNlIGl0IG1lYW5zIHdlICpjYW4qIGxpa2VseSBlbXVsYXRlIGl0IGluIHN5emthbGxlciB1c2luZyBVU0IgZ2FkZ2V0L3ZoY2kuIFRoaXMgb3BlbnMgdXAgYSB3aG9sZSBuZXcgYXZlbnVlIGZvciBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gYW5hbHl6ZSB0aGUgcGF0Y2ggYW5kIGRldGVybWluZSBpZiBpdCB0b3VjaGVzIGFueSBjb3JlIGtlcm5lbCBsb2dpYy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYG10NzkyOF90eHB3cmAgYW5kIGBtdDc5MjhfZWh0X3R4cHdyYCwgd2hpY2ggYXJlIGRlYnVnZnMgY2FsbGJhY2tzLCBwbHVzIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gLCB3aGljaCBpbnZvbHZlcyBzZW5kaW5nIGEgbWVzc2FnZSB0byB0aGUgTUNVLiBOb3cgSSBoYXZlIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGZ1enphYmxlLlxuXG5JIG5lZWQgdG8gcmVmZXIgdG8gdGhlIHByb21wdDogaXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nPyBUaGUgcHJvbXB0IHN0YXRlcyBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4gLi4uIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiXG5cbkJ1dCB3YWl0LCBjYW4gYG10NzkyNWAgaGFyZHdhcmUgYmUgZW11bGF0ZWQgdmlhIFVTQj8gU3l6a2FsbGVyJ3MgdmhjaSBjYW4gZW11bGF0ZSBhbnkgVVNCIGRldmljZSBhcyBsb25nIGFzIHRoZSBjb3JyZWN0IGRlc2NyaXB0b3JzIGFyZSBwcm92aWRlZC4gU28sIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBpcyByZWFjaGFibGUuIFRoYXQncyBhIGdvb2Qgc3RhcnQuIEJ1dCBJIHNlZSB0aGF0IHRoZSBNQ1UgY29tbXVuaWNhdGlvbiAoYG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dgKSBzZW5kcyBhIGNvbW1hbmQgYW5kIHdhaXRzIGZvciBhIHJlc3BvbnNlLiBJbiBzeXprYWxsZXIsIHdlIGNhbiBzdXBwbHkgYXJiaXRyYXJ5IHJlc3BvbnNlcyB0byBVU0IgcmVxdWVzdHMuIFNvLCBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCAqY2FuKiBiZSBleGVjdXRlZCwgYW5kIHRoZSByZXNwb25zZSAqY2FuKiBiZSBwYXJzZWQuXG5cbkhvd2V2ZXIsIHRoZSBwYXRjaCAqbW9zdGx5KiBhZGRzIGRlYnVnZnMgZW50cmllcy4gSXMgZGVidWdmcyBjb25zaWRlcmVkIGEgXCJmdW5jdGlvbmFsIGNoYW5nZVwiPyBUaGUgcHJvbXB0IGRvZXNuJ3QgZXhwbGljaXRseSBjYXRlZ29yaXplIGRlYnVnZnMuXG5cbkknbSB0aGlua2luZyB0aGF0IGRlYnVnZnMgaXMgYWNjZXNzaWJsZSBhbmQgY2FuIGJlIGZ1enplZCwgYnV0IEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2U6IHRoZSBwcm9tcHQgc2FpZCBub3QgdG8gZnV6eiBjaGFuZ2VzIHRoYXQgYXJlIFwicHVyZWx5IGRlY29yYXRpdmVcIi5cblxuSSBuZWVkIHRvIGFuYWx5emUgYG10NzkyOF90eHB3cmAgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eS4gSSBzZWUgaXQgYWxsb2NhdGVzIG1lbW9yeSwgY2FsbHMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIGFuZCB0aGVuIHByaW50cyB0aGUgcmVzdWx0cyB1c2luZyBgc2VxX3ByaW50ZmAgYW5kIGBtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnlgLiBJdCBhbHNvIGFkZHMgYG10NzkyOF90eHB3cl90Ymxfc2V0YCBhbmQgYG10NzkyOF90eHB3cl90YmxfZ2V0YCwgd2hpY2ggYXJlIHNpbXBsZSBnZXQvc2V0IG9wZXJhdGlvbnMgb24gYGRldi1cdTAwM2V0eHB3cl90YmxgLiBJcyB0aGF0IGZ1bmN0aW9uYWw/IEl0J3MgcmVhZGluZy93cml0aW5nIGEgZGVidWdmcyBmaWxlIHRvIHNldC9nZXQgYSB2YXJpYWJsZSwgYW5kIGFub3RoZXIgZGVidWdmcyBmaWxlIHRvIHF1ZXJ5IHRoZSBNQ1UgYW5kIHByaW50IHRoZSByZXN1bHQuIEJ1dCBpcyB0aGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3Rpbmc/XG5cbkFoYSEgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgcGFyc2VzIHRoZSBNQ1UncyByZXNwb25zZS4gVGhlIGNvZGUgaXM6XG5cbmBgYGNcbmV2ZW50ID0gKHN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQgKilza2ItXHUwMDNlZGF0YTtcbm1lbWNweSh0eHB3ciwgXHUwMDI2ZXZlbnQtXHUwMDNldHhwd3IsIHNpemVvZigqdHhwd3IpKTtcbmBgYFxuXG5UaGF0J3MgdGhlIGNyaXRpY2FsIHBvaW50LiBJZiB0aGUgTUNVLCB3aGljaCBpcyBlbXVsYXRlZCBieSBzeXprYWxsZXIsIHJldHVybnMgYSBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIFNLQiwgYHNrYi1cdTAwM2VkYXRhYCBtaWdodCBub3QgYmUgbGFyZ2UgZW5vdWdoIGZvciBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudGAuIFRoaXMgd2lsbCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGF0IGBtZW1jcHlgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4gTm93IEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCB2YWxpZGF0ZXMgdGhlIGxlbmd0aCBvZiB0aGUgU0tCIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE3NywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMToyNi41NDI3OTMzMzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI2MjM5NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYz01ND1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X21jdV9yeF9ldmVudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjU2OmludCBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNTctXFx0XFx0XFx0ICAgICAgaW50IGxlbiwgYm9vbCB3YWl0X3Jlc3AsIHN0cnVjdCBza19idWZmICoqcmV0X3NrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM6NzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy03MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE5MTU9c3RydWN0IHNrX2J1ZmYgKm10NzZfbWN1X2dldF9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTE2LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZXhwaXJlcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTkxNzppbnQgbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGNtZCwgY29uc3Qgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTE4LVxcdFxcdFxcdCAgICAgIGludCBsZW4sIGJvb2wgd2FpdF9yZXNwLCBzdHJ1Y3Qgc2tfYnVmZiAqKnJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xOTMzPW10NzZfbWN1X3NlbmRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkzNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTkzNjpcXHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhkZXYsIGNtZCwgZGF0YSwgbGVuLCB3YWl0X3Jlc3AsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5MzctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjIwNj1pbnQgbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMjIxOlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoTVVSVV9DVFJMKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMjIyLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI4OTQ9aW50IG10NzkxNV9tY3VfZ2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqcmVhZF9idWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yOTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI5MDU6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI5MDYtXFx0XFx0XFx0XFx0XFx0TUNVX0VYVF9RVUVSWShFRlVTRV9BQ0NFU1MpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjkyMT1pbnQgbXQ3OTE1X21jdV9nZXRfZWVwcm9tX2ZyZWVfYmxvY2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggKmJsb2NrX251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI5MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjkzNDpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkzNS1cXHRcXHRcXHRcXHRcXHRNQ1VfRVhUX1FVRVJZKEVGVVNFX0ZSRUVfQkxPQ0spLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MzE0NT1pbnQgbXQ3OTE1X21jdV9nZXRfY2hhbl9taWJfaW5mbyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBib29sIGNoYW5fc3dpdGNoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMzE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzozMTg1OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoR0VUX01JQl9JTkZPKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zMTg2LVxcdFxcdFxcdFxcdFxcdHJlcSwgbGVuICogc2l6ZW9mKHJlcVswXSksIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MzUxMD1pbnQgbXQ3OTE1X21jdV9nZXRfdHhwb3dlcl9za3Uoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgczggKnR4cG93ZXIsIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zNTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjM1Mjg6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTM1MjktXFx0XFx0XFx0XFx0XFx0TUNVX0VYVF9DTUQoVFhfUE9XRVJfRkVBVFVSRV9DVFJMKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTM4NjI9aW50IG10NzkxNV9tY3VfZ2V0X3J4X3JhdGUoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTM4ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6Mzg4NDpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKFBIWV9TVEFUX0lORk8pLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTM4ODUtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9NDEwMz1pbnQgbXQ3OTE1X21jdV93ZWRfd2FfdHhfc3RhdHMoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTE2IHdsYW5faWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtNDEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzo0MTM3OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1dBX1BBUkFNX0NNRChRVUVSWSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtNDEzOC1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBsZW4sIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9NDE3MT1pbnQgbXQ3OTE1X21jdV9yZl9yZWd2YWwoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtNDE4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzo0MTg5OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0VYVF9RVUVSWShSRl9SRUdfQUNDRVNTKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy00MTkwLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTc1PXN0YXRpYyBpbnQgbXQ3OTIxX21jdV9yZWFkX2VlcHJvbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6ODQ6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfRVhUX1FVRVJZKEVGVVNFX0FDQ0VTUyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtODUtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NTU0PXN0YXRpYyBpbnQgbXQ3OTIxX21jdV9nZXRfbmljX2NhcGFiaWxpdHkoc3RydWN0IG10NzkyeF9waHkgKm1waHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy01NjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NTY0OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2cocGh5LVxcdTAwM2VkZXYsIE1DVV9DRV9DTUQoR0VUX05JQ19DQVBBQiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNTY1LVxcdFxcdFxcdFxcdFxcdE5VTEwsIDAsIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9MTEwNj1pbnQgbXQ3OTIxX2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MjFfdHhwd3IgKnR4cHdyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtMTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzoxMTE1OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0NFX0NNRChHRVRfVFhQV1IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTExMTYtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdGVzdG1vZGUuYz04NT1tdDc5MjFfdG1fcXVlcnkoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzkyMV90bV9jbWQgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3Rlc3Rtb2RlLmMtOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdGVzdG1vZGUuYzo5NzpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9DRV9DTUQoVEVTVF9DVFJMKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS90ZXN0bW9kZS5jLTk4LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZjbWQsIHNpemVvZihjbWQpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTU3PWludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTAxOlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMDItXFx0XFx0XFx0XFx0XFx0TUNVX1dNX1VOSV9DTURfUVVFUlkoUkVHX0FDQ0VTUyksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NTA9c3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Nzg1OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoRUZVU0VfQ1RSTCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzg2LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTg4OD1pbnQgbXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy05MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6OTA1OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoV1NZU19DT05GSUcpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwNi1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz05MTA9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy05MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6OTMwOlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy05MzEtXFx0XFx0XFx0XFx0XFx0TUNVX1dNX1VOSV9DTURfUVVFUlkoVEhFUk1BTCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz05OTQ9bXQ3OTI1X21jdV9nZXRfbmljX2NhcGFiaWxpdHkoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEwMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTAxMzpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKENISVBfQ09ORklHKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMDE0LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTE1MzU9aW50IG10NzkyNV9tY3Vfc2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNTUyOlxcdHJldHVybiBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKEVGVVNFX0NUUkwpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTE1NTMtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIxNDc9aW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgc3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjIxNjE6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChUWFBPV0VSKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTYyLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIxNzQ9aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMjE4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoyMTg4OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoVFhQT1dFUiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMjE4OS1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0zOTM1PWludCBtdDc5MjVfbWN1X3dmX3JmX3Bpbl9jdHJsKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zOTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjM5NTc6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM5NTgtXFx0XFx0XFx0XFx0XFx0TUNVX1VOSV9DTUQoUkFESU9fU1RBVFVTKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmM9ODc9bXQ3OTI1X3RtX3F1ZXJ5KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MjVfdG1fY21kICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jLTk4LVxcdGlmICgqKCh1aW50MTZfdCAqKXJlcS1cXHUwMDNlcGFkZGluZykgPT0gTUNVX1VOSV9DTURfVEVTVE1PREVfQ1RSTClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jOjk5OlxcdFxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9RVUVSWShURVNUTU9ERV9DVFJMKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jLTEwMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2Y21kLCBzaXplb2YoY21kKSwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdGVzdG1vZGUuYy0xMDEtXFx0ZWxzZSBpZiAoKigodWludDE2X3QgKilyZXEtXFx1MDAzZXBhZGRpbmcpID09IE1DVV9VTklfQ01EX1RFU1RNT0RFX1JYX1NUQVQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdGVzdG1vZGUuYzoxMDI6XFx0XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfVU5JX1FVRVJZKFRFU1RNT0RFX1JYX1NUQVQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmMtMTAzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZjbWQsIHNpemVvZihjbWQpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTQzMTI9aW50IG10Nzk5Nl9tY3VfZ2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqYnVmLCB1MzIgYnVmX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQzMzktXFx0cmVxLmluZm8uYWRkciA9IGNwdV90b19sZTMyKGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjQzNDA6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBjbWQsIFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQzNDEtXFx0XFx0XFx0XFx0XFx0dHJ1ZSwgXFx1MDAyNnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00MzgxPWludCBtdDc5OTZfbWN1X2dldF9lZnVzZV9mcmVlX2Jsb2NrKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHU4ICpibG9ja19udW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00Mzk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjQ0MDA6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRF9RVUVSWShFRlVTRV9DVFJMKSwgXFx1MDAyNnJlcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00NDAxLVxcdFxcdFxcdFxcdFxcdHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTQ0MTE9aW50IG10Nzk5Nl9tY3VfZ2V0X2NoaXBfY29uZmlnKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiAqY2FwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NDI3OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00NDI4LVxcdFxcdFxcdFxcdFxcdE1DVV9XTV9VTklfQ01EX1FVRVJZKENISVBfQ09ORklHKSwgXFx1MDAyNnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTQ0NTY9aW50IG10Nzk5Nl9tY3VfZ2V0X2NoYW5fbWliX2luZm8oc3RydWN0IG10Nzk5Nl9waHkgKnBoeSwgYm9vbCBjaGFuX3N3aXRjaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ0OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NDQ5NzpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9XTV9VTklfQ01EX1FVRVJZKEdFVF9NSUJfSU5GTyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQ5OC1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00NTM1PWludCBtdDc5OTZfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDU2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NTY4OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNnBoeS1cXHUwMDNlZGV2LVxcdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRChUSEVSTUFMKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00NTY5LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTUxNzA9aW50IG10Nzk5Nl9tY3VfcmZfcmVndmFsKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTUxOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NTE5NjpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNTE5Ny1cXHRcXHRcXHRcXHRcXHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MjcuMTY5MDQwMTI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcwNzMxNDU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCBmdW5jdGlvbidzIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcywgYW5kIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpcm13YXJlLiBJJ20gbG9va2luZyBmb3IgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzLCBub3QgYSBoaWdoLWxldmVsIG92ZXJ2aWV3LiBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkIGhlcmU/IFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gaG93IHRoZSBtZXNzYWdlIGlzIGNvbnN0cnVjdGVkLCBob3cgdGhlIGNvbW11bmljYXRpb24gY2hhbm5lbCAobGlrZWx5IHJlZ2lzdGVycyBvciBETUEpIGlzIG1hbmFnZWQsIGFuZCB0aGUgaGFuZHNoYWtpbmcgd2l0aCB0aGUgTUNVLiBBcmUgdGhlcmUgYW55IGNyaXRpY2FsIHNlY3Rpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yPyBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcuIEhvdyBhcmUgdGltZW91dHMgbWFuYWdlZD8gV2hhdCBhcmUgdGhlIHJldHJ5IG1lY2hhbmlzbXM/IEFueSBwb3RlbnRpYWwgZGVhZGxvY2sgc2l0dWF0aW9ucz8gQW55IHBvdGVudGlhbCBmb3IgYnVmZmVyIG92ZXJmbG93cz8gTGV0J3MgZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDAxLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MzAuODc2MzU5MjI0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTYsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTY6XFx0aW50IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBjbWQsIGNvbnN0IHZvaWQgKmRhdGEsXFxuICA1NzpcXHRcXHRcXHRcXHQgICAgICBpbnQgbGVuLCBib29sIHdhaXRfcmVzcCwgc3RydWN0IHNrX2J1ZmYgKipyZXRfc2tiKVxcbiAgNTg6XFx0e1xcbiAgNTk6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0aWYgKGRldi1cXHUwMDNlbWN1X29wcy1cXHUwMDNlbWN1X3NlbmRfbXNnKVxcbiAgNjI6XFx0XFx0XFx0cmV0dXJuIGRldi1cXHUwMDNlbWN1X29wcy1cXHUwMDNlbWN1X3NlbmRfbXNnKGRldiwgY21kLCBkYXRhLCBsZW4sIHdhaXRfcmVzcCk7XFxuICA2MzpcXHRcXG4gIDY0OlxcdFxcdHNrYiA9IG10NzZfbWN1X21zZ19hbGxvYyhkZXYsIGRhdGEsIGxlbik7XFxuICA2NTpcXHRcXHRpZiAoIXNrYilcXG4gIDY2OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgNjc6XFx0XFxuICA2ODpcXHRcXHRyZXR1cm4gbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwLCByZXRfc2tiKTtcXG4gIDY5OlxcdH1cXG4gIDcwOlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2cpO1xcbiAgNzE6XFx0XFxuICA3MjpcXHRpbnQgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuICA3MzpcXHRcXHRcXHRcXHRcXHQgIGludCBjbWQsIGJvb2wgd2FpdF9yZXNwLFxcbiAgNzQ6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqKnJldF9za2IpXFxuICA3NTpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjMwLjg3NjQ3MjU0NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MzUwOTY4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIGFzIEkgYXBwcm9hY2ggdGhlIHN1YmplY3Qgb2YgYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYCwgYXNzdW1pbmcgSSdtIGFscmVhZHkgcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIGdlbmVyYWwgbGFuZHNjYXBlIG9mIGVtYmVkZGVkIHdpcmVsZXNzIGRyaXZlcnMuXG5cbioqRGVlcCBEaXZlOiBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgKipcblxuQWxyaWdodCwgSSBzZWUgdGhpcyBmdW5jdGlvbiBuYW1lOiBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgLiBJbW1lZGlhdGVseSwgbXkgbWVudGFsIGdlYXJzIHN0YXJ0IHR1cm5pbmcuIFwibXQ3NlwiIHN1Z2dlc3RzIGl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gTWVkaWFUZWsncyA4MDIuMTEgY2hpcHNldCBmYW1pbHkuIFRoZSBcIm1jdVwiIGxpa2VseSByZWZlcnMgdG8gYSBtaWNyb2NvbnRyb2xsZXIsIHdoaWNoIGlzIHR5cGljYWwgZm9yIG1hbmFnaW5nIGxvdy1sZXZlbCByYWRpbyBvcGVyYXRpb25zLCBmaXJtd2FyZSwgYW5kIHBvc3NpYmx5IG9mZmxvYWRpbmcgdGFza3MgZnJvbSB0aGUgbWFpbiBDUFUuIFRoZSBcInNrYlwiIGltcGxpZXMgaXQncyBkZWFsaW5nIHdpdGggYSBcInNvY2tldCBidWZmZXJcIiDigJMgdGhvc2UgYXJlIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgZm9yIG5ldHdvcmsgZGF0YSBpbiB0aGUgTGludXgga2VybmVsLiBcIlNlbmRfYW5kX2dldF9tc2dcIiBpcyB0aGUga2V5IGhlcmUgLSBpdCBtZWFucyB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBzZW5kaW5nIGEgbWVzc2FnZSAobGlrZWx5IGNvbW1hbmQgb3IgZGF0YSkgdG8gdGhlIG1pY3JvY29udHJvbGxlciBhbmQgdGhlbiByZXRyaWV2aW5nIHRoZSByZXNwb25zZS5cblxuSSBleHBlY3QgdGhpcyBpcyBhIGZhaXJseSBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gdGhlIG10NzYgZHJpdmVyLiBJdCdzIHByb2JhYmx5IHRoZSBjb3JlIG9mIHRoZSBjb21tdW5pY2F0aW9uIHBhdGggYmV0d2VlbiB0aGUgaG9zdCBMaW51eCBzeXN0ZW0gYW5kIHRoZSBXaS1GaSBjaGlwc2V0J3MgZmlybXdhcmUgcnVubmluZyBvbiB0aGUgTUNVLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaGFuZGxlczpcblxuKiAgICoqTWVzc2FnZSBmcmFtaW5nOioqIEhvdyBhcmUgdGhlc2UgbWVzc2FnZXMgc3RydWN0dXJlZD8gQXJlIHRoZXJlIHNwZWNpZmljIGhlYWRlcnMsIGNoZWNrc3Vtcywgb3IgZnJhbWluZyBtZWNoYW5pc21zPyBJcyBpdCBqdXN0IHJhdyBkYXRhLCBvciBpcyB0aGVyZSBhIGRlZmluZWQgcHJvdG9jb2w/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGtub3dzIHdoZW4gb25lIG1lc3NhZ2UgZW5kcyBhbmQgYW5vdGhlciBiZWdpbnMuXG4qICAgKipFcnJvciBoYW5kbGluZzoqKiBXaGF0IGhhcHBlbnMgaWYgdGhlIHNlbmQgZmFpbHM/IFdoYXQgYWJvdXQgdGhlIHJlY2VpdmU/IFdoYXQgdGltZW91dHMgYXJlIHVzZWQ/IERvZXMgaXQgc3VwcG9ydCByZXRyaWVzPyBBcmUgdGhlcmUgc3BlY2lmaWMgZXJyb3IgY29kZXMgcmV0dXJuZWQ/XG4qICAgKipTeW5jaHJvbml6YXRpb246KiogVGhpcyBpcyBtdWx0aS10aHJlYWRlZC4gV2hhdCBsb2NraW5nIG1lY2hhbmlzbXMgYXJlIGVtcGxveWVkIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdoZW4gbXVsdGlwbGUgcGFydHMgb2YgdGhlIGRyaXZlciB3YW50IHRvIHNlbmQvcmVjZWl2ZSBtZXNzYWdlcyBjb25jdXJyZW50bHk/IElzIHRoZXJlIGEgbXV0ZXgsIGEgc2VtYXBob3JlLCBvciBzb21ldGhpbmcgZWxzZSBpbnZvbHZlZD9cbiogICAqKkJ1ZmZlcmluZzoqKiBIb3cgaXMgdGhlIGBza2JgIHVzZWQ/IElzIGl0IGRpcmVjdGx5IHNlbnQsIG9yIGlzIGl0IGNvcGllZD8gQXJlIHRoZXJlIGFueSBidWZmZXIgbWFuYWdlbWVudCBzdHJhdGVnaWVzIHRvIGF2b2lkIG1lbW9yeSBsZWFrcyBvciBpbmVmZmljaWVuY2llcywgZXNwZWNpYWxseSBzaW5jZSBuZXR3b3JrIGRhdGEgaXMgb2Z0ZW4gdGltZS1zZW5zaXRpdmU/XG4qICAgKipJbnRlcnJ1cHRzOioqIERvZXMgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdCB3aXRoIGFueSBpbnRlcnJ1cHRzIGZyb20gdGhlIE1DVT8gSXQncyBoaWdobHkgbGlrZWx5IHRoYXQgdGhlIE1DVSBzZW5kcyBpbnRlcnJ1cHRzIHRvIHNpZ25hbCBhIHJlc3BvbnNlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBhcmUgaGFuZGxlZCBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIHJlc3BvbnNlIHJldHJpZXZhbCBwcm9jZXNzLlxuKiAgICoqU2VjdXJpdHk6KiogQXJlIHRoZXJlIGFueSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBpbiB0aGUgbWVzc2FnaW5nIHByb2Nlc3M/IERvZXMgaXQgc3VwcG9ydCBhbnkgc2VjdXJpdHkgbWVjaGFuaXNtcywgc3VjaCBhcyBlbmNyeXB0aW9uIG9yIGF1dGhlbnRpY2F0aW9uLCBhdCB0aGlzIGxldmVsP1xuXG5NeSBmb2N1cyB3b3VsZCB0aGVuIGJlIG9uIGRpc3NlY3RpbmcgdGhlIGNvZGUgcmVsYXRlZCB0byB0aGVzZSBwb2ludHMgYW5kLCBvZiBjb3Vyc2UsIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdpdGhpbiB0aGUgZnVuY3Rpb24uIE15IGV4cGVydGlzZSBhbGxvd3MgbWUgdG8gYW50aWNpcGF0ZSBjb21tb24gcGl0ZmFsbHMgYW5kIG9wdGltaXphdGlvbnMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkIGluIGFuIGVtYmVkZGVkIHdpcmVsZXNzIGRyaXZlciwgc28gSSB3b3VsZCBsb29rIGZvciBjbHVlcyB0byB0aG9zZSBwYXR0ZXJucyByaWdodCBhd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTA4NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MzYuNzExNTcyMzk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzIsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNzI6XFx0aW50IG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiAgNzM6XFx0XFx0XFx0XFx0XFx0ICBpbnQgY21kLCBib29sIHdhaXRfcmVzcCxcXG4gIDc0OlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKipyZXRfc2tiKVxcbiAgNzU6XFx0e1xcbiAgNzY6XFx0XFx0dW5zaWduZWQgaW50IHJldHJ5ID0gMDtcXG4gIDc3OlxcdFxcdHN0cnVjdCBza19idWZmICpvcmlnX3NrYiA9IE5VTEw7XFxuICA3ODpcXHRcXHR1bnNpZ25lZCBsb25nIGV4cGlyZXM7XFxuICA3OTpcXHRcXHRpbnQgcmV0LCBzZXE7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdGlmIChtdDc2X2lzX3NkaW8oZGV2KSlcXG4gIDgyOlxcdFxcdFxcdGlmICh0ZXN0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpIFxcdTAwMjZcXHUwMDI2IGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZWJ1c19odW5nKSlcXG4gIDgzOlxcdFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiAgODQ6XFx0XFxuICA4NTpcXHRcXHRpZiAocmV0X3NrYilcXG4gIDg2OlxcdFxcdFxcdCpyZXRfc2tiID0gTlVMTDtcXG4gIDg3OlxcdFxcbiAgODg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtY3UubXV0ZXgpO1xcbiAgODk6XFx0XFxuICA5MDpcXHRcXHRpZiAoZGV2LVxcdTAwM2VtY3Vfb3BzLVxcdTAwM2VtY3Vfc2tiX3ByZXBhcmVfbXNnKSB7XFxuICA5MTpcXHRcXHRcXHRvcmlnX3NrYiA9IHNrYjtcXG4gIDkyOlxcdFxcdFxcdHJldCA9IGRldi1cXHUwMDNlbWN1X29wcy1cXHUwMDNlbWN1X3NrYl9wcmVwYXJlX21zZyhkZXYsIHNrYiwgY21kLCBcXHUwMDI2c2VxKTtcXG4gIDkzOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAgOTQ6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuICA5NTpcXHRcXHR9XFxuICA5NjpcXHRcXG4gIDk3OlxcdHJldHJ5OlxcbiAgOTg6XFx0XFx0Lyogb3JpZyBza2IgbWlnaHQgYmUgbmVlZGVkIGZvciByZXRyeSwgbWN1X3NrYl9zZW5kX21zZyBjb25zdW1lcyBpdCAqL1xcbiAgOTk6XFx0XFx0aWYgKG9yaWdfc2tiKVxcbiAxMDA6XFx0XFx0XFx0c2tiX2dldChvcmlnX3NrYik7XFxuIDEwMTpcXHRcXHRyZXQgPSBkZXYtXFx1MDAzZW1jdV9vcHMtXFx1MDAzZW1jdV9za2Jfc2VuZF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwID8gXFx1MDAyNnNlcSA6IE5VTEwpO1xcbiAxMDI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDEwMzpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTA0OlxcdFxcbiAxMDU6XFx0XFx0aWYgKCF3YWl0X3Jlc3ApIHtcXG4gMTA2OlxcdFxcdFxcdHJldCA9IDA7XFxuIDEwNzpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTA4OlxcdFxcdH1cXG4gMTA5OlxcdFxcbiAxMTA6XFx0XFx0ZXhwaXJlcyA9IGppZmZpZXMgKyBkZXYtXFx1MDAzZW1jdS50aW1lb3V0O1xcbiAxMTE6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjM2LjcxMTY3NTMyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgyNDM3MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgKipcblxuQWxyaWdodCwgSSdtIGF0IGEgcG9pbnQgd2hlcmUgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgLiBTb21ldGhpbmcncyBuYWdnaW5nIGF0IG1lLCBhIHBvdGVudGlhbCBlZGdlIGNhc2Ugb3IgcGVyaGFwcyBhIHN1YnRsZSBidWcgbHVya2luZyB3aXRoaW4uIFdlJ3ZlIGxpa2VseSBpc29sYXRlZCBhbiBpc3N1ZSBkb3duIHRvIHRoaXMgZnVuY3Rpb24sIG9yIGF0IGxlYXN0IGhhdmUgYSBzdHJvbmcgc3VzcGljaW9uLCBhbmQgbm93IGl04oCZcyB0aW1lIGZvciBhIHRob3JvdWdoIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGlzIGNvcmUgZnVuY3Rpb24gb2YgdGhlIG10NzYgZmlybXdhcmUuIExldCdzIHNlZSBob3cgdGhlIFNLQiBpcyBidWlsdCwgdHJhbnNtaXR0ZWQgdG8gdGhlIE1DVSwgYW5kIGhvdyB0aGUgcmVzcG9uc2UgaXMgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIHRvIHNlZSBob3cgaXQgbWlnaHQgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgY29uY3VycmVuY3kgb2YgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UncmUgcHJvcGVybHkgbWFuYWdpbmcgcmV0cmllcywgdGltZW91dHMsIGFuZCBlcnJvciBjb25kaXRpb25zLiBJcyBpdCBiZWhhdmluZyBhcyBleHBlY3RlZCB3aGVuIHRoZSBNQ1UgaXMgYnVzeSBvciB1bmRlciBoZWF2eSBsb2FkPyBJJ20gY3VyaW91cyBpZiB3ZSdyZSBwcm9wZXJseSB2YWxpZGF0aW5nIHRoZSByZXR1cm5lZCBtZXNzYWdlIGZyb20gdGhlIE1DVS4gQW55IHN1YnRsZSBtaXNpbnRlcnByZXRhdGlvbiBvZiB0aGUgbWVzc2FnZSBmb3JtYXQgY291bGQgbGVhZCB0byBpbnN0YWJpbGl0eSBvciBldmVuIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQncyB0aW1lIHRvIGRpZyBpbiBhbmQgcmUtZXZhbHVhdGUgdGhpcyBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBMZXQncyBzdGFydCBieSB3YWxraW5nIHRocm91Z2ggdGhlIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYzOTIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjQwLjM5NDExNjMyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMixcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMjpcXHRcXHRkbyB7XFxuIDExMzpcXHRcXHRcXHRza2IgPSBtdDc2X21jdV9nZXRfcmVzcG9uc2UoZGV2LCBleHBpcmVzKTtcXG4gMTE0OlxcdFxcdFxcdGlmICghc2tiIFxcdTAwMjZcXHUwMDI2ICF0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbiAxMTU6XFx0XFx0XFx0ICAgIG9yaWdfc2tiIFxcdTAwMjZcXHUwMDI2IHJldHJ5KysgXFx1MDAzYyBkZXYtXFx1MDAzZW1jdV9vcHMtXFx1MDAzZW1heF9yZXRyeSkge1xcbiAxMTY6XFx0XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZWRldiwgXFxcIlJldHJ5IG1lc3NhZ2UgJTA4eCAoc2VxICVkKVxcXFxuXFxcIixcXG4gMTE3OlxcdFxcdFxcdFxcdFxcdGNtZCwgc2VxKTtcXG4gMTE4OlxcdFxcdFxcdFxcdHNrYiA9IG9yaWdfc2tiO1xcbiAxMTk6XFx0XFx0XFx0XFx0Z290byByZXRyeTtcXG4gMTIwOlxcdFxcdFxcdH1cXG4gMTIxOlxcdFxcbiAxMjI6XFx0XFx0XFx0cmV0ID0gZGV2LVxcdTAwM2VtY3Vfb3BzLVxcdTAwM2VtY3VfcGFyc2VfcmVzcG9uc2UoZGV2LCBjbWQsIHNrYiwgc2VxKTtcXG4gMTIzOlxcdFxcdFxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IHJldF9za2IpXFxuIDEyNDpcXHRcXHRcXHRcXHQqcmV0X3NrYiA9IHNrYjtcXG4gMTI1OlxcdFxcdFxcdGVsc2VcXG4gMTI2OlxcdFxcdFxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4gMTI3OlxcdFxcdH0gd2hpbGUgKHJldCA9PSAtRUFHQUlOKTtcXG4gMTI4OlxcdFxcbiAxMjk6XFx0XFxuIDEzMDpcXHRvdXQ6XFxuIDEzMTpcXHRcXHRkZXZfa2ZyZWVfc2tiKG9yaWdfc2tiKTtcXG4gMTMyOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtY3UubXV0ZXgpO1xcbiAxMzM6XFx0XFxuIDEzNDpcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMzU6XFx0fVxcbiAxMzY6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2cpO1xcbiAxMzc6XFx0XFxuIDEzODpcXHRpbnQgX19tdDc2X21jdV9zZW5kX2Zpcm13YXJlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxcbiAxMzk6XFx0XFx0XFx0XFx0ICAgICBpbnQgbGVuLCBpbnQgbWF4X2xlbilcXG4gMTQwOlxcdHtcXG4gMTQxOlxcdFxcdGludCBlcnIsIGN1cl9sZW47XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdHdoaWxlIChsZW4gXFx1MDAzZSAwKSB7XFxuIDE0NDpcXHRcXHRcXHRjdXJfbGVuID0gbWluX3QoaW50LCBtYXhfbGVuLCBsZW4pO1xcbiAxNDU6XFx0XFxuIDE0NjpcXHRcXHRcXHRlcnIgPSBtdDc2X21jdV9zZW5kX21zZyhkZXYsIGNtZCwgZGF0YSwgY3VyX2xlbiwgZmFsc2UpO1xcbiAxNDc6XFx0XFx0XFx0aWYgKGVycilcXG4gMTQ4OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDE0OTpcXHRcXG4gMTUwOlxcdFxcdFxcdGRhdGEgKz0gY3VyX2xlbjtcXG4gMTUxOlxcdFxcdFxcdGxlbiAtPSBjdXJfbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTo0MC4zOTQyNTk0ODlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3NzQ2NTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzYgTUNVIFJlc3BvbnNlIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYCBmdW5jdGlvbiB3b3JrcywgYW5kIGl0J3MgY2FsbGluZyBgbWN1X3BhcnNlX3Jlc3BvbnNlYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGBtY3VfcGFyc2VfcmVzcG9uc2VgLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgbXQ3OTI1YCBjaGlwc2V0LiBJJ20gYXNzdW1pbmcgdGhhdCBpdCBoYW5kbGVzIHRoZSByZXNwb25zZSB0byBNQ1UgY29tbWFuZHMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBpcyBwYXJzZWQsIGhvdyBlcnJvcnMgYXJlIGhhbmRsZWQsIGFuZCBob3cgdGhlIHJlc3VsdHMgYXJlIGludGVycHJldGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBkcml2ZXLigJlzIG92ZXJhbGwgb3BlcmF0aW9uLiBJJ20gYmV0dGluZyB0aGVyZSdzIHNvbWUgZGV2aWNlLXNwZWNpZmljIGxvZ2ljIGluIHRoZXJlLCBzbyBJJ20gZ29pbmcgdG8gZm9jdXMgaW4gb24gdGhlIE1UNzkyNSdzIGltcGxlbWVudGF0aW9uIHRvIHNlZSBob3cgaXQncyBkb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzQwMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6NDMuNzcxNzMwMDg0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDY3NzE2MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWN1X3BhcnNlX3Jlc3BvbnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDppbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTUtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTU0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo1NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy01Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM3OT12b2lkIG10NzkyNV90eHdpX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4MS1cXHRcXHQgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlX2xpc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4MjppbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzgzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIGludCBzZXEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTI3PWludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtMzEtXFx0XFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MjVfbWN1X3NlbmRfbWVzc2FnZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM6MzI6XFx0XFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTMzLVxcdH07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTYyLVxcdFxcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjYzOlxcdFxcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTY0LVxcdH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjQ0LjExODUwNzU0NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzYwOTU0MzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2VgLiBJIGtub3cgdGhpcyByb3V0aW5lOyBpdCdzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGludGVycHJldGluZyB0aGUgcmVzcG9uc2VzIHdlIGdldCBiYWNrIGZyb20gdGhlIE1DVSBvbiB0aGUgTVQ3OTI1IGNoaXBzZXQuIE15IGJyYWluIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBzY2VuYXJpb3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHlwZSBvZiBtZXNzYWdlIGl0IGlzLCB0aGUgZXhwZWN0ZWQgZm9ybWF0LCBhbmQgaG93IHRvIGhhbmRsZSBhbnkgZXJyb3JzLiBUaGUgY29yZSBvZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGEgc3dpdGNoIHN0YXRlbWVudCwgSSdtIGd1ZXNzaW5nLCBiYXNlZCBvbiB0aGUgbWVzc2FnZSBJRCBmaWVsZC5cblxuSSdtIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2g6IElzIHRoZXJlIGEgaGVhZGVyPyBXaGF0IGZpZWxkcyBkbyBJIG5lZWQgdG8gZXh0cmFjdD8gRXJyb3IgY29kZXMsIGRhdGEgbGVuZ3RocywgcG9zc2libHkgc29tZSBjb250cm9sIGZsYWdzPyBJ4oCZbSB0aGlua2luZyBhYm91dCBob3cgdGhlIGJpdCBmaWVsZHMgd2lsbCBiZSBwYWNrZWQgYW5kIHBhcnNlZC4gSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBwb3RlbnRpYWwgYWxpZ25tZW50IGlzc3VlczsgcGFkZGluZyBpcyBhbHdheXMgYSBzb3VyY2Ugb2YgdHJvdWJsZSBpZiB5b3UncmUgbm90IGNhcmVmdWwuIEkgaG9wZSB0aGlzIGNvZGUgaXMgd2VsbC1jb21tZW50ZWQgYW5kIHVzZXMgY2xlYXIgdmFyaWFibGUgbmFtZXM7IGl0J2xsIG1ha2UgbXkgbGlmZSBlYXNpZXIgd2hlbiBJJ20gZGVidWdnaW5nIGEgdHJpY2t5IGNvbW11bmljYXRpb24gaXNzdWUgZG93biB0aGUgbGluZS5cblxuSSdtIGFudGljaXBhdGluZyBwb3RlbnRpYWxseSBoYXZpbmcgdG8gZGVhbCB3aXRoIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgTUNVIGZpcm13YXJlLiBJIG5lZWQgdG8gbG9vayBmb3IgdmVyc2lvbiBjaGVja3Mgb3IgZmVhdHVyZSBmbGFncyB0aGF0IG1pZ2h0IGRpY3RhdGUgZGlmZmVyZW50IHJlc3BvbnNlIGZvcm1hdHMgb3IgZXhwZWN0ZWQgZGF0YS4gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSByb2J1c3QsIGdyYWNlZnVsbHkgaGFuZGxpbmcgYW55IHVuZXhwZWN0ZWQgcmVzcG9uc2VzIG9yIGNvcnJ1cHRlZCBkYXRhLiBUaGlzIGlzIHdoZXJlIEknZCBzdGFydCB0aGlua2luZyBhYm91dCBob3cgdG8gc2lnbmFsIHRoZXNlIGlzc3VlcyBiYWNrIHRvIHRoZSBoaWdoZXItbGV2ZWwgYXBwbGljYXRpb24gYW5kIGlmIGFueSByZXRyaWVzIHNob3VsZCBiZSBhdHRlbXB0ZWQuIEFscmlnaHQsIHRpbWUgdG8gZGlnIGluIGFuZCBjb25maXJtIHRoZXNlIGluaXRpYWwgdGhvdWdodHMuIExldCdzIHNlZSBob3cgdGhleSBpbXBsZW1lbnRlZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1NDMsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTo0OC40Nzk0NjU1MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTg0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTQ6XFx0aW50IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBpbnQgY21kLFxcbiAgMTU6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNlcSlcXG4gIDE2OlxcdHtcXG4gIDE3OlxcdFxcdGludCBtY3VfY21kID0gRklFTERfR0VUKF9fTUNVX0NNRF9GSUVMRF9JRCwgY21kKTtcXG4gIDE4OlxcdFxcdHN0cnVjdCBtdDc5MjVfbWN1X3J4ZCAqcnhkO1xcbiAgMTk6XFx0XFx0aW50IHJldCA9IDA7XFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdGlmICghc2tiKSB7XFxuICAyMjpcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIk1lc3NhZ2UgJTA4eCAoc2VxICVkKSB0aW1lb3V0XFxcXG5cXFwiLCBjbWQsIHNlcSk7XFxuICAyMzpcXHRcXHRcXHRtdDc5MnhfcmVzZXQobWRldik7XFxuICAyNDpcXHRcXG4gIDI1OlxcdFxcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbiAgMjY6XFx0XFx0fVxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHRyeGQgPSAoc3RydWN0IG10NzkyNV9tY3VfcnhkICopc2tiLVxcdTAwM2VkYXRhO1xcbiAgMjk6XFx0XFx0aWYgKHNlcSAhPSByeGQtXFx1MDAzZXNlcSlcXG4gIDMwOlxcdFxcdFxcdHJldHVybiAtRUFHQUlOO1xcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHRpZiAoY21kID09IE1DVV9DTUQoUEFUQ0hfU0VNX0NPTlRST0wpIHx8XFxuICAzMzpcXHRcXHQgICAgY21kID09IE1DVV9DTUQoUEFUQ0hfRklOSVNIX1JFUSkpIHtcXG4gIDM0OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpyeGQpIC0gNCk7XFxuICAzNTpcXHRcXHRcXHRyZXQgPSAqc2tiLVxcdTAwM2VkYXRhO1xcbiAgMzY6XFx0XFx0fSBlbHNlIGlmIChjbWQgPT0gTUNVX1VOSV9DTUQoREVWX0lORk9fVVBEQVRFKSB8fFxcbiAgMzc6XFx0XFx0XFx0ICAgY21kID09IE1DVV9VTklfQ01EKEJTU19JTkZPX1VQREFURSkgfHxcXG4gIDM4OlxcdFxcdFxcdCAgIGNtZCA9PSBNQ1VfVU5JX0NNRChTVEFfUkVDX1VQREFURSkgfHxcXG4gIDM5OlxcdFxcdFxcdCAgIGNtZCA9PSBNQ1VfVU5JX0NNRChPRkZMT0FEKSB8fFxcbiAgNDA6XFx0XFx0XFx0ICAgY21kID09IE1DVV9VTklfQ01EKFNVU1BFTkQpKSB7XFxuICA0MTpcXHRcXHRcXHRzdHJ1Y3QgbXQ3OTI1X21jdV91bmlfZXZlbnQgKmV2ZW50O1xcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHRcXHRza2JfcHVsbChza2IsIHNpemVvZigqcnhkKSk7XFxuICA0NDpcXHRcXHRcXHRldmVudCA9IChzdHJ1Y3QgbXQ3OTI1X21jdV91bmlfZXZlbnQgKilza2ItXFx1MDAzZWRhdGE7XFxuICA0NTpcXHRcXHRcXHRyZXQgPSBsZTMyX3RvX2NwdShldmVudC1cXHUwMDNlc3RhdHVzKTtcXG4gIDQ2OlxcdFxcdFxcdC8qIHNraXAgaW52YWxpZCBldmVudCAqL1xcbiAgNDc6XFx0XFx0XFx0aWYgKG1jdV9jbWQgIT0gZXZlbnQtXFx1MDAzZWNpZClcXG4gIDQ4OlxcdFxcdFxcdFxcdHJldCA9IC1FQUdBSU47XFxuICA0OTpcXHRcXHR9IGVsc2Uge1xcbiAgNTA6XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCBzaXplb2YoKnJ4ZCkpO1xcbiAgNTE6XFx0XFx0fVxcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTo0OC40Nzk5Njg5OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjYyMDU3ODkyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWdWxuZXJhYmlsaXR5IElkZW50aWZpZWQ6IE91dC1vZi1Cb3VuZHMgUmVhZCBpbiBNVDc5MjUvTVQ3OTI4IERyaXZlcioqXG5cbk9rYXksIHNvIGhlcmUncyB3aGF0IEkndmUgZm91bmQuIFRoZSBgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZWAgZnVuY3Rpb24gZXh0cmFjdHMgYHNpemVvZigqcnhkKWAgZnJvbSB0aGUgc2tiIChzb2NrZXQgYnVmZmVyKS4gVGhhdCBza2IgaXMgdGhlbiByZXR1cm5lZCB2aWEgYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYC4gU3Vic2VxdWVudGx5LCBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyBjYWxsZWQsIGFuZCB0aGF0J3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSXQgdXNlcyBgbWVtY3B5YCB0byBjb3B5IGRhdGEgZnJvbSB0aGUgYHNrYi1cdTAwM2VkYXRhYCB0byB0aGUgYHR4cHdyYCBidWZmZXIsIGV4cGVjdGluZyB0aGUgc2tiIHRvIGNvbnRhaW4gYSBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudGAuXG5cblRoZSBjcml0aWNhbCBvdmVyc2lnaHQgaXMgdGhhdCB0aGVyZSdzICpubyogY2hlY2sgdG8gdmVyaWZ5IGlmIGBza2ItXHUwMDNlbGVuYCBpcyBzdWZmaWNpZW50IHRvIGhvbGQgdGhlIGVudGlyZSBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudGAgcGF5bG9hZC4gYG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2VgIG9ubHkgYWNjb3VudHMgZm9yIHRoZSBNQ1UgaGVhZGVyLCBub3QgdGhlIGZ1bGwgZXZlbnQgc2l6ZS4gSWYgdGhlIE1DVSByZXR1cm5zIGEgcmVzcG9uc2UgdGhhdCdzIHNob3J0ZXIgdGhhbiBleHBlY3RlZCwgYG1lbWNweWAgd2lsbCByZWFkIGJleW9uZCB0aGUgYm91bmRzIG9mIGBza2ItXHUwMDNlZGF0YWAuXG5cblRoaXMgYHR4cHdyYCBidWZmZXIgaXRzZWxmIGlzIGFsbG9jYXRlZCB1c2luZyBgZGV2bV9rbWFsbG9jYCB3aXRoaW4gdGhlIGRyaXZlciwgYW5kIGxvb2tpbmcgYXQgdGhlIGRlZmluaXRpb24gb2YgYHN0cnVjdCBtdDc5MjhfdHhwd3JgLCBJIGNhbiBzZWUgaXQncyBxdWl0ZSBsYXJnZS4gSXQgY29udGFpbnMgbnVtZXJvdXMgYXJyYXlzIG9mIGBzOFsuLl1bMl1gLCBhZGRpbmcgdXAgdG8gbWFueSBodW5kcmVkcyBvZiBieXRlcy4gU28sIGlmIHRoZSBVU0IgZGV2aWNlIHJldHVybnMgYSBzbWFsbCByZXNwb25zZSwgc2F5IDEwIGJ5dGVzLCB0aGUgYHNrYmAgYnVmZmVyIHdpbGwgYmUgZXF1YWxseSBzbWFsbC4gVGhlIGBtZW1jcHlgIHdpbGwgdGhlbiBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIHJlYWQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBzbGFiLW91dC1vZi1ib3VuZHMgdnVsbmVyYWJpbGl0eS5cblxuVGhlIGBza2ItXHUwMDNlZGF0YWAgYnVmZmVyIGlzIGFsbG9jYXRlZCBieSB0aGUgVVNCIGRyaXZlciB3aGVuIHJlY2VpdmluZyB0aGUgcmVzcG9uc2UuIFRoaXMgbWVhbnMgdGhhdCBhIGRlbGliZXJhdGVseSBjcmFmdGVkIHNob3J0IHJlc3BvbnNlIGZyb20gYSBtYWxpY2lvdXMgVVNCIGRldmljZSBjb3VsZCBleHBsb2l0IHRoaXMuIFRoaXMgaXMgYSBjbGFzc2ljIFVTQiBkZXZpY2UgdnVsbmVyYWJpbGl0eSBzY2VuYXJpby5cblxuVGhpcyBpcyBkZWZpbml0ZWx5IGEgYnVnLCBhbmQgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb25lLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdGhlIFVTQiBpbnRlcmZhY2UuIEl0J3MgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBjYW4gZGVmaW5pdGVseSBiZSBleHBsb2l0ZWQgdG8gY3Jhc2ggdGhlIHN5c3RlbS5cblxuSSd2ZSBqdXN0IGNvbmZpcm1lZCB0aGUgc2l6ZSBvZiBgc3RydWN0IG10NzkyOF90eHB3cmA7IGl0J3Mgc3Vic3RhbnRpYWwsIGFuZCB0aGF0IGp1c3QgcmVpbmZvcmNlcyB0aGUgc2V2ZXJpdHkgb2YgdGhpcyB2dWxuZXJhYmlsaXR5LiBBIHNtYWxsIHJlc3BvbnNlIGxlYWRzIHRvIGEgbGFyZ2UsIHVudmFsaWRhdGVkIHJlYWQuIFRoaXMgaXMgYSBjbGVhciBwYXRoIHRvIGV4cGxvaXRhdGlvbi5cblxuTm93IEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlncy4gVGhlIHBhdGNoIG1vZGlmaWVzIGZpbGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gLCBzbyBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmaWxlIGZvciBgbXQ3OTI1YC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1OTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MDEuMTAwNTUxMjI0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU2MzM5ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMjowMS41MjYxOTE3NDlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5MjA1OTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkyNSBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHNwZWNpZmljYWxseSBmb3IgdGhlIE1UNzkyNSBjaGlwc2V0LiBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBicm9hZGVyIE1UNzYgZnJhbWV3b3JrLCBzbyBJJ20gbG9va2luZyBmb3IgdGhlIG51YW5jZXMgdGhhdCB0aGlzIHNwZWNpZmljIGRldmljZSBmYW1pbHkgaW50cm9kdWNlcy4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIG9wdGlvbnMgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgZHJpdmVyIGl0c2VsZiwgcGVyaGFwcyBmZWF0dXJlcyBsaWtlIGNhbGlicmF0aW9uIGRhdGEgbG9hZGluZywgcG93ZXIgbWFuYWdlbWVudCBjb250cm9scyBzcGVjaWZpYyB0byB0aGUgTVQ3OTI1J3MgYXJjaGl0ZWN0dXJlLCBhbmQgb2YgY291cnNlLCBhbnkgdmVuZG9yLXNwZWNpZmljIGFkZGl0aW9ucyBvciBtb2RpZmljYXRpb25zLiBJJ2xsIGJlIHdhdGNoaW5nIGZvciBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zOyB0aGVzZSBjYW4gZ2V0IGNvbXBsZXggcXVpY2tseSwgZXNwZWNpYWxseSB3aXRoIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBkaWZmZXJlbnQgcmVndWxhdG9yeSBkb21haW5zIGFuZCB3aXJlbGVzcyBzdGFuZGFyZHMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGVzZSBvcHRpb25zLiBBcmUgdGhleSBzZW5zaWJsZSBkZWZhdWx0cyB0aGF0IHdvcmsgd2VsbCBvdXQtb2YtdGhlLWJveCBvciBkbyB0aGV5IHJlcXVpcmUgc29tZSB1c2VyIGludGVydmVudGlvbiBvciBhZGFwdGF0aW9uIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybT8gSSdtIGFudGljaXBhdGluZyB0aGF0IHRoZXJlIHdpbGwgYmUgb3B0aW9ucyBmb3IgZGVidWdnaW5nLCBsb2dnaW5nLCBhbmQgdHJhY2UgZmVhdHVyZXMsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG15IHdvcmsuIFVsdGltYXRlbHksIG15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhlIE1UNzkyNSBkcml2ZXIgc28gdGhhdCBJIGNhbiBhbnRpY2lwYXRlIHBvdGVudGlhbCBwcm9ibGVtcywgb3B0aW1pemUgaXRzIHVzZSwgYW5kIGJlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBhbnkgaXNzdWVzIHRoYXQgYXJpc2UuIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgaGFzIGluIHN0b3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTY3NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAyOjA1LjcxODI1MzI4N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTI1X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyNUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAyOjA1LjcxODMyOTAzOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODE0OTkxNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgQXNzZXNzbWVudCBvZiB0aGUgTVQ3OTI1IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgY29uZmlndXJpbmcgdGhpcyBgTVQ3OTI1YCBkcml2ZXIgYW5kIGhlcmUncyB3aGF0J3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBlc3NlbnRpYWxzIGVuYWJsZWQ6IGBNVDc5MjVVYCBmb3IgVVNCIGVtdWxhdGlvbiBpcyBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LiBJJ2xsIGFsc28gYnJpbmcgaW4gYE1UNzkyNUVgIGZvciBQQ0llIHN1cHBvcnQsIGV2ZW4gaWYgaXQncyBub3QgY3VycmVudGx5IGVtdWxhdGVkIOKAkyBnb29kIHRvIGhhdmUgZm9yIGZ1dHVyZSBwb3NzaWJpbGl0aWVzLiBPZiBjb3Vyc2UsIGBNQUM4MDIxMWAgaXMgZnVuZGFtZW50YWwsIGFuZCB0aGVuIGBVU0JgIGFuZCBgUENJYCBhcyBiYXNlIGRlcGVuZGVuY2llcy5cblxuSGFuZyBvbiBhIHNlY29uZOKApiBJIG5lZWQgdG8gY29uZmlybSB0aG9zZSBkZXBlbmRlbmNpZXMuIExldCBtZSBjaGVjazogYE1UNzkyNVVgIGRlcGVuZHMgb24gYm90aCBgTUFDODAyMTFgIGFuZCBgVVNCYC4gR29vZCwgbWFraW5nIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRpcmVjdCBkZXBlbmRlbmNpZXMgb24gYE1UNzkyNVVgIHdoaWxlIEknbSBhdCBpdC4gQWgsIGxvb2tzIGxpa2UgYE1UNzkyeF9VU0JgIGhhcyBiZWVuIHNlbGVjdGVkOyB0aGF0IG1ha2VzIHNlbnNlLlxuXG5SaWdodCwgbmV4dCBjcnVjaWFsIGRldGFpbDogSSAqbmVlZCogYERFQlVHX0ZTYCBlbmFibGVkIHRvIGFjdHVhbGx5IGdldCB0byB0aGUgZGVidWdmcyBlbnRyaWVzLCB3aGljaCBhcmUgZXNzZW50aWFsIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzLiBJcyBgREVCVUdfRlNgIHJlcXVpcmVkPyBJdCdzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0IGluIHN5emthbGxlciwgYnV0IEkgbWlnaHQgbmVlZCB0byBleHBsaWNpdGx5IHNwZWNpZnkgaXQganVzdCB0byBiZSBzdXJlLiBJdCdzIGJldHRlciB0byBiZSBleHBsaWNpdC5cblxuV2FpdCwgdGhlIGBtdDc5MjhfdHhwd3JgIG1vZHVsZSBpcyBpbiBgZGVidWdmcy5jYC4gTm93LCBpcyBgZGVidWdmcy5jYCBhbHdheXMgY29tcGlsZWQsIG9yIGlzIGl0IGNvbmRpdGlvbmFsPyBCZXN0IGNoZWNrIHRoYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBidWlsZCBydWxlcy4gVGhpcyBpcyBnZXR0aW5nIHRvIHRoZSBkZXRhaWxzLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gYmUgbWV0aG9kaWNhbCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZydzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNTQ5LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MTEuNTMzMzI4OTI0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0XFxuICAgMzpcXHRvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgKz0gbXQ3OTI1LWNvbW1vbi5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfTVQ3OTI1RSkgKz0gbXQ3OTI1ZS5vXFxuICAgNTpcXHRvYmotJChDT05GSUdfTVQ3OTI1VSkgKz0gbXQ3OTI1dS5vXFxuICAgNjpcXHRcXG4gICA3OlxcdG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm9cXG4gICA4OlxcdG10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbiAgIDk6XFx0bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cXG4gIDEwOlxcdG10NzkyNXUteSA6PSB1c2Iub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMjoxMS41MzM0NTQzMzNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2NDc4OTMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgdGhlIERlYnVnZnMgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aHkgYSBwYXJ0aWN1bGFyIG1vZHVsZSBpcyBtaXNiZWhhdmluZyBhbmQgSSB0aGluayBpdCdzIHJlbGF0ZWQgdG8gaG93IGBkZWJ1Z2ZzYCBpcyBoYW5kbGVkLiBSaWdodCwgYGRlYnVnZnMub2AgaXMgKmFsd2F5cyogY29tcGlsZWQgaW50byB0aGUga2VybmVsLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IGBkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGVgIGlzIGp1c3QgYSBtYWNybywgb3IgZXZlbiBhIHN0dWIsIGlmIHRoZSBgQ09ORklHX0RFQlVHX0ZTYCBvcHRpb24gaXNuJ3QgZW5hYmxlZC4gU28sIHRoZSBsaWtlbHkgZml4IGhlcmUgaXMgdG8gZW5zdXJlIHRoYXQgYERFQlVHX0ZTYCBpcyBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5TaW5jZSB0aGlzIHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gYSB3aXJlbGVzcyBtb2R1bGUsIHNwZWNpZmljYWxseSBhIE1lZGlhVGVrIGRyaXZlciwgSSBhbHNvIGhhdmUgdG8gY29uc2lkZXIgdGhlIG1vZHVsZSBkZXBlbmRlbmNpZXMuIEkgc3VzcGVjdCBgV0xBTmAgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AgbWlnaHQgYmUgcmVxdWlyZWQgdG8gZXZlbiByZWFjaCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi4gVGhhdCdzIG15IG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0NTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMjoxNS41OTgyNDc1NDJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiTWVkaWFUZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbiAgMTQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcXFwiXFxuICAxNTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1xcXCJcXG4gIDE2OlxcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUVESUFURUtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MTUuNTk4MzkzNTYyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODk3NzYyMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBXTEFOIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGlzIGRyaXZlciBjb3JyZWN0bHkuIFRoZSBzeXN0ZW0gcmVxdWlyZXMgc3VwcG9ydCBmb3IgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgdGhhdCBtdWNoIGlzIGNsZWFyLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGdlbmVyaWMgYFdMQU5gIGZlYXR1cmUgaXMgZXNzZW50aWFsLCBzbyB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG9vLiBSaWdodC4gTm93LCB3aGVyZSBkbyBJIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcz8gQWgsIHllcywgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgd2l0aGluIHRoZSBNZWRpYXRlay1zcGVjaWZpYyBkcml2ZXIgc3RydWN0dXJlLiBMZXQgbWUgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBzcGVjaWZpYyBhcmVhOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gSSdsbCBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIGluIHRoZXJlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBwYXJzZSB0aGF0IGZpbGUsIG1ha2luZyBzdXJlIHRvIGxvY2F0ZSBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDA2NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MTguNzg4MTczNTUyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc2X0NPUkVcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2X0xFRFNcXG4gICA3OlxcdFxcdGJvb2xcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBNVDc2X0NPUkU9TEVEU19DTEFTU1xcbiAgMTA6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNVDc2X1VTQlxcbiAgMTM6XFx0XFx0dHJpc3RhdGVcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBNVDc2X1NESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgTVQ3NngwMl9MSUJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MTguNzg4MzI4MDcyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MTc0MjAxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBGb2N1cyBTeW1ib2xzIGZvciBUaGlzIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBJIG5lZWQgdG8gbWFrZSBzdXJlIG15IGVudmlyb25tZW50IGlzIHByb3Blcmx5IHNldCB1cC4gSXQgbG9va3MgbGlrZSBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkOiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3OTI1VWAsIGFuZCBgREVCVUdfRlNgLiBJJ2xsIGhhdmUgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhvc2UgYXJlIGFsbCBpbmNsdWRlZCBpbiBteSBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5IHRoZSBrZXkgZm9jdXMgc3ltYm9scyB3aXRoaW4gdGhlIGNvZGUuIExvb2tzIGxpa2UgdGhlIHBhdGNoIGFkZHMgYG10NzkyOF9laHRfdHhwd3JgLCBgbXQ3OTI4X3R4cHdyYCwgYG10NzkyOF90eHB3cl90Ymxfc2V0YCwgYG10NzkyOF90eHB3cl90YmxfZ2V0YCwgYW5kIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gLiBUaGUgZmlyc3QsIGBtdDc5MjhfZWh0X3R4cHdyYCwgaXMgc3RhdGljIGlubGluZSwgc28gdGhhdCdzIHByb2JhYmx5IG5vdCBhIHByaW1hcnkgc3ltYm9sIGZvciBpbi1kZXB0aCBhbmFseXNpcy4gSG93ZXZlciwgYG10NzkyOF90eHB3cmAgaXMgc3RhdGljIGJ1dCBpcyB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24gaW4gYSBgZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlYCBjYWxsLCB3aGljaCBtYWtlcyBpdCBpbnRlcmVzdGluZy4gYG10NzkyOF90eHB3cl90Ymxfc2V0YCBhbmQgYG10NzkyOF90eHB3cl90YmxfZ2V0YCBhcmUgc3RhdGljIGZ1bmN0aW9ucyBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyB0aGUgdHJhbnNtaXQgcG93ZXIgdGFibGUsIGFuZCBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyBub24tc3RhdGljLiBUaGUgZXhwb3J0IHN0YXR1cyBvZiB0aGUgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2Agc3ltYm9sIGlzIHNvbWV0aGluZyB0byBsb29rIGludG8hIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgZXhwb3J0ZWQsIHdoaWNoIHdvdWxkIGJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGludGVyZmFjZXMgd2l0aCBvdGhlciBtb2R1bGVzIG9yIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdsbCBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NTM5LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MjQuMjA1NzUxMjFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMDM2OTExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjhfZ2V0X3R4cHdyX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMDg9bXQ3OTI4X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjAtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjIxOlxcdHJldCA9IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCBkZXYtXFx1MDAzZXR4cHdyX3RibCwgdHhwd3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjItXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIxNDc9aW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgc3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjIxNzQ6aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIxNzUtXFx0XFx0XFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2OT1pbnQgbXQ3OTI1X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3MC1cXHRcXHRcXHQgIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3Mi1cXHRcXHRcXHQgIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MjQuNjA2MTI0NDg3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MDEyMjIwMTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFRYIFBvd2VyIEluZm8gUmV0cmlldmFsIGluIHRoZSBNVDc5MjUgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBtdDc5MjVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBUWCBwb3dlciBpbmZvIHJldHJpZXZhbC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgaW1tZWRpYXRlbHkgc3RhbmRzIG91dC4gSXQncyAqbm90KiBzdGF0aWMsIGFuZCBpdCdzIG5vdCBpbmxpbmVkLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBhbmFseXNpcy4gYG10NzkyOF90eHB3cmAgaXMgYWxzbyBpbnRlcmVzdGluZzsgaXQncyBzdGF0aWMsIGJ1dCBpdCdzIGEgY2FsbGJhY2sgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBzbyBpdCdzIHByb2JhYmx5IHdvcnRoIGEgbG9vay4gYG10NzkyOF90eHB3cl90Ymxfc2V0YCBhbmQgYG10NzkyOF90eHB3cl90YmxfZ2V0YCBzZWVtIGxpa2Ugc21hbGxlciwgcG9zc2libHkgaW5saW5lZCwgY2FsbGJhY2tzLCBidXQgSSdsbCBub3RlIHRoZW0uXG5cbkkgY2hlY2tlZCBgbXQ3OTI4X3R4cHdyYCBhbmQgdmVyaWZpZWQgaXQgaXMgKm5vdCogaW5saW5lZC4gQWZ0ZXIgbGlzdGluZyB0aGVtLCBJIGNvbmNsdWRlZCB0aGF0IGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGFuZCBgbXQ3OTI4X3R4cHdyYCB3ZXJlIHRoZSBtb3N0IGltcG9ydGFudCwgYnV0IHRoZW4gSSByZWFsaXplZCBgbXQ3OTI4X3R4cHdyX3RibF9zZXRgIGFuZCBgbXQ3OTI4X3R4cHdyX3RibF9nZXRgIGFyZSBxdWl0ZSBzbWFsbCBzbyB0aGV5IGFyZSBwcm9iYWJseSBpbmxpbmVkLCBvciBqdXN0IG5vdCB0aGF0IGludGVyZXN0aW5nLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gSXQncyBub3QgZXhwbGljaXRseSBgRVhQT1JUX1NZTUJPTGAnZCwgYnV0IGl0J3MgZGVmaW5lZCBpbiBgbWN1LmNgIGFuZCBjYWxsZWQgZnJvbSBgZGVidWdmcy5jYCwgbWVhbmluZyBpdCdzIGEgZ2xvYmFsIHN5bWJvbCB3aXRoaW4gdGhlIGBtdDc5MjUtY29tbW9uYCBtb2R1bGUuIEdvb2QgdG8ga25vdy5cblxuTmV4dCwgSSdtIGNoZWNraW5nIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEkgc2VlIGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgYW5kIGBERUJVR19GU2AuIExldCdzIGZpbGwgaW4gYW55IGRlcGVuZGVuY2llczogSSBhbHNvIGluY2x1ZGUgYE1UNzkyNUVgIChQQ0llKSBqdXN0IGluIGNhc2UuIEFsc28sIGBDRkc4MDIxMWAgaXMgbmVlZGVkIGJ5IGBNQUM4MDIxMWAuIFNvLCBteSBsaXN0IGlzOiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3OTI1VWAsIGBERUJVR19GU2AsIGBNVDc5MjVFYCwgYFBDSWAuXG5cbk15IHRoaW5raW5nIG5vdyBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgY29tcG9uZW50cyBmb3IgZnV6emluZy4gVGhlIHBhdGNoIGlzIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiB0byBnZXQgVFggcG93ZXIgaW5mby4gVGhlIE1UNzkyNSBkcml2ZXIgc3VwcG9ydHMgVVNCIHZpYSBgQ09ORklHX01UNzkyNVVgLiBUaGF0IG1lYW5zIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIChzcGVjaWZpY2FsbHkgdmhjaSkgaXMgYSB2aWFibGUgcGF0aC4gVGhlIGZ1bmN0aW9uIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGlzIHRoZSBpbXBvcnRhbnQgb25lIGJlY2F1c2UgaXQgc2VuZHMgYSBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UuIEJlY2F1c2UgdGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyB0aGUgbGVuZ3RoLCB0aGlzIGlzIGEgcGVyZmVjdCBvcHBvcnR1bml0eSBmb3Igb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcy4gQSBtYWxpY2lvdXMgVVNCIGRldmljZSBjb3VsZCByZXR1cm4gYSBzaG9ydCByZXNwb25zZSwgbGVhZGluZyB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEkgc2VlIHRoZSBjb2RlOlxuXG5gYGBjXG5ldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLVx1MDAzZWRhdGE7XG5tZW1jcHkodHhwd3IsIFx1MDAyNmV2ZW50LVx1MDAzZXR4cHdyLCBzaXplb2YoKnR4cHdyKSk7XG5gYGBcblxuWWVwLCBgc2tiLVx1MDAzZWRhdGFgIGdldHMgY2FzdCB0byBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudCAqYCwgYW5kIHRoZW4gYSBgbWVtY3B5YCByZWFkcyBgc2l6ZW9mKCp0eHB3cilgIGJ5dGVzIGZyb20gYFx1MDAyNmV2ZW50LVx1MDAzZXR4cHdyYC4gSWYgYHNrYi1cdTAwM2VsZW5gIGlzIGxlc3MgdGhhbiBgc2l6ZW9mKHN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQpYCwgdGhlbiB3ZSBoYXZlIGEgYnVmZmVyIG92ZXItcmVhZC4gSXQncyBhIGNsYXNzaWMsIGV4cGxvaXRhYmxlIGJ1Zy4gVGhpcyBpcyB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLlxuXG5JJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTg1MCwiT3V0cHV0VG9rZW5zIjoyNzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAyOjM5LjYxODM0NzQwNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Njg1NDczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJERUJVR19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyOF9nZXRfdHhwd3JfaW5mb1wiLFxuICAgIFwibXQ3OTI4X3R4cHdyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBkZWJ1Z2ZzIGVudHJpZXMgYW5kIE1DVSBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIHJldHJpZXZlIFRYIHBvd2VyIGluZm9ybWF0aW9uIGZvciB0aGUgTVQ3OTI4IGRldmljZSAoaGFuZGxlZCBieSB0aGUgbXQ3OTI1IGRyaXZlcikuIFRoZSBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBmdW5jdGlvbiBzZW5kcyBhIGNvbW1hbmQgdG8gdGhlIGRldmljZSBhbmQgcGFyc2VzIHRoZSByZXNwb25zZS4gU2luY2UgdGhlIE1UNzkyNSBkcml2ZXIgc3VwcG9ydHMgVVNCICh2aWEgYENPTkZJR19NVDc5MjVVYCksIHRoZSBkZXZpY2UgYW5kIGl0cyBNQ1UgcmVzcG9uc2VzIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIncyBVU0IgZnV6emluZyAodmhjaSkuIFRoZSByZXNwb25zZSBwYXJzaW5nIGluIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGJsaW5kbHkgY29waWVzIGRhdGEgZnJvbSB0aGUgU0tCIHdpdGhvdXQgY2hlY2tpbmcgaXRzIGxlbmd0aCwgd2hpY2ggY2FuIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgcmV0dXJucyBhIHNob3J0IHJlc3BvbnNlLiBUaGlzIG1ha2VzIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI4X2dldF90eHB3cl9pbmZvXCIsXG4gICAgXCJtdDc5MjhfdHhwd3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGRlYnVnZnMgZW50cmllcyBhbmQgTUNVIGNvbW11bmljYXRpb24gbG9naWMgdG8gcmV0cmlldmUgVFggcG93ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBNVDc5MjggZGV2aWNlIChoYW5kbGVkIGJ5IHRoZSBtdDc5MjUgZHJpdmVyKS4gVGhlIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGZ1bmN0aW9uIHNlbmRzIGEgY29tbWFuZCB0byB0aGUgZGV2aWNlIGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlLiBTaW5jZSB0aGUgTVQ3OTI1IGRyaXZlciBzdXBwb3J0cyBVU0IgKHZpYSBgQ09ORklHX01UNzkyNVVgKSwgdGhlIGRldmljZSBhbmQgaXRzIE1DVSByZXNwb25zZXMgY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlcidzIFVTQiBmdXp6aW5nICh2aGNpKS4gVGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyBpdHMgbGVuZ3RoLCB3aGljaCBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYSBtYWxpY2lvdXMgVVNCIGRldmljZSByZXR1cm5zIGEgc2hvcnQgcmVzcG9uc2UuIFRoaXMgbWFrZXMgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowxgv5n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 11:41:55 +0000 UTC FinishedAt: 2026-07-25 12:02:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MEDIATEK", "CFG80211", "MAC80211", "USB", "MT7925U", "DEBUG_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "90883c513ca01e77c56b8d94be7de11420c1dacf", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN", "WLAN_VENDOR_MEDIATEK", "CFG80211", "MAC80211", "USB", "MT7925U", "DEBUG_FS" ], "series_id": "902de955-db8d-47e0-a4fe-d624ae5adeb5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7928_get_txpwr_info", "mt7928_txpwr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjhfZ2V0X3R4cHdyX2luZm8mIzM0OywKICAgICYjMzQ7bXQ3OTI4X3R4cHdyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZGVidWdmcyBlbnRyaWVzIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiBsb2dpYyB0byByZXRyaWV2ZSBUWCBwb3dlciBpbmZvcm1hdGlvbiBmb3IgdGhlIE1UNzkyOCBkZXZpY2UgKGhhbmRsZWQgYnkgdGhlIG10NzkyNSBkcml2ZXIpLiBUaGUgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgZnVuY3Rpb24gc2VuZHMgYSBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UuIFNpbmNlIHRoZSBNVDc5MjUgZHJpdmVyIHN1cHBvcnRzIFVTQiAodmlhIGBDT05GSUdfTVQ3OTI1VWApLCB0aGUgZGV2aWNlIGFuZCBpdHMgTUNVIHJlc3BvbnNlcyBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nICh2aGNpKS4gVGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyBpdHMgbGVuZ3RoLCB3aGljaCBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYSBtYWxpY2lvdXMgVVNCIGRldmljZSByZXR1cm5zIGEgc2hvcnQgcmVzcG9uc2UuIFRoaXMgbWFrZXMgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmY4YWVlMzg1MTE0NGEzNjViMzY5YmE3ZGFjMTM2OTJhNTFhOWQxNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjAxOjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuY1xuaW5kZXggZDAxZmY0OWRlNDdhZjcuLjE2ODQzZTUwOTcxNjllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcbkBAIC0xNzgsNiAmIzQzOzE3OCwxNDcgQEAgbXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWRcbiYjNDM7bXQ3OTI4X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbiYjNDM7e1xuJiM0MztcdHNlcV9wcmludGYocywgXCYjMzQ7JS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcblwmIzM0OyxcbiYjNDM7XHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0O21jczBcJiMzNDssIFwmIzM0O21jczFcJiMzNDssIFwmIzM0O21jczJcJiMzNDssIFwmIzM0O21jczNcJiMzNDssIFwmIzM0O21jczRcJiMzNDssIFwmIzM0O21jczVcJiMzNDssXG4mIzQzO1x0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3M4XCYjMzQ7LCBcJiMzNDttY3M5XCYjMzQ7LCBcJiMzNDttY3MxMFwmIzM0OywgXCYjMzQ7bWNzMTFcJiMzNDssXG4mIzQzO1x0XHQgICBcJiMzNDttY3MxMlwmIzM0OywgXCYjMzQ7bWNzMTNcJiMzNDssIFwmIzM0O21jczE0XCYjMzQ7LCBcJiMzNDttY3MxNVwmIzM0Oyk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMTA2LCBlaHQxMDYsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjQyLCBlaHQyNDIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyLCBlaHQ5OTZ4MiwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4NCwgZWh0OTk2eDQsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzEwNiwgZWh0MjZfMTA2LCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NF8yNDIsIGVodDQ4NF8yNDIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0XzI0MiwgZWh0OTk2XzQ4NF8yNDIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDJfNDg0LCBlaHQ5OTZ4Ml80ODQsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzXzQ4NCwgZWh0OTk2eDNfNDg0LCBiYW5kX2lkeCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnRcbiYjNDM7bXQ3OTI4X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3ciA9IE5VTEw7XG4mIzQzO1x0dTggYmFuZF9pZHggPSBkZXYtXHUwMDNlbXBoeS5iYW5kX2lkeDtcbiYjNDM7XHRpbnQgcmV0ID0gMDtcbiYjNDM7XG4mIzQzO1x0dHhwd3IgPSBkZXZtX2ttYWxsb2MoZGV2LVx1MDAzZW10NzYuZGV2LCBzaXplb2YoKnR4cHdyKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1xuJiM0MztcdGlmICghdHhwd3IpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbiYjNDM7XHRyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LVx1MDAzZXR4cHdyX3RibCwgdHhwd3IpO1xuJiM0MztcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4mIzQzO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0LyogRGlzcGxheSBwb3dlciB0YWJsZSBuYW1lIGJhc2VkIG9uIHRoZSBpbmRleCAqL1xuJiM0MztcdHN3aXRjaCAoZGV2LVx1MDAzZXR4cHdyX3RibCkge1xuJiM0MztcdGNhc2UgMDpcbiYjNDM7XHRcdHNlcV9wcmludGYocywgXCYjMzQ7UG93ZXIgVGFibGU6ICVkIChTVEFfU0lTTylcXG5cJiMzNDssIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSAxOlxuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDtQb3dlciBUYWJsZTogJWQgKFNUQV9DREQpXFxuXCYjMzQ7LCBkZXYtXHUwMDNldHhwd3JfdGJsKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGNhc2UgMjpcbiYjNDM7XHRcdHNlcV9wcmludGYocywgXCYjMzQ7UG93ZXIgVGFibGU6ICVkIChTVEFfTUlNTylcXG5cJiMzNDssIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSAzOlxuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDtQb3dlciBUYWJsZTogJWQgKFAyUF9TSVNPKVxcblwmIzM0OywgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIDQ6XG4mIzQzO1x0XHRzZXFfcHJpbnRmKHMsIFwmIzM0O1Bvd2VyIFRhYmxlOiAlZCAoUDJQX0NERClcXG5cJiMzNDssIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSA1OlxuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDtQb3dlciBUYWJsZTogJWQgKFAyUF9NSU1PKVxcblwmIzM0OywgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0c2VxX3ByaW50ZihzLCBcJiMzNDtQb3dlciBUYWJsZTogJWQgKFVua25vd24pXFxuXCYjMzQ7LCBkZXYtXHUwMDNldHhwd3JfdGJsKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c2VxX3ByaW50ZihzLCBcJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7IFwmIzM0OywgXCYjMzQ7MW1cJiMzNDssIFwmIzM0OzJtXCYjMzQ7LCBcJiMzNDs1bVwmIzM0OywgXCYjMzQ7MTFtXCYjMzQ7KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2ssIGJhbmRfaWR4KTtcbiYjNDM7XG4mIzQzO1x0c2VxX3ByaW50ZihzLCBcJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcblwmIzM0OyxcbiYjNDM7XHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0OzZtXCYjMzQ7LCBcJiMzNDs5bVwmIzM0OywgXCYjMzQ7MTJtXCYjMzQ7LCBcJiMzNDsxOG1cJiMzNDssIFwmIzM0OzI0bVwmIzM0OywgXCYjMzQ7MzZtXCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7NDhtXCYjMzQ7LCBcJiMzNDs1NG1cJiMzNDspO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMjAsIG9mZG0yMCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNNDAsIG9mZG00MCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNODAsIG9mZG04MCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMTYwLCBvZmRtMTYwLCBiYW5kX2lkeCk7XG4mIzQzO1xuJiM0MztcdHNlcV9wcmludGYocywgXCYjMzQ7JS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cJiMzNDssXG4mIzQzO1x0XHQgICBcJiMzNDsgXCYjMzQ7LCBcJiMzNDttY3MwXCYjMzQ7LCBcJiMzNDttY3MxXCYjMzQ7LCBcJiMzNDttY3MyXCYjMzQ7LCBcJiMzNDttY3MzXCYjMzQ7LCBcJiMzNDttY3M0XCYjMzQ7LCBcJiMzNDttY3M1XCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0Oyk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTtcbiYjNDM7XG4mIzQzO1x0c2VxX3ByaW50ZihzLCBcJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cJiMzNDssXG4mIzQzO1x0XHQgICBcJiMzNDsgXCYjMzQ7LCBcJiMzNDttY3MwXCYjMzQ7LCBcJiMzNDttY3MxXCYjMzQ7LCBcJiMzNDttY3MyXCYjMzQ7LCBcJiMzNDttY3MzXCYjMzQ7LCBcJiMzNDttY3M0XCYjMzQ7LCBcJiMzNDttY3M1XCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzMzJcJiMzNDspO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XG4mIzQzO1xuJiM0MztcdHNlcV9wcmludGYocywgXCYjMzQ7JS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgXCYjMzQ7IFwmIzM0OywgXCYjMzQ7bWNzMFwmIzM0OywgXCYjMzQ7bWNzMVwmIzM0OywgXCYjMzQ7bWNzMlwmIzM0OywgXCYjMzQ7bWNzM1wmIzM0OywgXCYjMzQ7bWNzNFwmIzM0OywgXCYjMzQ7bWNzNVwmIzM0OyxcbiYjNDM7XHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDssIFwmIzM0O21jczhcJiMzNDssIFwmIzM0O21jczlcJiMzNDssIFwmIzM0O21jczEwXCYjMzQ7LCBcJiMzNDttY3MxMVwmIzM0Oyk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpO1xuJiM0MztcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNiwgaGUyNiwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XG4mIzQzO1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI0MiwgaGUyNDIsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XG4mIzQzO1xuJiM0MztcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcbiYjNDM7XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xuJiM0MztcbiYjNDM7XHRtdDc5MjhfZWh0X3R4cHdyKHMsIHR4cHdyLCBiYW5kX2lkeCk7XG4mIzQzO1xuJiM0MztvdXQ6XG4mIzQzO1x0ZGV2bV9rZnJlZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIHR4cHdyKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50XG4mIzQzO210NzkyOF90eHB3cl90Ymxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcbiYjNDM7XG4mIzQzO1x0ZGV2LVx1MDAzZXR4cHdyX3RibCA9ICh1OCl2YWw7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW50XG4mIzQzO210NzkyOF90eHB3cl90YmxfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG4mIzQzO1xuJiM0MztcdCp2YWwgPSBkZXYtXHUwMDNldHhwd3JfdGJsO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfdHhwd3JfdGJsLCBtdDc5MjhfdHhwd3JfdGJsX2dldCxcbiYjNDM7XHRcdFx0IG10NzkyOF90eHB3cl90Ymxfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbiYjNDM7XG4gc3RhdGljIGludFxuIG10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbiB7XG5AQCAtMzAxLDggJiM0Mzs0NDIsMTQgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O2FjcVwmIzM0OywgZGlyLFxuIFx0XHRcdFx0ICAgIG10NzkyeF9xdWV1ZXNfYWNxKTtcbi1cdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O3R4cG93ZXJfc2t1XCYjMzQ7LCBkaXIsXG4tXHRcdFx0XHQgICAgbXQ3OTI1X3R4cHdyKTtcbiYjNDM7XHRpZiAoaXNfbXQ3OTI4KFx1MDAyNmRldi1cdTAwM2VtdDc2KSkge1xuJiM0MztcdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbiYjNDM7XHRcdFx0XHRcdCAgICBtdDc5MjhfdHhwd3IpO1xuJiM0MztcdFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDt0eHBvd2VyX3RibFwmIzM0OywgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfdHhwd3JfdGJsKTtcbiYjNDM7XHR9IGVsc2Uge1xuJiM0MztcdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbiYjNDM7XHRcdFx0XHRcdCAgICBtdDc5MjVfdHhwd3IpO1xuJiM0MztcdH1cbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7dHhfc3RhdHNcJiMzNDssIDA0MDAsIGRpciwgZGV2LCBcdTAwMjZtdDc5MnhfdHhfc3RhdHNfZm9wcyk7XG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O2Z3X2RlYnVnXCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgXHUwMDI2Zm9wc19md19kZWJ1Zyk7XG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3J1bnRpbWUtcG1cJiMzNDssIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX3BtKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBlOTRmYTU0NGZmMjA3Ny4uZTk5NWM3NWZlOTRlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC0yMTcxLDYgJiM0MzsyMTcxLDMzIEBAIGludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHN0cnVjdCBtdDc5MjVfdHhwXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO2ludCBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHU4IHBvd2VyX3RibCxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cilcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQgKmV2ZW50O1xuJiM0MztcdHN0cnVjdCBtdDc5MjVfdHhwd3JfcmVxIHJlcSA9IHtcbiYjNDM7XHRcdC50YWcgPSBjcHVfdG9fbGUxNihUWF9QT1dFUl9TSE9XX0lORk8pLFxuJiM0MztcdFx0LmxlbiA9IGNwdV90b19sZTE2KHNpemVvZihyZXEpIC0gNCksXG4mIzQzO1x0XHQuY2F0ZyA9IFRYUE9XRVJfQUxMX1JBVEVfUE9XRVJfSU5GTyxcbiYjNDM7XHRcdC5iYW5kX2lkeCA9IGJhbmRfaWR4LFxuJiM0MztcdFx0LnBvd2VyX3RibCA9IHBvd2VyX3RibCxcbiYjNDM7XHR9O1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoVFhQT1dFUiksXG4mIzQzO1x0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLVx1MDAzZWRhdGE7XG4mIzQzO1x0bWVtY3B5KHR4cHdyLCBcdTAwMjZldmVudC1cdTAwM2V0eHB3ciwgc2l6ZW9mKCp0eHB3cikpO1xuJiM0MztcbiYjNDM7XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBtdDc5MjVfbWN1X3NldF9zbmlmZmVyKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXHRcdFx0ICAgYm9vbCBlbmFibGUpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcbmluZGV4IDI5M2YxNzNiMjNkZGFmLi5lOWQ0NzRiODgwNzAwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuQEAgLTY5LDcgJiM0Mzs2OSw3IEBAIHN0cnVjdCBtdDc5MjVfdHhwd3JfcmVxIHtcbiBcdHU4IGZvcm1hdF9pZDtcbiBcdHU4IGNhdGc7XG4gXHR1OCBiYW5kX2lkeDtcbi1cdHU4IF9yc3YxO1xuJiM0MztcdHU4IHBvd2VyX3RibDtcbiB9IF9fcGFja2VkO1xuIFxuIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQge1xuQEAgLTkwLDYgJiM0Mzs5MCwyNCBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX2V2ZW50IHtcbiBcdHU4IHJzdjE7XG4gfSBfX3BhY2tlZDtcbiBcbiYjNDM7c3RydWN0IG10NzkyOF90eHB3cl9ldmVudCB7XG4mIzQzO1x0dTggcnN2WzRdO1xuJiM0MztcdF9fbGUxNiB0YWc7XG4mIzQzO1x0X19sZTE2IGxlbjtcbiYjNDM7XG4mIzQzO1x0dTggY2F0ZztcbiYjNDM7XHR1OCBiYW5kX2lkeDtcbiYjNDM7XHR1OCBjaF9iYW5kO1xuJiM0MztcdHU4IGZvcm1hdDsgLyogMDpMZWdhY3ksIDE6SEUgKi9cbiYjNDM7XG4mIzQzO1x0LyogUmF0ZSBwb3dlciBpbmZvICovXG4mIzQzO1x0c3RydWN0IG10NzkyOF90eHB3ciB0eHB3cjtcbiYjNDM7XG4mIzQzO1x0czggcHdyX21heDtcbiYjNDM7XHRzOCBwd3JfbWluO1xuJiM0MztcdHU4IHJzdjE7XG4mIzQzO30gX19wYWNrZWQ7XG4mIzQzO1xuIGVudW0ge1xuIFx0VE1fU1dJVENIX01PREUsXG4gXHRUTV9TRVRfQVRfQ01ELFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbmluZGV4IDRjYzI1OTQxOGFmY2E4Li5iNTMzMzBhMjgyNjhkZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxuQEAgLTI1Miw2ICYjNDM7MjUyLDQzIEBAIHN0cnVjdCBtdDc5MjVfdHhwd3Ige1xuIFx0czggZWh0OTk2eDNfNDg0WzE2XVsyXTtcbiB9O1xuIFxuJiM0MztzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHtcbiYjNDM7XHRzOCBjY2tbNF1bMl07XG4mIzQzO1x0czggb2ZkbTIwWzhdWzJdO1xuJiM0MztcdHM4IG9mZG00MFs4XVsyXTtcbiYjNDM7XHRzOCBvZmRtODBbOF1bMl07XG4mIzQzO1x0czggb2ZkbTE2MFs4XVsyXTtcbiYjNDM7XHRzOCBodDIwWzhdWzJdO1xuJiM0MztcdHM4IGh0NDBbOV1bMl07XG4mIzQzO1x0czggdmh0MjBbMTJdWzJdO1xuJiM0MztcdHM4IHZodDQwWzEyXVsyXTtcbiYjNDM7XHRzOCB2aHQ4MFsxMl1bMl07XG4mIzQzO1x0czggdmh0MTYwWzEyXVsyXTtcbiYjNDM7XHRzOCBoZTI2WzEyXVsyXTtcbiYjNDM7XHRzOCBoZTUyWzEyXVsyXTtcbiYjNDM7XHRzOCBoZTEwNlsxMl1bMl07XG4mIzQzO1x0czggaGUyNDJbMTJdWzJdO1xuJiM0MztcdHM4IGhlNDg0WzEyXVsyXTtcbiYjNDM7XHRzOCBoZTk5NlsxMl1bMl07XG4mIzQzO1x0czggaGU5OTZ4MlsxMl1bMl07XG4mIzQzO1x0czggZWh0MjZbMTZdWzJdO1xuJiM0MztcdHM4IGVodDUyWzE2XVsyXTtcbiYjNDM7XHRzOCBlaHQxMDZbMTZdWzJdO1xuJiM0MztcdHM4IGVodDI0MlsxNl1bMl07XG4mIzQzO1x0czggZWh0NDg0WzE2XVsyXTtcbiYjNDM7XHRzOCBlaHQ5OTZbMTZdWzJdO1xuJiM0MztcdHM4IGVodDk5NngyWzE2XVsyXTtcbiYjNDM7XHRzOCBlaHQ5OTZ4NFsxNl1bMl07XG4mIzQzO1x0czggZWh0MjZfNTJbMTZdWzJdO1xuJiM0MztcdHM4IGVodDI2XzEwNlsxNl1bMl07XG4mIzQzO1x0czggZWh0NDg0XzI0MlsxNl1bMl07XG4mIzQzO1x0czggZWh0OTk2XzQ4NFsxNl1bMl07XG4mIzQzO1x0czggZWh0OTk2XzQ4NF8yNDJbMTZdWzJdO1xuJiM0MztcdHM4IGVodDk5NngyXzQ4NFsxNl1bMl07XG4mIzQzO1x0czggZWh0OTk2eDNbMTZdWzJdO1xuJiM0MztcdHM4IGVodDk5NngzXzQ4NFsxNl1bMl07XG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgdTggbXQ3OTI3X2JhbmRfaWR4KGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXG4ge1xuIFx0c3dpdGNoIChiYW5kKSB7XG5AQCAtMzMxLDYgJiM0MzszNjgsOCBAQCBpbnQgbXQ3OTI1X21jdV91bmlfYnNzX3BzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4gdm9pZCBtdDc5MjVfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuIGludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsXG4gXHRcdFx0ICBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3cik7XG4mIzQzO2ludCBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHU4IHBvd2VyX3RibCxcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cik7XG4gdm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4gXHRcdFx0XHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeCk7XG4gdm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuaW5kZXggNzAwNzNiNDNhZjU0MzEuLmJlZjJjNmVkYmE0ODgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuQEAgLTI2Nyw2ICYjNDM7MjY3LDcgQEAgc3RydWN0IG10NzkyeF9kZXYge1xuIFxuIFx0dTggZndfZGVidWc7XG4gXHR1OCBmd19mZWF0dXJlcztcbiYjNDM7XHR1OCB0eHB3cl90Ymw7XG4gXG4gXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfcG0gcG07XG4gXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfY29yZWR1bXAgY29yZWR1bXA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU4mIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjhfZ2V0X3R4cHdyX2luZm8mIzM0OywKICAgICYjMzQ7bXQ3OTI4X3R4cHdyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgZGVidWdmcyBlbnRyaWVzIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiBsb2dpYyB0byByZXRyaWV2ZSBUWCBwb3dlciBpbmZvcm1hdGlvbiBmb3IgdGhlIE1UNzkyOCBkZXZpY2UgKGhhbmRsZWQgYnkgdGhlIG10NzkyNSBkcml2ZXIpLiBUaGUgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgZnVuY3Rpb24gc2VuZHMgYSBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UuIFNpbmNlIHRoZSBNVDc5MjUgZHJpdmVyIHN1cHBvcnRzIFVTQiAodmlhIGBDT05GSUdfTVQ3OTI1VWApLCB0aGUgZGV2aWNlIGFuZCBpdHMgTUNVIHJlc3BvbnNlcyBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6aW5nICh2aGNpKS4gVGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyBpdHMgbGVuZ3RoLCB3aGljaCBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYSBtYWxpY2lvdXMgVVNCIGRldmljZSByZXR1cm5zIGEgc2hvcnQgcmVzcG9uc2UuIFRoaXMgbWFrZXMgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNmY4YWVlMzg1MTE0NGEzNjViMzY5YmE3ZGFjMTM2OTJhNTFhOWQxNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDEyOjAxOjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jCmluZGV4IGQwMWZmNDlkZTQ3YWY3Li4xNjg0M2U1MDk3MTY5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYwpAQCAtMTc4LDYgJiM0MzsxNzgsMTQ3IEBAIG10NzkyNV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZAomIzQzO210NzkyOF9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpCiYjNDM7ewomIzQzOwlzZXFfcHJpbnRmKHMsICYjMzQ7JS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xuJiMzNDssCiYjNDM7CQkgICAmIzM0OyAmIzM0OywgJiMzNDttY3MwJiMzNDssICYjMzQ7bWNzMSYjMzQ7LCAmIzM0O21jczImIzM0OywgJiMzNDttY3MzJiMzNDssICYjMzQ7bWNzNCYjMzQ7LCAmIzM0O21jczUmIzM0OywKJiM0MzsJCSAgICYjMzQ7bWNzNiYjMzQ7LCAmIzM0O21jczcmIzM0OywgJiMzNDttY3M4JiMzNDssICYjMzQ7bWNzOSYjMzQ7LCAmIzM0O21jczEwJiMzNDssICYjMzQ7bWNzMTEmIzM0OywKJiM0MzsJCSAgICYjMzQ7bWNzMTImIzM0OywgJiMzNDttY3MxMyYjMzQ7LCAmIzM0O21jczE0JiMzNDssICYjMzQ7bWNzMTUmIzM0Oyk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNiwgZWh0MjYsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDUyLCBlaHQ1MiwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMTA2LCBlaHQxMDYsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODQsIGVodDQ4NCwgYmFuZF9pZHgpOwomIzQzOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2LCBlaHQ5OTYsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyLCBlaHQ5OTZ4MiwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl81MiwgZWh0MjZfNTIsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzEwNiwgZWh0MjZfMTA2LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0LCBlaHQ5OTZfNDg0LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0XzI0MiwgZWh0OTk2XzQ4NF8yNDIsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MywgZWh0OTk2eDMsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzXzQ4NCwgZWh0OTk2eDNfNDg0LCBiYW5kX2lkeCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQKJiM0MzttdDc5MjhfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLSZndDtwcml2YXRlKTsKJiM0MzsJc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IgPSBOVUxMOwomIzQzOwl1OCBiYW5kX2lkeCA9IGRldi0mZ3Q7bXBoeS5iYW5kX2lkeDsKJiM0MzsJaW50IHJldCA9IDA7CiYjNDM7CiYjNDM7CXR4cHdyID0gZGV2bV9rbWFsbG9jKGRldi0mZ3Q7bXQ3Ni5kZXYsIHNpemVvZigqdHhwd3IpLCBHRlBfS0VSTkVMKTsKJiM0MzsKJiM0MzsJaWYgKCF0eHB3cikKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwomIzQzOwltdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpOwomIzQzOwlyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LSZndDt0eHB3cl90YmwsIHR4cHdyKTsKJiM0MzsJbXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTsKJiM0MzsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwkvKiBEaXNwbGF5IHBvd2VyIHRhYmxlIG5hbWUgYmFzZWQgb24gdGhlIGluZGV4ICovCiYjNDM7CXN3aXRjaCAoZGV2LSZndDt0eHB3cl90YmwpIHsKJiM0MzsJY2FzZSAwOgomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O1Bvd2VyIFRhYmxlOiAlZCAoU1RBX1NJU08pXG4mIzM0OywgZGV2LSZndDt0eHB3cl90YmwpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgMToKJiM0MzsJCXNlcV9wcmludGYocywgJiMzNDtQb3dlciBUYWJsZTogJWQgKFNUQV9DREQpXG4mIzM0OywgZGV2LSZndDt0eHB3cl90YmwpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgMjoKJiM0MzsJCXNlcV9wcmludGYocywgJiMzNDtQb3dlciBUYWJsZTogJWQgKFNUQV9NSU1PKVxuJiMzNDssIGRldi0mZ3Q7dHhwd3JfdGJsKTsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIDM6CiYjNDM7CQlzZXFfcHJpbnRmKHMsICYjMzQ7UG93ZXIgVGFibGU6ICVkIChQMlBfU0lTTylcbiYjMzQ7LCBkZXYtJmd0O3R4cHdyX3RibCk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSA0OgomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O1Bvd2VyIFRhYmxlOiAlZCAoUDJQX0NERClcbiYjMzQ7LCBkZXYtJmd0O3R4cHdyX3RibCk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSA1OgomIzQzOwkJc2VxX3ByaW50ZihzLCAmIzM0O1Bvd2VyIFRhYmxlOiAlZCAoUDJQX01JTU8pXG4mIzM0OywgZGV2LSZndDt0eHB3cl90YmwpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlzZXFfcHJpbnRmKHMsICYjMzQ7UG93ZXIgVGFibGU6ICVkIChVbmtub3duKVxuJiMzNDssIGRldi0mZ3Q7dHhwd3JfdGJsKTsKJiM0MzsJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNlcV9wcmludGYocywgJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzXG4mIzM0OywKJiM0MzsJCSAgICYjMzQ7ICYjMzQ7LCAmIzM0OzFtJiMzNDssICYjMzQ7Mm0mIzM0OywgJiMzNDs1bSYjMzQ7LCAmIzM0OzExbSYjMzQ7KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7CiYjNDM7CiYjNDM7CXNlcV9wcmludGYocywgJiMzNDslLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xuJiMzNDssCiYjNDM7CQkgICAmIzM0OyAmIzM0OywgJiMzNDs2bSYjMzQ7LCAmIzM0OzltJiMzNDssICYjMzQ7MTJtJiMzNDssICYjMzQ7MThtJiMzNDssICYjMzQ7MjRtJiMzNDssICYjMzQ7MzZtJiMzNDssCiYjNDM7CQkgICAmIzM0OzQ4bSYjMzQ7LCAmIzM0OzU0bSYjMzQ7KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0yMCwgb2ZkbTIwLCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNNDAsIG9mZG00MCwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETTgwLCBvZmRtODAsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0xNjAsIG9mZG0xNjAsIGJhbmRfaWR4KTsKJiM0MzsKJiM0MzsJc2VxX3ByaW50ZihzLCAmIzM0OyUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzXG4mIzM0OywKJiM0MzsJCSAgICYjMzQ7ICYjMzQ7LCAmIzM0O21jczAmIzM0OywgJiMzNDttY3MxJiMzNDssICYjMzQ7bWNzMiYjMzQ7LCAmIzM0O21jczMmIzM0OywgJiMzNDttY3M0JiMzNDssICYjMzQ7bWNzNSYjMzQ7LAomIzQzOwkJICAgJiMzNDttY3M2JiMzNDssICYjMzQ7bWNzNyYjMzQ7KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTsKJiM0MzsKJiM0MzsJc2VxX3ByaW50ZihzLCAmIzM0OyUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xuJiMzNDssCiYjNDM7CQkgICAmIzM0OyAmIzM0OywgJiMzNDttY3MwJiMzNDssICYjMzQ7bWNzMSYjMzQ7LCAmIzM0O21jczImIzM0OywgJiMzNDttY3MzJiMzNDssICYjMzQ7bWNzNCYjMzQ7LCAmIzM0O21jczUmIzM0OywKJiM0MzsJCSAgICYjMzQ7bWNzNiYjMzQ7LCAmIzM0O21jczcmIzM0OywgJiMzNDttY3MzMiYjMzQ7KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTsKJiM0MzsKJiM0MzsJc2VxX3ByaW50ZihzLCAmIzM0OyUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xuJiMzNDssCiYjNDM7CQkgICAmIzM0OyAmIzM0OywgJiMzNDttY3MwJiMzNDssICYjMzQ7bWNzMSYjMzQ7LCAmIzM0O21jczImIzM0OywgJiMzNDttY3MzJiMzNDssICYjMzQ7bWNzNCYjMzQ7LCAmIzM0O21jczUmIzM0OywKJiM0MzsJCSAgICYjMzQ7bWNzNiYjMzQ7LCAmIzM0O21jczcmIzM0OywgJiMzNDttY3M4JiMzNDssICYjMzQ7bWNzOSYjMzQ7LCAmIzM0O21jczEwJiMzNDssICYjMzQ7bWNzMTEmIzM0Oyk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjAsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpOwomIzQzOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpOwomIzQzOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNiwgaGUyNiwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI0MiwgaGUyNDIsIGJhbmRfaWR4KTsKJiM0MzsJbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpOwomIzQzOwomIzQzOwltdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2LCBiYW5kX2lkeCk7CiYjNDM7CW10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7CiYjNDM7CiYjNDM7CW10NzkyOF9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CWRldm1fa2ZyZWUoZGV2LSZndDttdDc2LmRldiwgdHhwd3IpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50CiYjNDM7bXQ3OTI4X3R4cHdyX3RibF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhOwomIzQzOwomIzQzOwlkZXYtJmd0O3R4cHdyX3RibCA9ICh1OCl2YWw7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50CiYjNDM7bXQ3OTI4X3R4cHdyX3RibF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTsKJiM0MzsKJiM0MzsJKnZhbCA9IGRldi0mZ3Q7dHhwd3JfdGJsOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfdHhwd3JfdGJsLCBtdDc5MjhfdHhwd3JfdGJsX2dldCwKJiM0MzsJCQkgbXQ3OTI4X3R4cHdyX3RibF9zZXQsICYjMzQ7JWxsZFxuJiMzNDspOwomIzQzOwogc3RhdGljIGludAogbXQ3OTI1X3BtX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogewpAQCAtMzAxLDggJiM0Mzs0NDIsMTQgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldikKIAogCWRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtJmd0O210NzYuZGV2LCAmIzM0O2FjcSYjMzQ7LCBkaXIsCiAJCQkJICAgIG10NzkyeF9xdWV1ZXNfYWNxKTsKLQlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LSZndDttdDc2LmRldiwgJiMzNDt0eHBvd2VyX3NrdSYjMzQ7LCBkaXIsCi0JCQkJICAgIG10NzkyNV90eHB3cik7CiYjNDM7CWlmIChpc19tdDc5MjgoJmFtcDtkZXYtJmd0O210NzYpKSB7CiYjNDM7CQlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LSZndDttdDc2LmRldiwgJiMzNDt0eHBvd2VyX3NrdSYjMzQ7LCBkaXIsCiYjNDM7CQkJCQkgICAgbXQ3OTI4X3R4cHdyKTsKJiM0MzsJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDt0eHBvd2VyX3RibCYjMzQ7LCAwNjAwLCBkaXIsIGRldiwgJmFtcDtmb3BzX3R4cHdyX3RibCk7CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQlkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LSZndDttdDc2LmRldiwgJiMzNDt0eHBvd2VyX3NrdSYjMzQ7LCBkaXIsCiYjNDM7CQkJCQkgICAgbXQ3OTI1X3R4cHdyKTsKJiM0MzsJfQogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDt0eF9zdGF0cyYjMzQ7LCAwNDAwLCBkaXIsIGRldiwgJmFtcDttdDc5MnhfdHhfc3RhdHNfZm9wcyk7CiAJZGVidWdmc19jcmVhdGVfZmlsZSgmIzM0O2Z3X2RlYnVnJiMzNDssIDA2MDAsIGRpciwgZGV2LCAmYW1wO2ZvcHNfZndfZGVidWcpOwogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtydW50aW1lLXBtJiMzNDssIDA2MDAsIGRpciwgZGV2LCAmYW1wO2ZvcHNfcG0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYwppbmRleCBlOTRmYTU0NGZmMjA3Ny4uZTk5NWM3NWZlOTRlZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jCkBAIC0yMTcxLDYgJiM0MzsyMTcxLDMzIEBAIGludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHN0cnVjdCBtdDc5MjVfdHhwCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztpbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsCiYjNDM7CQkJICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQgKmV2ZW50OwomIzQzOwlzdHJ1Y3QgbXQ3OTI1X3R4cHdyX3JlcSByZXEgPSB7CiYjNDM7CQkudGFnID0gY3B1X3RvX2xlMTYoVFhfUE9XRVJfU0hPV19JTkZPKSwKJiM0MzsJCS5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIDQpLAomIzQzOwkJLmNhdGcgPSBUWFBPV0VSX0FMTF9SQVRFX1BPV0VSX0lORk8sCiYjNDM7CQkuYmFuZF9pZHggPSBiYW5kX2lkeCwKJiM0MzsJCS5wb3dlcl90YmwgPSBwb3dlcl90YmwsCiYjNDM7CX07CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CXJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coJmFtcDtkZXYtJmd0O210NzYsIE1DVV9VTklfQ01EKFRYUE9XRVIpLAomIzQzOwkJCQkJJmFtcDtyZXEsIHNpemVvZihyZXEpLCB0cnVlLCAmYW1wO3NrYik7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLSZndDtkYXRhOwomIzQzOwltZW1jcHkodHhwd3IsICZhbXA7ZXZlbnQtJmd0O3R4cHdyLCBzaXplb2YoKnR4cHdyKSk7CiYjNDM7CiYjNDM7CWRldl9rZnJlZV9za2Ioc2tiKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogaW50IG10NzkyNV9tY3Vfc2V0X3NuaWZmZXIoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKIAkJCSAgIGJvb2wgZW5hYmxlKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaAppbmRleCAyOTNmMTczYjIzZGRhZi4uZTlkNDc0Yjg4MDcwMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oCkBAIC02OSw3ICYjNDM7NjksNyBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX3JlcSB7CiAJdTggZm9ybWF0X2lkOwogCXU4IGNhdGc7CiAJdTggYmFuZF9pZHg7Ci0JdTggX3JzdjE7CiYjNDM7CXU4IHBvd2VyX3RibDsKIH0gX19wYWNrZWQ7CiAKIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQgewpAQCAtOTAsNiAmIzQzOzkwLDI0IEBAIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQgewogCXU4IHJzdjE7CiB9IF9fcGFja2VkOwogCiYjNDM7c3RydWN0IG10NzkyOF90eHB3cl9ldmVudCB7CiYjNDM7CXU4IHJzdls0XTsKJiM0MzsJX19sZTE2IHRhZzsKJiM0MzsJX19sZTE2IGxlbjsKJiM0MzsKJiM0MzsJdTggY2F0ZzsKJiM0MzsJdTggYmFuZF9pZHg7CiYjNDM7CXU4IGNoX2JhbmQ7CiYjNDM7CXU4IGZvcm1hdDsgLyogMDpMZWdhY3ksIDE6SEUgKi8KJiM0MzsKJiM0MzsJLyogUmF0ZSBwb3dlciBpbmZvICovCiYjNDM7CXN0cnVjdCBtdDc5MjhfdHhwd3IgdHhwd3I7CiYjNDM7CiYjNDM7CXM4IHB3cl9tYXg7CiYjNDM7CXM4IHB3cl9taW47CiYjNDM7CXU4IHJzdjE7CiYjNDM7fSBfX3BhY2tlZDsKJiM0MzsKIGVudW0gewogCVRNX1NXSVRDSF9NT0RFLAogCVRNX1NFVF9BVF9DTUQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oCmluZGV4IDRjYzI1OTQxOGFmY2E4Li5iNTMzMzBhMjgyNjhkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgKQEAgLTI1Miw2ICYjNDM7MjUyLDQzIEBAIHN0cnVjdCBtdDc5MjVfdHhwd3IgewogCXM4IGVodDk5NngzXzQ4NFsxNl1bMl07CiB9OwogCiYjNDM7c3RydWN0IG10NzkyOF90eHB3ciB7CiYjNDM7CXM4IGNja1s0XVsyXTsKJiM0MzsJczggb2ZkbTIwWzhdWzJdOwomIzQzOwlzOCBvZmRtNDBbOF1bMl07CiYjNDM7CXM4IG9mZG04MFs4XVsyXTsKJiM0MzsJczggb2ZkbTE2MFs4XVsyXTsKJiM0MzsJczggaHQyMFs4XVsyXTsKJiM0MzsJczggaHQ0MFs5XVsyXTsKJiM0MzsJczggdmh0MjBbMTJdWzJdOwomIzQzOwlzOCB2aHQ0MFsxMl1bMl07CiYjNDM7CXM4IHZodDgwWzEyXVsyXTsKJiM0MzsJczggdmh0MTYwWzEyXVsyXTsKJiM0MzsJczggaGUyNlsxMl1bMl07CiYjNDM7CXM4IGhlNTJbMTJdWzJdOwomIzQzOwlzOCBoZTEwNlsxMl1bMl07CiYjNDM7CXM4IGhlMjQyWzEyXVsyXTsKJiM0MzsJczggaGU0ODRbMTJdWzJdOwomIzQzOwlzOCBoZTk5NlsxMl1bMl07CiYjNDM7CXM4IGhlOTk2eDJbMTJdWzJdOwomIzQzOwlzOCBlaHQyNlsxNl1bMl07CiYjNDM7CXM4IGVodDUyWzE2XVsyXTsKJiM0MzsJczggZWh0MTA2WzE2XVsyXTsKJiM0MzsJczggZWh0MjQyWzE2XVsyXTsKJiM0MzsJczggZWh0NDg0WzE2XVsyXTsKJiM0MzsJczggZWh0OTk2WzE2XVsyXTsKJiM0MzsJczggZWh0OTk2eDJbMTZdWzJdOwomIzQzOwlzOCBlaHQ5OTZ4NFsxNl1bMl07CiYjNDM7CXM4IGVodDI2XzUyWzE2XVsyXTsKJiM0MzsJczggZWh0MjZfMTA2WzE2XVsyXTsKJiM0MzsJczggZWh0NDg0XzI0MlsxNl1bMl07CiYjNDM7CXM4IGVodDk5Nl80ODRbMTZdWzJdOwomIzQzOwlzOCBlaHQ5OTZfNDg0XzI0MlsxNl1bMl07CiYjNDM7CXM4IGVodDk5NngyXzQ4NFsxNl1bMl07CiYjNDM7CXM4IGVodDk5NngzWzE2XVsyXTsKJiM0MzsJczggZWh0OTk2eDNfNDg0WzE2XVsyXTsKJiM0Mzt9OwomIzQzOwogc3RhdGljIGlubGluZSB1OCBtdDc5MjdfYmFuZF9pZHgoZW51bSBubDgwMjExX2JhbmQgYmFuZCkKIHsKIAlzd2l0Y2ggKGJhbmQpIHsKQEAgLTMzMSw2ICYjNDM7MzY4LDggQEAgaW50IG10NzkyNV9tY3VfdW5pX2Jzc19wcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LAogdm9pZCBtdDc5MjVfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwogaW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwKIAkJCSAgc3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IpOwomIzQzO2ludCBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHU4IHBvd2VyX3RibCwKJiM0MzsJCQkgIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyKTsKIHZvaWQgbXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LAogCQkJCSAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTsKIHZvaWQgbXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaAppbmRleCA3MDA3M2I0M2FmNTQzMS4uYmVmMmM2ZWRiYTQ4ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaApAQCAtMjY3LDYgJiM0MzsyNjcsNyBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7CiAKIAl1OCBmd19kZWJ1ZzsKIAl1OCBmd19mZWF0dXJlczsKJiM0MzsJdTggdHhwd3JfdGJsOwogCiAJc3RydWN0IG10NzZfY29ubmFjX3BtIHBtOwogCXN0cnVjdCBtdDc2X2Nvbm5hY19jb3JlZHVtcCBjb3JlZHVtcDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ0OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDUzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIE1UNzYgVFggUG93ZXIgRGVidWdmcyBQYXRjaGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyBmb3IgdGhlIGBtdDc2YCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIGBtdDc5MjVgIGRyaXZlciBhbmQgYWRkaW5nIGRlYnVnZnMgZW50cmllcyB0byBleHBvc2UgVFggcG93ZXIgaW5mb3JtYXRpb24gZm9yIGBtdDc5MjhgLiBUaGUgYWRkZWQgZnVuY3Rpb25zIGFyZSBhbGwgYWJvdXQgZ2V0dGluZyBhbmQgc2V0dGluZyBUWCBwb3dlciB0YWJsZXMgYW5kIHNlbmRpbmcgY29tbWFuZHMgdG8gdGhlIE1lZGlhVGVrIE1DVSwgcHJpbWFyaWx5IGZvciB1c2Ugd2l0aCB0aGUgZGVidWdmcyBlbnRyaWVzIGB0eHBvd2VyX3NrdWAgYW5kIGB0eHBvd2VyX3RibGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgZXZlbiBmdXp6LXdvcnRoeS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGludGVyYWN0aW5nIHdpdGggdGhpcyBNQ1UgdG8gcmV0cmlldmUgVFggcG93ZXIgZGV0YWlscy4gVGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgaXMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIHdoaWNoIGNhbGxzIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCB0byBzZW5kIGEgY29tbWFuZC4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2sgaWYgdGhpcyBpcyByZWFjaGFibGUuIFJlYWRpbmcgZnJvbSBkZWJ1Z2ZzIGlzIGEgZGVmaW5pdGUgeWVzLiBCdXQsIGlzIGl0IHdvcnRoIHRoZSBlZmZvcnQ/CgpUaGUgcHJvbXB0IGhhcyBjbGVhciBjcml0ZXJpYS4gSXQgc3VnZ2VzdHMgYXZvaWRpbmcgcGF0Y2hlcyBjb250YWluaW5nIG9ubHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZyBvciBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIGBtdDc2YCBpcyBhIHBoeXNpY2FsIFdpLUZpIGRyaXZlciwgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGVzZSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdHJhbnNsYXRlIHRvIGEgdmlydHVhbGl6ZWQgc2V0dGluZy4gYG1hYzgwMjExX2h3c2ltYCBpc24mIzM5O3QgcmVsZXZhbnQsIGl0IGRvZXNuJiMzOTt0IHNpbXVsYXRlIHRoZSBgbXQ3NmAgaGFyZHdhcmUuIEJ1dCB3YWl0LCBgbXQ3NmAgaGFzIGJvdGggVVNCIGFuZCBQQ0llIGRyaXZlcnMuIENhbiBJIGVtdWxhdGUgaXQgc29tZWhvdz8gTm90IHdpdGggVVNCIGdhZGdldCwgaXQmIzM5O3MgZm9yIHRoZSBkZXZpY2Ugc2lkZS4gV2FpdCwgc3l6a2FsbGVyIGhhcyB2aGNpIGZvciBVU0IgZGV2aWNlIGVtdWxhdGlvbi4gU28gVVNCIFdpLUZpIGRvbmdsZXMgY2FuIGJlIGVtdWxhdGVkIQoKTm93LCB0aGUgcXVlc3Rpb24gaXMsIGlzIGBtdDc5MjVgIGEgVVNCIGRldmljZT8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgc3BlY2lmaWNzIHRvIGRldGVybWluZSBpZiB0aGUgY2hhbmdlcyBhcmUgaW5kZWVkIHRlc3RhYmxlIHdpdGhpbiBhIGZ1enppbmcgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDMyNTkgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1LWNvbW1vbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc5MjVFKSAmIzQzOz0gbXQ3OTI1ZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSAmIzQzOz0gbXQ3OTI1dS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6NzptdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo4Om10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgJiM0Mzs9IHRlc3Rtb2RlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjk6bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXCYjMzQ7bXQ3OTI1LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg6bXQ3OTI1X3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0Olx0bXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODpcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVx1MDAzZW10NzYuZGVidWdmc19yZWcsIFx1MDAyNnJlZ3ZhbCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzY6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVndmFsLCBtdDc5MjVfcmVnX2dldCwgbXQ3OTI1X3JlZ19zZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzctXHRcdFx0IFwmIzM0OzB4JTA4bGx4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0zOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzk6bXQ3OTI1X2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUtXHRkZXYtXHUwMDNlZndfZGVidWcgPSAodTgpdmFsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ2Olx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVx1MDAzZWZ3X2RlYnVnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9NTM9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjU0Om10NzkyNV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2NDpcdFx0XHQgbXQ3OTI1X2Z3X2RlYnVnX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTY4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTcwLVx0XHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy04NC0oe1x0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo4NTpcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFwmIzM0OyAodG1hYylcJiMzNDssXHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVx0XHRcdCAgICAgIHR4cHdyLVx1MDAzZXJhdGUsXHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTkxPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjkyOm10NzkyNV9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05Ny1cdFx0ICAgXCYjMzQ7bWNzMTJcJiMzNDssIFwmIzM0O21jczEzXCYjMzQ7LCBcJiMzNDttY3MxNFwmIzM0OywgXCYjMzQ7bWNzMTVcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDUyLCBlaHQ1MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNDIsIGVodDI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODQsIGVodDQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2LCBlaHQ5OTYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDU6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA2Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nng0LCBlaHQ5OTZ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl81MiwgZWh0MjZfNTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0XzI0MiwgZWh0NDg0XzI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0LCBlaHQ5OTZfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTExOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4Ml80ODQsIGVodDk5NngyXzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MywgZWh0OTk2eDMsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMTUtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExODptdDc5MjVfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcdHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjItXHR1OCBiYW5kX2lkeCA9IGRldi1cdTAwM2VtcGh5LmJhbmRfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzMTpcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTMyLVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTM4LVx0XHQgICBcJiMzNDsgXCYjMzQ7LCBcJiMzNDsxbVwmIzM0OywgXCYjMzQ7Mm1cJiMzNDssIFwmIzM0OzVtXCYjMzQ7LCBcJiMzNDsxMW1cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEzOTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVx0XHQgICBcJiMzNDs0OG1cJiMzNDssIFwmIzM0OzU0bVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0sIG9mZG0sIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0OC1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1My1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzMzJcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE1NDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTgtXHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDssIFwmIzM0O21jczhcJiMzNDssIFwmIzM0O21jczlcJiMzNDssIFwmIzM0O21jczEwXCYjMzQ7LCBcJiMzNDttY3MxMVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNiwgaGUyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI0MiwgaGUyNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNzI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNzQ6XHRtdDc5MjVfZWh0X3R4cHdyKHMsIHR4cHdyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xODI9bXQ3OTI4X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTg3LVx0XHQgICBcJiMzNDttY3MxMlwmIzM0OywgXCYjMzQ7bWNzMTNcJiMzNDssIFwmIzM0O21jczE0XCYjMzQ7LCBcJiMzNDttY3MxNVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTg4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE4OTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTA6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMTA2LCBlaHQxMDYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTE6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjQyLCBlaHQyNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk1Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyLCBlaHQ5OTZ4MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5NjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4NCwgZWh0OTk2eDQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTc6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzEwNiwgZWh0MjZfMTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NF8yNDIsIGVodDQ4NF8yNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDA6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwMTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZfNDg0XzI0MiwgZWh0OTk2XzQ4NF8yNDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDJfNDg0LCBlaHQ5OTZ4Ml80ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDM6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjA0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzXzQ4NCwgZWh0OTk2eDNfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA4PW10NzkyOF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1My1cdFx0ICAgXCYjMzQ7IFwmIzM0OywgXCYjMzQ7MW1cJiMzNDssIFwmIzM0OzJtXCYjMzQ7LCBcJiMzNDs1bVwmIzM0OywgXCYjMzQ7MTFtXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNTQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2ssIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1OC1cdFx0ICAgXCYjMzQ7NDhtXCYjMzQ7LCBcJiMzNDs1NG1cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI1OTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMjAsIG9mZG0yMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNNDAsIG9mZG00MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNODAsIG9mZG04MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMTYwLCBvZmRtMTYwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjYtXHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2NzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDIwLCBodDIwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzEtXHRcdCAgIFwmIzM0O21jczZcJiMzNDssIFwmIzM0O21jczdcJiMzNDssIFwmIzM0O21jczMyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNzI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQ0MCwgaHQ0MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc2LVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3M4XCYjMzQ7LCBcJiMzNDttY3M5XCYjMzQ7LCBcJiMzNDttY3MxMFwmIzM0OywgXCYjMzQ7bWNzMTFcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI3NzpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNzg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUNDAsIHZodDQwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4MDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ4MCwgdmh0ODAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODE6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjgzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4NTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTEwNiwgaGUxMDYsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODY6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjkwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2eDIsIGhlOTk2eDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTMyMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzIzOm10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNDYtXHRwbS1cdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNDc6XHRtdDc5MjVfc2V0X3J1bnRpbWVfcG0oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNDgtXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBwbSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM1NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzU2Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzU3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2NTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM2Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzY4Om10NzkyNV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM2OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM4My1cdHBtLVx1MDAzZWRzX2VuYWJsZSA9IGVuYWJsZSBcdTAwMjZcdTAwMjYgIW1vbml0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzg0Olx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIHBtLVx1MDAzZWRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzg1LW91dDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MzkxPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTI6bXQ3OTI1X2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM5My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0MDE6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZHMsIG10NzkyNV9kZWVwX3NsZWVwX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0MDI6XHRcdFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTQwND1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDA3OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MDgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MTktXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDIwOlx0XHRyZXQgPSBtdDc5MjVfbWN1X2NoaXBfY29uZmlnKGRldiwgXCYjMzQ7YXNzZXJ0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MjEtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0Mjg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDMwOmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDMxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUwLVx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcJiMzNDt0eHBvd2VyX3NrdVwmIzM0OywgZGlyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ1MTpcdFx0XHRcdFx0ICAgIG10NzkyNV90eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXCYjMzQ7cmVnZC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE0OnN0YXRpYyBzc2l6ZV90IG10NzkyNV90aGVybWFsX3RlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXHRcdFx0XHRcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XHRcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTM2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozOTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbXQ3OTI1X2h3bW9uX2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXHRcdTAwMjZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIuYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo0MzpBVFRSSUJVVEVfR1JPVVBTKG10NzkyNV9od21vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo1NDpcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIEdGUF9LRVJORUwsIFwmIzM0O210NzkyNV8lc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01NS1cdFx0XHQgICAgICB3aXBoeV9uYW1lKHdpcGh5KSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVx0aHdtb24gPSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyhcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIG5hbWUsIHBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo2MDpcdFx0XHRcdFx0XHQgICAgICAgbXQ3OTI1X2h3bW9uX2dyb3Vwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cdFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXHUwMDI2IEdFTk1BU0soNywgMCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjc0Olx0XHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MnhfV1RCTF9TSVpFOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcdFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXHRcdFx0XHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6OTI6XHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2Olx0cmV0ID0gbXQ3OTI1X21hY19pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVx0aWYgKGlzX210NzkyNyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XHRcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTMzOnN0YXRpYyBpbnQgbXQ3OTI1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MnhfTUNVX0lOSVRfUkVUUllfQ09VTlQ7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQwOlx0XHRyZXQgPSBfX210NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQxLVx0XHRpZiAoIXJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE1NTpzdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNTYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTYxOlx0cmV0ID0gbXQ3OTI1X2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNjItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNjUtXHRtdDc2X3NldF9zdHJlYW1fY2FwcyhcdTAwMjZkZXYtXHUwMDNlbXBoeSwgdHJ1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTY2Olx0bXQ3OTI1X3NldF9zdHJlYW1faGVfZWh0X2NhcHMoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY3LVx0bXQ3OTJ4X2NvbmZpZ19tYWNfYWRkcl9saXN0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE2OTpcdHJldCA9IG10NzkyNV9pbml0X21sb19jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE3MC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE4MjpcdHJldCA9IG10NzkyNV9pbml0X2RlYnVnZnMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxODg6XHRyZXQgPSBtdDc5MjVfdGhlcm1hbF9pbml0KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NDpcdHJldCA9IG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMzpcdG10NzkyNV9tY3Vfc2V0X2RlZXBfc2xlZXAoZGV2LCBkZXYtXHUwMDNlcG0uZHNfZW5hYmxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDY6aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTYtXHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlcG0ucHNfd29yaywgbXQ3OTJ4X3BtX3Bvd2VyX3NhdmVfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjE3Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcG0ud2FrZV93b3JrLCBtdDc5MnhfcG1fd2FrZV93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI0LVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyNV9zY2FuX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyNjpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vjb3JlZHVtcC53b3JrLCBtdDc5MjVfY29yZWR1bXBfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI3LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyODpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlaXB2Nl9uc193b3JrLCBtdDc5MjVfc2V0X2lwdjZfbnNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI5LVx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZkZXYtXHUwMDNlaXB2Nl9uc19saXN0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzNDpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yaywgbXQ3OTI1X21hY19yZXNldF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzU6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yaywgbXQ3OTI1X2luaXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzNzpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY193b3JrLCBtdDc5MjVfcm9jX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzOC1cdHRpbWVyX3NldHVwKFx1MDAyNmRldi1cdTAwM2VwaHkucm9jX3RpbWVyLCBtdDc5Mnhfcm9jX3RpbWVyLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2NTpcdGh3LVx1MDAzZXdpcGh5LVx1MDAzZXJlZ19ub3RpZmllciA9IG10NzkyNV9yZWdkX25vdGlmaWVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2Ni1cdGRldi1cdTAwM2VtcGh5LnNiYW5kXzJnLnNiYW5kLmh0X2NhcC5jYXAgfD1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjkyLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyOTM6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3JlZ2lzdGVyX2RldmljZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNi0jaW5jbHVkZSBcdTAwM2NsaW51eC90aW1la2VlcGluZy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3OiNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04LSNpbmNsdWRlIFwmIzM0Oy4uL2RtYS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzpib29sIG10NzkyNV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoyMjpzdGF0aWMgdm9pZCBtdDc5MjVfbWFjX3N0YV9wb2xsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0yMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTgtXHRcdGlkeCA9IG1saW5rLVx1MDAzZXdjaWQuaWR4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTk6XHRcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCBNVF9XVEJMX0FDMF9DVFRfT0ZGU0VUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTYwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc3LVx0XHRpZiAoY2xlYXIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc4Olx0XHRcdG10NzkyNV9tYWNfd3RibF91cGRhdGUoZGV2LCBpZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy03OS1cdFx0XHRcdFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTIzOlx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgNik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjQtXHRcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNS1cdFx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IFJBVEVfSU5GT19GTEFHU19FSFRfTUNTKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjY6XHRcdFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI3LVx0XHRcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDEtXHRcdC8qIGdldCBzaWduYWwgc3RyZW5ndGggb2YgcmVzcCBmcmFtZXMgKENUUy9CQS9BQ0spICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDI6XHRcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCAzNCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDMtXHRcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNTc6dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNTgtXHRcdFx0XHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjgtLyogVGhlIEhXIGRvZXMgbm90IHRyYW5zbGF0ZSB0aGUgbWFjIGhlYWRlciB0byA4MDIuMyBmb3IgbWVzaCBwb2ludCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY5OnN0YXRpYyBpbnQgbXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBoZHJfZ2FwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTcwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0yNDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MjQ5Om10NzkyNV9tYWNfZmlsbF9yeF9yYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0yNTAtXHRcdFx0c3RydWN0IG10NzZfcnhfc3RhdHVzICpzdGF0dXMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MzU4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjM1OTptdDc5MjVfbWFjX2ZpbGxfcngoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTM2MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTM5Olx0XHRyZXQgPSBtdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShkZXYsIHN0YXR1cywgc2JhbmQsIHJ4diwgXHUwMDI2bW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NDAtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTUyLVx0aWYgKGhkcl90cmFucyBcdTAwMjZcdTAwMjYgaWVlZTgwMjExX2hhc19tb3JlZnJhZ3MoZmMpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo1NTM6XHRcdGlmIChtdDc5MjVfcmV2ZXJzZV9mcmFnMF9oZHJfdHJhbnMoc2tiLCBoZHJfZ2FwKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1NC1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02MjY9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjYyNzptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02MjgtXHRcdFx0ICAgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NjE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2MjptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY2My1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz03Mjk9dm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzMwOm10NzkyNV9tYWNfd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgX19sZTMyICp0eHdpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzMxLVx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTgxOC1cdGlmIChpc184MDIzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODE5Olx0XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyh0eHdpLCBza2IsIHdjaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODIwLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODIxOlx0XHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoZGV2LCB0eHdpLCBza2IsIGtleSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX3dyaXRlX3R4d2kpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQ0OnN0YXRpYyB2b2lkIG10NzkyNV90eF9jaGVja19hZ2dyKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDUtXHRcdFx0XHQgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz04OTg9c3RhdGljIGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg5OTptdDc5MjVfbWFjX2FkZF90eHNfc2tiKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy05MDAtXHRcdCAgICAgICBpbnQgcGlkLCBfX2xlMzIgKnR4c19kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMDM2OnZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTA2NDpcdG10NzkyNV9tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4c19kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwNjUtXHRpZiAoIXdjaWQtXHUwMDNlc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMDc0OnZvaWQgbXQ3OTI1X3R4d2lfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTA3NS1cdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDg4LVx0XHRpZiAobGlrZWx5KHQtXHUwMDNlc2tiLVx1MDAzZXByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTA4OTpcdFx0XHRtdDc5MjVfdHhfY2hlY2tfYWdncihzdGEsIHQtXHUwMDNlc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwOTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTEwMC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTAxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV90eHdpX2ZyZWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTExMDM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjExMDQ6bXQ3OTI1X21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTA1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTE3MTpcdFx0XHRtdDc5MjVfdHh3aV9mcmVlKGRldiwgdHh3aSwgc3RhLCB3Y2lkLCBcdTAwMjZmcmVlX2xpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE3Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTExNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTc1Olx0bXQ3OTI1X21hY19zdGFfcG9sbChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE3Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTE4ODpib29sIG10NzkyNV9yeF9jaGVjayhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTg5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjA2LVx0XHQvKiBQS1RfVFlQRV9UWFJYX05PVElGWSBjYW4gYmUgcmVjZWl2ZWQgb25seSBieSBtbWlvIGRldmljZXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEyMDc6XHRcdG10NzkyNV9tYWNfdHhfZnJlZShkZXYsIGRhdGEsIGxlbik7IC8qIG1taW8gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMDgtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjE3NwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDgwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nPyBBIERlYnVnZnMgRGl2ZSBpbnRvIE1UNzkyNSBVU0IgRW11bGF0aW9uKioKCk9rYXksIHNvIEkgc2VlIGBtdDc5MjV1LXkgOj0gdXNiLm9gIGluIHRoZSBNYWtlZmlsZS4gVGhhdCBpbW1lZGlhdGVseSBzcGFya3MgbXkgaW50ZXJlc3Qg4oCTIGEgVVNCIGRyaXZlciBmb3IgYG10NzkyNWAhIFRoYXQmIzM5O3MgZXhjZWxsZW50IG5ld3MgYmVjYXVzZSBpdCBtZWFucyB3ZSAqY2FuKiBsaWtlbHkgZW11bGF0ZSBpdCBpbiBzeXprYWxsZXIgdXNpbmcgVVNCIGdhZGdldC92aGNpLiBUaGlzIG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF2ZW51ZSBmb3IgZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBhbmFseXplIHRoZSBwYXRjaCBhbmQgZGV0ZXJtaW5lIGlmIGl0IHRvdWNoZXMgYW55IGNvcmUga2VybmVsIGxvZ2ljLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgbXQ3OTI4X3R4cHdyYCBhbmQgYG10NzkyOF9laHRfdHhwd3JgLCB3aGljaCBhcmUgZGVidWdmcyBjYWxsYmFja3MsIHBsdXMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIHdoaWNoIGludm9sdmVzIHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBNQ1UuIE5vdyBJIGhhdmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgZnV6emFibGUuCgpJIG5lZWQgdG8gcmVmZXIgdG8gdGhlIHByb21wdDogaXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nPyBUaGUgcHJvbXB0IHN0YXRlcyAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4gLi4uIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLiYjMzQ7CgpCdXQgd2FpdCwgY2FuIGBtdDc5MjVgIGhhcmR3YXJlIGJlIGVtdWxhdGVkIHZpYSBVU0I/IFN5emthbGxlciYjMzk7cyB2aGNpIGNhbiBlbXVsYXRlIGFueSBVU0IgZGV2aWNlIGFzIGxvbmcgYXMgdGhlIGNvcnJlY3QgZGVzY3JpcHRvcnMgYXJlIHByb3ZpZGVkLiBTbywgdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiBpcyByZWFjaGFibGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0LiBCdXQgSSBzZWUgdGhhdCB0aGUgTUNVIGNvbW11bmljYXRpb24gKGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCkgc2VuZHMgYSBjb21tYW5kIGFuZCB3YWl0cyBmb3IgYSByZXNwb25zZS4gSW4gc3l6a2FsbGVyLCB3ZSBjYW4gc3VwcGx5IGFyYml0cmFyeSByZXNwb25zZXMgdG8gVVNCIHJlcXVlc3RzLiBTbywgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgKmNhbiogYmUgZXhlY3V0ZWQsIGFuZCB0aGUgcmVzcG9uc2UgKmNhbiogYmUgcGFyc2VkLgoKSG93ZXZlciwgdGhlIHBhdGNoICptb3N0bHkqIGFkZHMgZGVidWdmcyBlbnRyaWVzLiBJcyBkZWJ1Z2ZzIGNvbnNpZGVyZWQgYSAmIzM0O2Z1bmN0aW9uYWwgY2hhbmdlJiMzNDs/IFRoZSBwcm9tcHQgZG9lc24mIzM5O3QgZXhwbGljaXRseSBjYXRlZ29yaXplIGRlYnVnZnMuCgpJJiMzOTttIHRoaW5raW5nIHRoYXQgZGVidWdmcyBpcyBhY2Nlc3NpYmxlIGFuZCBjYW4gYmUgZnV6emVkLCBidXQgSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZTogdGhlIHByb21wdCBzYWlkIG5vdCB0byBmdXp6IGNoYW5nZXMgdGhhdCBhcmUgJiMzNDtwdXJlbHkgZGVjb3JhdGl2ZSYjMzQ7LgoKSSBuZWVkIHRvIGFuYWx5emUgYG10NzkyOF90eHB3cmAgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eS4gSSBzZWUgaXQgYWxsb2NhdGVzIG1lbW9yeSwgY2FsbHMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIGFuZCB0aGVuIHByaW50cyB0aGUgcmVzdWx0cyB1c2luZyBgc2VxX3ByaW50ZmAgYW5kIGBtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnlgLiBJdCBhbHNvIGFkZHMgYG10NzkyOF90eHB3cl90Ymxfc2V0YCBhbmQgYG10NzkyOF90eHB3cl90YmxfZ2V0YCwgd2hpY2ggYXJlIHNpbXBsZSBnZXQvc2V0IG9wZXJhdGlvbnMgb24gYGRldi0mZ3Q7dHhwd3JfdGJsYC4gSXMgdGhhdCBmdW5jdGlvbmFsPyBJdCYjMzk7cyByZWFkaW5nL3dyaXRpbmcgYSBkZWJ1Z2ZzIGZpbGUgdG8gc2V0L2dldCBhIHZhcmlhYmxlLCBhbmQgYW5vdGhlciBkZWJ1Z2ZzIGZpbGUgdG8gcXVlcnkgdGhlIE1DVSBhbmQgcHJpbnQgdGhlIHJlc3VsdC4gQnV0IGlzIHRoaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZz8KCkFoYSEgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgcGFyc2VzIHRoZSBNQ1UmIzM5O3MgcmVzcG9uc2UuIFRoZSBjb2RlIGlzOgoKYGBgYwpldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLSZndDtkYXRhOwptZW1jcHkodHhwd3IsICZhbXA7ZXZlbnQtJmd0O3R4cHdyLCBzaXplb2YoKnR4cHdyKSk7CmBgYAoKVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcG9pbnQuIElmIHRoZSBNQ1UsIHdoaWNoIGlzIGVtdWxhdGVkIGJ5IHN5emthbGxlciwgcmV0dXJucyBhIG1hbGZvcm1lZCBvciB0cnVuY2F0ZWQgU0tCLCBgc2tiLSZndDtkYXRhYCBtaWdodCBub3QgYmUgbGFyZ2UgZW5vdWdoIGZvciBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudGAuIFRoaXMgd2lsbCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGF0IGBtZW1jcHlgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4gTm93IEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCB2YWxpZGF0ZXMgdGhlIGxlbmd0aCBvZiB0aGUgU0tCIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzZfbWN1X3NlbmRfYW5kX2dldF9tc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jPTU0PUVYUE9SVF9TWU1CT0xfR1BMKG10NzZfbWN1X3J4X2V2ZW50KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjU2OmludCBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy01Ny1cdFx0XHQgICAgICBpbnQgbGVuLCBib29sIHdhaXRfcmVzcCwgc3RydWN0IHNrX2J1ZmYgKipyZXRfc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYzo3MDpFWFBPUlRfU1lNQk9MX0dQTChtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg9MTkxNT1zdHJ1Y3Qgc2tfYnVmZiAqbXQ3Nl9tY3VfZ2V0X3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkxNi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgZXhwaXJlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxOTE3OmludCBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkxOC1cdFx0XHQgICAgICBpbnQgbGVuLCBib29sIHdhaXRfcmVzcCwgc3RydWN0IHNrX2J1ZmYgKipyZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE5MzM9bXQ3Nl9tY3Vfc2VuZF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBjbWQsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaDoxOTM2Olx0cmV0dXJuIG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coZGV2LCBjbWQsIGRhdGEsIGxlbiwgd2FpdF9yZXNwLCBOVUxMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5MzctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTIyMDY9aW50IG10NzkxNV9tY3VfbXVydV9kZWJ1Z19nZXQoc3RydWN0IG10NzkxNV9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjIyMTpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKE1VUlVfQ1RSTCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMjIyLVx0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI4OTQ9aW50IG10NzkxNV9tY3VfZ2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqcmVhZF9idWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI5MDU6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkwNi1cdFx0XHRcdFx0TUNVX0VYVF9RVUVSWShFRlVTRV9BQ0NFU1MpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI5MjE9aW50IG10NzkxNV9tY3VfZ2V0X2VlcHJvbV9mcmVlX2Jsb2NrKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHU4ICpibG9ja19udW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkzMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI5MzQ6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkzNS1cdFx0XHRcdFx0TUNVX0VYVF9RVUVSWShFRlVTRV9GUkVFX0JMT0NLKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0zMTQ1PWludCBtdDc5MTVfbWN1X2dldF9jaGFuX21pYl9pbmZvKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGJvb2wgY2hhbl9zd2l0Y2gpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMzE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjMxODU6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfRVhUX0NNRChHRVRfTUlCX0lORk8pLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMzE4Ni1cdFx0XHRcdFx0cmVxLCBsZW4gKiBzaXplb2YocmVxWzBdKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz0zNTEwPWludCBtdDc5MTVfbWN1X2dldF90eHBvd2VyX3NrdShzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBzOCAqdHhwb3dlciwgaW50IGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MzUyODpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zNTI5LVx0XHRcdFx0XHRNQ1VfRVhUX0NNRChUWF9QT1dFUl9GRUFUVVJFX0NUUkwpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTM4NjI9aW50IG10NzkxNV9tY3VfZ2V0X3J4X3JhdGUoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zODgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6Mzg4NDpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKFBIWV9TVEFUX0lORk8pLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMzg4NS1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYz00MTAzPWludCBtdDc5MTVfbWN1X3dlZF93YV90eF9zdGF0cyhzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MTYgd2xhbl9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtNDEzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjQxMzc6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV0FfUEFSQU1fQ01EKFFVRVJZKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTQxMzgtXHRcdFx0XHRcdFx1MDAyNnJlcSwgbGVuLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTQxNzE9aW50IG10NzkxNV9tY3VfcmZfcmVndmFsKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy00MTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6NDE4OTpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9FWFRfUVVFUlkoUkZfUkVHX0FDQ0VTUyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy00MTkwLVx0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTc1PXN0YXRpYyBpbnQgbXQ3OTIxX21jdV9yZWFkX2VlcHJvbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6ODQ6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfRVhUX1FVRVJZKEVGVVNFX0FDQ0VTUyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy04NS1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz01NTQ9c3RhdGljIGludCBtdDc5MjFfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqbXBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy01NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo1NjQ6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKHBoeS1cdTAwM2VkZXYsIE1DVV9DRV9DTUQoR0VUX05JQ19DQVBBQiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy01NjUtXHRcdFx0XHRcdE5VTEwsIDAsIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9MTEwNj1pbnQgbXQ3OTIxX2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MjFfdHhwd3IgKnR4cHdyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTExMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzoxMTE1Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX0NFX0NNRChHRVRfVFhQV1IpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtMTExNi1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS90ZXN0bW9kZS5jPTg1PW10NzkyMV90bV9xdWVyeShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3OTIxX3RtX2NtZCAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3Rlc3Rtb2RlLmMtOTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS90ZXN0bW9kZS5jOjk3Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX0NFX0NNRChURVNUX0NUUkwpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdGVzdG1vZGUuYy05OC1cdFx0XHRcdFx0XHUwMDI2Y21kLCBzaXplb2YoY21kKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz01Nz1pbnQgbXQ3OTI1X21jdV9yZWd2YWwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjEwMTpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMDItXHRcdFx0XHRcdE1DVV9XTV9VTklfQ01EX1FVRVJZKFJFR19BQ0NFU1MpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTc1MD1zdGF0aWMgaW50IG10NzkyNV9tY3VfcmVhZF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTMyIG9mZnNldCwgdTggKnZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo3ODU6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRF9RVUVSWShFRlVTRV9DVFJMKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTc4Ni1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz04ODg9aW50IG10NzkyNV9tY3VfZndfbG9nXzJfaG9zdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBjdHJsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjkwNTpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsIE1DVV9VTklfQ01EKFdTWVNfQ09ORklHKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwNi1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9OTEwPWludCBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjkzMDpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy05MzEtXHRcdFx0XHRcdE1DVV9XTV9VTklfQ01EX1FVRVJZKFRIRVJNQUwpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTk5ND1tdDc5MjVfbWN1X2dldF9uaWNfY2FwYWJpbGl0eShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEwMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxMDEzOlx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoQ0hJUF9DT05GSUcpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTAxNC1cdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0xNTM1PWludCBtdDc5MjVfbWN1X3NldF9lZXByb20oc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTU1MjpcdHJldHVybiBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChFRlVTRV9DVFJMKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTE1NTMtXHRcdFx0XHRcdCBcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0yMTQ3PWludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIxNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoyMTYxOlx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoVFhQT1dFUiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTYyLVx0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIxNzQ9aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIxODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoyMTg4Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoVFhQT1dFUiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTg5LVx0XHRcdFx0XHRcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcdTAwMjZza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTM5MzU9aW50IG10NzkyNV9tY3Vfd2ZfcmZfcGluX2N0cmwoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zOTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Mzk1NzpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2ZGV2LVx1MDAzZW10NzYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zOTU4LVx0XHRcdFx0XHRNQ1VfVU5JX0NNRChSQURJT19TVEFUVVMpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmM9ODc9bXQ3OTI1X3RtX3F1ZXJ5KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MjVfdG1fY21kICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdGVzdG1vZGUuYy05OC1cdGlmICgqKCh1aW50MTZfdCAqKXJlcS1cdTAwM2VwYWRkaW5nKSA9PSBNQ1VfVU5JX0NNRF9URVNUTU9ERV9DVFJMKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdGVzdG1vZGUuYzo5OTpcdFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9RVUVSWShURVNUTU9ERV9DVFJMKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmMtMTAwLVx0XHRcdFx0XHRcdFx1MDAyNmNtZCwgc2l6ZW9mKGNtZCksIHRydWUsIFx1MDAyNnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jLTEwMS1cdGVsc2UgaWYgKCooKHVpbnQxNl90ICopcmVxLVx1MDAzZXBhZGRpbmcpID09IE1DVV9VTklfQ01EX1RFU1RNT0RFX1JYX1NUQVQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jOjEwMjpcdFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1VOSV9RVUVSWShURVNUTU9ERV9SWF9TVEFUKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmMtMTAzLVx0XHRcdFx0XHRcdFx1MDAyNmNtZCwgc2l6ZW9mKGNtZCksIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDMxMj1pbnQgbXQ3OTk2X21jdV9nZXRfZWVwcm9tKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICpidWYsIHUzMiBidWZfbGVuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQzMzktXHRyZXEuaW5mby5hZGRyID0gY3B1X3RvX2xlMzIoYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0MzQwOlx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgY21kLCBcdTAwMjZyZXEsIHNpemVvZihyZXEpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDM0MS1cdFx0XHRcdFx0dHJ1ZSwgXHUwMDI2c2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00MzgxPWludCBtdDc5OTZfbWN1X2dldF9lZnVzZV9mcmVlX2Jsb2NrKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHU4ICpibG9ja19udW0pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDM5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjQ0MDA6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRF9RVUVSWShFRlVTRV9DVFJMKSwgXHUwMDI2cmVxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQwMS1cdFx0XHRcdFx0c2l6ZW9mKHJlcSksIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDQxMT1pbnQgbXQ3OTk2X21jdV9nZXRfY2hpcF9jb25maWcoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdTMyICpjYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjQ0Mjc6XHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQyOC1cdFx0XHRcdFx0TUNVX1dNX1VOSV9DTURfUVVFUlkoQ0hJUF9DT05GSUcpLCBcdTAwMjZyZXEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDQ1Nj1pbnQgbXQ3OTk2X21jdV9nZXRfY2hhbl9taWJfaW5mbyhzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5LCBib29sIGNoYW5fc3dpdGNoKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ0OTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NDk3Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoR0VUX01JQl9JTkZPKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ0OTgtXHRcdFx0XHRcdFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NDUzNT1pbnQgbXQ3OTk2X21jdV9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IG10Nzk5Nl9waHkgKnBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00NTY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NDU2ODpcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXHUwMDI2cGh5LVx1MDAzZWRldi1cdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRChUSEVSTUFMKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ1NjktXHRcdFx0XHRcdFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFx1MDAyNnNrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM9NTE3MD1pbnQgbXQ3OTk2X21jdV9yZl9yZWd2YWwoc3RydWN0IG10Nzk5Nl9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTUxOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo1MTk2Olx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcdTAwMjZkZXYtXHUwMDNlbXQ3NixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTUxOTctXHRcdFx0XHRcdE1DVV9XTV9VTklfQ01EX1FVRVJZKFJFR19BQ0NFU1MpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NDAxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgYG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dgIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgYG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dgIGZ1bmN0aW9uJiMzOTtzIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcywgYW5kIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpcm13YXJlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscywgbm90IGEgaGlnaC1sZXZlbCBvdmVydmlldy4gV2hhdCBhcmUgdGhlIGtleSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgdXNlZCBoZXJlPyBTcGVjaWZpY2FsbHksIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBob3cgdGhlIG1lc3NhZ2UgaXMgY29uc3RydWN0ZWQsIGhvdyB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsIChsaWtlbHkgcmVnaXN0ZXJzIG9yIERNQSkgaXMgbWFuYWdlZCwgYW5kIHRoZSBoYW5kc2hha2luZyB3aXRoIHRoZSBNQ1UuIEFyZSB0aGVyZSBhbnkgY3JpdGljYWwgc2VjdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3I/IEkgd2FudCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZy4gSG93IGFyZSB0aW1lb3V0cyBtYW5hZ2VkPyBXaGF0IGFyZSB0aGUgcmV0cnkgbWVjaGFuaXNtcz8gQW55IHBvdGVudGlhbCBkZWFkbG9jayBzaXR1YXRpb25zPyBBbnkgcG90ZW50aWFsIGZvciBidWZmZXIgb3ZlcmZsb3dzPyBMZXQmIzM5O3MgZmlndXJlIG91dCB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTY6XHRpbnQgbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGNtZCwgY29uc3Qgdm9pZCAqZGF0YSxcbiAgNTc6XHRcdFx0XHQgICAgICBpbnQgbGVuLCBib29sIHdhaXRfcmVzcCwgc3RydWN0IHNrX2J1ZmYgKipyZXRfc2tiKVxuICA1ODpcdHtcbiAgNTk6XHRcdHN0cnVjdCBza19idWZmICpza2I7XG4gIDYwOlx0XG4gIDYxOlx0XHRpZiAoZGV2LVx1MDAzZW1jdV9vcHMtXHUwMDNlbWN1X3NlbmRfbXNnKVxuICA2MjpcdFx0XHRyZXR1cm4gZGV2LVx1MDAzZW1jdV9vcHMtXHUwMDNlbWN1X3NlbmRfbXNnKGRldiwgY21kLCBkYXRhLCBsZW4sIHdhaXRfcmVzcCk7XG4gIDYzOlx0XG4gIDY0Olx0XHRza2IgPSBtdDc2X21jdV9tc2dfYWxsb2MoZGV2LCBkYXRhLCBsZW4pO1xuICA2NTpcdFx0aWYgKCFza2IpXG4gIDY2Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA2NzpcdFxuICA2ODpcdFx0cmV0dXJuIG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnKGRldiwgc2tiLCBjbWQsIHdhaXRfcmVzcCwgcmV0X3NrYik7XG4gIDY5Olx0fVxuICA3MDpcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2cpO1xuICA3MTpcdFxuICA3MjpcdGludCBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAgNzM6XHRcdFx0XHRcdCAgaW50IGNtZCwgYm9vbCB3YWl0X3Jlc3AsXG4gIDc0Olx0XHRcdFx0XHQgIHN0cnVjdCBza19idWZmICoqcmV0X3NrYilcbiAgNzU6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUwODUKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGFwcHJvYWNoIHRoZSBzdWJqZWN0IG9mIGBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZ2AsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgZ2VuZXJhbCBsYW5kc2NhcGUgb2YgZW1iZWRkZWQgd2lyZWxlc3MgZHJpdmVycy4KCioqRGVlcCBEaXZlOiBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgKioKCkFscmlnaHQsIEkgc2VlIHRoaXMgZnVuY3Rpb24gbmFtZTogYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYC4gSW1tZWRpYXRlbHksIG15IG1lbnRhbCBnZWFycyBzdGFydCB0dXJuaW5nLiAmIzM0O210NzYmIzM0OyBzdWdnZXN0cyBpdCYjMzk7cyBsaWtlbHkgcmVsYXRlZCB0byBNZWRpYVRlayYjMzk7cyA4MDIuMTEgY2hpcHNldCBmYW1pbHkuIFRoZSAmIzM0O21jdSYjMzQ7IGxpa2VseSByZWZlcnMgdG8gYSBtaWNyb2NvbnRyb2xsZXIsIHdoaWNoIGlzIHR5cGljYWwgZm9yIG1hbmFnaW5nIGxvdy1sZXZlbCByYWRpbyBvcGVyYXRpb25zLCBmaXJtd2FyZSwgYW5kIHBvc3NpYmx5IG9mZmxvYWRpbmcgdGFza3MgZnJvbSB0aGUgbWFpbiBDUFUuIFRoZSAmIzM0O3NrYiYjMzQ7IGltcGxpZXMgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgJiMzNDtzb2NrZXQgYnVmZmVyJiMzNDsg4oCTIHRob3NlIGFyZSB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzIGZvciBuZXR3b3JrIGRhdGEgaW4gdGhlIExpbnV4IGtlcm5lbC4gJiMzNDtTZW5kX2FuZF9nZXRfbXNnJiMzNDsgaXMgdGhlIGtleSBoZXJlIC0gaXQgbWVhbnMgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igc2VuZGluZyBhIG1lc3NhZ2UgKGxpa2VseSBjb21tYW5kIG9yIGRhdGEpIHRvIHRoZSBtaWNyb2NvbnRyb2xsZXIgYW5kIHRoZW4gcmV0cmlldmluZyB0aGUgcmVzcG9uc2UuCgpJIGV4cGVjdCB0aGlzIGlzIGEgZmFpcmx5IGNyaXRpY2FsIGZ1bmN0aW9uIHdpdGhpbiB0aGUgbXQ3NiBkcml2ZXIuIEl0JiMzOTtzIHByb2JhYmx5IHRoZSBjb3JlIG9mIHRoZSBjb21tdW5pY2F0aW9uIHBhdGggYmV0d2VlbiB0aGUgaG9zdCBMaW51eCBzeXN0ZW0gYW5kIHRoZSBXaS1GaSBjaGlwc2V0JiMzOTtzIGZpcm13YXJlIHJ1bm5pbmcgb24gdGhlIE1DVS4gSSBpbW1lZGlhdGVseSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGhhbmRsZXM6CgoqICAgKipNZXNzYWdlIGZyYW1pbmc6KiogSG93IGFyZSB0aGVzZSBtZXNzYWdlcyBzdHJ1Y3R1cmVkPyBBcmUgdGhlcmUgc3BlY2lmaWMgaGVhZGVycywgY2hlY2tzdW1zLCBvciBmcmFtaW5nIG1lY2hhbmlzbXM/IElzIGl0IGp1c3QgcmF3IGRhdGEsIG9yIGlzIHRoZXJlIGEgZGVmaW5lZCBwcm90b2NvbD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIga25vd3Mgd2hlbiBvbmUgbWVzc2FnZSBlbmRzIGFuZCBhbm90aGVyIGJlZ2lucy4KKiAgICoqRXJyb3IgaGFuZGxpbmc6KiogV2hhdCBoYXBwZW5zIGlmIHRoZSBzZW5kIGZhaWxzPyBXaGF0IGFib3V0IHRoZSByZWNlaXZlPyBXaGF0IHRpbWVvdXRzIGFyZSB1c2VkPyBEb2VzIGl0IHN1cHBvcnQgcmV0cmllcz8gQXJlIHRoZXJlIHNwZWNpZmljIGVycm9yIGNvZGVzIHJldHVybmVkPwoqICAgKipTeW5jaHJvbml6YXRpb246KiogVGhpcyBpcyBtdWx0aS10aHJlYWRlZC4gV2hhdCBsb2NraW5nIG1lY2hhbmlzbXMgYXJlIGVtcGxveWVkIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdoZW4gbXVsdGlwbGUgcGFydHMgb2YgdGhlIGRyaXZlciB3YW50IHRvIHNlbmQvcmVjZWl2ZSBtZXNzYWdlcyBjb25jdXJyZW50bHk/IElzIHRoZXJlIGEgbXV0ZXgsIGEgc2VtYXBob3JlLCBvciBzb21ldGhpbmcgZWxzZSBpbnZvbHZlZD8KKiAgICoqQnVmZmVyaW5nOioqIEhvdyBpcyB0aGUgYHNrYmAgdXNlZD8gSXMgaXQgZGlyZWN0bHkgc2VudCwgb3IgaXMgaXQgY29waWVkPyBBcmUgdGhlcmUgYW55IGJ1ZmZlciBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMgdG8gYXZvaWQgbWVtb3J5IGxlYWtzIG9yIGluZWZmaWNpZW5jaWVzLCBlc3BlY2lhbGx5IHNpbmNlIG5ldHdvcmsgZGF0YSBpcyBvZnRlbiB0aW1lLXNlbnNpdGl2ZT8KKiAgICoqSW50ZXJydXB0czoqKiBEb2VzIHRoaXMgZnVuY3Rpb24gaW50ZXJhY3Qgd2l0aCBhbnkgaW50ZXJydXB0cyBmcm9tIHRoZSBNQ1U/IEl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdGhhdCB0aGUgTUNVIHNlbmRzIGludGVycnVwdHMgdG8gc2lnbmFsIGEgcmVzcG9uc2UuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGFyZSBoYW5kbGVkIGFuZCBob3cgdGhleSB0aWUgaW50byB0aGUgcmVzcG9uc2UgcmV0cmlldmFsIHByb2Nlc3MuCiogICAqKlNlY3VyaXR5OioqIEFyZSB0aGVyZSBhbnkgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgaW4gdGhlIG1lc3NhZ2luZyBwcm9jZXNzPyBEb2VzIGl0IHN1cHBvcnQgYW55IHNlY3VyaXR5IG1lY2hhbmlzbXMsIHN1Y2ggYXMgZW5jcnlwdGlvbiBvciBhdXRoZW50aWNhdGlvbiwgYXQgdGhpcyBsZXZlbD8KCk15IGZvY3VzIHdvdWxkIHRoZW4gYmUgb24gZGlzc2VjdGluZyB0aGUgY29kZSByZWxhdGVkIHRvIHRoZXNlIHBvaW50cyBhbmQsIG9mIGNvdXJzZSwgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgd2l0aGluIHRoZSBmdW5jdGlvbi4gTXkgZXhwZXJ0aXNlIGFsbG93cyBtZSB0byBhbnRpY2lwYXRlIGNvbW1vbiBwaXRmYWxscyBhbmQgb3B0aW1pemF0aW9ucyB0aGF0IHdvdWxkIGJlIGFwcGxpZWQgaW4gYW4gZW1iZWRkZWQgd2lyZWxlc3MgZHJpdmVyLCBzbyBJIHdvdWxkIGxvb2sgZm9yIGNsdWVzIHRvIHRob3NlIHBhdHRlcm5zIHJpZ2h0IGF3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzI6XHRpbnQgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gIDczOlx0XHRcdFx0XHQgIGludCBjbWQsIGJvb2wgd2FpdF9yZXNwLFxuICA3NDpcdFx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqKnJldF9za2IpXG4gIDc1Olx0e1xuICA3NjpcdFx0dW5zaWduZWQgaW50IHJldHJ5ID0gMDtcbiAgNzc6XHRcdHN0cnVjdCBza19idWZmICpvcmlnX3NrYiA9IE5VTEw7XG4gIDc4Olx0XHR1bnNpZ25lZCBsb25nIGV4cGlyZXM7XG4gIDc5Olx0XHRpbnQgcmV0LCBzZXE7XG4gIDgwOlx0XG4gIDgxOlx0XHRpZiAobXQ3Nl9pc19zZGlvKGRldikpXG4gIDgyOlx0XHRcdGlmICh0ZXN0X2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSBcdTAwMjZcdTAwMjYgYXRvbWljX3JlYWQoXHUwMDI2ZGV2LVx1MDAzZWJ1c19odW5nKSlcbiAgODM6XHRcdFx0XHRyZXR1cm4gLUVJTztcbiAgODQ6XHRcbiAgODU6XHRcdGlmIChyZXRfc2tiKVxuICA4NjpcdFx0XHQqcmV0X3NrYiA9IE5VTEw7XG4gIDg3Olx0XG4gIDg4Olx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuICA4OTpcdFxuICA5MDpcdFx0aWYgKGRldi1cdTAwM2VtY3Vfb3BzLVx1MDAzZW1jdV9za2JfcHJlcGFyZV9tc2cpIHtcbiAgOTE6XHRcdFx0b3JpZ19za2IgPSBza2I7XG4gIDkyOlx0XHRcdHJldCA9IGRldi1cdTAwM2VtY3Vfb3BzLVx1MDAzZW1jdV9za2JfcHJlcGFyZV9tc2coZGV2LCBza2IsIGNtZCwgXHUwMDI2c2VxKTtcbiAgOTM6XHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAgOTQ6XHRcdFx0XHRnb3RvIG91dDtcbiAgOTU6XHRcdH1cbiAgOTY6XHRcbiAgOTc6XHRyZXRyeTpcbiAgOTg6XHRcdC8qIG9yaWcgc2tiIG1pZ2h0IGJlIG5lZWRlZCBmb3IgcmV0cnksIG1jdV9za2Jfc2VuZF9tc2cgY29uc3VtZXMgaXQgKi9cbiAgOTk6XHRcdGlmIChvcmlnX3NrYilcbiAxMDA6XHRcdFx0c2tiX2dldChvcmlnX3NrYik7XG4gMTAxOlx0XHRyZXQgPSBkZXYtXHUwMDNlbWN1X29wcy1cdTAwM2VtY3Vfc2tiX3NlbmRfbXNnKGRldiwgc2tiLCBjbWQsIHdhaXRfcmVzcCA/IFx1MDAyNnNlcSA6IE5VTEwpO1xuIDEwMjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAxMDM6XHRcdFx0Z290byBvdXQ7XG4gMTA0Olx0XG4gMTA1Olx0XHRpZiAoIXdhaXRfcmVzcCkge1xuIDEwNjpcdFx0XHRyZXQgPSAwO1xuIDEwNzpcdFx0XHRnb3RvIG91dDtcbiAxMDg6XHRcdH1cbiAxMDk6XHRcbiAxMTA6XHRcdGV4cGlyZXMgPSBqaWZmaWVzICYjNDM7IGRldi1cdTAwM2VtY3UudGltZW91dDtcbiAxMTE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzOTIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBEZWVwZXIgaW50byBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgKioKCkFscmlnaHQsIEkmIzM5O20gYXQgYSBwb2ludCB3aGVyZSBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZ2AuIFNvbWV0aGluZyYjMzk7cyBuYWdnaW5nIGF0IG1lLCBhIHBvdGVudGlhbCBlZGdlIGNhc2Ugb3IgcGVyaGFwcyBhIHN1YnRsZSBidWcgbHVya2luZyB3aXRoaW4uIFdlJiMzOTt2ZSBsaWtlbHkgaXNvbGF0ZWQgYW4gaXNzdWUgZG93biB0byB0aGlzIGZ1bmN0aW9uLCBvciBhdCBsZWFzdCBoYXZlIGEgc3Ryb25nIHN1c3BpY2lvbiwgYW5kIG5vdyBpdOKAmXMgdGltZSBmb3IgYSB0aG9yb3VnaCBpbnZlc3RpZ2F0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyB3aXRoaW4gdGhpcyBjb3JlIGZ1bmN0aW9uIG9mIHRoZSBtdDc2IGZpcm13YXJlLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgU0tCIGlzIGJ1aWx0LCB0cmFuc21pdHRlZCB0byB0aGUgTUNVLCBhbmQgaG93IHRoZSByZXNwb25zZSBpcyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGxvb2sgdG8gc2VlIGhvdyBpdCBtaWdodCBiZSBpbnRlcmFjdGluZyB3aXRoIHRoZSBjb25jdXJyZW5jeSBvZiB0aGUgc3lzdGVtLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB3ZSYjMzk7cmUgcHJvcGVybHkgbWFuYWdpbmcgcmV0cmllcywgdGltZW91dHMsIGFuZCBlcnJvciBjb25kaXRpb25zLiBJcyBpdCBiZWhhdmluZyBhcyBleHBlY3RlZCB3aGVuIHRoZSBNQ1UgaXMgYnVzeSBvciB1bmRlciBoZWF2eSBsb2FkPyBJJiMzOTttIGN1cmlvdXMgaWYgd2UmIzM5O3JlIHByb3Blcmx5IHZhbGlkYXRpbmcgdGhlIHJldHVybmVkIG1lc3NhZ2UgZnJvbSB0aGUgTUNVLiBBbnkgc3VidGxlIG1pc2ludGVycHJldGF0aW9uIG9mIHRoZSBtZXNzYWdlIGZvcm1hdCBjb3VsZCBsZWFkIHRvIGluc3RhYmlsaXR5IG9yIGV2ZW4gc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbiBhbmQgcmUtZXZhbHVhdGUgdGhpcyBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgd2Fsa2luZyB0aHJvdWdoIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTEyOlx0XHRkbyB7XG4gMTEzOlx0XHRcdHNrYiA9IG10NzZfbWN1X2dldF9yZXNwb25zZShkZXYsIGV4cGlyZXMpO1xuIDExNDpcdFx0XHRpZiAoIXNrYiBcdTAwMjZcdTAwMjYgIXRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlcGh5LnN0YXRlKSBcdTAwMjZcdTAwMjZcbiAxMTU6XHRcdFx0ICAgIG9yaWdfc2tiIFx1MDAyNlx1MDAyNiByZXRyeSYjNDM7JiM0MzsgXHUwMDNjIGRldi1cdTAwM2VtY3Vfb3BzLVx1MDAzZW1heF9yZXRyeSkge1xuIDExNjpcdFx0XHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCYjMzQ7UmV0cnkgbWVzc2FnZSAlMDh4IChzZXEgJWQpXFxuXCYjMzQ7LFxuIDExNzpcdFx0XHRcdFx0Y21kLCBzZXEpO1xuIDExODpcdFx0XHRcdHNrYiA9IG9yaWdfc2tiO1xuIDExOTpcdFx0XHRcdGdvdG8gcmV0cnk7XG4gMTIwOlx0XHRcdH1cbiAxMjE6XHRcbiAxMjI6XHRcdFx0cmV0ID0gZGV2LVx1MDAzZW1jdV9vcHMtXHUwMDNlbWN1X3BhcnNlX3Jlc3BvbnNlKGRldiwgY21kLCBza2IsIHNlcSk7XG4gMTIzOlx0XHRcdGlmICghcmV0IFx1MDAyNlx1MDAyNiByZXRfc2tiKVxuIDEyNDpcdFx0XHRcdCpyZXRfc2tiID0gc2tiO1xuIDEyNTpcdFx0XHRlbHNlXG4gMTI2Olx0XHRcdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuIDEyNzpcdFx0fSB3aGlsZSAocmV0ID09IC1FQUdBSU4pO1xuIDEyODpcdFxuIDEyOTpcdFxuIDEzMDpcdG91dDpcbiAxMzE6XHRcdGRldl9rZnJlZV9za2Iob3JpZ19za2IpO1xuIDEzMjpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VtY3UubXV0ZXgpO1xuIDEzMzpcdFxuIDEzNDpcdFx0cmV0dXJuIHJldDtcbiAxMzU6XHR9XG4gMTM2Olx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2cpO1xuIDEzNzpcdFxuIDEzODpcdGludCBfX210NzZfbWN1X3NlbmRfZmlybXdhcmUoc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBjbWQsIGNvbnN0IHZvaWQgKmRhdGEsXG4gMTM5Olx0XHRcdFx0ICAgICBpbnQgbGVuLCBpbnQgbWF4X2xlbilcbiAxNDA6XHR7XG4gMTQxOlx0XHRpbnQgZXJyLCBjdXJfbGVuO1xuIDE0MjpcdFxuIDE0MzpcdFx0d2hpbGUgKGxlbiBcdTAwM2UgMCkge1xuIDE0NDpcdFx0XHRjdXJfbGVuID0gbWluX3QoaW50LCBtYXhfbGVuLCBsZW4pO1xuIDE0NTpcdFxuIDE0NjpcdFx0XHRlcnIgPSBtdDc2X21jdV9zZW5kX21zZyhkZXYsIGNtZCwgZGF0YSwgY3VyX2xlbiwgZmFsc2UpO1xuIDE0NzpcdFx0XHRpZiAoZXJyKVxuIDE0ODpcdFx0XHRcdHJldHVybiBlcnI7XG4gMTQ5Olx0XG4gMTUwOlx0XHRcdGRhdGEgJiM0Mzs9IGN1cl9sZW47XG4gMTUxOlx0XHRcdGxlbiAtPSBjdXJfbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQwMQoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTVQ3NiBNQ1UgUmVzcG9uc2UgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGlzIGBtdDc2X21jdV9za2Jfc2VuZF9hbmRfZ2V0X21zZ2AgZnVuY3Rpb24gd29ya3MsIGFuZCBpdCYjMzk7cyBjYWxsaW5nIGBtY3VfcGFyc2VfcmVzcG9uc2VgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBgbWN1X3BhcnNlX3Jlc3BvbnNlYCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgYG10NzkyNWAgY2hpcHNldC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGhhbmRsZXMgdGhlIHJlc3BvbnNlIHRvIE1DVSBjb21tYW5kcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkYXRhIGlzIHBhcnNlZCwgaG93IGVycm9ycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyB0aGUgcmVzdWx0cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGRyaXZlcuKAmXMgb3ZlcmFsbCBvcGVyYXRpb24uIEkmIzM5O20gYmV0dGluZyB0aGVyZSYjMzk7cyBzb21lIGRldmljZS1zcGVjaWZpYyBsb2dpYyBpbiB0aGVyZSwgc28gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBpbiBvbiB0aGUgTVQ3OTI1JiMzOTtzIGltcGxlbWVudGF0aW9uIHRvIHNlZSBob3cgaXQmIzM5O3MgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWN1X3BhcnNlX3Jlc3BvbnNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTQ6aW50IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBpbnQgY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTUtXHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy01NC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo1NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTU2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM3OT12b2lkIG10NzkyNV90eHdpX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zODEtXHRcdCAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVfbGlzdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozODI6aW50IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBpbnQgY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzgzLVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIGludCBzZXEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYz0yNz1pbnQgbXQ3OTI1ZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYy0zMS1cdFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MjVfbWN1X3NlbmRfbWVzc2FnZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaV9tY3UuYzozMjpcdFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtMzMtXHR9O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTU2PXN0YXRpYyBpbnQgbXQ3OTI1dV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTYyLVx0XHQubWN1X3NrYl9zZW5kX21zZyA9IG10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjYzOlx0XHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTY0LVx0fTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1NDMKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byBgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZWAuIEkga25vdyB0aGlzIHJvdXRpbmU7IGl0JiMzOTtzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGludGVycHJldGluZyB0aGUgcmVzcG9uc2VzIHdlIGdldCBiYWNrIGZyb20gdGhlIE1DVSBvbiB0aGUgTVQ3OTI1IGNoaXBzZXQuIE15IGJyYWluIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBzY2VuYXJpb3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHlwZSBvZiBtZXNzYWdlIGl0IGlzLCB0aGUgZXhwZWN0ZWQgZm9ybWF0LCBhbmQgaG93IHRvIGhhbmRsZSBhbnkgZXJyb3JzLiBUaGUgY29yZSBvZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGEgc3dpdGNoIHN0YXRlbWVudCwgSSYjMzk7bSBndWVzc2luZywgYmFzZWQgb24gdGhlIG1lc3NhZ2UgSUQgZmllbGQuCgpJJiMzOTttIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2g6IElzIHRoZXJlIGEgaGVhZGVyPyBXaGF0IGZpZWxkcyBkbyBJIG5lZWQgdG8gZXh0cmFjdD8gRXJyb3IgY29kZXMsIGRhdGEgbGVuZ3RocywgcG9zc2libHkgc29tZSBjb250cm9sIGZsYWdzPyBJ4oCZbSB0aGlua2luZyBhYm91dCBob3cgdGhlIGJpdCBmaWVsZHMgd2lsbCBiZSBwYWNrZWQgYW5kIHBhcnNlZC4gSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBwb3RlbnRpYWwgYWxpZ25tZW50IGlzc3VlczsgcGFkZGluZyBpcyBhbHdheXMgYSBzb3VyY2Ugb2YgdHJvdWJsZSBpZiB5b3UmIzM5O3JlIG5vdCBjYXJlZnVsLiBJIGhvcGUgdGhpcyBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGFuZCB1c2VzIGNsZWFyIHZhcmlhYmxlIG5hbWVzOyBpdCYjMzk7bGwgbWFrZSBteSBsaWZlIGVhc2llciB3aGVuIEkmIzM5O20gZGVidWdnaW5nIGEgdHJpY2t5IGNvbW11bmljYXRpb24gaXNzdWUgZG93biB0aGUgbGluZS4KCkkmIzM5O20gYW50aWNpcGF0aW5nIHBvdGVudGlhbGx5IGhhdmluZyB0byBkZWFsIHdpdGggZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBNQ1UgZmlybXdhcmUuIEkgbmVlZCB0byBsb29rIGZvciB2ZXJzaW9uIGNoZWNrcyBvciBmZWF0dXJlIGZsYWdzIHRoYXQgbWlnaHQgZGljdGF0ZSBkaWZmZXJlbnQgcmVzcG9uc2UgZm9ybWF0cyBvciBleHBlY3RlZCBkYXRhLiBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHJvYnVzdCwgZ3JhY2VmdWxseSBoYW5kbGluZyBhbnkgdW5leHBlY3RlZCByZXNwb25zZXMgb3IgY29ycnVwdGVkIGRhdGEuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBzdGFydCB0aGlua2luZyBhYm91dCBob3cgdG8gc2lnbmFsIHRoZXNlIGlzc3VlcyBiYWNrIHRvIHRoZSBoaWdoZXItbGV2ZWwgYXBwbGljYXRpb24gYW5kIGlmIGFueSByZXRyaWVzIHNob3VsZCBiZSBhdHRlbXB0ZWQuIEFscmlnaHQsIHRpbWUgdG8gZGlnIGluIGFuZCBjb25maXJtIHRoZXNlIGluaXRpYWwgdGhvdWdodHMuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaW1wbGVtZW50ZWQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDE0Olx0aW50IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBpbnQgY21kLFxuICAxNTpcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIGludCBzZXEpXG4gIDE2Olx0e1xuICAxNzpcdFx0aW50IG1jdV9jbWQgPSBGSUVMRF9HRVQoX19NQ1VfQ01EX0ZJRUxEX0lELCBjbWQpO1xuICAxODpcdFx0c3RydWN0IG10NzkyNV9tY3VfcnhkICpyeGQ7XG4gIDE5Olx0XHRpbnQgcmV0ID0gMDtcbiAgMjA6XHRcbiAgMjE6XHRcdGlmICghc2tiKSB7XG4gIDIyOlx0XHRcdGRldl9lcnIobWRldi1cdTAwM2VkZXYsIFwmIzM0O01lc3NhZ2UgJTA4eCAoc2VxICVkKSB0aW1lb3V0XFxuXCYjMzQ7LCBjbWQsIHNlcSk7XG4gIDIzOlx0XHRcdG10NzkyeF9yZXNldChtZGV2KTtcbiAgMjQ6XHRcbiAgMjU6XHRcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4gIDI2Olx0XHR9XG4gIDI3Olx0XG4gIDI4Olx0XHRyeGQgPSAoc3RydWN0IG10NzkyNV9tY3VfcnhkICopc2tiLVx1MDAzZWRhdGE7XG4gIDI5Olx0XHRpZiAoc2VxICE9IHJ4ZC1cdTAwM2VzZXEpXG4gIDMwOlx0XHRcdHJldHVybiAtRUFHQUlOO1xuICAzMTpcdFxuICAzMjpcdFx0aWYgKGNtZCA9PSBNQ1VfQ01EKFBBVENIX1NFTV9DT05UUk9MKSB8fFxuICAzMzpcdFx0ICAgIGNtZCA9PSBNQ1VfQ01EKFBBVENIX0ZJTklTSF9SRVEpKSB7XG4gIDM0Olx0XHRcdHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpyeGQpIC0gNCk7XG4gIDM1Olx0XHRcdHJldCA9ICpza2ItXHUwMDNlZGF0YTtcbiAgMzY6XHRcdH0gZWxzZSBpZiAoY21kID09IE1DVV9VTklfQ01EKERFVl9JTkZPX1VQREFURSkgfHxcbiAgMzc6XHRcdFx0ICAgY21kID09IE1DVV9VTklfQ01EKEJTU19JTkZPX1VQREFURSkgfHxcbiAgMzg6XHRcdFx0ICAgY21kID09IE1DVV9VTklfQ01EKFNUQV9SRUNfVVBEQVRFKSB8fFxuICAzOTpcdFx0XHQgICBjbWQgPT0gTUNVX1VOSV9DTUQoT0ZGTE9BRCkgfHxcbiAgNDA6XHRcdFx0ICAgY21kID09IE1DVV9VTklfQ01EKFNVU1BFTkQpKSB7XG4gIDQxOlx0XHRcdHN0cnVjdCBtdDc5MjVfbWN1X3VuaV9ldmVudCAqZXZlbnQ7XG4gIDQyOlx0XG4gIDQzOlx0XHRcdHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpyeGQpKTtcbiAgNDQ6XHRcdFx0ZXZlbnQgPSAoc3RydWN0IG10NzkyNV9tY3VfdW5pX2V2ZW50ICopc2tiLVx1MDAzZWRhdGE7XG4gIDQ1Olx0XHRcdHJldCA9IGxlMzJfdG9fY3B1KGV2ZW50LVx1MDAzZXN0YXR1cyk7XG4gIDQ2Olx0XHRcdC8qIHNraXAgaW52YWxpZCBldmVudCAqL1xuICA0NzpcdFx0XHRpZiAobWN1X2NtZCAhPSBldmVudC1cdTAwM2VjaWQpXG4gIDQ4Olx0XHRcdFx0cmV0ID0gLUVBR0FJTjtcbiAgNDk6XHRcdH0gZWxzZSB7XG4gIDUwOlx0XHRcdHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpyeGQpKTtcbiAgNTE6XHRcdH1cbiAgNTI6XHRcbiAgNTM6XHRcdHJldHVybiByZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NTk1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWdWxuZXJhYmlsaXR5IElkZW50aWZpZWQ6IE91dC1vZi1Cb3VuZHMgUmVhZCBpbiBNVDc5MjUvTVQ3OTI4IERyaXZlcioqCgpPa2F5LCBzbyBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZm91bmQuIFRoZSBgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZWAgZnVuY3Rpb24gZXh0cmFjdHMgYHNpemVvZigqcnhkKWAgZnJvbSB0aGUgc2tiIChzb2NrZXQgYnVmZmVyKS4gVGhhdCBza2IgaXMgdGhlbiByZXR1cm5lZCB2aWEgYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYC4gU3Vic2VxdWVudGx5LCBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyBjYWxsZWQsIGFuZCB0aGF0JiMzOTtzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEl0IHVzZXMgYG1lbWNweWAgdG8gY29weSBkYXRhIGZyb20gdGhlIGBza2ItJmd0O2RhdGFgIHRvIHRoZSBgdHhwd3JgIGJ1ZmZlciwgZXhwZWN0aW5nIHRoZSBza2IgdG8gY29udGFpbiBhIGBzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50YC4KClRoZSBjcml0aWNhbCBvdmVyc2lnaHQgaXMgdGhhdCB0aGVyZSYjMzk7cyAqbm8qIGNoZWNrIHRvIHZlcmlmeSBpZiBgc2tiLSZndDtsZW5gIGlzIHN1ZmZpY2llbnQgdG8gaG9sZCB0aGUgZW50aXJlIGBzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50YCBwYXlsb2FkLiBgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZWAgb25seSBhY2NvdW50cyBmb3IgdGhlIE1DVSBoZWFkZXIsIG5vdCB0aGUgZnVsbCBldmVudCBzaXplLiBJZiB0aGUgTUNVIHJldHVybnMgYSByZXNwb25zZSB0aGF0JiMzOTtzIHNob3J0ZXIgdGhhbiBleHBlY3RlZCwgYG1lbWNweWAgd2lsbCByZWFkIGJleW9uZCB0aGUgYm91bmRzIG9mIGBza2ItJmd0O2RhdGFgLgoKVGhpcyBgdHhwd3JgIGJ1ZmZlciBpdHNlbGYgaXMgYWxsb2NhdGVkIHVzaW5nIGBkZXZtX2ttYWxsb2NgIHdpdGhpbiB0aGUgZHJpdmVyLCBhbmQgbG9va2luZyBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IG10NzkyOF90eHB3cmAsIEkgY2FuIHNlZSBpdCYjMzk7cyBxdWl0ZSBsYXJnZS4gSXQgY29udGFpbnMgbnVtZXJvdXMgYXJyYXlzIG9mIGBzOFsuLl1bMl1gLCBhZGRpbmcgdXAgdG8gbWFueSBodW5kcmVkcyBvZiBieXRlcy4gU28sIGlmIHRoZSBVU0IgZGV2aWNlIHJldHVybnMgYSBzbWFsbCByZXNwb25zZSwgc2F5IDEwIGJ5dGVzLCB0aGUgYHNrYmAgYnVmZmVyIHdpbGwgYmUgZXF1YWxseSBzbWFsbC4gVGhlIGBtZW1jcHlgIHdpbGwgdGhlbiBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIHJlYWQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBzbGFiLW91dC1vZi1ib3VuZHMgdnVsbmVyYWJpbGl0eS4KClRoZSBgc2tiLSZndDtkYXRhYCBidWZmZXIgaXMgYWxsb2NhdGVkIGJ5IHRoZSBVU0IgZHJpdmVyIHdoZW4gcmVjZWl2aW5nIHRoZSByZXNwb25zZS4gVGhpcyBtZWFucyB0aGF0IGEgZGVsaWJlcmF0ZWx5IGNyYWZ0ZWQgc2hvcnQgcmVzcG9uc2UgZnJvbSBhIG1hbGljaW91cyBVU0IgZGV2aWNlIGNvdWxkIGV4cGxvaXQgdGhpcy4gVGhpcyBpcyBhIGNsYXNzaWMgVVNCIGRldmljZSB2dWxuZXJhYmlsaXR5IHNjZW5hcmlvLgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgYnVnLCBhbmQgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb25lLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdGhlIFVTQiBpbnRlcmZhY2UuIEl0JiMzOTtzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgY2FuIGRlZmluaXRlbHkgYmUgZXhwbG9pdGVkIHRvIGNyYXNoIHRoZSBzeXN0ZW0uCgpJJiMzOTt2ZSBqdXN0IGNvbmZpcm1lZCB0aGUgc2l6ZSBvZiBgc3RydWN0IG10NzkyOF90eHB3cmA7IGl0JiMzOTtzIHN1YnN0YW50aWFsLCBhbmQgdGhhdCBqdXN0IHJlaW5mb3JjZXMgdGhlIHNldmVyaXR5IG9mIHRoaXMgdnVsbmVyYWJpbGl0eS4gQSBzbWFsbCByZXNwb25zZSBsZWFkcyB0byBhIGxhcmdlLCB1bnZhbGlkYXRlZCByZWFkLiBUaGlzIGlzIGEgY2xlYXIgcGF0aCB0byBleHBsb2l0YXRpb24uCgpOb3cgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWdzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2AsIHNvIEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBtdDc5MjVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVQ3OTI1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6Nzpjb25maWcgTVQ3OTI1RVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjc0CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE1UNzkyNSBLY29uZmlnKioKCkFscmlnaHQsIHRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBNVDc5MjUgY2hpcHNldC4gSSYjMzk7bSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlIGJyb2FkZXIgTVQ3NiBmcmFtZXdvcmssIHNvIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIG51YW5jZXMgdGhhdCB0aGlzIHNwZWNpZmljIGRldmljZSBmYW1pbHkgaW50cm9kdWNlcy4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIG9wdGlvbnMgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgZHJpdmVyIGl0c2VsZiwgcGVyaGFwcyBmZWF0dXJlcyBsaWtlIGNhbGlicmF0aW9uIGRhdGEgbG9hZGluZywgcG93ZXIgbWFuYWdlbWVudCBjb250cm9scyBzcGVjaWZpYyB0byB0aGUgTVQ3OTI1JiMzOTtzIGFyY2hpdGVjdHVyZSwgYW5kIG9mIGNvdXJzZSwgYW55IHZlbmRvci1zcGVjaWZpYyBhZGRpdGlvbnMgb3IgbW9kaWZpY2F0aW9ucy4gSSYjMzk7bGwgYmUgd2F0Y2hpbmcgZm9yIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnM7IHRoZXNlIGNhbiBnZXQgY29tcGxleCBxdWlja2x5LCBlc3BlY2lhbGx5IHdpdGggdGhlIGludGVycGxheSBiZXR3ZWVuIGRpZmZlcmVudCByZWd1bGF0b3J5IGRvbWFpbnMgYW5kIHdpcmVsZXNzIHN0YW5kYXJkcy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGVzZSBvcHRpb25zLiBBcmUgdGhleSBzZW5zaWJsZSBkZWZhdWx0cyB0aGF0IHdvcmsgd2VsbCBvdXQtb2YtdGhlLWJveCBvciBkbyB0aGV5IHJlcXVpcmUgc29tZSB1c2VyIGludGVydmVudGlvbiBvciBhZGFwdGF0aW9uIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB0aGVyZSB3aWxsIGJlIG9wdGlvbnMgZm9yIGRlYnVnZ2luZywgbG9nZ2luZywgYW5kIHRyYWNlIGZlYXR1cmVzLCB3aGljaCBpcyBjcnVjaWFsIGZvciBteSB3b3JrLiBVbHRpbWF0ZWx5LCBteSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYWJsZSBhc3BlY3RzIG9mIHRoZSBNVDc5MjUgZHJpdmVyIHNvIHRoYXQgSSBjYW4gYW50aWNpcGF0ZSBwb3RlbnRpYWwgcHJvYmxlbXMsIG9wdGltaXplIGl0cyB1c2UsIGFuZCBiZSByZWFkeSB0byB0cm91Ymxlc2hvb3QgYW55IGlzc3VlcyB0aGF0IGFyaXNlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSBoYXMgaW4gc3RvcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc5MjVfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZVxuICAgNDpcdFx0c2VsZWN0IE1UNzkyeF9MSUJcbiAgIDU6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAgNjpcdFxuICAgNzpcdGNvbmZpZyBNVDc5MjVFXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4gICA5Olx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAxMDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAxMTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMTI6XHRcdGhlbHBcbiAgMTM6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBQQ0llIGRldmljZXMsXG4gIDE0Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAxNTpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIE1UNzkyNVVcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMjI6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDIzOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDI0Olx0XHRkZXBlbmRzIG9uIFVTQlxuICAyNTpcdFx0aGVscFxuICAyNjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxuICAyNzpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMjg6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAyOTpcdFxuICAzMDpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjU0OQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyNSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgY29uZmlndXJpbmcgdGhpcyBgTVQ3OTI1YCBkcml2ZXIgYW5kIGhlcmUmIzM5O3Mgd2hhdCYjMzk7cyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBlc3NlbnRpYWxzIGVuYWJsZWQ6IGBNVDc5MjVVYCBmb3IgVVNCIGVtdWxhdGlvbiBpcyBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LiBJJiMzOTtsbCBhbHNvIGJyaW5nIGluIGBNVDc5MjVFYCBmb3IgUENJZSBzdXBwb3J0LCBldmVuIGlmIGl0JiMzOTtzIG5vdCBjdXJyZW50bHkgZW11bGF0ZWQg4oCTIGdvb2QgdG8gaGF2ZSBmb3IgZnV0dXJlIHBvc3NpYmlsaXRpZXMuIE9mIGNvdXJzZSwgYE1BQzgwMjExYCBpcyBmdW5kYW1lbnRhbCwgYW5kIHRoZW4gYFVTQmAgYW5kIGBQQ0lgIGFzIGJhc2UgZGVwZW5kZW5jaWVzLgoKSGFuZyBvbiBhIHNlY29uZOKApiBJIG5lZWQgdG8gY29uZmlybSB0aG9zZSBkZXBlbmRlbmNpZXMuIExldCBtZSBjaGVjazogYE1UNzkyNVVgIGRlcGVuZHMgb24gYm90aCBgTUFDODAyMTFgIGFuZCBgVVNCYC4gR29vZCwgbWFraW5nIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGlyZWN0IGRlcGVuZGVuY2llcyBvbiBgTVQ3OTI1VWAgd2hpbGUgSSYjMzk7bSBhdCBpdC4gQWgsIGxvb2tzIGxpa2UgYE1UNzkyeF9VU0JgIGhhcyBiZWVuIHNlbGVjdGVkOyB0aGF0IG1ha2VzIHNlbnNlLgoKUmlnaHQsIG5leHQgY3J1Y2lhbCBkZXRhaWw6IEkgKm5lZWQqIGBERUJVR19GU2AgZW5hYmxlZCB0byBhY3R1YWxseSBnZXQgdG8gdGhlIGRlYnVnZnMgZW50cmllcywgd2hpY2ggYXJlIGVzc2VudGlhbCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcy4gSXMgYERFQlVHX0ZTYCByZXF1aXJlZD8gSXQmIzM5O3MgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gc3l6a2FsbGVyLCBidXQgSSBtaWdodCBuZWVkIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSBpdCBqdXN0IHRvIGJlIHN1cmUuIEl0JiMzOTtzIGJldHRlciB0byBiZSBleHBsaWNpdC4KCldhaXQsIHRoZSBgbXQ3OTI4X3R4cHdyYCBtb2R1bGUgaXMgaW4gYGRlYnVnZnMuY2AuIE5vdywgaXMgYGRlYnVnZnMuY2AgYWx3YXlzIGNvbXBpbGVkLCBvciBpcyBpdCBjb25kaXRpb25hbD8gQmVzdCBjaGVjayB0aGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgYnVpbGQgcnVsZXMuIFRoaXMgaXMgZ2V0dGluZyB0byB0aGUgZGV0YWlscywgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byBiZSBtZXRob2RpY2FsIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRcbiAgIDM6XHRvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgJiM0Mzs9IG10NzkyNS1jb21tb24ub1xuICAgNDpcdG9iai0kKENPTkZJR19NVDc5MjVFKSAmIzQzOz0gbXQ3OTI1ZS5vXG4gICA1Olx0b2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm9cbiAgIDY6XHRcbiAgIDc6XHRtdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vXG4gICA4Olx0bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuICAgOTpcdG10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vXG4gIDEwOlx0bXQ3OTI1dS15IDo9IHVzYi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDU2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgRGVidWdmcyBEZXBlbmRlbmN5KioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2h5IGEgcGFydGljdWxhciBtb2R1bGUgaXMgbWlzYmVoYXZpbmcgYW5kIEkgdGhpbmsgaXQmIzM5O3MgcmVsYXRlZCB0byBob3cgYGRlYnVnZnNgIGlzIGhhbmRsZWQuIFJpZ2h0LCBgZGVidWdmcy5vYCBpcyAqYWx3YXlzKiBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIHRoYXQgbXVjaCBpcyBjbGVhci4gQnV0IHRoZW4gSSByZW1lbWJlcmVkIHRoYXQgYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAgaXMganVzdCBhIG1hY3JvLCBvciBldmVuIGEgc3R1YiwgaWYgdGhlIGBDT05GSUdfREVCVUdfRlNgIG9wdGlvbiBpc24mIzM5O3QgZW5hYmxlZC4gU28sIHRoZSBsaWtlbHkgZml4IGhlcmUgaXMgdG8gZW5zdXJlIHRoYXQgYERFQlVHX0ZTYCBpcyBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLgoKU2luY2UgdGhpcyBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGEgd2lyZWxlc3MgbW9kdWxlLCBzcGVjaWZpY2FsbHkgYSBNZWRpYVRlayBkcml2ZXIsIEkgYWxzbyBoYXZlIHRvIGNvbnNpZGVyIHRoZSBtb2R1bGUgZGVwZW5kZW5jaWVzLiBJIHN1c3BlY3QgYFdMQU5gIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgIG1pZ2h0IGJlIHJlcXVpcmVkIHRvIGV2ZW4gcmVhY2ggdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucy4gSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgIHRvIGJlIGNlcnRhaW4uIFRoYXQmIzM5O3MgbXkgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcbiAgIDM6XHRcdGJvb2wgXCYjMzQ7TWVkaWFUZWsgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVmYXVsdCB5XG4gICA1Olx0XHRoZWxwXG4gICA2Olx0XHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXG4gICA3Olx0XG4gICA4Olx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAgOTpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxuICAxMDpcdFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXG4gIDExOlx0XHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cbiAgMTI6XHRcbiAgMTM6XHRpZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuICAxNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcJiMzNDtcbiAgMTU6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCYjMzQ7XG4gIDE2Olx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDA2NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgV0xBTiBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gY29uZmlndXJlIHRoaXMgZHJpdmVyIGNvcnJlY3RseS4gVGhlIHN5c3RlbSByZXF1aXJlcyBzdXBwb3J0IGZvciBgV0xBTl9WRU5ET1JfTUVESUFURUtgLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEFuZCwgb2YgY291cnNlLCB0aGUgZ2VuZXJpYyBgV0xBTmAgZmVhdHVyZSBpcyBlc3NlbnRpYWwsIHNvIHRoYXQgbmVlZHMgdG8gYmUgZW5hYmxlZCB0b28uIFJpZ2h0LiBOb3csIHdoZXJlIGRvIEkgZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzPyBBaCwgeWVzLCB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB3aXRoaW4gdGhlIE1lZGlhdGVrLXNwZWNpZmljIGRyaXZlciBzdHJ1Y3R1cmUuIExldCBtZSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IHNwZWNpZmljIGFyZWE6IGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgLiBJJiMzOTtsbCBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciBpbiB0aGVyZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHBhcnNlIHRoYXQgZmlsZSwgbWFraW5nIHN1cmUgdG8gbG9jYXRlIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzZfQ09SRVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgTVQ3Nl9MRURTXG4gICA3Olx0XHRib29sXG4gICA4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAgOTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcbiAgMTA6XHRcdGRlZmF1bHQgeVxuICAxMTpcdFxuICAxMjpcdGNvbmZpZyBNVDc2X1VTQlxuICAxMzpcdFx0dHJpc3RhdGVcbiAgMTQ6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE1Olx0XG4gIDE2Olx0Y29uZmlnIE1UNzZfU0RJT1xuICAxNzpcdFx0dHJpc3RhdGVcbiAgMTg6XHRcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIE1UNzZ4MDJfTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTM5CgkJCQkJCQlvdXRwdXQ6IDUyCgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBhbmQgRm9jdXMgU3ltYm9scyBmb3IgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgZW52aXJvbm1lbnQgaXMgcHJvcGVybHkgc2V0IHVwLiBJdCBsb29rcyBsaWtlIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkOiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3OTI1VWAsIGFuZCBgREVCVUdfRlNgLiBJJiMzOTtsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRob3NlIGFyZSBhbGwgaW5jbHVkZWQgaW4gbXkgYnVpbGQgY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5IHRoZSBrZXkgZm9jdXMgc3ltYm9scyB3aXRoaW4gdGhlIGNvZGUuIExvb2tzIGxpa2UgdGhlIHBhdGNoIGFkZHMgYG10NzkyOF9laHRfdHhwd3JgLCBgbXQ3OTI4X3R4cHdyYCwgYG10NzkyOF90eHB3cl90Ymxfc2V0YCwgYG10NzkyOF90eHB3cl90YmxfZ2V0YCwgYW5kIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gLiBUaGUgZmlyc3QsIGBtdDc5MjhfZWh0X3R4cHdyYCwgaXMgc3RhdGljIGlubGluZSwgc28gdGhhdCYjMzk7cyBwcm9iYWJseSBub3QgYSBwcmltYXJ5IHN5bWJvbCBmb3IgaW4tZGVwdGggYW5hbHlzaXMuIEhvd2V2ZXIsIGBtdDc5MjhfdHhwd3JgIGlzIHN0YXRpYyBidXQgaXMgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGluIGEgYGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZWAgY2FsbCwgd2hpY2ggbWFrZXMgaXQgaW50ZXJlc3RpbmcuIGBtdDc5MjhfdHhwd3JfdGJsX3NldGAgYW5kIGBtdDc5MjhfdHhwd3JfdGJsX2dldGAgYXJlIHN0YXRpYyBmdW5jdGlvbnMgZm9yIHNldHRpbmcgYW5kIGdldHRpbmcgdGhlIHRyYW5zbWl0IHBvd2VyIHRhYmxlLCBhbmQgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgaXMgbm9uLXN0YXRpYy4gVGhlIGV4cG9ydCBzdGF0dXMgb2YgdGhlIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIHN5bWJvbCBpcyBzb21ldGhpbmcgdG8gbG9vayBpbnRvISBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGV4cG9ydGVkLCB3aGljaCB3b3VsZCBiZSBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpbnRlcmZhY2VzIHdpdGggb3RoZXIgbW9kdWxlcyBvciB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCBhbiBleWUgb24gdGhpcyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTI6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI4X2dldF90eHB3cl9pbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMDg9bXQ3OTI4X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIwLVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjE6XHRyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LVx1MDAzZXR4cHdyX3RibCwgdHhwd3IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyMi1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM9MjE0Nz1pbnQgbXQ3OTI1X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MjE3NDppbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTc1LVx0XHRcdCAgc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzY5PWludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zNzAtXHRcdFx0ICBzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzcyLVx0XHRcdCAgc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxMjowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTg1MAoJCQkJCQkJb3V0cHV0OiAyNzkKCQkJCQkJCXRob3VnaHRzOiAxMTg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFRYIFBvd2VyIEluZm8gUmV0cmlldmFsIGluIHRoZSBNVDc5MjUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYG10NzkyNWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIFRYIHBvd2VyIGluZm8gcmV0cmlldmFsLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBoZXJlLiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpbW1lZGlhdGVseSBzdGFuZHMgb3V0LiBJdCYjMzk7cyAqbm90KiBzdGF0aWMsIGFuZCBpdCYjMzk7cyBub3QgaW5saW5lZCwgd2hpY2ggbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgYW5hbHlzaXMuIGBtdDc5MjhfdHhwd3JgIGlzIGFsc28gaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGEgY2FsbGJhY2sgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBzbyBpdCYjMzk7cyBwcm9iYWJseSB3b3J0aCBhIGxvb2suIGBtdDc5MjhfdHhwd3JfdGJsX3NldGAgYW5kIGBtdDc5MjhfdHhwd3JfdGJsX2dldGAgc2VlbSBsaWtlIHNtYWxsZXIsIHBvc3NpYmx5IGlubGluZWQsIGNhbGxiYWNrcywgYnV0IEkmIzM5O2xsIG5vdGUgdGhlbS4KCkkgY2hlY2tlZCBgbXQ3OTI4X3R4cHdyYCBhbmQgdmVyaWZpZWQgaXQgaXMgKm5vdCogaW5saW5lZC4gQWZ0ZXIgbGlzdGluZyB0aGVtLCBJIGNvbmNsdWRlZCB0aGF0IGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGFuZCBgbXQ3OTI4X3R4cHdyYCB3ZXJlIHRoZSBtb3N0IGltcG9ydGFudCwgYnV0IHRoZW4gSSByZWFsaXplZCBgbXQ3OTI4X3R4cHdyX3RibF9zZXRgIGFuZCBgbXQ3OTI4X3R4cHdyX3RibF9nZXRgIGFyZSBxdWl0ZSBzbWFsbCBzbyB0aGV5IGFyZSBwcm9iYWJseSBpbmxpbmVkLCBvciBqdXN0IG5vdCB0aGF0IGludGVyZXN0aW5nLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEl0JiMzOTtzIG5vdCBleHBsaWNpdGx5IGBFWFBPUlRfU1lNQk9MYCYjMzk7ZCwgYnV0IGl0JiMzOTtzIGRlZmluZWQgaW4gYG1jdS5jYCBhbmQgY2FsbGVkIGZyb20gYGRlYnVnZnMuY2AsIG1lYW5pbmcgaXQmIzM5O3MgYSBnbG9iYWwgc3ltYm9sIHdpdGhpbiB0aGUgYG10NzkyNS1jb21tb25gIG1vZHVsZS4gR29vZCB0byBrbm93LgoKTmV4dCwgSSYjMzk7bSBjaGVja2luZyB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBJIHNlZSBgTVQ3OTI1VWAsIGBNQUM4MDIxMWAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGFuZCBgREVCVUdfRlNgLiBMZXQmIzM5O3MgZmlsbCBpbiBhbnkgZGVwZW5kZW5jaWVzOiBJIGFsc28gaW5jbHVkZSBgTVQ3OTI1RWAgKFBDSWUpIGp1c3QgaW4gY2FzZS4gQWxzbywgYENGRzgwMjExYCBpcyBuZWVkZWQgYnkgYE1BQzgwMjExYC4gU28sIG15IGxpc3QgaXM6IGBXTEFOYCwgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgYENGRzgwMjExYCwgYE1BQzgwMjExYCwgYFVTQmAsIGBNVDc5MjVVYCwgYERFQlVHX0ZTYCwgYE1UNzkyNUVgLCBgUENJYC4KCk15IHRoaW5raW5nIG5vdyBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgY29tcG9uZW50cyBmb3IgZnV6emluZy4gVGhlIHBhdGNoIGlzIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiB0byBnZXQgVFggcG93ZXIgaW5mby4gVGhlIE1UNzkyNSBkcml2ZXIgc3VwcG9ydHMgVVNCIHZpYSBgQ09ORklHX01UNzkyNVVgLiBUaGF0IG1lYW5zIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyAoc3BlY2lmaWNhbGx5IHZoY2kpIGlzIGEgdmlhYmxlIHBhdGguIFRoZSBmdW5jdGlvbiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyB0aGUgaW1wb3J0YW50IG9uZSBiZWNhdXNlIGl0IHNlbmRzIGEgY29tbWFuZCB0byB0aGUgZGV2aWNlIGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlLiBCZWNhdXNlIHRoZSByZXNwb25zZSBwYXJzaW5nIGluIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGJsaW5kbHkgY29waWVzIGRhdGEgZnJvbSB0aGUgU0tCIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGxlbmd0aCwgdGhpcyBpcyBhIHBlcmZlY3Qgb3Bwb3J0dW5pdHkgZm9yIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXRpZXMuIEEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgY291bGQgcmV0dXJuIGEgc2hvcnQgcmVzcG9uc2UsIGxlYWRpbmcgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEkgc2VlIHRoZSBjb2RlOgoKYGBgYwpldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLSZndDtkYXRhOwptZW1jcHkodHhwd3IsICZhbXA7ZXZlbnQtJmd0O3R4cHdyLCBzaXplb2YoKnR4cHdyKSk7CmBgYAoKWWVwLCBgc2tiLSZndDtkYXRhYCBnZXRzIGNhc3QgdG8gYHN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQgKmAsIGFuZCB0aGVuIGEgYG1lbWNweWAgcmVhZHMgYHNpemVvZigqdHhwd3IpYCBieXRlcyBmcm9tIGAmYW1wO2V2ZW50LSZndDt0eHB3cmAuIElmIGBza2ItJmd0O2xlbmAgaXMgbGVzcyB0aGFuIGBzaXplb2Yoc3RydWN0IG10NzkyOF90eHB3cl9ldmVudClgLCB0aGVuIHdlIGhhdmUgYSBidWZmZXIgb3Zlci1yZWFkLiBJdCYjMzk7cyBhIGNsYXNzaWMsIGV4cGxvaXRhYmxlIGJ1Zy4gVGhpcyBpcyB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLgoKSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDEyOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O0RFQlVHX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI4X2dldF90eHB3cl9pbmZvJiMzNDssCiAgICAmIzM0O210NzkyOF90eHB3ciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGRlYnVnZnMgZW50cmllcyBhbmQgTUNVIGNvbW11bmljYXRpb24gbG9naWMgdG8gcmV0cmlldmUgVFggcG93ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBNVDc5MjggZGV2aWNlIChoYW5kbGVkIGJ5IHRoZSBtdDc5MjUgZHJpdmVyKS4gVGhlIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGZ1bmN0aW9uIHNlbmRzIGEgY29tbWFuZCB0byB0aGUgZGV2aWNlIGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlLiBTaW5jZSB0aGUgTVQ3OTI1IGRyaXZlciBzdXBwb3J0cyBVU0IgKHZpYSBgQ09ORklHX01UNzkyNVVgKSwgdGhlIGRldmljZSBhbmQgaXRzIE1DVSByZXNwb25zZXMgY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlciYjMzk7cyBVU0IgZnV6emluZyAodmhjaSkuIFRoZSByZXNwb25zZSBwYXJzaW5nIGluIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGJsaW5kbHkgY29waWVzIGRhdGEgZnJvbSB0aGUgU0tCIHdpdGhvdXQgY2hlY2tpbmcgaXRzIGxlbmd0aCwgd2hpY2ggY2FuIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgcmV0dXJucyBhIHNob3J0IHJlc3BvbnNlLiBUaGlzIG1ha2VzIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7V0xBTiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyOF9nZXRfdHhwd3JfaW5mbyYjMzQ7LAogICAgJiMzNDttdDc5MjhfdHhwd3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBkZWJ1Z2ZzIGVudHJpZXMgYW5kIE1DVSBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIHJldHJpZXZlIFRYIHBvd2VyIGluZm9ybWF0aW9uIGZvciB0aGUgTVQ3OTI4IGRldmljZSAoaGFuZGxlZCBieSB0aGUgbXQ3OTI1IGRyaXZlcikuIFRoZSBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBmdW5jdGlvbiBzZW5kcyBhIGNvbW1hbmQgdG8gdGhlIGRldmljZSBhbmQgcGFyc2VzIHRoZSByZXNwb25zZS4gU2luY2UgdGhlIE1UNzkyNSBkcml2ZXIgc3VwcG9ydHMgVVNCICh2aWEgYENPTkZJR19NVDc5MjVVYCksIHRoZSBkZXZpY2UgYW5kIGl0cyBNQ1UgcmVzcG9uc2VzIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgKHZoY2kpLiBUaGUgcmVzcG9uc2UgcGFyc2luZyBpbiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBibGluZGx5IGNvcGllcyBkYXRhIGZyb20gdGhlIFNLQiB3aXRob3V0IGNoZWNraW5nIGl0cyBsZW5ndGgsIHdoaWNoIGNhbiBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpZiBhIG1hbGljaW91cyBVU0IgZGV2aWNlIHJldHVybnMgYSBzaG9ydCByZXNwb25zZS4gVGhpcyBtYWtlcyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTowNC40NDYzMTE1NDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTM1ODkwODExMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI4X2dldF90eHB3cl9pbmZvXCIsXG4gICAgXCJtdDc5MjhfdHhwd3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGRlYnVnZnMgZW50cmllcyBhbmQgTUNVIGNvbW11bmljYXRpb24gbG9naWMgdG8gcmV0cmlldmUgVFggcG93ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBNVDc5MjggZGV2aWNlIChoYW5kbGVkIGJ5IHRoZSBtdDc5MjUgZHJpdmVyKS4gVGhlIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGZ1bmN0aW9uIHNlbmRzIGEgY29tbWFuZCB0byB0aGUgZGV2aWNlIGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlLiBTaW5jZSB0aGUgTVQ3OTI1IGRyaXZlciBzdXBwb3J0cyBVU0IgKHZpYSBgQ09ORklHX01UNzkyNVVgKSwgdGhlIGRldmljZSBhbmQgaXRzIE1DVSByZXNwb25zZXMgY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlcidzIFVTQiBmdXp6aW5nICh2aGNpKS4gVGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyBpdHMgbGVuZ3RoLCB3aGljaCBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYSBtYWxpY2lvdXMgVVNCIGRldmljZSByZXR1cm5zIGEgc2hvcnQgcmVzcG9uc2UuIFRoaXMgbWFrZXMgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTowNC40NDYzMzA3NDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzQ2OTg4MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2ZjhhZWUzODUxMTQ0YTM2NWIzNjliYTdkYWMxMzY5MmE1MWE5ZDE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDI1IDEyOjAxOjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuY1xcbmluZGV4IGQwMWZmNDlkZTQ3YWY3Li4xNjg0M2U1MDk3MTY5ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcXG5AQCAtMTc4LDYgKzE3OCwxNDcgQEAgbXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkXFxuK210NzkyOF9laHRfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3ciwgdTggYmFuZF9pZHgpXFxuK3tcXG4rXFx0c2VxX3ByaW50ZihzLCBcXFwiJS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcXFxuXFxcIixcXG4rXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwibWNzMFxcXCIsIFxcXCJtY3MxXFxcIiwgXFxcIm1jczJcXFwiLCBcXFwibWNzM1xcXCIsIFxcXCJtY3M0XFxcIiwgXFxcIm1jczVcXFwiLFxcbitcXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIsXFxuK1xcdFxcdCAgIFxcXCJtY3MxMlxcXCIsIFxcXCJtY3MxM1xcXCIsIFxcXCJtY3MxNFxcXCIsIFxcXCJtY3MxNVxcXCIpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDEwNiwgZWh0MTA2LCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNDIsIGVodDI0MiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTYsIGVodDk5NiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4NCwgZWh0OTk2eDQsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzUyLCBlaHQyNl81MiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NF8yNDIsIGVodDQ4NF8yNDIsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODQsIGVodDk5Nl80ODQsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDJfNDg0LCBlaHQ5OTZ4Ml80ODQsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzLCBlaHQ5OTZ4MywgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG4rfVxcbitcXG4rc3RhdGljIGludFxcbittdDc5MjhfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuK1xcdHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyID0gTlVMTDtcXG4rXFx0dTggYmFuZF9pZHggPSBkZXYtXFx1MDAzZW1waHkuYmFuZF9pZHg7XFxuK1xcdGludCByZXQgPSAwO1xcbitcXG4rXFx0dHhwd3IgPSBkZXZtX2ttYWxsb2MoZGV2LVxcdTAwM2VtdDc2LmRldiwgc2l6ZW9mKCp0eHB3ciksIEdGUF9LRVJORUwpO1xcbitcXG4rXFx0aWYgKCF0eHB3cilcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbitcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbitcXHRyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LVxcdTAwM2V0eHB3cl90YmwsIHR4cHdyKTtcXG4rXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4rXFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0LyogRGlzcGxheSBwb3dlciB0YWJsZSBuYW1lIGJhc2VkIG9uIHRoZSBpbmRleCAqL1xcbitcXHRzd2l0Y2ggKGRldi1cXHUwMDNldHhwd3JfdGJsKSB7XFxuK1xcdGNhc2UgMDpcXG4rXFx0XFx0c2VxX3ByaW50ZihzLCBcXFwiUG93ZXIgVGFibGU6ICVkIChTVEFfU0lTTylcXFxcblxcXCIsIGRldi1cXHUwMDNldHhwd3JfdGJsKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgMTpcXG4rXFx0XFx0c2VxX3ByaW50ZihzLCBcXFwiUG93ZXIgVGFibGU6ICVkIChTVEFfQ0REKVxcXFxuXFxcIiwgZGV2LVxcdTAwM2V0eHB3cl90YmwpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSAyOlxcbitcXHRcXHRzZXFfcHJpbnRmKHMsIFxcXCJQb3dlciBUYWJsZTogJWQgKFNUQV9NSU1PKVxcXFxuXFxcIiwgZGV2LVxcdTAwM2V0eHB3cl90YmwpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSAzOlxcbitcXHRcXHRzZXFfcHJpbnRmKHMsIFxcXCJQb3dlciBUYWJsZTogJWQgKFAyUF9TSVNPKVxcXFxuXFxcIiwgZGV2LVxcdTAwM2V0eHB3cl90YmwpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSA0OlxcbitcXHRcXHRzZXFfcHJpbnRmKHMsIFxcXCJQb3dlciBUYWJsZTogJWQgKFAyUF9DREQpXFxcXG5cXFwiLCBkZXYtXFx1MDAzZXR4cHdyX3RibCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIDU6XFxuK1xcdFxcdHNlcV9wcmludGYocywgXFxcIlBvd2VyIFRhYmxlOiAlZCAoUDJQX01JTU8pXFxcXG5cXFwiLCBkZXYtXFx1MDAzZXR4cHdyX3RibCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRzZXFfcHJpbnRmKHMsIFxcXCJQb3dlciBUYWJsZTogJWQgKFVua25vd24pXFxcXG5cXFwiLCBkZXYtXFx1MDAzZXR4cHdyX3RibCk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitcXHRzZXFfcHJpbnRmKHMsIFxcXCIlLTIycyAgJTZzICU2cyAlNnMgJTZzXFxcXG5cXFwiLFxcbitcXHRcXHQgICBcXFwiIFxcXCIsIFxcXCIxbVxcXCIsIFxcXCIybVxcXCIsIFxcXCI1bVxcXCIsIFxcXCIxMW1cXFwiKTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7XFxuK1xcbitcXHRzZXFfcHJpbnRmKHMsIFxcXCIlLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcXFxuXFxcIixcXG4rXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwiNm1cXFwiLCBcXFwiOW1cXFwiLCBcXFwiMTJtXFxcIiwgXFxcIjE4bVxcXCIsIFxcXCIyNG1cXFwiLCBcXFwiMzZtXFxcIixcXG4rXFx0XFx0ICAgXFxcIjQ4bVxcXCIsIFxcXCI1NG1cXFwiKTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0yMCwgb2ZkbTIwLCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNNDAsIG9mZG00MCwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETTgwLCBvZmRtODAsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0xNjAsIG9mZG0xNjAsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdHNlcV9wcmludGYocywgXFxcIiUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzXFxcXG5cXFwiLFxcbitcXHRcXHQgICBcXFwiIFxcXCIsIFxcXCJtY3MwXFxcIiwgXFxcIm1jczFcXFwiLCBcXFwibWNzMlxcXCIsIFxcXCJtY3MzXFxcIiwgXFxcIm1jczRcXFwiLCBcXFwibWNzNVxcXCIsXFxuK1xcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiKTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjAsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdHNlcV9wcmludGYocywgXFxcIiUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcXFxuXFxcIixcXG4rXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwibWNzMFxcXCIsIFxcXCJtY3MxXFxcIiwgXFxcIm1jczJcXFwiLCBcXFwibWNzM1xcXCIsIFxcXCJtY3M0XFxcIiwgXFxcIm1jczVcXFwiLFxcbitcXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczMyXFxcIik7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XFxuK1xcbitcXHRzZXFfcHJpbnRmKHMsIFxcXCIlLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXFxcblxcXCIsXFxuK1xcdFxcdCAgIFxcXCIgXFxcIiwgXFxcIm1jczBcXFwiLCBcXFwibWNzMVxcXCIsIFxcXCJtY3MyXFxcIiwgXFxcIm1jczNcXFwiLCBcXFwibWNzNFxcXCIsIFxcXCJtY3M1XFxcIixcXG4rXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3M4XFxcIiwgXFxcIm1jczlcXFwiLCBcXFwibWNzMTBcXFwiLCBcXFwibWNzMTFcXFwiKTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUNDAsIHZodDQwLCBiYW5kX2lkeCk7XFxuK1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCwgYmFuZF9pZHgpO1xcbitcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNTIsIGhlNTIsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xcbitcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTQ4NCwgaGU0ODQsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcXG4rXFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2eDIsIGhlOTk2eDIsIGJhbmRfaWR4KTtcXG4rXFxuK1xcdG10NzkyOF9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcXG4rXFxuK291dDpcXG4rXFx0ZGV2bV9rZnJlZShkZXYtXFx1MDAzZW10NzYuZGV2LCB0eHB3cik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnRcXG4rbXQ3OTI4X3R4cHdyX3RibF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4re1xcbitcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGF0YTtcXG4rXFxuK1xcdGRldi1cXHUwMDNldHhwd3JfdGJsID0gKHU4KXZhbDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgaW50XFxuK210NzkyOF90eHB3cl90YmxfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkYXRhO1xcbitcXG4rXFx0KnZhbCA9IGRldi1cXHUwMDNldHhwd3JfdGJsO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK0RFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3R4cHdyX3RibCwgbXQ3OTI4X3R4cHdyX3RibF9nZXQsXFxuK1xcdFxcdFxcdCBtdDc5MjhfdHhwd3JfdGJsX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbitcXG4gc3RhdGljIGludFxcbiBtdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuIHtcXG5AQCAtMzAxLDggKzQ0MiwxNCBAQCBpbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiBcXG4gXFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cXHUwMDNlbXQ3Ni5kZXYsIFxcXCJhY3FcXFwiLCBkaXIsXFxuIFxcdFxcdFxcdFxcdCAgICBtdDc5MnhfcXVldWVzX2FjcSk7XFxuLVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuLVxcdFxcdFxcdFxcdCAgICBtdDc5MjVfdHhwd3IpO1xcbitcXHRpZiAoaXNfbXQ3OTI4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpKSB7XFxuK1xcdFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBtdDc5MjhfdHhwd3IpO1xcbitcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0eHBvd2VyX3RibFxcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc190eHB3cl90YmwpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInR4cG93ZXJfc2t1XFxcIiwgZGlyLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgbXQ3OTI1X3R4cHdyKTtcXG4rXFx0fVxcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0eF9zdGF0c1xcXCIsIDA0MDAsIGRpciwgZGV2LCBcXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xcbiBcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJmd19kZWJ1Z1xcXCIsIDA2MDAsIGRpciwgZGV2LCBcXHUwMDI2Zm9wc19md19kZWJ1Zyk7XFxuIFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInJ1bnRpbWUtcG1cXFwiLCAwNjAwLCBkaXIsIGRldiwgXFx1MDAyNmZvcHNfcG0pO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuaW5kZXggZTk0ZmE1NDRmZjIwNzcuLmU5OTVjNzVmZTk0ZWVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcXG5AQCAtMjE3MSw2ICsyMTcxLDMzIEBAIGludCBtdDc5MjVfZ2V0X3R4cHdyX2luZm8oc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggYmFuZF9pZHgsIHN0cnVjdCBtdDc5MjVfdHhwXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsXFxuK1xcdFxcdFxcdCAgc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IpXFxuK3tcXG4rXFx0c3RydWN0IG10NzkyOF90eHB3cl9ldmVudCAqZXZlbnQ7XFxuK1xcdHN0cnVjdCBtdDc5MjVfdHhwd3JfcmVxIHJlcSA9IHtcXG4rXFx0XFx0LnRhZyA9IGNwdV90b19sZTE2KFRYX1BPV0VSX1NIT1dfSU5GTyksXFxuK1xcdFxcdC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIDQpLFxcbitcXHRcXHQuY2F0ZyA9IFRYUE9XRVJfQUxMX1JBVEVfUE9XRVJfSU5GTyxcXG4rXFx0XFx0LmJhbmRfaWR4ID0gYmFuZF9pZHgsXFxuK1xcdFxcdC5wb3dlcl90YmwgPSBwb3dlcl90YmwsXFxuK1xcdH07XFxuK1xcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKFRYUE9XRVIpLFxcbitcXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLVxcdTAwM2VkYXRhO1xcbitcXHRtZW1jcHkodHhwd3IsIFxcdTAwMjZldmVudC1cXHUwMDNldHhwd3IsIHNpemVvZigqdHhwd3IpKTtcXG4rXFxuK1xcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBpbnQgbXQ3OTI1X21jdV9zZXRfc25pZmZlcihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbiBcXHRcXHRcXHQgICBib29sIGVuYWJsZSlcXG4ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXFxuaW5kZXggMjkzZjE3M2IyM2RkYWYuLmU5ZDQ3NGI4ODA3MDA0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcXG5AQCAtNjksNyArNjksNyBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX3JlcSB7XFxuIFxcdHU4IGZvcm1hdF9pZDtcXG4gXFx0dTggY2F0ZztcXG4gXFx0dTggYmFuZF9pZHg7XFxuLVxcdHU4IF9yc3YxO1xcbitcXHR1OCBwb3dlcl90Ymw7XFxuIH0gX19wYWNrZWQ7XFxuIFxcbiBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX2V2ZW50IHtcXG5AQCAtOTAsNiArOTAsMjQgQEAgc3RydWN0IG10NzkyNV90eHB3cl9ldmVudCB7XFxuIFxcdHU4IHJzdjE7XFxuIH0gX19wYWNrZWQ7XFxuIFxcbitzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50IHtcXG4rXFx0dTggcnN2WzRdO1xcbitcXHRfX2xlMTYgdGFnO1xcbitcXHRfX2xlMTYgbGVuO1xcbitcXG4rXFx0dTggY2F0ZztcXG4rXFx0dTggYmFuZF9pZHg7XFxuK1xcdHU4IGNoX2JhbmQ7XFxuK1xcdHU4IGZvcm1hdDsgLyogMDpMZWdhY3ksIDE6SEUgKi9cXG4rXFxuK1xcdC8qIFJhdGUgcG93ZXIgaW5mbyAqL1xcbitcXHRzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHR4cHdyO1xcbitcXG4rXFx0czggcHdyX21heDtcXG4rXFx0czggcHdyX21pbjtcXG4rXFx0dTggcnN2MTtcXG4rfSBfX3BhY2tlZDtcXG4rXFxuIGVudW0ge1xcbiBcXHRUTV9TV0lUQ0hfTU9ERSxcXG4gXFx0VE1fU0VUX0FUX0NNRCxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxcbmluZGV4IDRjYzI1OTQxOGFmY2E4Li5iNTMzMzBhMjgyNjhkZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXFxuQEAgLTI1Miw2ICsyNTIsNDMgQEAgc3RydWN0IG10NzkyNV90eHB3ciB7XFxuIFxcdHM4IGVodDk5NngzXzQ4NFsxNl1bMl07XFxuIH07XFxuIFxcbitzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHtcXG4rXFx0czggY2NrWzRdWzJdO1xcbitcXHRzOCBvZmRtMjBbOF1bMl07XFxuK1xcdHM4IG9mZG00MFs4XVsyXTtcXG4rXFx0czggb2ZkbTgwWzhdWzJdO1xcbitcXHRzOCBvZmRtMTYwWzhdWzJdO1xcbitcXHRzOCBodDIwWzhdWzJdO1xcbitcXHRzOCBodDQwWzldWzJdO1xcbitcXHRzOCB2aHQyMFsxMl1bMl07XFxuK1xcdHM4IHZodDQwWzEyXVsyXTtcXG4rXFx0czggdmh0ODBbMTJdWzJdO1xcbitcXHRzOCB2aHQxNjBbMTJdWzJdO1xcbitcXHRzOCBoZTI2WzEyXVsyXTtcXG4rXFx0czggaGU1MlsxMl1bMl07XFxuK1xcdHM4IGhlMTA2WzEyXVsyXTtcXG4rXFx0czggaGUyNDJbMTJdWzJdO1xcbitcXHRzOCBoZTQ4NFsxMl1bMl07XFxuK1xcdHM4IGhlOTk2WzEyXVsyXTtcXG4rXFx0czggaGU5OTZ4MlsxMl1bMl07XFxuK1xcdHM4IGVodDI2WzE2XVsyXTtcXG4rXFx0czggZWh0NTJbMTZdWzJdO1xcbitcXHRzOCBlaHQxMDZbMTZdWzJdO1xcbitcXHRzOCBlaHQyNDJbMTZdWzJdO1xcbitcXHRzOCBlaHQ0ODRbMTZdWzJdO1xcbitcXHRzOCBlaHQ5OTZbMTZdWzJdO1xcbitcXHRzOCBlaHQ5OTZ4MlsxNl1bMl07XFxuK1xcdHM4IGVodDk5Nng0WzE2XVsyXTtcXG4rXFx0czggZWh0MjZfNTJbMTZdWzJdO1xcbitcXHRzOCBlaHQyNl8xMDZbMTZdWzJdO1xcbitcXHRzOCBlaHQ0ODRfMjQyWzE2XVsyXTtcXG4rXFx0czggZWh0OTk2XzQ4NFsxNl1bMl07XFxuK1xcdHM4IGVodDk5Nl80ODRfMjQyWzE2XVsyXTtcXG4rXFx0czggZWh0OTk2eDJfNDg0WzE2XVsyXTtcXG4rXFx0czggZWh0OTk2eDNbMTZdWzJdO1xcbitcXHRzOCBlaHQ5OTZ4M180ODRbMTZdWzJdO1xcbit9O1xcbitcXG4gc3RhdGljIGlubGluZSB1OCBtdDc5MjdfYmFuZF9pZHgoZW51bSBubDgwMjExX2JhbmQgYmFuZClcXG4ge1xcbiBcXHRzd2l0Y2ggKGJhbmQpIHtcXG5AQCAtMzMxLDYgKzM2OCw4IEBAIGludCBtdDc5MjVfbWN1X3VuaV9ic3NfcHMoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4gdm9pZCBtdDc5MjVfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbiBpbnQgbXQ3OTI1X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyKTtcXG4raW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxcbitcXHRcXHRcXHQgIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyKTtcXG4gdm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KTtcXG4gdm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcXG5pbmRleCA3MDA3M2I0M2FmNTQzMS4uYmVmMmM2ZWRiYTQ4ODIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmhcXG5AQCAtMjY3LDYgKzI2Nyw3IEBAIHN0cnVjdCBtdDc5MnhfZGV2IHtcXG4gXFxuIFxcdHU4IGZ3X2RlYnVnO1xcbiBcXHR1OCBmd19mZWF0dXJlcztcXG4rXFx0dTggdHhwd3JfdGJsO1xcbiBcXG4gXFx0c3RydWN0IG10NzZfY29ubmFjX3BtIHBtO1xcbiBcXHRzdHJ1Y3QgbXQ3Nl9jb25uYWNfY29yZWR1bXAgY29yZWR1bXA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjA1Ljc4MzIzOTY0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk0MDIxOTY4MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5cIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCIsXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiREVCVUdfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjhfZ2V0X3R4cHdyX2luZm9cIixcbiAgICBcIm10NzkyOF90eHB3clwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgZGVidWdmcyBlbnRyaWVzIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiBsb2dpYyB0byByZXRyaWV2ZSBUWCBwb3dlciBpbmZvcm1hdGlvbiBmb3IgdGhlIE1UNzkyOCBkZXZpY2UgKGhhbmRsZWQgYnkgdGhlIG10NzkyNSBkcml2ZXIpLiBUaGUgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgZnVuY3Rpb24gc2VuZHMgYSBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UuIFNpbmNlIHRoZSBNVDc5MjUgZHJpdmVyIHN1cHBvcnRzIFVTQiAodmlhIGBDT05GSUdfTVQ3OTI1VWApLCB0aGUgZGV2aWNlIGFuZCBpdHMgTUNVIHJlc3BvbnNlcyBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgKHZoY2kpLiBUaGUgcmVzcG9uc2UgcGFyc2luZyBpbiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBibGluZGx5IGNvcGllcyBkYXRhIGZyb20gdGhlIFNLQiB3aXRob3V0IGNoZWNraW5nIGl0cyBsZW5ndGgsIHdoaWNoIGNhbiBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpZiBhIG1hbGljaW91cyBVU0IgZGV2aWNlIHJldHVybnMgYSBzaG9ydCByZXNwb25zZS4gVGhpcyBtYWtlcyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZmOGFlZTM4NTExNDRhMzY1YjM2OWJhN2RhYzEzNjkyYTUxYTlkMTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxMjowMTowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuY1xuaW5kZXggZDAxZmY0OWRlNDdhZjcuLjE2ODQzZTUwOTcxNjllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmNcbkBAIC0xNzgsNiArMTc4LDE0NyBAQCBtdDc5MjVfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkXG4rbXQ3OTI4X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbit7XG4rXHRzZXFfcHJpbnRmKHMsIFwiJS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcblwiLFxuK1x0XHQgICBcIiBcIiwgXCJtY3MwXCIsIFwibWNzMVwiLCBcIm1jczJcIiwgXCJtY3MzXCIsIFwibWNzNFwiLCBcIm1jczVcIixcbitcdFx0ICAgXCJtY3M2XCIsIFwibWNzN1wiLCBcIm1jczhcIiwgXCJtY3M5XCIsIFwibWNzMTBcIiwgXCJtY3MxMVwiLFxuK1x0XHQgICBcIm1jczEyXCIsIFwibWNzMTNcIiwgXCJtY3MxNFwiLCBcIm1jczE1XCIpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2LCBlaHQyNiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDUyLCBlaHQ1MiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDEwNiwgZWh0MTA2LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjQyLCBlaHQyNDIsIGJhbmRfaWR4KTtcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODQsIGVodDQ4NCwgYmFuZF9pZHgpO1xuK1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcbit9XG4rXG4rc3RhdGljIGludFxuK210NzkyOF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG4re1xuK1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRldl9nZXRfZHJ2ZGF0YShzLVx1MDAzZXByaXZhdGUpO1xuK1x0c3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IgPSBOVUxMO1xuK1x0dTggYmFuZF9pZHggPSBkZXYtXHUwMDNlbXBoeS5iYW5kX2lkeDtcbitcdGludCByZXQgPSAwO1xuK1xuK1x0dHhwd3IgPSBkZXZtX2ttYWxsb2MoZGV2LVx1MDAzZW10NzYuZGV2LCBzaXplb2YoKnR4cHdyKSwgR0ZQX0tFUk5FTCk7XG4rXG4rXHRpZiAoIXR4cHdyKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbitcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG4rXHRyZXQgPSBtdDc5MjhfZ2V0X3R4cHdyX2luZm8oZGV2LCBiYW5kX2lkeCwgZGV2LVx1MDAzZXR4cHdyX3RibCwgdHhwd3IpO1xuK1x0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbitcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0LyogRGlzcGxheSBwb3dlciB0YWJsZSBuYW1lIGJhc2VkIG9uIHRoZSBpbmRleCAqL1xuK1x0c3dpdGNoIChkZXYtXHUwMDNldHhwd3JfdGJsKSB7XG4rXHRjYXNlIDA6XG4rXHRcdHNlcV9wcmludGYocywgXCJQb3dlciBUYWJsZTogJWQgKFNUQV9TSVNPKVxcblwiLCBkZXYtXHUwMDNldHhwd3JfdGJsKTtcbitcdFx0YnJlYWs7XG4rXHRjYXNlIDE6XG4rXHRcdHNlcV9wcmludGYocywgXCJQb3dlciBUYWJsZTogJWQgKFNUQV9DREQpXFxuXCIsIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgMjpcbitcdFx0c2VxX3ByaW50ZihzLCBcIlBvd2VyIFRhYmxlOiAlZCAoU1RBX01JTU8pXFxuXCIsIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgMzpcbitcdFx0c2VxX3ByaW50ZihzLCBcIlBvd2VyIFRhYmxlOiAlZCAoUDJQX1NJU08pXFxuXCIsIGRldi1cdTAwM2V0eHB3cl90YmwpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgNDpcbitcdFx0c2VxX3ByaW50ZihzLCBcIlBvd2VyIFRhYmxlOiAlZCAoUDJQX0NERClcXG5cIiwgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSA1OlxuK1x0XHRzZXFfcHJpbnRmKHMsIFwiUG93ZXIgVGFibGU6ICVkIChQMlBfTUlNTylcXG5cIiwgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0c2VxX3ByaW50ZihzLCBcIlBvd2VyIFRhYmxlOiAlZCAoVW5rbm93bilcXG5cIiwgZGV2LVx1MDAzZXR4cHdyX3RibCk7XG4rXHRcdGJyZWFrO1xuK1x0fVxuK1xuK1x0c2VxX3ByaW50ZihzLCBcIiUtMjJzICAlNnMgJTZzICU2cyAlNnNcXG5cIixcbitcdFx0ICAgXCIgXCIsIFwiMW1cIiwgXCIybVwiLCBcIjVtXCIsIFwiMTFtXCIpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7XG4rXG4rXHRzZXFfcHJpbnRmKHMsIFwiJS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cIixcbitcdFx0ICAgXCIgXCIsIFwiNm1cIiwgXCI5bVwiLCBcIjEybVwiLCBcIjE4bVwiLCBcIjI0bVwiLCBcIjM2bVwiLFxuK1x0XHQgICBcIjQ4bVwiLCBcIjU0bVwiKTtcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMjAsIG9mZG0yMCwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE00MCwgb2ZkbTQwLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETTgwLCBvZmRtODAsIGJhbmRfaWR4KTtcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNMTYwLCBvZmRtMTYwLCBiYW5kX2lkeCk7XG4rXG4rXHRzZXFfcHJpbnRmKHMsIFwiJS0yMnMgICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cIixcbitcdFx0ICAgXCIgXCIsIFwibWNzMFwiLCBcIm1jczFcIiwgXCJtY3MyXCIsIFwibWNzM1wiLCBcIm1jczRcIiwgXCJtY3M1XCIsXG4rXHRcdCAgIFwibWNzNlwiLCBcIm1jczdcIik7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xuK1xuK1x0c2VxX3ByaW50ZihzLCBcIiUtMjJzICAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2c1xcblwiLFxuK1x0XHQgICBcIiBcIiwgXCJtY3MwXCIsIFwibWNzMVwiLCBcIm1jczJcIiwgXCJtY3MzXCIsIFwibWNzNFwiLCBcIm1jczVcIixcbitcdFx0ICAgXCJtY3M2XCIsIFwibWNzN1wiLCBcIm1jczMyXCIpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcbitcbitcdHNlcV9wcmludGYocywgXCIlLTIycyAgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnMgJTZzICU2cyAlNnNcXG5cIixcbitcdFx0ICAgXCIgXCIsIFwibWNzMFwiLCBcIm1jczFcIiwgXCJtY3MyXCIsIFwibWNzM1wiLCBcIm1jczRcIiwgXCJtY3M1XCIsXG4rXHRcdCAgIFwibWNzNlwiLCBcIm1jczdcIiwgXCJtY3M4XCIsIFwibWNzOVwiLCBcIm1jczEwXCIsIFwibWNzMTFcIik7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMjAsIHZodDIwLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUNDAsIHZodDQwLCBiYW5kX2lkeCk7XG4rXG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcbitcbitcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XG4rXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpO1xuK1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2LCBoZTk5NiwgYmFuZF9pZHgpO1xuK1x0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2eDIsIGhlOTk2eDIsIGJhbmRfaWR4KTtcbitcbitcdG10NzkyOF9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcbitcbitvdXQ6XG4rXHRkZXZtX2tmcmVlKGRldi1cdTAwM2VtdDc2LmRldiwgdHhwd3IpO1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIGludFxuK210NzkyOF90eHB3cl90Ymxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4re1xuK1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG4rXG4rXHRkZXYtXHUwMDNldHhwd3JfdGJsID0gKHU4KXZhbDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgaW50XG4rbXQ3OTI4X3R4cHdyX3RibF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG4re1xuK1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGRhdGE7XG4rXG4rXHQqdmFsID0gZGV2LVx1MDAzZXR4cHdyX3RibDtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc190eHB3cl90YmwsIG10NzkyOF90eHB3cl90YmxfZ2V0LFxuK1x0XHRcdCBtdDc5MjhfdHhwd3JfdGJsX3NldCwgXCIlbGxkXFxuXCIpO1xuK1xuIHN0YXRpYyBpbnRcbiBtdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4ge1xuQEAgLTMwMSw4ICs0NDIsMTQgQEAgaW50IG10NzkyNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcbiBcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwiYWNxXCIsIGRpcixcbiBcdFx0XHRcdCAgICBtdDc5MnhfcXVldWVzX2FjcSk7XG4tXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVx1MDAzZW10NzYuZGV2LCBcInR4cG93ZXJfc2t1XCIsIGRpcixcbi1cdFx0XHRcdCAgICBtdDc5MjVfdHhwd3IpO1xuK1x0aWYgKGlzX210NzkyOChcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbitcdFx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCJ0eHBvd2VyX3NrdVwiLCBkaXIsXG4rXHRcdFx0XHRcdCAgICBtdDc5MjhfdHhwd3IpO1xuK1x0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwidHhwb3dlcl90YmxcIiwgMDYwMCwgZGlyLCBkZXYsIFx1MDAyNmZvcHNfdHhwd3JfdGJsKTtcbitcdH0gZWxzZSB7XG4rXHRcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwidHhwb3dlcl9za3VcIiwgZGlyLFxuK1x0XHRcdFx0XHQgICAgbXQ3OTI1X3R4cHdyKTtcbitcdH1cbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJ0eF9zdGF0c1wiLCAwNDAwLCBkaXIsIGRldiwgXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcImZ3X2RlYnVnXCIsIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX2Z3X2RlYnVnKTtcbiBcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJydW50aW1lLXBtXCIsIDA2MDAsIGRpciwgZGV2LCBcdTAwMjZmb3BzX3BtKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jXG5pbmRleCBlOTRmYTU0NGZmMjA3Ny4uZTk5NWM3NWZlOTRlZWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcbkBAIC0yMTcxLDYgKzIxNzEsMzMgQEAgaW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgc3RydWN0IG10NzkyNV90eHBcbiBcdHJldHVybiAwO1xuIH1cbiBcbitpbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsXG4rXHRcdFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cilcbit7XG4rXHRzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICpldmVudDtcbitcdHN0cnVjdCBtdDc5MjVfdHhwd3JfcmVxIHJlcSA9IHtcbitcdFx0LnRhZyA9IGNwdV90b19sZTE2KFRYX1BPV0VSX1NIT1dfSU5GTyksXG4rXHRcdC5sZW4gPSBjcHVfdG9fbGUxNihzaXplb2YocmVxKSAtIDQpLFxuK1x0XHQuY2F0ZyA9IFRYUE9XRVJfQUxMX1JBVEVfUE9XRVJfSU5GTyxcbitcdFx0LmJhbmRfaWR4ID0gYmFuZF9pZHgsXG4rXHRcdC5wb3dlcl90YmwgPSBwb3dlcl90YmwsXG4rXHR9O1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdGludCByZXQ7XG4rXG4rXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChUWFBPV0VSKSxcbitcdFx0XHRcdFx0XHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXHUwMDI2c2tiKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLVx1MDAzZWRhdGE7XG4rXHRtZW1jcHkodHhwd3IsIFx1MDAyNmV2ZW50LVx1MDAzZXR4cHdyLCBzaXplb2YoKnR4cHdyKSk7XG4rXG4rXHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gaW50IG10NzkyNV9tY3Vfc2V0X3NuaWZmZXIoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcdFx0XHQgICBib29sIGVuYWJsZSlcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuaFxuaW5kZXggMjkzZjE3M2IyM2RkYWYuLmU5ZDQ3NGI4ODA3MDA0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5oXG5AQCAtNjksNyArNjksNyBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyX3JlcSB7XG4gXHR1OCBmb3JtYXRfaWQ7XG4gXHR1OCBjYXRnO1xuIFx0dTggYmFuZF9pZHg7XG4tXHR1OCBfcnN2MTtcbitcdHU4IHBvd2VyX3RibDtcbiB9IF9fcGFja2VkO1xuIFxuIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQge1xuQEAgLTkwLDYgKzkwLDI0IEBAIHN0cnVjdCBtdDc5MjVfdHhwd3JfZXZlbnQge1xuIFx0dTggcnN2MTtcbiB9IF9fcGFja2VkO1xuIFxuK3N0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQge1xuK1x0dTggcnN2WzRdO1xuK1x0X19sZTE2IHRhZztcbitcdF9fbGUxNiBsZW47XG4rXG4rXHR1OCBjYXRnO1xuK1x0dTggYmFuZF9pZHg7XG4rXHR1OCBjaF9iYW5kO1xuK1x0dTggZm9ybWF0OyAvKiAwOkxlZ2FjeSwgMTpIRSAqL1xuK1xuK1x0LyogUmF0ZSBwb3dlciBpbmZvICovXG4rXHRzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHR4cHdyO1xuK1xuK1x0czggcHdyX21heDtcbitcdHM4IHB3cl9taW47XG4rXHR1OCByc3YxO1xuK30gX19wYWNrZWQ7XG4rXG4gZW51bSB7XG4gXHRUTV9TV0lUQ0hfTU9ERSxcbiBcdFRNX1NFVF9BVF9DTUQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaFxuaW5kZXggNGNjMjU5NDE4YWZjYTguLmI1MzMzMGEyODI2OGRmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oXG5AQCAtMjUyLDYgKzI1Miw0MyBAQCBzdHJ1Y3QgbXQ3OTI1X3R4cHdyIHtcbiBcdHM4IGVodDk5NngzXzQ4NFsxNl1bMl07XG4gfTtcbiBcbitzdHJ1Y3QgbXQ3OTI4X3R4cHdyIHtcbitcdHM4IGNja1s0XVsyXTtcbitcdHM4IG9mZG0yMFs4XVsyXTtcbitcdHM4IG9mZG00MFs4XVsyXTtcbitcdHM4IG9mZG04MFs4XVsyXTtcbitcdHM4IG9mZG0xNjBbOF1bMl07XG4rXHRzOCBodDIwWzhdWzJdO1xuK1x0czggaHQ0MFs5XVsyXTtcbitcdHM4IHZodDIwWzEyXVsyXTtcbitcdHM4IHZodDQwWzEyXVsyXTtcbitcdHM4IHZodDgwWzEyXVsyXTtcbitcdHM4IHZodDE2MFsxMl1bMl07XG4rXHRzOCBoZTI2WzEyXVsyXTtcbitcdHM4IGhlNTJbMTJdWzJdO1xuK1x0czggaGUxMDZbMTJdWzJdO1xuK1x0czggaGUyNDJbMTJdWzJdO1xuK1x0czggaGU0ODRbMTJdWzJdO1xuK1x0czggaGU5OTZbMTJdWzJdO1xuK1x0czggaGU5OTZ4MlsxMl1bMl07XG4rXHRzOCBlaHQyNlsxNl1bMl07XG4rXHRzOCBlaHQ1MlsxNl1bMl07XG4rXHRzOCBlaHQxMDZbMTZdWzJdO1xuK1x0czggZWh0MjQyWzE2XVsyXTtcbitcdHM4IGVodDQ4NFsxNl1bMl07XG4rXHRzOCBlaHQ5OTZbMTZdWzJdO1xuK1x0czggZWh0OTk2eDJbMTZdWzJdO1xuK1x0czggZWh0OTk2eDRbMTZdWzJdO1xuK1x0czggZWh0MjZfNTJbMTZdWzJdO1xuK1x0czggZWh0MjZfMTA2WzE2XVsyXTtcbitcdHM4IGVodDQ4NF8yNDJbMTZdWzJdO1xuK1x0czggZWh0OTk2XzQ4NFsxNl1bMl07XG4rXHRzOCBlaHQ5OTZfNDg0XzI0MlsxNl1bMl07XG4rXHRzOCBlaHQ5OTZ4Ml80ODRbMTZdWzJdO1xuK1x0czggZWh0OTk2eDNbMTZdWzJdO1xuK1x0czggZWh0OTk2eDNfNDg0WzE2XVsyXTtcbit9O1xuK1xuIHN0YXRpYyBpbmxpbmUgdTggbXQ3OTI3X2JhbmRfaWR4KGVudW0gbmw4MDIxMV9iYW5kIGJhbmQpXG4ge1xuIFx0c3dpdGNoIChiYW5kKSB7XG5AQCAtMzMxLDYgKzM2OCw4IEBAIGludCBtdDc5MjVfbWN1X3VuaV9ic3NfcHMoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbiB2b2lkIG10NzkyNV9jb3JlZHVtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4gaW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCxcbiBcdFx0XHQgIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyKTtcbitpbnQgbXQ3OTI4X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LCB1OCBwb3dlcl90YmwsXG4rXHRcdFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cik7XG4gdm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXG4gXHRcdFx0XHQgICAgIHU4IHRibF9pZHgsIHUxNiByYXRlX2lkeCk7XG4gdm9pZCBtdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuaW5kZXggNzAwNzNiNDNhZjU0MzEuLmJlZjJjNmVkYmE0ODgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaFxuQEAgLTI2Nyw2ICsyNjcsNyBAQCBzdHJ1Y3QgbXQ3OTJ4X2RldiB7XG4gXG4gXHR1OCBmd19kZWJ1ZztcbiBcdHU4IGZ3X2ZlYXR1cmVzO1xuK1x0dTggdHhwd3JfdGJsO1xuIFxuIFx0c3RydWN0IG10NzZfY29ubmFjX3BtIHBtO1xuIFx0c3RydWN0IG10NzZfY29ubmFjX2NvcmVkdW1wIGNvcmVkdW1wO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MDUuNzgzMjQyNzI3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI1NzgyMjI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIE1UNzYgVFggUG93ZXIgRGVidWdmcyBQYXRjaGVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgZm9yIHRoZSBgbXQ3NmAgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoZSBgbXQ3OTI1YCBkcml2ZXIgYW5kIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMgdG8gZXhwb3NlIFRYIHBvd2VyIGluZm9ybWF0aW9uIGZvciBgbXQ3OTI4YC4gVGhlIGFkZGVkIGZ1bmN0aW9ucyBhcmUgYWxsIGFib3V0IGdldHRpbmcgYW5kIHNldHRpbmcgVFggcG93ZXIgdGFibGVzIGFuZCBzZW5kaW5nIGNvbW1hbmRzIHRvIHRoZSBNZWRpYVRlayBNQ1UsIHByaW1hcmlseSBmb3IgdXNlIHdpdGggdGhlIGRlYnVnZnMgZW50cmllcyBgdHhwb3dlcl9za3VgIGFuZCBgdHhwb3dlcl90YmxgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGV2ZW4gZnV6ei13b3J0aHkuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGludGVyYWN0aW5nIHdpdGggdGhpcyBNQ1UgdG8gcmV0cmlldmUgVFggcG93ZXIgZGV0YWlscy4gVGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgaXMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIHdoaWNoIGNhbGxzIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCB0byBzZW5kIGEgY29tbWFuZC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjaGVjayBpZiB0aGlzIGlzIHJlYWNoYWJsZS4gUmVhZGluZyBmcm9tIGRlYnVnZnMgaXMgYSBkZWZpbml0ZSB5ZXMuIEJ1dCwgaXMgaXQgd29ydGggdGhlIGVmZm9ydD9cblxuVGhlIHByb21wdCBoYXMgY2xlYXIgY3JpdGVyaWEuIEl0IHN1Z2dlc3RzIGF2b2lkaW5nIHBhdGNoZXMgY29udGFpbmluZyBvbmx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcgb3IgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uIGBtdDc2YCBpcyBhIHBoeXNpY2FsIFdpLUZpIGRyaXZlciwgc28gSSBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGVzZSBoYXJkd2FyZSBpbnRlcmFjdGlvbnMgdHJhbnNsYXRlIHRvIGEgdmlydHVhbGl6ZWQgc2V0dGluZy4gYG1hYzgwMjExX2h3c2ltYCBpc24ndCByZWxldmFudCwgaXQgZG9lc24ndCBzaW11bGF0ZSB0aGUgYG10NzZgIGhhcmR3YXJlLiBCdXQgd2FpdCwgYG10NzZgIGhhcyBib3RoIFVTQiBhbmQgUENJZSBkcml2ZXJzLiBDYW4gSSBlbXVsYXRlIGl0IHNvbWVob3c/IE5vdCB3aXRoIFVTQiBnYWRnZXQsIGl0J3MgZm9yIHRoZSBkZXZpY2Ugc2lkZS4gV2FpdCwgc3l6a2FsbGVyIGhhcyB2aGNpIGZvciBVU0IgZGV2aWNlIGVtdWxhdGlvbi4gU28gVVNCIFdpLUZpIGRvbmdsZXMgY2FuIGJlIGVtdWxhdGVkIVxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgaXMgYG10NzkyNWAgYSBVU0IgZGV2aWNlPyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHNwZWNpZmljcyB0byBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZXMgYXJlIGluZGVlZCB0ZXN0YWJsZSB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NDgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMToxMy4wNDEwNjgzOTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4NTU3OTMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzI1OSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSArPSBtdDc5MjUtY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc5MjVFKSArPSBtdDc5MjVlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSArPSBtdDc5MjV1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjc6bXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjg6bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6OTptdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz03PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcXHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Mzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cXHRkZXYtXFx1MDAzZWZ3X2RlYnVnID0gKHU4KXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XFx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVxcdTAwM2Vmd19kZWJ1Zyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NjQ6XFx0XFx0XFx0IG10NzkyNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy03MC1cXHRcXHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODQtKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1OlxcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFxcXCIgKHRtYWMpXFxcIixcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVxcdFxcdFxcdCAgICAgIHR4cHdyLVxcdTAwM2VyYXRlLFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz05MT1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVxcdFxcdCAgIFxcXCJtY3MxMlxcXCIsIFxcXCJtY3MxM1xcXCIsIFxcXCJtY3MxNFxcXCIsIFxcXCJtY3MxNVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo5ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTg6bXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcXHRzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cXHR1OCBiYW5kX2lkeCA9IGRldi1cXHUwMDNlbXBoeS5iYW5kX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlxcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMi1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzOC1cXHRcXHQgICBcXFwiIFxcXCIsIFxcXCIxbVxcXCIsIFxcXCIybVxcXCIsIFxcXCI1bVxcXCIsIFxcXCIxMW1cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVxcdFxcdCAgIFxcXCI0OG1cXFwiLCBcXFwiNTRtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDIwLCBodDIwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTMtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3MzMlxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTc0OlxcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4Mj1tdDc5MjhfZWh0X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgc3RydWN0IG10NzkyOF90eHB3ciAqdHhwd3IsIHU4IGJhbmRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE4Ny1cXHRcXHQgICBcXFwibWNzMTJcXFwiLCBcXFwibWNzMTNcXFwiLCBcXFwibWNzMTRcXFwiLCBcXFwibWNzMTVcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTg4OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNiwgZWh0MjYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTg5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTkwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxOTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5NTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5NjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE5ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTk5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwMzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIwNDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMDg9bXQ3OTI4X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTMtXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwiMW1cXFwiLCBcXFwiMm1cXFwiLCBcXFwiNW1cXFwiLCBcXFwiMTFtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI1NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2ssIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1OC1cXHRcXHQgICBcXFwiNDhtXFxcIiwgXFxcIjU0bVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNTk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0yMCwgb2ZkbTIwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETTQwLCBvZmRtNDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjYxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShPRkRNODAsIG9mZG04MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KE9GRE0xNjAsIG9mZG0xNjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2Ni1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjcxLVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiLCBcXFwibWNzMzJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjcyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzYtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3M4XFxcIiwgXFxcIm1jczlcXFwiLCBcXFwibWNzMTBcXFwiLCBcXFwibWNzMTFcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc3OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc4OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDgwLCB2aHQ4MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjgzOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU1MiwgaGU1MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMTA2LCBoZTEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODY6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODc6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNDg0LCBoZTQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI5MDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MzIyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MzIzOm10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNDYtXFx0cG0tXFx1MDAzZWVuYWJsZV91c2VyID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNDc6XFx0bXQ3OTI1X3NldF9ydW50aW1lX3BtKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTM0OC1cXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHBtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0zNTU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNTY6bXQ3OTI1X3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzU3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2NTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM2Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2ODptdDc5MjVfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zODMtXFx0cG0tXFx1MDAzZWRzX2VuYWJsZSA9IGVuYWJsZSBcXHUwMDI2XFx1MDAyNiAhbW9uaXRvcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mzg0OlxcdG10NzkyNV9tY3Vfc2V0X2RlZXBfc2xlZXAoZGV2LCBwbS1cXHUwMDNlZHNfZW5hYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzg1LW91dDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0zOTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTI6bXQ3OTI1X2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDAxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjVfZGVlcF9zbGVlcF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQwMjpcXHRcXHRcXHQgbXQ3OTI1X2RlZXBfc2xlZXBfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9NDA0PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0MDc6c3RhdGljIGludCBtdDc5MjVfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQxOS1cXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0MjA6XFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9jaGlwX2NvbmZpZyhkZXYsIFxcXCJhc3NlcnRcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDIxLVxcdFxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo0Mjg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDMwOmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQzMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUwLVxcdFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ1MTpcXHRcXHRcXHRcXHRcXHQgICAgbXQ3OTI1X3R4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDUyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9maXJtd2FyZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXFxcInJlZ2QuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ6c3RhdGljIHNzaXplX3QgbXQ3OTI1X3RoZXJtYWxfdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXFx0XFx0XFx0XFx0XFx0c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1OlxcdFxcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYtXFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjM5OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptdDc5MjVfaHdtb25fYXR0cnNbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXFx0XFx1MDAyNnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9pbnB1dC5kZXZfYXR0ci5hdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQyLX07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQzOkFUVFJJQlVURV9HUk9VUFMobXQ3OTI1X2h3bW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjQ1OnN0YXRpYyBpbnQgbXQ3OTI1X3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjU0OlxcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcXHUwMDI2d2lwaHktXFx1MDAzZWRldiwgR0ZQX0tFUk5FTCwgXFxcIm10NzkyNV8lc1xcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU1LVxcdFxcdFxcdCAgICAgIHdpcGh5X25hbWUod2lwaHkpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01OS1cXHRod21vbiA9IGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBuYW1lLCBwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjYwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBtdDc5MjVfaHdtb25fZ3JvdXBzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXFx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhod21vbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjY0OnN0YXRpYyB2b2lkIG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzMtXFx0XFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXFx1MDAyNiBHRU5NQVNLKDcsIDApKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NzQ6XFx0XFx0bXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShkZXYsIGlkeCwgcmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1UNzkyeF9XVEJMX1NJWkU7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6ODc6XFx0XFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTg4LVxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5MjpcXHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5ODpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWFjX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTEyOlxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2VlcHJvbShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjExNjpcXHRyZXQgPSBtdDc5MjVfbWFjX2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVxcdGlmIChpc19tdDc5MjcoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTIxOlxcdFxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMzM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTJ4X01DVV9JTklUX1JFVFJZX0NPVU5UOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQwOlxcdFxcdHJldCA9IF9fbXQ3OTI1X2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQxLVxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE1NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTU1OnN0YXRpYyB2b2lkIG10NzkyNV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNTYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTYxOlxcdHJldCA9IG10NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Mi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2NS1cXHRtdDc2X3NldF9zdHJlYW1fY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTY2OlxcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2Ny1cXHRtdDc5MnhfY29uZmlnX21hY19hZGRyX2xpc3QoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjk6XFx0cmV0ID0gbXQ3OTI1X2luaXRfbWxvX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTcwLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE4MjpcXHRyZXQgPSBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4My1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTg3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxODg6XFx0cmV0ID0gbXQ3OTI1X3RoZXJtYWxfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTk0OlxcdHJldCA9IG10NzkyNV9tY3Vfc2V0X3RoZXJtYWxfcHJvdGVjdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTUtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjAzOlxcdG10NzkyNV9tY3Vfc2V0X2RlZXBfc2xlZXAoZGV2LCBkZXYtXFx1MDAzZXBtLmRzX2VuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjA2OmludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE2LVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTc6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmssIG10NzkyNV9tbG9fcG1fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlcG0ud2FrZV93b3JrLCBtdDc5MnhfcG1fd2FrZV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjQtXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5tYWNfd29yaywgbXQ3OTJ4X21hY193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyNV9zY2FuX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMjY6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlY29yZWR1bXAud29yaywgbXQ3OTI1X2NvcmVkdW1wX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjctI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIyODpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaXB2Nl9uc193b3JrLCBtdDc5MjVfc2V0X2lwdjZfbnNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyOS1cXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWlwdjZfbnNfbGlzdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzQ6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmssIG10NzkyNV9tYWNfcmVzZXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzNTpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrLCBtdDc5MjVfaW5pdF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzc6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTI1X3JvY193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjM4LVxcdHRpbWVyX3NldHVwKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5yb2NfdGltZXIsIG10NzkyeF9yb2NfdGltZXIsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjY1OlxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlcmVnX25vdGlmaWVyID0gbXQ3OTI1X3JlZ2Rfbm90aWZpZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2Ni1cXHRkZXYtXFx1MDAzZW1waHkuc2JhbmRfMmcuc2JhbmQuaHRfY2FwLmNhcCB8PVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI5Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI5MzpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RpbWVrZWVwaW5nLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzojaW5jbHVkZSBcXFwibXQ3OTI1LmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOC0jaW5jbHVkZSBcXFwiLi4vZG1hLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzpib29sIG10NzkyNV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MjI6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19zdGFfcG9sbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU4LVxcdFxcdGlkeCA9IG1saW5rLVxcdTAwM2V3Y2lkLmlkeDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo1OTpcXHRcXHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgTVRfV1RCTF9BQzBfQ1RUX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy03Ny1cXHRcXHRpZiAoY2xlYXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3ODpcXHRcXHRcXHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEyMzpcXHRcXHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgNik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI0LVxcdFxcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjUtXFx0XFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgUkFURV9JTkZPX0ZMQUdTX0VIVF9NQ1MpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjY6XFx0XFx0XFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNy1cXHRcXHRcXHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDEtXFx0XFx0LyogZ2V0IHNpZ25hbCBzdHJlbmd0aCBvZiByZXNwIGZyYW1lcyAoQ1RTL0JBL0FDSykgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDI6XFx0XFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDM0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDMtXFx0XFx0dmFsID0gbXQ3Nl9ycihkZXYsIGFkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1Nzp2b2lkIG10NzkyNV9tYWNfc2V0X2ZpeGVkX3JhdGVfdGFibGUoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNTgtXFx0XFx0XFx0XFx0ICAgICB1OCB0YmxfaWR4LCB1MTYgcmF0ZV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNjgtLyogVGhlIEhXIGRvZXMgbm90IHRyYW5zbGF0ZSB0aGUgbWFjIGhlYWRlciB0byA4MDIuMyBmb3IgbWVzaCBwb2ludCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE2OTpzdGF0aWMgaW50IG10NzkyNV9yZXZlcnNlX2ZyYWcwX2hkcl90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgaGRyX2dhcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MjQ4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoyNDk6bXQ3OTI1X21hY19maWxsX3J4X3JhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0yNTAtXFx0XFx0XFx0c3RydWN0IG10NzZfcnhfc3RhdHVzICpzdGF0dXMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0zNTg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjM1OTptdDc5MjVfbWFjX2ZpbGxfcngoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0zNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjUzOTpcXHRcXHRyZXQgPSBtdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShkZXYsIHN0YXR1cywgc2JhbmQsIHJ4diwgXFx1MDAyNm1vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU0MC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1Mi1cXHRpZiAoaGRyX3RyYW5zIFxcdTAwMjZcXHUwMDI2IGllZWU4MDIxMV9oYXNfbW9yZWZyYWdzKGZjKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjU1MzpcXHRcXHRpZiAobXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHNrYiwgaGRyX2dhcCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTU0LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NjI2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NjI3Om10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIzKF9fbGUzMiAqdHh3aSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02MjgtXFx0XFx0XFx0ICAgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTY2MT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2MjptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NjMtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz03Mjk9dm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjczMDptdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy03MzEtXFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTgxOC1cXHRpZiAoaXNfODAyMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4MTk6XFx0XFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjModHh3aSwgc2tiLCB3Y2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MjAtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjgyMTpcXHRcXHRtdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMTEoZGV2LCB0eHdpLCBza2IsIGtleSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NDI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQ0OnN0YXRpYyB2b2lkIG10NzkyNV90eF9jaGVja19hZ2dyKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQ1LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9ODk4PXN0YXRpYyBib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODk5Om10NzkyNV9tYWNfYWRkX3R4c19za2Ioc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy05MDAtXFx0XFx0ICAgICAgIGludCBwaWQsIF9fbGUzMiAqdHhzX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEwMzY6dm9pZCBtdDc5MjVfbWFjX2FkZF90eHMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTA2NDpcXHRtdDc5MjVfbWFjX2FkZF90eHNfc2tiKGRldiwgd2NpZCwgcGlkLCB0eHNfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTA2NS1cXHRpZiAoIXdjaWQtXFx1MDAzZXN0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEwNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTA3NDp2b2lkIG10NzkyNV90eHdpX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDc1LVxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDg4LVxcdFxcdGlmIChsaWtlbHkodC1cXHUwMDNlc2tiLVxcdTAwM2Vwcm90b2NvbCAhPSBjcHVfdG9fYmUxNihFVEhfUF9QQUUpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMDg5OlxcdFxcdFxcdG10NzkyNV90eF9jaGVja19hZ2dyKHN0YSwgdC1cXHUwMDNlc2tiLCB3Y2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMDkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTEwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTEwMTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfdHh3aV9mcmVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTExMDM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTA0Om10NzkyNV9tYWNfdHhfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTExMDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTcxOlxcdFxcdFxcdG10NzkyNV90eHdpX2ZyZWUoZGV2LCB0eHdpLCBzdGEsIHdjaWQsIFxcdTAwMjZmcmVlX2xpc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTExNzItXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTc1OlxcdG10NzkyNV9tYWNfc3RhX3BvbGwoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTc2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTE4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMTg4OmJvb2wgbXQ3OTI1X3J4X2NoZWNrKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMDYtXFx0XFx0LyogUEtUX1RZUEVfVFhSWF9OT1RJRlkgY2FuIGJlIHJlY2VpdmVkIG9ubHkgYnkgbW1pbyBkZXZpY2VzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTIwNzpcXHRcXHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBkYXRhLCBsZW4pOyAvKiBtbWlvICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTIwOC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MTUuMjI2NjUzOTU4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEzMTYxMzUyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGggRnV6emluZz8gQSBEZWJ1Z2ZzIERpdmUgaW50byBNVDc5MjUgVVNCIEVtdWxhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGBtdDc5MjV1LXkgOj0gdXNiLm9gIGluIHRoZSBNYWtlZmlsZS4gVGhhdCBpbW1lZGlhdGVseSBzcGFya3MgbXkgaW50ZXJlc3Qg4oCTIGEgVVNCIGRyaXZlciBmb3IgYG10NzkyNWAhIFRoYXQncyBleGNlbGxlbnQgbmV3cyBiZWNhdXNlIGl0IG1lYW5zIHdlICpjYW4qIGxpa2VseSBlbXVsYXRlIGl0IGluIHN5emthbGxlciB1c2luZyBVU0IgZ2FkZ2V0L3ZoY2kuIFRoaXMgb3BlbnMgdXAgYSB3aG9sZSBuZXcgYXZlbnVlIGZvciBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gYW5hbHl6ZSB0aGUgcGF0Y2ggYW5kIGRldGVybWluZSBpZiBpdCB0b3VjaGVzIGFueSBjb3JlIGtlcm5lbCBsb2dpYy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYG10NzkyOF90eHB3cmAgYW5kIGBtdDc5MjhfZWh0X3R4cHdyYCwgd2hpY2ggYXJlIGRlYnVnZnMgY2FsbGJhY2tzLCBwbHVzIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gLCB3aGljaCBpbnZvbHZlcyBzZW5kaW5nIGEgbWVzc2FnZSB0byB0aGUgTUNVLiBOb3cgSSBoYXZlIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGZ1enphYmxlLlxuXG5JIG5lZWQgdG8gcmVmZXIgdG8gdGhlIHByb21wdDogaXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nPyBUaGUgcHJvbXB0IHN0YXRlcyBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4gLi4uIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiXG5cbkJ1dCB3YWl0LCBjYW4gYG10NzkyNWAgaGFyZHdhcmUgYmUgZW11bGF0ZWQgdmlhIFVTQj8gU3l6a2FsbGVyJ3MgdmhjaSBjYW4gZW11bGF0ZSBhbnkgVVNCIGRldmljZSBhcyBsb25nIGFzIHRoZSBjb3JyZWN0IGRlc2NyaXB0b3JzIGFyZSBwcm92aWRlZC4gU28sIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiBpcyByZWFjaGFibGUuIFRoYXQncyBhIGdvb2Qgc3RhcnQuIEJ1dCBJIHNlZSB0aGF0IHRoZSBNQ1UgY29tbXVuaWNhdGlvbiAoYG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dgKSBzZW5kcyBhIGNvbW1hbmQgYW5kIHdhaXRzIGZvciBhIHJlc3BvbnNlLiBJbiBzeXprYWxsZXIsIHdlIGNhbiBzdXBwbHkgYXJiaXRyYXJ5IHJlc3BvbnNlcyB0byBVU0IgcmVxdWVzdHMuIFNvLCBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCAqY2FuKiBiZSBleGVjdXRlZCwgYW5kIHRoZSByZXNwb25zZSAqY2FuKiBiZSBwYXJzZWQuXG5cbkhvd2V2ZXIsIHRoZSBwYXRjaCAqbW9zdGx5KiBhZGRzIGRlYnVnZnMgZW50cmllcy4gSXMgZGVidWdmcyBjb25zaWRlcmVkIGEgXCJmdW5jdGlvbmFsIGNoYW5nZVwiPyBUaGUgcHJvbXB0IGRvZXNuJ3QgZXhwbGljaXRseSBjYXRlZ29yaXplIGRlYnVnZnMuXG5cbkknbSB0aGlua2luZyB0aGF0IGRlYnVnZnMgaXMgYWNjZXNzaWJsZSBhbmQgY2FuIGJlIGZ1enplZCwgYnV0IEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2U6IHRoZSBwcm9tcHQgc2FpZCBub3QgdG8gZnV6eiBjaGFuZ2VzIHRoYXQgYXJlIFwicHVyZWx5IGRlY29yYXRpdmVcIi5cblxuSSBuZWVkIHRvIGFuYWx5emUgYG10NzkyOF90eHB3cmAgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eS4gSSBzZWUgaXQgYWxsb2NhdGVzIG1lbW9yeSwgY2FsbHMgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AsIGFuZCB0aGVuIHByaW50cyB0aGUgcmVzdWx0cyB1c2luZyBgc2VxX3ByaW50ZmAgYW5kIGBtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnlgLiBJdCBhbHNvIGFkZHMgYG10NzkyOF90eHB3cl90Ymxfc2V0YCBhbmQgYG10NzkyOF90eHB3cl90YmxfZ2V0YCwgd2hpY2ggYXJlIHNpbXBsZSBnZXQvc2V0IG9wZXJhdGlvbnMgb24gYGRldi1cdTAwM2V0eHB3cl90YmxgLiBJcyB0aGF0IGZ1bmN0aW9uYWw/IEl0J3MgcmVhZGluZy93cml0aW5nIGEgZGVidWdmcyBmaWxlIHRvIHNldC9nZXQgYSB2YXJpYWJsZSwgYW5kIGFub3RoZXIgZGVidWdmcyBmaWxlIHRvIHF1ZXJ5IHRoZSBNQ1UgYW5kIHByaW50IHRoZSByZXN1bHQuIEJ1dCBpcyB0aGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3Rpbmc/XG5cbkFoYSEgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgcGFyc2VzIHRoZSBNQ1UncyByZXNwb25zZS4gVGhlIGNvZGUgaXM6XG5cbmBgYGNcbmV2ZW50ID0gKHN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQgKilza2ItXHUwMDNlZGF0YTtcbm1lbWNweSh0eHB3ciwgXHUwMDI2ZXZlbnQtXHUwMDNldHhwd3IsIHNpemVvZigqdHhwd3IpKTtcbmBgYFxuXG5UaGF0J3MgdGhlIGNyaXRpY2FsIHBvaW50LiBJZiB0aGUgTUNVLCB3aGljaCBpcyBlbXVsYXRlZCBieSBzeXprYWxsZXIsIHJldHVybnMgYSBtYWxmb3JtZWQgb3IgdHJ1bmNhdGVkIFNLQiwgYHNrYi1cdTAwM2VkYXRhYCBtaWdodCBub3QgYmUgbGFyZ2UgZW5vdWdoIGZvciBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudGAuIFRoaXMgd2lsbCBsZWFkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGF0IGBtZW1jcHlgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4gTm93IEkgbmVlZCB0byBjaGVjayB3aGV0aGVyIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCB2YWxpZGF0ZXMgdGhlIGxlbmd0aCBvZiB0aGUgU0tCIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjE3NywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMToyNi41NDI3OTMzMzdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI2MjM5NjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYz01ND1FWFBPUlRfU1lNQk9MX0dQTChtdDc2X21jdV9yeF9ldmVudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jOjU2OmludCBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNTctXFx0XFx0XFx0ICAgICAgaW50IGxlbiwgYm9vbCB3YWl0X3Jlc3AsIHN0cnVjdCBza19idWZmICoqcmV0X3NrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmMtNjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmM6NzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tY3UuYy03MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oPTE5MTU9c3RydWN0IHNrX2J1ZmYgKm10NzZfbWN1X2dldF9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTE2LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgZXhwaXJlcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTkxNzppbnQgbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgaW50IGNtZCwgY29uc3Qgdm9pZCAqZGF0YSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaC0xOTE4LVxcdFxcdFxcdCAgICAgIGludCBsZW4sIGJvb2wgd2FpdF9yZXNwLCBzdHJ1Y3Qgc2tfYnVmZiAqKnJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYuaD0xOTMzPW10NzZfbWN1X3NlbmRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2LmgtMTkzNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2Lmg6MTkzNjpcXHRyZXR1cm4gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhkZXYsIGNtZCwgZGF0YSwgbGVuLCB3YWl0X3Jlc3AsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Ni5oLTE5MzctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjIwNj1pbnQgbXQ3OTE1X21jdV9tdXJ1X2RlYnVnX2dldChzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzoyMjIxOlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoTVVSVV9DVFJMKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yMjIyLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTI4OTQ9aW50IG10NzkxNV9tY3VfZ2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqcmVhZF9idWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0yOTA0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjI5MDU6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI5MDYtXFx0XFx0XFx0XFx0XFx0TUNVX0VYVF9RVUVSWShFRlVTRV9BQ0NFU1MpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MjkyMT1pbnQgbXQ3OTE1X21jdV9nZXRfZWVwcm9tX2ZyZWVfYmxvY2soc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggKmJsb2NrX251bSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTI5MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6MjkzNDpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMjkzNS1cXHRcXHRcXHRcXHRcXHRNQ1VfRVhUX1FVRVJZKEVGVVNFX0ZSRUVfQkxPQ0spLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MzE0NT1pbnQgbXQ3OTE1X21jdV9nZXRfY2hhbl9taWJfaW5mbyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5LCBib29sIGNoYW5fc3dpdGNoKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtMzE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzozMTg1OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0VYVF9DTUQoR0VUX01JQl9JTkZPKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zMTg2LVxcdFxcdFxcdFxcdFxcdHJlcSwgbGVuICogc2l6ZW9mKHJlcVswXSksIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9MzUxMD1pbnQgbXQ3OTE1X21jdV9nZXRfdHhwb3dlcl9za3Uoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgczggKnR4cG93ZXIsIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy0zNTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jOjM1Mjg6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTM1MjktXFx0XFx0XFx0XFx0XFx0TUNVX0VYVF9DTUQoVFhfUE9XRVJfRkVBVFVSRV9DVFJMKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jPTM4NjI9aW50IG10NzkxNV9tY3VfZ2V0X3J4X3JhdGUoc3RydWN0IG10NzkxNV9waHkgKnBoeSwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTM4ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM6Mzg4NDpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9FWFRfQ01EKFBIWV9TVEFUX0lORk8pLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jLTM4ODUtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9NDEwMz1pbnQgbXQ3OTE1X21jdV93ZWRfd2FfdHhfc3RhdHMoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTE2IHdsYW5faWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtNDEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzo0MTM3OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1dBX1BBUkFNX0NNRChRVUVSWSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtNDEzOC1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBsZW4sIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmM9NDE3MT1pbnQgbXQ3OTE1X21jdV9yZl9yZWd2YWwoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTMyIHJlZ2lkeCwgdTMyICp2YWwsIGJvb2wgc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMtNDE4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYzo0MTg5OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0VYVF9RVUVSWShSRl9SRUdfQUNDRVNTKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYy00MTkwLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTc1PXN0YXRpYyBpbnQgbXQ3OTIxX21jdV9yZWFkX2VlcHJvbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6ODQ6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfRVhUX1FVRVJZKEVGVVNFX0FDQ0VTUyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtODUtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NTU0PXN0YXRpYyBpbnQgbXQ3OTIxX21jdV9nZXRfbmljX2NhcGFiaWxpdHkoc3RydWN0IG10NzkyeF9waHkgKm1waHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy01NjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6NTY0OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2cocGh5LVxcdTAwM2VkZXYsIE1DVV9DRV9DTUQoR0VUX05JQ19DQVBBQiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNTY1LVxcdFxcdFxcdFxcdFxcdE5VTEwsIDAsIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9MTEwNj1pbnQgbXQ3OTIxX2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MjFfdHhwd3IgKnR4cHdyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtMTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzoxMTE1OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX0NFX0NNRChHRVRfVFhQV1IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTExMTYtXFx0XFx0XFx0XFx0XFx0XFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksIHRydWUsIFxcdTAwMjZza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdGVzdG1vZGUuYz04NT1tdDc5MjFfdG1fcXVlcnkoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzkyMV90bV9jbWQgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3Rlc3Rtb2RlLmMtOTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdGVzdG1vZGUuYzo5NzpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9DRV9DTUQoVEVTVF9DVFJMKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS90ZXN0bW9kZS5jLTk4LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZjbWQsIHNpemVvZihjbWQpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTU3PWludCBtdDc5MjVfbWN1X3JlZ3ZhbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1MzIgcmVnaWR4LCB1MzIgKnZhbCwgYm9vbCBzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTAxOlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMDItXFx0XFx0XFx0XFx0XFx0TUNVX1dNX1VOSV9DTURfUVVFUlkoUkVHX0FDQ0VTUyksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz03NTA9c3RhdGljIGludCBtdDc5MjVfbWN1X3JlYWRfZWVwcm9tKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIHU4ICp2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy03ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6Nzg1OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1dNX1VOSV9DTURfUVVFUlkoRUZVU0VfQ1RSTCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtNzg2LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTg4OD1pbnQgbXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGN0cmwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy05MDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6OTA1OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoV1NZU19DT05GSUcpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTkwNi1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz05MTA9aW50IG10NzkyNV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy05MjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6OTMwOlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy05MzEtXFx0XFx0XFx0XFx0XFx0TUNVX1dNX1VOSV9DTURfUVVFUlkoVEhFUk1BTCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz05OTQ9bXQ3OTI1X21jdV9nZXRfbmljX2NhcGFiaWxpdHkoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTEwMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MTAxMzpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKENISVBfQ09ORklHKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMDE0LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTE1MzU9aW50IG10NzkyNV9tY3Vfc2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNTUyOlxcdHJldHVybiBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9VTklfQ01EKEVGVVNFX0NUUkwpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTE1NTMtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIxNDc9aW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgc3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjIxNjE6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfVU5JX0NNRChUWFBPV0VSKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTYyLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIxNzQ9aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMjE4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoyMTg4OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9DTUQoVFhQT1dFUiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMjE4OS1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0zOTM1PWludCBtdDc5MjVfbWN1X3dmX3JmX3Bpbl9jdHJsKHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zOTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjM5NTc6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTM5NTgtXFx0XFx0XFx0XFx0XFx0TUNVX1VOSV9DTUQoUkFESU9fU1RBVFVTKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmM9ODc9bXQ3OTI1X3RtX3F1ZXJ5KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc5MjVfdG1fY21kICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jLTk4LVxcdGlmICgqKCh1aW50MTZfdCAqKXJlcS1cXHUwMDNlcGFkZGluZykgPT0gTUNVX1VOSV9DTURfVEVTVE1PREVfQ1RSTClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jOjk5OlxcdFxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgTUNVX1VOSV9RVUVSWShURVNUTU9ERV9DVFJMKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS90ZXN0bW9kZS5jLTEwMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2Y21kLCBzaXplb2YoY21kKSwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdGVzdG1vZGUuYy0xMDEtXFx0ZWxzZSBpZiAoKigodWludDE2X3QgKilyZXEtXFx1MDAzZXBhZGRpbmcpID09IE1DVV9VTklfQ01EX1RFU1RNT0RFX1JYX1NUQVQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdGVzdG1vZGUuYzoxMDI6XFx0XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfVU5JX1FVRVJZKFRFU1RNT0RFX1JYX1NUQVQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3Rlc3Rtb2RlLmMtMTAzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZjbWQsIHNpemVvZihjbWQpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTQzMTI9aW50IG10Nzk5Nl9tY3VfZ2V0X2VlcHJvbShzdHJ1Y3QgbXQ3OTk2X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCB1OCAqYnVmLCB1MzIgYnVmX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQzMzktXFx0cmVxLmluZm8uYWRkciA9IGNwdV90b19sZTMyKGFkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjQzNDA6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBjbWQsIFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQzNDEtXFx0XFx0XFx0XFx0XFx0dHJ1ZSwgXFx1MDAyNnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00MzgxPWludCBtdDc5OTZfbWN1X2dldF9lZnVzZV9mcmVlX2Jsb2NrKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHU4ICpibG9ja19udW0pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00Mzk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jOjQ0MDA6XFx0cmV0ID0gbXQ3Nl9tY3Vfc2VuZF9hbmRfZ2V0X21zZyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRF9RVUVSWShFRlVTRV9DVFJMKSwgXFx1MDAyNnJlcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00NDAxLVxcdFxcdFxcdFxcdFxcdHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTQ0MTE9aW50IG10Nzk5Nl9tY3VfZ2V0X2NoaXBfY29uZmlnKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiAqY2FwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NDI3OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3NixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00NDI4LVxcdFxcdFxcdFxcdFxcdE1DVV9XTV9VTklfQ01EX1FVRVJZKENISVBfQ09ORklHKSwgXFx1MDAyNnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTQ0NTY9aW50IG10Nzk5Nl9tY3VfZ2V0X2NoYW5fbWliX2luZm8oc3RydWN0IG10Nzk5Nl9waHkgKnBoeSwgYm9vbCBjaGFuX3N3aXRjaClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTQ0OTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NDQ5NzpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIE1DVV9XTV9VTklfQ01EX1FVRVJZKEdFVF9NSUJfSU5GTyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDQ5OC1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgdHJ1ZSwgXFx1MDAyNnNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYz00NTM1PWludCBtdDc5OTZfbWN1X2dldF90ZW1wZXJhdHVyZShzdHJ1Y3QgbXQ3OTk2X3BoeSAqcGh5KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNDU2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYzo0NTY4OlxcdHJldCA9IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coXFx1MDAyNnBoeS1cXHUwMDNlZGV2LVxcdTAwM2VtdDc2LCBNQ1VfV01fVU5JX0NNRChUSEVSTUFMKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9tY3UuYy00NTY5LVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCB0cnVlLCBcXHUwMDI2c2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jPTUxNzA9aW50IG10Nzk5Nl9tY3VfcmZfcmVndmFsKHN0cnVjdCBtdDc5OTZfZGV2ICpkZXYsIHUzMiByZWdpZHgsIHUzMiAqdmFsLCBib29sIHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L21jdS5jLTUxOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmM6NTE5NjpcXHRyZXQgPSBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvbWN1LmMtNTE5Ny1cXHRcXHRcXHRcXHRcXHRNQ1VfV01fVU5JX0NNRF9RVUVSWShSRUdfQUNDRVNTKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MjcuMTY5MDQwMTI2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcwNzMxNDU2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgYG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2dgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGBtdDc2X21jdV9zZW5kX2FuZF9nZXRfbXNnYCBmdW5jdGlvbidzIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcywgYW5kIEkgd2FudCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpcm13YXJlLiBJJ20gbG9va2luZyBmb3IgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzLCBub3QgYSBoaWdoLWxldmVsIG92ZXJ2aWV3LiBXaGF0IGFyZSB0aGUga2V5IGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkIGhlcmU/IFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gaG93IHRoZSBtZXNzYWdlIGlzIGNvbnN0cnVjdGVkLCBob3cgdGhlIGNvbW11bmljYXRpb24gY2hhbm5lbCAobGlrZWx5IHJlZ2lzdGVycyBvciBETUEpIGlzIG1hbmFnZWQsIGFuZCB0aGUgaGFuZHNoYWtpbmcgd2l0aCB0aGUgTUNVLiBBcmUgdGhlcmUgYW55IGNyaXRpY2FsIHNlY3Rpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZiB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yPyBJIHdhbnQgdG8gcGF5IGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcuIEhvdyBhcmUgdGltZW91dHMgbWFuYWdlZD8gV2hhdCBhcmUgdGhlIHJldHJ5IG1lY2hhbmlzbXM/IEFueSBwb3RlbnRpYWwgZGVhZGxvY2sgc2l0dWF0aW9ucz8gQW55IHBvdGVudGlhbCBmb3IgYnVmZmVyIG92ZXJmbG93cz8gTGV0J3MgZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NDAxLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MzAuODc2MzU5MjI0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExMzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTYsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTY6XFx0aW50IG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIGludCBjbWQsIGNvbnN0IHZvaWQgKmRhdGEsXFxuICA1NzpcXHRcXHRcXHRcXHQgICAgICBpbnQgbGVuLCBib29sIHdhaXRfcmVzcCwgc3RydWN0IHNrX2J1ZmYgKipyZXRfc2tiKVxcbiAgNTg6XFx0e1xcbiAgNTk6XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0aWYgKGRldi1cXHUwMDNlbWN1X29wcy1cXHUwMDNlbWN1X3NlbmRfbXNnKVxcbiAgNjI6XFx0XFx0XFx0cmV0dXJuIGRldi1cXHUwMDNlbWN1X29wcy1cXHUwMDNlbWN1X3NlbmRfbXNnKGRldiwgY21kLCBkYXRhLCBsZW4sIHdhaXRfcmVzcCk7XFxuICA2MzpcXHRcXG4gIDY0OlxcdFxcdHNrYiA9IG10NzZfbWN1X21zZ19hbGxvYyhkZXYsIGRhdGEsIGxlbik7XFxuICA2NTpcXHRcXHRpZiAoIXNrYilcXG4gIDY2OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgNjc6XFx0XFxuICA2ODpcXHRcXHRyZXR1cm4gbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwLCByZXRfc2tiKTtcXG4gIDY5OlxcdH1cXG4gIDcwOlxcdEVYUE9SVF9TWU1CT0xfR1BMKG10NzZfbWN1X3NlbmRfYW5kX2dldF9tc2cpO1xcbiAgNzE6XFx0XFxuICA3MjpcXHRpbnQgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2coc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuICA3MzpcXHRcXHRcXHRcXHRcXHQgIGludCBjbWQsIGJvb2wgd2FpdF9yZXNwLFxcbiAgNzQ6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqKnJldF9za2IpXFxuICA3NTpcXHR7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjMwLjg3NjQ3MjU0NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MzUwOTY4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIGFzIEkgYXBwcm9hY2ggdGhlIHN1YmplY3Qgb2YgYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYCwgYXNzdW1pbmcgSSdtIGFscmVhZHkgcHJldHR5IGZhbWlsaWFyIHdpdGggdGhlIGdlbmVyYWwgbGFuZHNjYXBlIG9mIGVtYmVkZGVkIHdpcmVsZXNzIGRyaXZlcnMuXG5cbioqRGVlcCBEaXZlOiBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgKipcblxuQWxyaWdodCwgSSBzZWUgdGhpcyBmdW5jdGlvbiBuYW1lOiBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgLiBJbW1lZGlhdGVseSwgbXkgbWVudGFsIGdlYXJzIHN0YXJ0IHR1cm5pbmcuIFwibXQ3NlwiIHN1Z2dlc3RzIGl0J3MgbGlrZWx5IHJlbGF0ZWQgdG8gTWVkaWFUZWsncyA4MDIuMTEgY2hpcHNldCBmYW1pbHkuIFRoZSBcIm1jdVwiIGxpa2VseSByZWZlcnMgdG8gYSBtaWNyb2NvbnRyb2xsZXIsIHdoaWNoIGlzIHR5cGljYWwgZm9yIG1hbmFnaW5nIGxvdy1sZXZlbCByYWRpbyBvcGVyYXRpb25zLCBmaXJtd2FyZSwgYW5kIHBvc3NpYmx5IG9mZmxvYWRpbmcgdGFza3MgZnJvbSB0aGUgbWFpbiBDUFUuIFRoZSBcInNrYlwiIGltcGxpZXMgaXQncyBkZWFsaW5nIHdpdGggYSBcInNvY2tldCBidWZmZXJcIiDigJMgdGhvc2UgYXJlIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9ja3MgZm9yIG5ldHdvcmsgZGF0YSBpbiB0aGUgTGludXgga2VybmVsLiBcIlNlbmRfYW5kX2dldF9tc2dcIiBpcyB0aGUga2V5IGhlcmUgLSBpdCBtZWFucyB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBzZW5kaW5nIGEgbWVzc2FnZSAobGlrZWx5IGNvbW1hbmQgb3IgZGF0YSkgdG8gdGhlIG1pY3JvY29udHJvbGxlciBhbmQgdGhlbiByZXRyaWV2aW5nIHRoZSByZXNwb25zZS5cblxuSSBleHBlY3QgdGhpcyBpcyBhIGZhaXJseSBjcml0aWNhbCBmdW5jdGlvbiB3aXRoaW4gdGhlIG10NzYgZHJpdmVyLiBJdCdzIHByb2JhYmx5IHRoZSBjb3JlIG9mIHRoZSBjb21tdW5pY2F0aW9uIHBhdGggYmV0d2VlbiB0aGUgaG9zdCBMaW51eCBzeXN0ZW0gYW5kIHRoZSBXaS1GaSBjaGlwc2V0J3MgZmlybXdhcmUgcnVubmluZyBvbiB0aGUgTUNVLiBJIGltbWVkaWF0ZWx5IHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaGFuZGxlczpcblxuKiAgICoqTWVzc2FnZSBmcmFtaW5nOioqIEhvdyBhcmUgdGhlc2UgbWVzc2FnZXMgc3RydWN0dXJlZD8gQXJlIHRoZXJlIHNwZWNpZmljIGhlYWRlcnMsIGNoZWNrc3Vtcywgb3IgZnJhbWluZyBtZWNoYW5pc21zPyBJcyBpdCBqdXN0IHJhdyBkYXRhLCBvciBpcyB0aGVyZSBhIGRlZmluZWQgcHJvdG9jb2w/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGtub3dzIHdoZW4gb25lIG1lc3NhZ2UgZW5kcyBhbmQgYW5vdGhlciBiZWdpbnMuXG4qICAgKipFcnJvciBoYW5kbGluZzoqKiBXaGF0IGhhcHBlbnMgaWYgdGhlIHNlbmQgZmFpbHM/IFdoYXQgYWJvdXQgdGhlIHJlY2VpdmU/IFdoYXQgdGltZW91dHMgYXJlIHVzZWQ/IERvZXMgaXQgc3VwcG9ydCByZXRyaWVzPyBBcmUgdGhlcmUgc3BlY2lmaWMgZXJyb3IgY29kZXMgcmV0dXJuZWQ/XG4qICAgKipTeW5jaHJvbml6YXRpb246KiogVGhpcyBpcyBtdWx0aS10aHJlYWRlZC4gV2hhdCBsb2NraW5nIG1lY2hhbmlzbXMgYXJlIGVtcGxveWVkIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdoZW4gbXVsdGlwbGUgcGFydHMgb2YgdGhlIGRyaXZlciB3YW50IHRvIHNlbmQvcmVjZWl2ZSBtZXNzYWdlcyBjb25jdXJyZW50bHk/IElzIHRoZXJlIGEgbXV0ZXgsIGEgc2VtYXBob3JlLCBvciBzb21ldGhpbmcgZWxzZSBpbnZvbHZlZD9cbiogICAqKkJ1ZmZlcmluZzoqKiBIb3cgaXMgdGhlIGBza2JgIHVzZWQ/IElzIGl0IGRpcmVjdGx5IHNlbnQsIG9yIGlzIGl0IGNvcGllZD8gQXJlIHRoZXJlIGFueSBidWZmZXIgbWFuYWdlbWVudCBzdHJhdGVnaWVzIHRvIGF2b2lkIG1lbW9yeSBsZWFrcyBvciBpbmVmZmljaWVuY2llcywgZXNwZWNpYWxseSBzaW5jZSBuZXR3b3JrIGRhdGEgaXMgb2Z0ZW4gdGltZS1zZW5zaXRpdmU/XG4qICAgKipJbnRlcnJ1cHRzOioqIERvZXMgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdCB3aXRoIGFueSBpbnRlcnJ1cHRzIGZyb20gdGhlIE1DVT8gSXQncyBoaWdobHkgbGlrZWx5IHRoYXQgdGhlIE1DVSBzZW5kcyBpbnRlcnJ1cHRzIHRvIHNpZ25hbCBhIHJlc3BvbnNlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBhcmUgaGFuZGxlZCBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIHJlc3BvbnNlIHJldHJpZXZhbCBwcm9jZXNzLlxuKiAgICoqU2VjdXJpdHk6KiogQXJlIHRoZXJlIGFueSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBpbiB0aGUgbWVzc2FnaW5nIHByb2Nlc3M/IERvZXMgaXQgc3VwcG9ydCBhbnkgc2VjdXJpdHkgbWVjaGFuaXNtcywgc3VjaCBhcyBlbmNyeXB0aW9uIG9yIGF1dGhlbnRpY2F0aW9uLCBhdCB0aGlzIGxldmVsP1xuXG5NeSBmb2N1cyB3b3VsZCB0aGVuIGJlIG9uIGRpc3NlY3RpbmcgdGhlIGNvZGUgcmVsYXRlZCB0byB0aGVzZSBwb2ludHMgYW5kLCBvZiBjb3Vyc2UsIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdpdGhpbiB0aGUgZnVuY3Rpb24uIE15IGV4cGVydGlzZSBhbGxvd3MgbWUgdG8gYW50aWNpcGF0ZSBjb21tb24gcGl0ZmFsbHMgYW5kIG9wdGltaXphdGlvbnMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkIGluIGFuIGVtYmVkZGVkIHdpcmVsZXNzIGRyaXZlciwgc28gSSB3b3VsZCBsb29rIGZvciBjbHVlcyB0byB0aG9zZSBwYXR0ZXJucyByaWdodCBhd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTA4NSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6MzYuNzExNTcyMzk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzIsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNzI6XFx0aW50IG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiAgNzM6XFx0XFx0XFx0XFx0XFx0ICBpbnQgY21kLCBib29sIHdhaXRfcmVzcCxcXG4gIDc0OlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKipyZXRfc2tiKVxcbiAgNzU6XFx0e1xcbiAgNzY6XFx0XFx0dW5zaWduZWQgaW50IHJldHJ5ID0gMDtcXG4gIDc3OlxcdFxcdHN0cnVjdCBza19idWZmICpvcmlnX3NrYiA9IE5VTEw7XFxuICA3ODpcXHRcXHR1bnNpZ25lZCBsb25nIGV4cGlyZXM7XFxuICA3OTpcXHRcXHRpbnQgcmV0LCBzZXE7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdGlmIChtdDc2X2lzX3NkaW8oZGV2KSlcXG4gIDgyOlxcdFxcdFxcdGlmICh0ZXN0X2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpIFxcdTAwMjZcXHUwMDI2IGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZWJ1c19odW5nKSlcXG4gIDgzOlxcdFxcdFxcdFxcdHJldHVybiAtRUlPO1xcbiAgODQ6XFx0XFxuICA4NTpcXHRcXHRpZiAocmV0X3NrYilcXG4gIDg2OlxcdFxcdFxcdCpyZXRfc2tiID0gTlVMTDtcXG4gIDg3OlxcdFxcbiAgODg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtY3UubXV0ZXgpO1xcbiAgODk6XFx0XFxuICA5MDpcXHRcXHRpZiAoZGV2LVxcdTAwM2VtY3Vfb3BzLVxcdTAwM2VtY3Vfc2tiX3ByZXBhcmVfbXNnKSB7XFxuICA5MTpcXHRcXHRcXHRvcmlnX3NrYiA9IHNrYjtcXG4gIDkyOlxcdFxcdFxcdHJldCA9IGRldi1cXHUwMDNlbWN1X29wcy1cXHUwMDNlbWN1X3NrYl9wcmVwYXJlX21zZyhkZXYsIHNrYiwgY21kLCBcXHUwMDI2c2VxKTtcXG4gIDkzOlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiAgOTQ6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuICA5NTpcXHRcXHR9XFxuICA5NjpcXHRcXG4gIDk3OlxcdHJldHJ5OlxcbiAgOTg6XFx0XFx0Lyogb3JpZyBza2IgbWlnaHQgYmUgbmVlZGVkIGZvciByZXRyeSwgbWN1X3NrYl9zZW5kX21zZyBjb25zdW1lcyBpdCAqL1xcbiAgOTk6XFx0XFx0aWYgKG9yaWdfc2tiKVxcbiAxMDA6XFx0XFx0XFx0c2tiX2dldChvcmlnX3NrYik7XFxuIDEwMTpcXHRcXHRyZXQgPSBkZXYtXFx1MDAzZW1jdV9vcHMtXFx1MDAzZW1jdV9za2Jfc2VuZF9tc2coZGV2LCBza2IsIGNtZCwgd2FpdF9yZXNwID8gXFx1MDAyNnNlcSA6IE5VTEwpO1xcbiAxMDI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDEwMzpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTA0OlxcdFxcbiAxMDU6XFx0XFx0aWYgKCF3YWl0X3Jlc3ApIHtcXG4gMTA2OlxcdFxcdFxcdHJldCA9IDA7XFxuIDEwNzpcXHRcXHRcXHRnb3RvIG91dDtcXG4gMTA4OlxcdFxcdH1cXG4gMTA5OlxcdFxcbiAxMTA6XFx0XFx0ZXhwaXJlcyA9IGppZmZpZXMgKyBkZXYtXFx1MDAzZW1jdS50aW1lb3V0O1xcbiAxMTE6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjM2LjcxMTY3NTMyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjgyNDM3MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgKipcblxuQWxyaWdodCwgSSdtIGF0IGEgcG9pbnQgd2hlcmUgSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgbXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2dgLiBTb21ldGhpbmcncyBuYWdnaW5nIGF0IG1lLCBhIHBvdGVudGlhbCBlZGdlIGNhc2Ugb3IgcGVyaGFwcyBhIHN1YnRsZSBidWcgbHVya2luZyB3aXRoaW4uIFdlJ3ZlIGxpa2VseSBpc29sYXRlZCBhbiBpc3N1ZSBkb3duIHRvIHRoaXMgZnVuY3Rpb24sIG9yIGF0IGxlYXN0IGhhdmUgYSBzdHJvbmcgc3VzcGljaW9uLCBhbmQgbm93IGl04oCZcyB0aW1lIGZvciBhIHRob3JvdWdoIGludmVzdGlnYXRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGlzIGNvcmUgZnVuY3Rpb24gb2YgdGhlIG10NzYgZmlybXdhcmUuIExldCdzIHNlZSBob3cgdGhlIFNLQiBpcyBidWlsdCwgdHJhbnNtaXR0ZWQgdG8gdGhlIE1DVSwgYW5kIGhvdyB0aGUgcmVzcG9uc2UgaXMgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIHRvIHNlZSBob3cgaXQgbWlnaHQgYmUgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgY29uY3VycmVuY3kgb2YgdGhlIHN5c3RlbS4gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UncmUgcHJvcGVybHkgbWFuYWdpbmcgcmV0cmllcywgdGltZW91dHMsIGFuZCBlcnJvciBjb25kaXRpb25zLiBJcyBpdCBiZWhhdmluZyBhcyBleHBlY3RlZCB3aGVuIHRoZSBNQ1UgaXMgYnVzeSBvciB1bmRlciBoZWF2eSBsb2FkPyBJJ20gY3VyaW91cyBpZiB3ZSdyZSBwcm9wZXJseSB2YWxpZGF0aW5nIHRoZSByZXR1cm5lZCBtZXNzYWdlIGZyb20gdGhlIE1DVS4gQW55IHN1YnRsZSBtaXNpbnRlcnByZXRhdGlvbiBvZiB0aGUgbWVzc2FnZSBmb3JtYXQgY291bGQgbGVhZCB0byBpbnN0YWJpbGl0eSBvciBldmVuIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQncyB0aW1lIHRvIGRpZyBpbiBhbmQgcmUtZXZhbHVhdGUgdGhpcyBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBMZXQncyBzdGFydCBieSB3YWxraW5nIHRocm91Z2ggdGhlIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYzOTIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjQwLjM5NDExNjMyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMixcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDExMjpcXHRcXHRkbyB7XFxuIDExMzpcXHRcXHRcXHRza2IgPSBtdDc2X21jdV9nZXRfcmVzcG9uc2UoZGV2LCBleHBpcmVzKTtcXG4gMTE0OlxcdFxcdFxcdGlmICghc2tiIFxcdTAwMjZcXHUwMDI2ICF0ZXN0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlcGh5LnN0YXRlKSBcXHUwMDI2XFx1MDAyNlxcbiAxMTU6XFx0XFx0XFx0ICAgIG9yaWdfc2tiIFxcdTAwMjZcXHUwMDI2IHJldHJ5KysgXFx1MDAzYyBkZXYtXFx1MDAzZW1jdV9vcHMtXFx1MDAzZW1heF9yZXRyeSkge1xcbiAxMTY6XFx0XFx0XFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZWRldiwgXFxcIlJldHJ5IG1lc3NhZ2UgJTA4eCAoc2VxICVkKVxcXFxuXFxcIixcXG4gMTE3OlxcdFxcdFxcdFxcdFxcdGNtZCwgc2VxKTtcXG4gMTE4OlxcdFxcdFxcdFxcdHNrYiA9IG9yaWdfc2tiO1xcbiAxMTk6XFx0XFx0XFx0XFx0Z290byByZXRyeTtcXG4gMTIwOlxcdFxcdFxcdH1cXG4gMTIxOlxcdFxcbiAxMjI6XFx0XFx0XFx0cmV0ID0gZGV2LVxcdTAwM2VtY3Vfb3BzLVxcdTAwM2VtY3VfcGFyc2VfcmVzcG9uc2UoZGV2LCBjbWQsIHNrYiwgc2VxKTtcXG4gMTIzOlxcdFxcdFxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IHJldF9za2IpXFxuIDEyNDpcXHRcXHRcXHRcXHQqcmV0X3NrYiA9IHNrYjtcXG4gMTI1OlxcdFxcdFxcdGVsc2VcXG4gMTI2OlxcdFxcdFxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4gMTI3OlxcdFxcdH0gd2hpbGUgKHJldCA9PSAtRUFHQUlOKTtcXG4gMTI4OlxcdFxcbiAxMjk6XFx0XFxuIDEzMDpcXHRvdXQ6XFxuIDEzMTpcXHRcXHRkZXZfa2ZyZWVfc2tiKG9yaWdfc2tiKTtcXG4gMTMyOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VtY3UubXV0ZXgpO1xcbiAxMzM6XFx0XFxuIDEzNDpcXHRcXHRyZXR1cm4gcmV0O1xcbiAxMzU6XFx0fVxcbiAxMzY6XFx0RVhQT1JUX1NZTUJPTF9HUEwobXQ3Nl9tY3Vfc2tiX3NlbmRfYW5kX2dldF9tc2cpO1xcbiAxMzc6XFx0XFxuIDEzODpcXHRpbnQgX19tdDc2X21jdV9zZW5kX2Zpcm13YXJlKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBpbnQgY21kLCBjb25zdCB2b2lkICpkYXRhLFxcbiAxMzk6XFx0XFx0XFx0XFx0ICAgICBpbnQgbGVuLCBpbnQgbWF4X2xlbilcXG4gMTQwOlxcdHtcXG4gMTQxOlxcdFxcdGludCBlcnIsIGN1cl9sZW47XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdHdoaWxlIChsZW4gXFx1MDAzZSAwKSB7XFxuIDE0NDpcXHRcXHRcXHRjdXJfbGVuID0gbWluX3QoaW50LCBtYXhfbGVuLCBsZW4pO1xcbiAxNDU6XFx0XFxuIDE0NjpcXHRcXHRcXHRlcnIgPSBtdDc2X21jdV9zZW5kX21zZyhkZXYsIGNtZCwgZGF0YSwgY3VyX2xlbiwgZmFsc2UpO1xcbiAxNDc6XFx0XFx0XFx0aWYgKGVycilcXG4gMTQ4OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDE0OTpcXHRcXG4gMTUwOlxcdFxcdFxcdGRhdGEgKz0gY3VyX2xlbjtcXG4gMTUxOlxcdFxcdFxcdGxlbiAtPSBjdXJfbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTo0MC4zOTQyNTk0ODlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM3NzQ2NTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzYgTUNVIFJlc3BvbnNlIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYCBmdW5jdGlvbiB3b3JrcywgYW5kIGl0J3MgY2FsbGluZyBgbWN1X3BhcnNlX3Jlc3BvbnNlYC4gVGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGBtY3VfcGFyc2VfcmVzcG9uc2VgLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgbXQ3OTI1YCBjaGlwc2V0LiBJJ20gYXNzdW1pbmcgdGhhdCBpdCBoYW5kbGVzIHRoZSByZXNwb25zZSB0byBNQ1UgY29tbWFuZHMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBpcyBwYXJzZWQsIGhvdyBlcnJvcnMgYXJlIGhhbmRsZWQsIGFuZCBob3cgdGhlIHJlc3VsdHMgYXJlIGludGVycHJldGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBkcml2ZXLigJlzIG92ZXJhbGwgb3BlcmF0aW9uLiBJJ20gYmV0dGluZyB0aGVyZSdzIHNvbWUgZGV2aWNlLXNwZWNpZmljIGxvZ2ljIGluIHRoZXJlLCBzbyBJJ20gZ29pbmcgdG8gZm9jdXMgaW4gb24gdGhlIE1UNzkyNSdzIGltcGxlbWVudGF0aW9uIHRvIHNlZSBob3cgaXQncyBkb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzQwMSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDE6NDMuNzcxNzMwMDg0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDY3NzE2MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWN1X3BhcnNlX3Jlc3BvbnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzoxNDppbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmMtMTUtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNlcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTU0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYzo1NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy01Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM3OT12b2lkIG10NzkyNV90eHdpX2ZyZWUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgc3RydWN0IG10NzZfdHh3aV9jYWNoZSAqdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM4MS1cXHRcXHQgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlX2xpc3QpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjM4MjppbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMzgzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIGludCBzZXEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jPTI3PWludCBtdDc5MjVlX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmMtMzEtXFx0XFx0Lm1jdV9za2Jfc2VuZF9tc2cgPSBtdDc5MjVfbWN1X3NlbmRfbWVzc2FnZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2lfbWN1LmM6MzI6XFx0XFx0Lm1jdV9wYXJzZV9yZXNwb25zZSA9IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpX21jdS5jLTMzLVxcdH07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz01Nj1zdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTYyLVxcdFxcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjYzOlxcdFxcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTY0LVxcdH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAxOjQ0LjExODUwNzU0NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzYwOTU0MzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gYG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2VgLiBJIGtub3cgdGhpcyByb3V0aW5lOyBpdCdzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGludGVycHJldGluZyB0aGUgcmVzcG9uc2VzIHdlIGdldCBiYWNrIGZyb20gdGhlIE1DVSBvbiB0aGUgTVQ3OTI1IGNoaXBzZXQuIE15IGJyYWluIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBzY2VuYXJpb3MuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHlwZSBvZiBtZXNzYWdlIGl0IGlzLCB0aGUgZXhwZWN0ZWQgZm9ybWF0LCBhbmQgaG93IHRvIGhhbmRsZSBhbnkgZXJyb3JzLiBUaGUgY29yZSBvZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGEgc3dpdGNoIHN0YXRlbWVudCwgSSdtIGd1ZXNzaW5nLCBiYXNlZCBvbiB0aGUgbWVzc2FnZSBJRCBmaWVsZC5cblxuSSdtIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2g6IElzIHRoZXJlIGEgaGVhZGVyPyBXaGF0IGZpZWxkcyBkbyBJIG5lZWQgdG8gZXh0cmFjdD8gRXJyb3IgY29kZXMsIGRhdGEgbGVuZ3RocywgcG9zc2libHkgc29tZSBjb250cm9sIGZsYWdzPyBJ4oCZbSB0aGlua2luZyBhYm91dCBob3cgdGhlIGJpdCBmaWVsZHMgd2lsbCBiZSBwYWNrZWQgYW5kIHBhcnNlZC4gSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBwb3RlbnRpYWwgYWxpZ25tZW50IGlzc3VlczsgcGFkZGluZyBpcyBhbHdheXMgYSBzb3VyY2Ugb2YgdHJvdWJsZSBpZiB5b3UncmUgbm90IGNhcmVmdWwuIEkgaG9wZSB0aGlzIGNvZGUgaXMgd2VsbC1jb21tZW50ZWQgYW5kIHVzZXMgY2xlYXIgdmFyaWFibGUgbmFtZXM7IGl0J2xsIG1ha2UgbXkgbGlmZSBlYXNpZXIgd2hlbiBJJ20gZGVidWdnaW5nIGEgdHJpY2t5IGNvbW11bmljYXRpb24gaXNzdWUgZG93biB0aGUgbGluZS5cblxuSSdtIGFudGljaXBhdGluZyBwb3RlbnRpYWxseSBoYXZpbmcgdG8gZGVhbCB3aXRoIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgTUNVIGZpcm13YXJlLiBJIG5lZWQgdG8gbG9vayBmb3IgdmVyc2lvbiBjaGVja3Mgb3IgZmVhdHVyZSBmbGFncyB0aGF0IG1pZ2h0IGRpY3RhdGUgZGlmZmVyZW50IHJlc3BvbnNlIGZvcm1hdHMgb3IgZXhwZWN0ZWQgZGF0YS4gVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSByb2J1c3QsIGdyYWNlZnVsbHkgaGFuZGxpbmcgYW55IHVuZXhwZWN0ZWQgcmVzcG9uc2VzIG9yIGNvcnJ1cHRlZCBkYXRhLiBUaGlzIGlzIHdoZXJlIEknZCBzdGFydCB0aGlua2luZyBhYm91dCBob3cgdG8gc2lnbmFsIHRoZXNlIGlzc3VlcyBiYWNrIHRvIHRoZSBoaWdoZXItbGV2ZWwgYXBwbGljYXRpb24gYW5kIGlmIGFueSByZXRyaWVzIHNob3VsZCBiZSBhdHRlbXB0ZWQuIEFscmlnaHQsIHRpbWUgdG8gZGlnIGluIGFuZCBjb25maXJtIHRoZXNlIGluaXRpYWwgdGhvdWdodHMuIExldCdzIHNlZSBob3cgdGhleSBpbXBsZW1lbnRlZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1NDMsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTo0OC40Nzk0NjU1MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTg0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMTQ6XFx0aW50IG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2Uoc3RydWN0IG10NzZfZGV2ICptZGV2LCBpbnQgY21kLFxcbiAgMTU6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNlcSlcXG4gIDE2OlxcdHtcXG4gIDE3OlxcdFxcdGludCBtY3VfY21kID0gRklFTERfR0VUKF9fTUNVX0NNRF9GSUVMRF9JRCwgY21kKTtcXG4gIDE4OlxcdFxcdHN0cnVjdCBtdDc5MjVfbWN1X3J4ZCAqcnhkO1xcbiAgMTk6XFx0XFx0aW50IHJldCA9IDA7XFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdGlmICghc2tiKSB7XFxuICAyMjpcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIk1lc3NhZ2UgJTA4eCAoc2VxICVkKSB0aW1lb3V0XFxcXG5cXFwiLCBjbWQsIHNlcSk7XFxuICAyMzpcXHRcXHRcXHRtdDc5MnhfcmVzZXQobWRldik7XFxuICAyNDpcXHRcXG4gIDI1OlxcdFxcdFxcdHJldHVybiAtRVRJTUVET1VUO1xcbiAgMjY6XFx0XFx0fVxcbiAgMjc6XFx0XFxuICAyODpcXHRcXHRyeGQgPSAoc3RydWN0IG10NzkyNV9tY3VfcnhkICopc2tiLVxcdTAwM2VkYXRhO1xcbiAgMjk6XFx0XFx0aWYgKHNlcSAhPSByeGQtXFx1MDAzZXNlcSlcXG4gIDMwOlxcdFxcdFxcdHJldHVybiAtRUFHQUlOO1xcbiAgMzE6XFx0XFxuICAzMjpcXHRcXHRpZiAoY21kID09IE1DVV9DTUQoUEFUQ0hfU0VNX0NPTlRST0wpIHx8XFxuICAzMzpcXHRcXHQgICAgY21kID09IE1DVV9DTUQoUEFUQ0hfRklOSVNIX1JFUSkpIHtcXG4gIDM0OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgc2l6ZW9mKCpyeGQpIC0gNCk7XFxuICAzNTpcXHRcXHRcXHRyZXQgPSAqc2tiLVxcdTAwM2VkYXRhO1xcbiAgMzY6XFx0XFx0fSBlbHNlIGlmIChjbWQgPT0gTUNVX1VOSV9DTUQoREVWX0lORk9fVVBEQVRFKSB8fFxcbiAgMzc6XFx0XFx0XFx0ICAgY21kID09IE1DVV9VTklfQ01EKEJTU19JTkZPX1VQREFURSkgfHxcXG4gIDM4OlxcdFxcdFxcdCAgIGNtZCA9PSBNQ1VfVU5JX0NNRChTVEFfUkVDX1VQREFURSkgfHxcXG4gIDM5OlxcdFxcdFxcdCAgIGNtZCA9PSBNQ1VfVU5JX0NNRChPRkZMT0FEKSB8fFxcbiAgNDA6XFx0XFx0XFx0ICAgY21kID09IE1DVV9VTklfQ01EKFNVU1BFTkQpKSB7XFxuICA0MTpcXHRcXHRcXHRzdHJ1Y3QgbXQ3OTI1X21jdV91bmlfZXZlbnQgKmV2ZW50O1xcbiAgNDI6XFx0XFxuICA0MzpcXHRcXHRcXHRza2JfcHVsbChza2IsIHNpemVvZigqcnhkKSk7XFxuICA0NDpcXHRcXHRcXHRldmVudCA9IChzdHJ1Y3QgbXQ3OTI1X21jdV91bmlfZXZlbnQgKilza2ItXFx1MDAzZWRhdGE7XFxuICA0NTpcXHRcXHRcXHRyZXQgPSBsZTMyX3RvX2NwdShldmVudC1cXHUwMDNlc3RhdHVzKTtcXG4gIDQ2OlxcdFxcdFxcdC8qIHNraXAgaW52YWxpZCBldmVudCAqL1xcbiAgNDc6XFx0XFx0XFx0aWYgKG1jdV9jbWQgIT0gZXZlbnQtXFx1MDAzZWNpZClcXG4gIDQ4OlxcdFxcdFxcdFxcdHJldCA9IC1FQUdBSU47XFxuICA0OTpcXHRcXHR9IGVsc2Uge1xcbiAgNTA6XFx0XFx0XFx0c2tiX3B1bGwoc2tiLCBzaXplb2YoKnJ4ZCkpO1xcbiAgNTE6XFx0XFx0fVxcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMTo0OC40Nzk5Njg5OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjYyMDU3ODkyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipWdWxuZXJhYmlsaXR5IElkZW50aWZpZWQ6IE91dC1vZi1Cb3VuZHMgUmVhZCBpbiBNVDc5MjUvTVQ3OTI4IERyaXZlcioqXG5cbk9rYXksIHNvIGhlcmUncyB3aGF0IEkndmUgZm91bmQuIFRoZSBgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZWAgZnVuY3Rpb24gZXh0cmFjdHMgYHNpemVvZigqcnhkKWAgZnJvbSB0aGUgc2tiIChzb2NrZXQgYnVmZmVyKS4gVGhhdCBza2IgaXMgdGhlbiByZXR1cm5lZCB2aWEgYG10NzZfbWN1X3NrYl9zZW5kX2FuZF9nZXRfbXNnYC4gU3Vic2VxdWVudGx5LCBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyBjYWxsZWQsIGFuZCB0aGF0J3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSXQgdXNlcyBgbWVtY3B5YCB0byBjb3B5IGRhdGEgZnJvbSB0aGUgYHNrYi1cdTAwM2VkYXRhYCB0byB0aGUgYHR4cHdyYCBidWZmZXIsIGV4cGVjdGluZyB0aGUgc2tiIHRvIGNvbnRhaW4gYSBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudGAuXG5cblRoZSBjcml0aWNhbCBvdmVyc2lnaHQgaXMgdGhhdCB0aGVyZSdzICpubyogY2hlY2sgdG8gdmVyaWZ5IGlmIGBza2ItXHUwMDNlbGVuYCBpcyBzdWZmaWNpZW50IHRvIGhvbGQgdGhlIGVudGlyZSBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudGAgcGF5bG9hZC4gYG10NzkyNV9tY3VfcGFyc2VfcmVzcG9uc2VgIG9ubHkgYWNjb3VudHMgZm9yIHRoZSBNQ1UgaGVhZGVyLCBub3QgdGhlIGZ1bGwgZXZlbnQgc2l6ZS4gSWYgdGhlIE1DVSByZXR1cm5zIGEgcmVzcG9uc2UgdGhhdCdzIHNob3J0ZXIgdGhhbiBleHBlY3RlZCwgYG1lbWNweWAgd2lsbCByZWFkIGJleW9uZCB0aGUgYm91bmRzIG9mIGBza2ItXHUwMDNlZGF0YWAuXG5cblRoaXMgYHR4cHdyYCBidWZmZXIgaXRzZWxmIGlzIGFsbG9jYXRlZCB1c2luZyBgZGV2bV9rbWFsbG9jYCB3aXRoaW4gdGhlIGRyaXZlciwgYW5kIGxvb2tpbmcgYXQgdGhlIGRlZmluaXRpb24gb2YgYHN0cnVjdCBtdDc5MjhfdHhwd3JgLCBJIGNhbiBzZWUgaXQncyBxdWl0ZSBsYXJnZS4gSXQgY29udGFpbnMgbnVtZXJvdXMgYXJyYXlzIG9mIGBzOFsuLl1bMl1gLCBhZGRpbmcgdXAgdG8gbWFueSBodW5kcmVkcyBvZiBieXRlcy4gU28sIGlmIHRoZSBVU0IgZGV2aWNlIHJldHVybnMgYSBzbWFsbCByZXNwb25zZSwgc2F5IDEwIGJ5dGVzLCB0aGUgYHNrYmAgYnVmZmVyIHdpbGwgYmUgZXF1YWxseSBzbWFsbC4gVGhlIGBtZW1jcHlgIHdpbGwgdGhlbiBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIHJlYWQsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gYSBzbGFiLW91dC1vZi1ib3VuZHMgdnVsbmVyYWJpbGl0eS5cblxuVGhlIGBza2ItXHUwMDNlZGF0YWAgYnVmZmVyIGlzIGFsbG9jYXRlZCBieSB0aGUgVVNCIGRyaXZlciB3aGVuIHJlY2VpdmluZyB0aGUgcmVzcG9uc2UuIFRoaXMgbWVhbnMgdGhhdCBhIGRlbGliZXJhdGVseSBjcmFmdGVkIHNob3J0IHJlc3BvbnNlIGZyb20gYSBtYWxpY2lvdXMgVVNCIGRldmljZSBjb3VsZCBleHBsb2l0IHRoaXMuIFRoaXMgaXMgYSBjbGFzc2ljIFVTQiBkZXZpY2UgdnVsbmVyYWJpbGl0eSBzY2VuYXJpby5cblxuVGhpcyBpcyBkZWZpbml0ZWx5IGEgYnVnLCBhbmQgYSBwcmV0dHkgc2lnbmlmaWNhbnQgb25lLiBUaGlzIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgdGhlIFVTQiBpbnRlcmZhY2UuIEl0J3MgYW4gb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBjYW4gZGVmaW5pdGVseSBiZSBleHBsb2l0ZWQgdG8gY3Jhc2ggdGhlIHN5c3RlbS5cblxuSSd2ZSBqdXN0IGNvbmZpcm1lZCB0aGUgc2l6ZSBvZiBgc3RydWN0IG10NzkyOF90eHB3cmA7IGl0J3Mgc3Vic3RhbnRpYWwsIGFuZCB0aGF0IGp1c3QgcmVpbmZvcmNlcyB0aGUgc2V2ZXJpdHkgb2YgdGhpcyB2dWxuZXJhYmlsaXR5LiBBIHNtYWxsIHJlc3BvbnNlIGxlYWRzIHRvIGEgbGFyZ2UsIHVudmFsaWRhdGVkIHJlYWQuIFRoaXMgaXMgYSBjbGVhciBwYXRoIHRvIGV4cGxvaXRhdGlvbi5cblxuTm93IEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlncy4gVGhlIHBhdGNoIG1vZGlmaWVzIGZpbGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gLCBzbyBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmaWxlIGZvciBgbXQ3OTI1YC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk1OTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MDEuMTAwNTUxMjI0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjU2MzM5ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1UNzkyNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzoyOmNvbmZpZyBNVDc5MjVfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjVFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnOjE5OmNvbmZpZyBNVDc5MjVVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMjowMS41MjYxOTE3NDlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5MjA1OTAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE1UNzkyNSBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHNwZWNpZmljYWxseSBmb3IgdGhlIE1UNzkyNSBjaGlwc2V0LiBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBicm9hZGVyIE1UNzYgZnJhbWV3b3JrLCBzbyBJJ20gbG9va2luZyBmb3IgdGhlIG51YW5jZXMgdGhhdCB0aGlzIHNwZWNpZmljIGRldmljZSBmYW1pbHkgaW50cm9kdWNlcy4gSSBleHBlY3QgdG8gc2VlIHRoZSB0eXBpY2FsIG9wdGlvbnMgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgZHJpdmVyIGl0c2VsZiwgcGVyaGFwcyBmZWF0dXJlcyBsaWtlIGNhbGlicmF0aW9uIGRhdGEgbG9hZGluZywgcG93ZXIgbWFuYWdlbWVudCBjb250cm9scyBzcGVjaWZpYyB0byB0aGUgTVQ3OTI1J3MgYXJjaGl0ZWN0dXJlLCBhbmQgb2YgY291cnNlLCBhbnkgdmVuZG9yLXNwZWNpZmljIGFkZGl0aW9ucyBvciBtb2RpZmljYXRpb25zLiBJJ2xsIGJlIHdhdGNoaW5nIGZvciBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zOyB0aGVzZSBjYW4gZ2V0IGNvbXBsZXggcXVpY2tseSwgZXNwZWNpYWxseSB3aXRoIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBkaWZmZXJlbnQgcmVndWxhdG9yeSBkb21haW5zIGFuZCB3aXJlbGVzcyBzdGFuZGFyZHMuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGVzZSBvcHRpb25zLiBBcmUgdGhleSBzZW5zaWJsZSBkZWZhdWx0cyB0aGF0IHdvcmsgd2VsbCBvdXQtb2YtdGhlLWJveCBvciBkbyB0aGV5IHJlcXVpcmUgc29tZSB1c2VyIGludGVydmVudGlvbiBvciBhZGFwdGF0aW9uIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybT8gSSdtIGFudGljaXBhdGluZyB0aGF0IHRoZXJlIHdpbGwgYmUgb3B0aW9ucyBmb3IgZGVidWdnaW5nLCBsb2dnaW5nLCBhbmQgdHJhY2UgZmVhdHVyZXMsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG15IHdvcmsuIFVsdGltYXRlbHksIG15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhlIE1UNzkyNSBkcml2ZXIgc28gdGhhdCBJIGNhbiBhbnRpY2lwYXRlIHBvdGVudGlhbCBwcm9ibGVtcywgb3B0aW1pemUgaXRzIHVzZSwgYW5kIGJlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBhbnkgaXNzdWVzIHRoYXQgYXJpc2UuIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgaGFzIGluIHN0b3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTY3NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAyOjA1LjcxODI1MzI4N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3OTI1X0NPTU1PTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGVcXG4gICA0OlxcdFxcdHNlbGVjdCBNVDc5MnhfTElCXFxuICAgNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gICA2OlxcdFxcbiAgIDc6XFx0Y29uZmlnIE1UNzkyNUVcXG4gICA4OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVFIChQQ0llKSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0c2VsZWN0IE1UNzkyNV9DT01NT05cXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxMjpcXHRcXHRoZWxwXFxuICAxMzpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxcbiAgMTQ6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDE1OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBNVDc5MjVVXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDIyOlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAyMzpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMjU6XFx0XFx0aGVscFxcbiAgMjY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFVTQiBkZXZpY2VzLFxcbiAgMjc6XFx0XFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcXG4gIDI4OlxcdFxcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAyOjA1LjcxODMyOTAzOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODE0OTkxNjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgQXNzZXNzbWVudCBvZiB0aGUgTVQ3OTI1IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgY29uZmlndXJpbmcgdGhpcyBgTVQ3OTI1YCBkcml2ZXIgYW5kIGhlcmUncyB3aGF0J3MgcnVubmluZyB0aHJvdWdoIG15IGhlYWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UndmUgZ290IHRoZSBlc3NlbnRpYWxzIGVuYWJsZWQ6IGBNVDc5MjVVYCBmb3IgVVNCIGVtdWxhdGlvbiBpcyBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LiBJJ2xsIGFsc28gYnJpbmcgaW4gYE1UNzkyNUVgIGZvciBQQ0llIHN1cHBvcnQsIGV2ZW4gaWYgaXQncyBub3QgY3VycmVudGx5IGVtdWxhdGVkIOKAkyBnb29kIHRvIGhhdmUgZm9yIGZ1dHVyZSBwb3NzaWJpbGl0aWVzLiBPZiBjb3Vyc2UsIGBNQUM4MDIxMWAgaXMgZnVuZGFtZW50YWwsIGFuZCB0aGVuIGBVU0JgIGFuZCBgUENJYCBhcyBiYXNlIGRlcGVuZGVuY2llcy5cblxuSGFuZyBvbiBhIHNlY29uZOKApiBJIG5lZWQgdG8gY29uZmlybSB0aG9zZSBkZXBlbmRlbmNpZXMuIExldCBtZSBjaGVjazogYE1UNzkyNVVgIGRlcGVuZHMgb24gYm90aCBgTUFDODAyMTFgIGFuZCBgVVNCYC4gR29vZCwgbWFraW5nIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRpcmVjdCBkZXBlbmRlbmNpZXMgb24gYE1UNzkyNVVgIHdoaWxlIEknbSBhdCBpdC4gQWgsIGxvb2tzIGxpa2UgYE1UNzkyeF9VU0JgIGhhcyBiZWVuIHNlbGVjdGVkOyB0aGF0IG1ha2VzIHNlbnNlLlxuXG5SaWdodCwgbmV4dCBjcnVjaWFsIGRldGFpbDogSSAqbmVlZCogYERFQlVHX0ZTYCBlbmFibGVkIHRvIGFjdHVhbGx5IGdldCB0byB0aGUgZGVidWdmcyBlbnRyaWVzLCB3aGljaCBhcmUgZXNzZW50aWFsIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzLiBJcyBgREVCVUdfRlNgIHJlcXVpcmVkPyBJdCdzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0IGluIHN5emthbGxlciwgYnV0IEkgbWlnaHQgbmVlZCB0byBleHBsaWNpdGx5IHNwZWNpZnkgaXQganVzdCB0byBiZSBzdXJlLiBJdCdzIGJldHRlciB0byBiZSBleHBsaWNpdC5cblxuV2FpdCwgdGhlIGBtdDc5MjhfdHhwd3JgIG1vZHVsZSBpcyBpbiBgZGVidWdmcy5jYC4gTm93LCBpcyBgZGVidWdmcy5jYCBhbHdheXMgY29tcGlsZWQsIG9yIGlzIGl0IGNvbmRpdGlvbmFsPyBCZXN0IGNoZWNrIHRoYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBidWlsZCBydWxlcy4gVGhpcyBpcyBnZXR0aW5nIHRvIHRoZSBkZXRhaWxzLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gYmUgbWV0aG9kaWNhbCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZydzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNTQ5LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MTEuNTMzMzI4OTI0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjk0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0XFxuICAgMzpcXHRvYmotJChDT05GSUdfTVQ3OTI1X0NPTU1PTikgKz0gbXQ3OTI1LWNvbW1vbi5vXFxuICAgNDpcXHRvYmotJChDT05GSUdfTVQ3OTI1RSkgKz0gbXQ3OTI1ZS5vXFxuICAgNTpcXHRvYmotJChDT05GSUdfTVQ3OTI1VSkgKz0gbXQ3OTI1dS5vXFxuICAgNjpcXHRcXG4gICA3OlxcdG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm9cXG4gICA4OlxcdG10NzkyNS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbiAgIDk6XFx0bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cXG4gIDEwOlxcdG10NzkyNXUteSA6PSB1c2Iub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMjoxMS41MzM0NTQzMzNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA2NDc4OTMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgdGhlIERlYnVnZnMgRGVwZW5kZW5jeSoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aHkgYSBwYXJ0aWN1bGFyIG1vZHVsZSBpcyBtaXNiZWhhdmluZyBhbmQgSSB0aGluayBpdCdzIHJlbGF0ZWQgdG8gaG93IGBkZWJ1Z2ZzYCBpcyBoYW5kbGVkLiBSaWdodCwgYGRlYnVnZnMub2AgaXMgKmFsd2F5cyogY29tcGlsZWQgaW50byB0aGUga2VybmVsLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IGBkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGVgIGlzIGp1c3QgYSBtYWNybywgb3IgZXZlbiBhIHN0dWIsIGlmIHRoZSBgQ09ORklHX0RFQlVHX0ZTYCBvcHRpb24gaXNuJ3QgZW5hYmxlZC4gU28sIHRoZSBsaWtlbHkgZml4IGhlcmUgaXMgdG8gZW5zdXJlIHRoYXQgYERFQlVHX0ZTYCBpcyBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLlxuXG5TaW5jZSB0aGlzIHNlZW1zIHRvIGJlIHJlbGF0ZWQgdG8gYSB3aXJlbGVzcyBtb2R1bGUsIHNwZWNpZmljYWxseSBhIE1lZGlhVGVrIGRyaXZlciwgSSBhbHNvIGhhdmUgdG8gY29uc2lkZXIgdGhlIG1vZHVsZSBkZXBlbmRlbmNpZXMuIEkgc3VzcGVjdCBgV0xBTmAgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AgbWlnaHQgYmUgcmVxdWlyZWQgdG8gZXZlbiByZWFjaCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi4gVGhhdCdzIG15IG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0NTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxMjowMjoxNS41OTgyNDc1NDJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiTWVkaWFUZWsgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxcbiAgIDc6XFx0XFxuICAgODpcXHRcXHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24ndCBkaXJlY3RseSBhZmZlY3QgdGhlXFxuICAgOTpcXHRcXHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXFxuICAxMDpcXHRcXHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcXG4gIDExOlxcdFxcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRpZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xcbiAgMTQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2MDF1L0tjb25maWdcXFwiXFxuICAxNTpcXHRzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ1xcXCJcXG4gIDE2OlxcdGVuZGlmICMgV0xBTl9WRU5ET1JfTUVESUFURUtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MTUuNTk4MzkzNTYyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODk3NzYyMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBXTEFOIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGlzIGRyaXZlciBjb3JyZWN0bHkuIFRoZSBzeXN0ZW0gcmVxdWlyZXMgc3VwcG9ydCBmb3IgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgdGhhdCBtdWNoIGlzIGNsZWFyLiBBbmQsIG9mIGNvdXJzZSwgdGhlIGdlbmVyaWMgYFdMQU5gIGZlYXR1cmUgaXMgZXNzZW50aWFsLCBzbyB0aGF0IG5lZWRzIHRvIGJlIGVuYWJsZWQgdG9vLiBSaWdodC4gTm93LCB3aGVyZSBkbyBJIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcz8gQWgsIHllcywgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgd2l0aGluIHRoZSBNZWRpYXRlay1zcGVjaWZpYyBkcml2ZXIgc3RydWN0dXJlLiBMZXQgbWUgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBzcGVjaWZpYyBhcmVhOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gSSdsbCBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIGluIHRoZXJlLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBwYXJzZSB0aGF0IGZpbGUsIG1ha2luZyBzdXJlIHRvIGxvY2F0ZSBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDA2NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MTguNzg4MTczNTUyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdGNvbmZpZyBNVDc2X0NPUkVcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBNVDc2X0xFRFNcXG4gICA3OlxcdFxcdGJvb2xcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBNVDc2X0NPUkU9TEVEU19DTEFTU1xcbiAgMTA6XFx0XFx0ZGVmYXVsdCB5XFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNVDc2X1VTQlxcbiAgMTM6XFx0XFx0dHJpc3RhdGVcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVQ3Nl9DT1JFXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBNVDc2X1NESU9cXG4gIDE3OlxcdFxcdHRyaXN0YXRlXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgTVQ3NngwMl9MSUJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MTguNzg4MzI4MDcyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MTc0MjAxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBGb2N1cyBTeW1ib2xzIGZvciBUaGlzIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBJIG5lZWQgdG8gbWFrZSBzdXJlIG15IGVudmlyb25tZW50IGlzIHByb3Blcmx5IHNldCB1cC4gSXQgbG9va3MgbGlrZSBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkOiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3OTI1VWAsIGFuZCBgREVCVUdfRlNgLiBJJ2xsIGhhdmUgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhvc2UgYXJlIGFsbCBpbmNsdWRlZCBpbiBteSBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5Ob3csIGxldCdzIGlkZW50aWZ5IHRoZSBrZXkgZm9jdXMgc3ltYm9scyB3aXRoaW4gdGhlIGNvZGUuIExvb2tzIGxpa2UgdGhlIHBhdGNoIGFkZHMgYG10NzkyOF9laHRfdHhwd3JgLCBgbXQ3OTI4X3R4cHdyYCwgYG10NzkyOF90eHB3cl90Ymxfc2V0YCwgYG10NzkyOF90eHB3cl90YmxfZ2V0YCwgYW5kIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gLiBUaGUgZmlyc3QsIGBtdDc5MjhfZWh0X3R4cHdyYCwgaXMgc3RhdGljIGlubGluZSwgc28gdGhhdCdzIHByb2JhYmx5IG5vdCBhIHByaW1hcnkgc3ltYm9sIGZvciBpbi1kZXB0aCBhbmFseXNpcy4gSG93ZXZlciwgYG10NzkyOF90eHB3cmAgaXMgc3RhdGljIGJ1dCBpcyB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24gaW4gYSBgZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlYCBjYWxsLCB3aGljaCBtYWtlcyBpdCBpbnRlcmVzdGluZy4gYG10NzkyOF90eHB3cl90Ymxfc2V0YCBhbmQgYG10NzkyOF90eHB3cl90YmxfZ2V0YCBhcmUgc3RhdGljIGZ1bmN0aW9ucyBmb3Igc2V0dGluZyBhbmQgZ2V0dGluZyB0aGUgdHJhbnNtaXQgcG93ZXIgdGFibGUsIGFuZCBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyBub24tc3RhdGljLiBUaGUgZXhwb3J0IHN0YXR1cyBvZiB0aGUgYG10NzkyOF9nZXRfdHhwd3JfaW5mb2Agc3ltYm9sIGlzIHNvbWV0aGluZyB0byBsb29rIGludG8hIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgZXhwb3J0ZWQsIHdoaWNoIHdvdWxkIGJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGludGVyZmFjZXMgd2l0aCBvdGhlciBtb2R1bGVzIG9yIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdsbCBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIHRoaXMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0NTM5LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MjQuMjA1NzUxMjFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMDM2OTExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjhfZ2V0X3R4cHdyX2luZm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMDg9bXQ3OTI4X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjAtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjIxOlxcdHJldCA9IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCBkZXYtXFx1MDAzZXR4cHdyX3RibCwgdHhwd3IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMjItXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIxNDc9aW50IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgc3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0yMTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjIxNzQ6aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTIxNzUtXFx0XFx0XFx0ICBzdHJ1Y3QgbXQ3OTI4X3R4cHdyICp0eHB3cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTM2OT1pbnQgbXQ3OTI1X2dldF90eHB3cl9pbmZvKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHU4IGJhbmRfaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3MC1cXHRcXHRcXHQgIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDozNzE6aW50IG10NzkyOF9nZXRfdHhwd3JfaW5mbyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCBiYW5kX2lkeCwgdTggcG93ZXJfdGJsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTM3Mi1cXHRcXHRcXHQgIHN0cnVjdCBtdDc5MjhfdHhwd3IgKnR4cHdyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTI6MDI6MjQuNjA2MTI0NDg3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MDEyMjIwMTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFRYIFBvd2VyIEluZm8gUmV0cmlldmFsIGluIHRoZSBNVDc5MjUgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBtdDc5MjVgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBUWCBwb3dlciBpbmZvIHJldHJpZXZhbC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgaW1tZWRpYXRlbHkgc3RhbmRzIG91dC4gSXQncyAqbm90KiBzdGF0aWMsIGFuZCBpdCdzIG5vdCBpbmxpbmVkLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBhbmFseXNpcy4gYG10NzkyOF90eHB3cmAgaXMgYWxzbyBpbnRlcmVzdGluZzsgaXQncyBzdGF0aWMsIGJ1dCBpdCdzIGEgY2FsbGJhY2sgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBzbyBpdCdzIHByb2JhYmx5IHdvcnRoIGEgbG9vay4gYG10NzkyOF90eHB3cl90Ymxfc2V0YCBhbmQgYG10NzkyOF90eHB3cl90YmxfZ2V0YCBzZWVtIGxpa2Ugc21hbGxlciwgcG9zc2libHkgaW5saW5lZCwgY2FsbGJhY2tzLCBidXQgSSdsbCBub3RlIHRoZW0uXG5cbkkgY2hlY2tlZCBgbXQ3OTI4X3R4cHdyYCBhbmQgdmVyaWZpZWQgaXQgaXMgKm5vdCogaW5saW5lZC4gQWZ0ZXIgbGlzdGluZyB0aGVtLCBJIGNvbmNsdWRlZCB0aGF0IGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGFuZCBgbXQ3OTI4X3R4cHdyYCB3ZXJlIHRoZSBtb3N0IGltcG9ydGFudCwgYnV0IHRoZW4gSSByZWFsaXplZCBgbXQ3OTI4X3R4cHdyX3RibF9zZXRgIGFuZCBgbXQ3OTI4X3R4cHdyX3RibF9nZXRgIGFyZSBxdWl0ZSBzbWFsbCBzbyB0aGV5IGFyZSBwcm9iYWJseSBpbmxpbmVkLCBvciBqdXN0IG5vdCB0aGF0IGludGVyZXN0aW5nLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gSXQncyBub3QgZXhwbGljaXRseSBgRVhQT1JUX1NZTUJPTGAnZCwgYnV0IGl0J3MgZGVmaW5lZCBpbiBgbWN1LmNgIGFuZCBjYWxsZWQgZnJvbSBgZGVidWdmcy5jYCwgbWVhbmluZyBpdCdzIGEgZ2xvYmFsIHN5bWJvbCB3aXRoaW4gdGhlIGBtdDc5MjUtY29tbW9uYCBtb2R1bGUuIEdvb2QgdG8ga25vdy5cblxuTmV4dCwgSSdtIGNoZWNraW5nIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEkgc2VlIGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFdMQU5fVkVORE9SX01FRElBVEVLYCwgYW5kIGBERUJVR19GU2AuIExldCdzIGZpbGwgaW4gYW55IGRlcGVuZGVuY2llczogSSBhbHNvIGluY2x1ZGUgYE1UNzkyNUVgIChQQ0llKSBqdXN0IGluIGNhc2UuIEFsc28sIGBDRkc4MDIxMWAgaXMgbmVlZGVkIGJ5IGBNQUM4MDIxMWAuIFNvLCBteSBsaXN0IGlzOiBgV0xBTmAsIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AsIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGBVU0JgLCBgTVQ3OTI1VWAsIGBERUJVR19GU2AsIGBNVDc5MjVFYCwgYFBDSWAuXG5cbk15IHRoaW5raW5nIG5vdyBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgY29tcG9uZW50cyBmb3IgZnV6emluZy4gVGhlIHBhdGNoIGlzIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMsIGFuZCBNQ1UgY29tbXVuaWNhdGlvbiB0byBnZXQgVFggcG93ZXIgaW5mby4gVGhlIE1UNzkyNSBkcml2ZXIgc3VwcG9ydHMgVVNCIHZpYSBgQ09ORklHX01UNzkyNVVgLiBUaGF0IG1lYW5zIHN5emthbGxlcidzIFVTQiBmdXp6aW5nIChzcGVjaWZpY2FsbHkgdmhjaSkgaXMgYSB2aWFibGUgcGF0aC4gVGhlIGZ1bmN0aW9uIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGlzIHRoZSBpbXBvcnRhbnQgb25lIGJlY2F1c2UgaXQgc2VuZHMgYSBjb21tYW5kIHRvIHRoZSBkZXZpY2UgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UuIEJlY2F1c2UgdGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyB0aGUgbGVuZ3RoLCB0aGlzIGlzIGEgcGVyZmVjdCBvcHBvcnR1bml0eSBmb3Igb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdGllcy4gQSBtYWxpY2lvdXMgVVNCIGRldmljZSBjb3VsZCByZXR1cm4gYSBzaG9ydCByZXNwb25zZSwgbGVhZGluZyB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIEkgc2VlIHRoZSBjb2RlOlxuXG5gYGBjXG5ldmVudCA9IChzdHJ1Y3QgbXQ3OTI4X3R4cHdyX2V2ZW50ICopc2tiLVx1MDAzZWRhdGE7XG5tZW1jcHkodHhwd3IsIFx1MDAyNmV2ZW50LVx1MDAzZXR4cHdyLCBzaXplb2YoKnR4cHdyKSk7XG5gYGBcblxuWWVwLCBgc2tiLVx1MDAzZWRhdGFgIGdldHMgY2FzdCB0byBgc3RydWN0IG10NzkyOF90eHB3cl9ldmVudCAqYCwgYW5kIHRoZW4gYSBgbWVtY3B5YCByZWFkcyBgc2l6ZW9mKCp0eHB3cilgIGJ5dGVzIGZyb20gYFx1MDAyNmV2ZW50LVx1MDAzZXR4cHdyYC4gSWYgYHNrYi1cdTAwM2VsZW5gIGlzIGxlc3MgdGhhbiBgc2l6ZW9mKHN0cnVjdCBtdDc5MjhfdHhwd3JfZXZlbnQpYCwgdGhlbiB3ZSBoYXZlIGEgYnVmZmVyIG92ZXItcmVhZC4gSXQncyBhIGNsYXNzaWMsIGV4cGxvaXRhYmxlIGJ1Zy4gVGhpcyBpcyB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLlxuXG5JJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTg1MCwiT3V0cHV0VG9rZW5zIjoyNzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDEyOjAyOjM5LjYxODM0NzQwNFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Njg1NDczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIixcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJERUJVR19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyOF9nZXRfdHhwd3JfaW5mb1wiLFxuICAgIFwibXQ3OTI4X3R4cHdyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBkZWJ1Z2ZzIGVudHJpZXMgYW5kIE1DVSBjb21tdW5pY2F0aW9uIGxvZ2ljIHRvIHJldHJpZXZlIFRYIHBvd2VyIGluZm9ybWF0aW9uIGZvciB0aGUgTVQ3OTI4IGRldmljZSAoaGFuZGxlZCBieSB0aGUgbXQ3OTI1IGRyaXZlcikuIFRoZSBgbXQ3OTI4X2dldF90eHB3cl9pbmZvYCBmdW5jdGlvbiBzZW5kcyBhIGNvbW1hbmQgdG8gdGhlIGRldmljZSBhbmQgcGFyc2VzIHRoZSByZXNwb25zZS4gU2luY2UgdGhlIE1UNzkyNSBkcml2ZXIgc3VwcG9ydHMgVVNCICh2aWEgYENPTkZJR19NVDc5MjVVYCksIHRoZSBkZXZpY2UgYW5kIGl0cyBNQ1UgcmVzcG9uc2VzIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIncyBVU0IgZnV6emluZyAodmhjaSkuIFRoZSByZXNwb25zZSBwYXJzaW5nIGluIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGJsaW5kbHkgY29waWVzIGRhdGEgZnJvbSB0aGUgU0tCIHdpdGhvdXQgY2hlY2tpbmcgaXRzIGxlbmd0aCwgd2hpY2ggY2FuIGxlYWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkIGlmIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgcmV0dXJucyBhIHNob3J0IHJlc3BvbnNlLiBUaGlzIG1ha2VzIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiLFxuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIkRFQlVHX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI4X2dldF90eHB3cl9pbmZvXCIsXG4gICAgXCJtdDc5MjhfdHhwd3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGRlYnVnZnMgZW50cmllcyBhbmQgTUNVIGNvbW11bmljYXRpb24gbG9naWMgdG8gcmV0cmlldmUgVFggcG93ZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBNVDc5MjggZGV2aWNlIChoYW5kbGVkIGJ5IHRoZSBtdDc5MjUgZHJpdmVyKS4gVGhlIGBtdDc5MjhfZ2V0X3R4cHdyX2luZm9gIGZ1bmN0aW9uIHNlbmRzIGEgY29tbWFuZCB0byB0aGUgZGV2aWNlIGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlLiBTaW5jZSB0aGUgTVQ3OTI1IGRyaXZlciBzdXBwb3J0cyBVU0IgKHZpYSBgQ09ORklHX01UNzkyNVVgKSwgdGhlIGRldmljZSBhbmQgaXRzIE1DVSByZXNwb25zZXMgY2FuIGJlIGVtdWxhdGVkIGJ5IHN5emthbGxlcidzIFVTQiBmdXp6aW5nICh2aGNpKS4gVGhlIHJlc3BvbnNlIHBhcnNpbmcgaW4gYG10NzkyOF9nZXRfdHhwd3JfaW5mb2AgYmxpbmRseSBjb3BpZXMgZGF0YSBmcm9tIHRoZSBTS0Igd2l0aG91dCBjaGVja2luZyBpdHMgbGVuZ3RoLCB3aGljaCBjYW4gbGVhZCB0byBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaWYgYSBtYWxpY2lvdXMgVVNCIGRldmljZSByZXR1cm5zIGEgc2hvcnQgcmVzcG9uc2UuIFRoaXMgbWFrZXMgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowxgv5n[1] Phase: Succeeded StartedAt: 2026-07-25 12:03:02 +0000 UTC FinishedAt: 2026-07-25 12:03:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 12:03:02 +0000 UTC FinishedAt: 2026-07-25 12:03:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2] Phase: Succeeded StartedAt: 2026-07-25 12:03:02 +0000 UTC FinishedAt: 2026-07-25 13:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-25 12:03:02 +0000 UTC FinishedAt: 2026-07-25 13:30:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 12:03:02 +0000 UTC FinishedAt: 2026-07-25 12:03:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 12:03:02 +0000 UTC FinishedAt: 2026-07-25 12:03:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowxgv5n/series-workflowxgv5n-convert-artifact-2658277796/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 12:03:23 +0000 UTC FinishedAt: 2026-07-25 12:47:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 12:03:23 +0000 UTC FinishedAt: 2026-07-25 12:47:00 +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:*4d85302f-d13c-40b7-9f48-2924a6b05ce5,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-workflowxgv5n/series-workflowxgv5n-convert-artifact-2658277796/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": "7b2c144a-4bb6-4902-9f0d-0c3d5befc690", "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-workflowxgv5n/series-workflowxgv5n-build-action-384936930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 12:03:23 +0000 UTC FinishedAt: 2026-07-25 12:46:50 +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:*4d85302f-d13c-40b7-9f48-2924a6b05ce5,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-workflowxgv5n/series-workflowxgv5n-convert-artifact-2658277796/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": "7b2c144a-4bb6-4902-9f0d-0c3d5befc690", "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-workflowxgv5n/series-workflowxgv5n-build-action-384936930/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 12:47:00 +0000 UTC FinishedAt: 2026-07-25 12:47:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 12:47:00 +0000 UTC FinishedAt: 2026-07-25 12:47:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 12:47:00 +0000 UTC FinishedAt: 2026-07-25 12:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 12:47:00 +0000 UTC FinishedAt: 2026-07-25 12:47:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowxgv5n/series-workflowxgv5n-convert-artifact-2792174499/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 12:47:20 +0000 UTC FinishedAt: 2026-07-25 12:49:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 12:47:20 +0000 UTC FinishedAt: 2026-07-25 12:49:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7b2c144a-4bb6-4902-9f0d-0c3d5befc690,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-workflowxgv5n/series-workflowxgv5n-build-action-384936930/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-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 12:49:20 +0000 UTC FinishedAt: 2026-07-25 12:49:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 12:49:20 +0000 UTC FinishedAt: 2026-07-25 12:49:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 12:49:20 +0000 UTC FinishedAt: 2026-07-25 13:30:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 12:49:20 +0000 UTC FinishedAt: 2026-07-25 13:30:22 +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:*4d85302f-d13c-40b7-9f48-2924a6b05ce5,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-workflowxgv5n/series-workflowxgv5n-convert-artifact-2792174499/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": "3bcd1859-e29d-4361-b72c-e2c7e47081ee", "success": false },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-workflowxgv5n/series-workflowxgv5n-build-action-3462936663/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 12:49:20 +0000 UTC FinishedAt: 2026-07-25 13:29:49 +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:*4d85302f-d13c-40b7-9f48-2924a6b05ce5,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-workflowxgv5n/series-workflowxgv5n-convert-artifact-2792174499/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": "3bcd1859-e29d-4361-b72c-e2c7e47081ee", "success": false },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-workflowxgv5n/series-workflowxgv5n-build-action-3462936663/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Failed StartedAt: 2026-07-25 13:30:22 +0000 UTC FinishedAt: 2026-07-25 13:30:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxgv5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7928_get_txpwr_info","mt7928_txpwr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"90883c513ca01e77c56b8d94be7de11420c1dacf","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN","WLAN_VENDOR_MEDIATEK","CFG80211","MAC80211","USB","MT7925U","DEBUG_FS"],"series_id":"902de955-db8d-47e0-a4fe-d624ae5adeb5","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Failed StartedAt: 2026-07-25 13:30:22 +0000 UTC FinishedAt: 2026-07-25 13:30:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}