Name: series-workflowgxvng Phase: Failed StartedAt: 2026-09-15 02:48:51 +0000 UTC FinishedAt: 2026-09-15 03:07:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgxvng[0] Phase: Succeeded StartedAt: 2026-09-15 02:48:51 +0000 UTC FinishedAt: 2026-09-15 03:07:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgxvng[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 02:48:51 +0000 UTC FinishedAt: 2026-09-15 03:07:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaXNfcGZfY2d4bWFwcGVkKCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgsIHdoaWNoIGlzIGludGVybmFsIHRvIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIFBDSWUgLyBTbWFydE5JQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwYjg3ZTI2MzVkNGIxZThiOGU1NTVlZTJiNGQ0Zjc3MjJlNDdlM2Q4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDM6MDY6MzUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuaW5kZXggMDk0MjI3NDA0ZWY5Zi4uMWUwYTVhZWIzZjU3NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuQEAgLTk3MCw2ICYjNDM7OTcwLDkgQEAgc3RhdGljIGlubGluZSBpbnQgcnZ1X2dldF9wZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IHBjaWZ1bmMpXG4gLyogQ0dYIEFQSXMgKi9cbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfcGZfY2d4bWFwcGVkKHN0cnVjdCBydnUgKnJ2dSwgdTggcGYpXG4ge1xuJiM0MztcdGlmICghcnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiBcdHJldHVybiAocGYgXHUwMDNlPSBQRl9DR1hNQVBfQkFTRSBcdTAwMjZcdTAwMjYgcGYgXHUwMDNjPSBydnUtXHUwMDNlY2d4X21hcHBlZF9wZnMpIFx1MDAyNlx1MDAyNlxuIFx0XHQhaXNfc2RwX3BmKHJ2dSwgcnZ1X21ha2VfcGNpZnVuYyhydnUtXHUwMDNlcGRldiwgcGYsIDApKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaXNfcGZfY2d4bWFwcGVkKCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgsIHdoaWNoIGlzIGludGVybmFsIHRvIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIFBDSWUgLyBTbWFydE5JQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYjg3ZTI2MzVkNGIxZThiOGU1NTVlZTJiNGQ0Zjc3MjJlNDdlM2Q4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMTUgMDM6MDY6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCmluZGV4IDA5NDIyNzQwNGVmOWYuLjFlMGE1YWViM2Y1NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCkBAIC05NzAsNiAmIzQzOzk3MCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJ2dV9nZXRfcGYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBwY2lmdW5jKQogLyogQ0dYIEFQSXMgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19wZl9jZ3htYXBwZWQoc3RydWN0IHJ2dSAqcnZ1LCB1OCBwZikKIHsKJiM0MzsJaWYgKCFydnUtJmd0O3BmMmNneGxtYWNfbWFwKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwogCXJldHVybiAocGYgJmd0Oz0gUEZfQ0dYTUFQX0JBU0UgJmFtcDsmYW1wOyBwZiAmbHQ7PSBydnUtJmd0O2NneF9tYXBwZWRfcGZzKSAmYW1wOyZhbXA7CiAJCSFpc19zZHBfcGYocnZ1LCBydnVfbWFrZV9wY2lmdW5jKHJ2dS0mZ3Q7cGRldiwgcGYsIDApKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk2NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBpbiB0aGUgT2N0ZW9uVFgyIE5ldHdvcmsgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gVGhlIGRpZmYgaXRzZWxmIGlzIGZvY3VzZWQgb24gYHJ2dS5oYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeS4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgbGlrZSBhIG5ldyBjaGVjayBoYXMgYmVlbiBhZGRlZCB3aXRoaW4gdGhlIGBpc19wZl9jZ3htYXBwZWRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGF0IHRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBhIGdpdmVuIFBGIGlzIG1hcHBlZCB0byBhIENHWCBsbWFjLiBUaGUgYWRkZWQgY29uZGl0aW9uYWwgYCFydnUtJmd0O3BmMmNneGxtYWNfbWFwYCBzdWdnZXN0cyBhIG5ldyBjb25maWd1cmF0aW9uIG9yIGluaXRpYWxpemF0aW9uIHN0YXRlLiBUaGlzIGluZGljYXRlcyB0aGF0LCBpZiB0aGUgbWFwcGluZyBpc24mIzM5O3QgZXN0YWJsaXNoZWQsIHRoZSBmdW5jdGlvbiBzaG9ydC1jaXJjdWl0cyBhbmQgYXZvaWRzIHBvdGVudGlhbCBlcnJvcnMuCgpOb3csIGxldCYjMzk7cyBwbGFjZSB0aGlzIHBhdGNoIGluIGNvbnRleHQuIFRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhgIHBhdGggdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBPY3Rlb25UWDIsIGEgTWFydmVsbCBBUk02NCBTb0MsIHNwZWNpZmljYWxseSB0aGUgQ045SyBvciBDTjEwSy4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgc29tZSBOSUMgb3IgbmV0d29yayBpbnRlcmZhY2UgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYHJ2dWAgc3RydWN0dXJlIGZpdHMgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLgoKSSB3YW50IHRvIGtub3cgd2hlcmUgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUgZHJpdmVyLCBzbyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGFuZCBNYWtlZmlsZSBmb3IgdGhpcyBkaXJlY3RvcnkgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRnJvbSB0aGVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCwgYW5kIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIHRoaXMgY2hlY2suIEkmIzM5O2xsIHByb2JhYmx5IGdyZXAgZm9yIGBwZjJjZ3hsbWFjX21hcGAgYWNyb3NzIHRoZSBkcml2ZXIgc291cmNlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIgYW5kIHdoYXQgdGhpcyBjaGFuZ2UgZG9lcyB3aXRoaW4gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7T0NURU9OVFgyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo2OmNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy03LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMTpcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMi1cdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MjI9Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVx0Ym9vbCBcJiMzNDtEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoyNDpcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzE6Y29uZmlnIE9DVEVPTlRYMl9QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzM6XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzQtXHRzZWxlY3QgTkVUX0RFVkxJTktcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NTpjb25maWcgT0NURU9OVFgyX1ZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ3Olx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz01MT1jb25maWcgUlZVX0VTV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNTItXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjUzOlx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNTQtXHRkZWZhdWx0IG1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICYjNDM7PSBhZi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgJiM0Mzs9IGFmL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSAmIzQzOz0gbmljL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlPTY9Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICYjNDM7PSBydnVfbWJveC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICYjNDM7PSBydnVfYWYub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGUtOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2d4X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYzo2NzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9DR1gpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy02OC1cdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9DTjEwS19SUE0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTUtIC8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaDoxNjojZGVmaW5lXHRQQ0lfREVWSURfT0NURU9OVFgyX0NHWFx0XHQweEEwNTlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xNTQ9REVGSU5FX1NIT1dfQVRUUklCVVRFKG5wY19tY2FtX2xheW91dCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE1NjojZGVmaW5lIF9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVx0XHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSAjIyBfZm9wcyA9IHtcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTY1OiNkZWZpbmUgREVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUoX19uYW1lLCBfX3NpemUpXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY2LXN0YXRpYyBpbnQgX19uYW1lICMjIF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzAtfVx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNzE6X19PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfRk9QUyhfX25hbWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xODE9c3RhdGljIGludCBucGNfbWNhbV9kc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQyLSNkZWZpbmUgVE9UQUxfU1ogKE1BWF9OVU1fQkFOS1MgKiBNQVhfTlVNX1NVQl9CQU5LUyAqIE1BWF9TVUJCQU5LX0RFUFRIICogNjQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MjQzOkRFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKG5wY19tY2FtX2RzdGF0cywgVE9UQUxfU1opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0yNDU9c3RhdGljIGludCBucGNfbWNhbV9taXNtYXRjaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODQtLyogXCYjMzQ7JXVcXHQlZFxcdCV1XFxuXCYjMzQ7IG5lZWRzIGxlc3MgdGhhbiA2NCBjaGFyYWN0ZXJzIHRvIHByaW50LiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI4NTpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9taXNtYXRjaCwgVE9UQUxfU1opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjIxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9QVFBcdFx0XHQweEEwMENcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTIyLSNkZWZpbmUgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85OHh4X1BUUFx0XHQweEIxMDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yNy0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE9fUFRQXHQweEI2MDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjI4OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SU1RcdFx0XHQweEEwODVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI5LSNkZWZpbmUgUENJX0RFVklEX0NOMTBLX1BUUFx0XHRcdDB4QTA5RVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTA6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5MS1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTItXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTM6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NC1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTUtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTZYWF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTY6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Ny1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTgtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTk6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMC1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDEtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE5fUFRQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjAyOlx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDMtXHRcdFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA0LVx0XHRcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk1TU1fUFRQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjA1Olx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDYtXHRcdFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ1Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ2LVx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz05Mjc9c3RhdGljIHZvaWQgcnZ1X2dldF9sYmtfYnVmc2l6ZShzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTMzLVx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6OTM0Olx0XHRcdCAgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLLCBwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTkzNS1cdGlmICghcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNDQ3PWludCBydnVfZ2V0X251bV9sYmtfY2hhbnModm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MzQ1MzpcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9MQkssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDU0LVx0XHRcdCAgICAgIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDcxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRlx0MHhBMEY4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzQ3Mz1zdGF0aWMgaW50IHJ2dV9lbmFibGVfc3Jpb3Yoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDk1Olx0aWYgKHJ2dS1cdTAwM2V2Zl9kZXZpZCA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDk2LVx0XHRjaGFucyA9IHJ2dV9nZXRfbnVtX2xia19jaGFucygpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNDojZGVmaW5lXHRQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlx0XHQweEEwNjVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI1OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXHRcdFx0MHhBMDYxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC0yNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYz0zOTI9c3RhdGljIHZvaWQgcnZ1X2xia19zZXRfY2hhbm5lbHMoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jLTQxNS1cdFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmM6NDE2Olx0XHRcdFx0ICAgICAgUENJX0RFVklEX09DVEVPTlRYMl9MQkssIHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE3LVx0XHRpZiAoIXBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYz0yODA2PXN0YXRpYyB2b2lkIHJ2dV9kYmdfbnBhX2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgyNS0vKiBQZXItbG1hYyBDR1ggZGVidWdmcyBmaWxlcyBuZWVkIGJvdGggUlZVIGFuZCBDR1ggaGFuZGxlOyBpbm9kZS1cdTAwM2VpX3ByaXZhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MjgyNjogKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODI3LSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgJiM0Mzs9IHJ2dV9uaWNwZi5vIG90eDJfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICYjNDM7PSBydnVfbmljdmYubyBvdHgyX3B0cC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICYjNDM7PSBydnVfcmVwLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Mi0vKiBQQ0kgZGV2aWNlIElEcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDM6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9QRiAgICAgICAgICAgICAgMHhBMDYzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXHRcdDB4QTA2NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXHRcdDB4QTBGOFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFx0XHQweEEwRjdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1OTk6XHRyZXR1cm4gKHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MDAtXHRcdChwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfUlZVX1JFUCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NjE3Olx0cmV0dXJuIHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYxOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYz0zNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml9wZl9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYzozNzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTM4LVx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jPTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBvdHgyX3ZmX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjIzOlx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzoyNDpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTI2LVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg4NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBPY3Rlb25UWDIgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBPY3Rlb25UWDIgZXRoZXJuZXQgZHJpdmVyLiBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmaWxlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4gSSYjMzk7bGwgcmVhZCB0aHJvdWdoIGl0IGNhcmVmdWxseSwgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBhbmQgYW55IHNwZWNpZmljIGZlYXR1cmVzIHRoaXMgZHJpdmVyIGV4cG9zZXMuIFRoaXMgS2NvbmZpZyBmaWxlIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhlIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFuZCBob3cgaXRzIGJlaGF2aW91ciBpcyBjb250cm9sbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1hcnZlbGwgUlZVIE5ldHdvcmsgZHJpdmVycyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuICAgNzpcdFx0dHJpc3RhdGVcbiAgIDg6XHRcbiAgIDk6XHRjb25maWcgT0NURU9OVFgyX0FGXG4gIDEwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4gIDExOlx0XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbiAgMTI6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxMzpcdFx0ZGVwZW5kcyBvbiAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcbiAgMTQ6XHRcdGRlcGVuZHMgb24gUENJXG4gIDE1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXG4gIDE4Olx0XHQgIFVuaXQmIzM5O3MgYWRtaW4gZnVuY3Rpb24gbWFuYWdlciB3aGljaCBtYW5hZ2VzIGFsbCBSVlUgSFcgcmVzb3VyY2VzXG4gIDE5Olx0XHQgIGFuZCBwcm92aWRlcyBhIG1lZGl1bSB0byBvdGhlciBQRi9WRnMgdG8gY29uZmlndXJlIEhXLiBTaG91bGQgYmVcbiAgMjA6XHRcdCAgZW5hYmxlZCBmb3Igb3RoZXIgUlZVIGRldmljZSBkcml2ZXJzIHRvIHdvcmsuXG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXG4gIDIzOlx0XHRib29sIFwmIzM0O0Rpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXCYjMzQ7XG4gIDI0Olx0XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxuICAyNTpcdFx0ZGVmYXVsdCBuXG4gIDI2Olx0XHRoZWxwXG4gIDI3Olx0XHQgIFRoaXMgY29uZmlnIG9wdGlvbiBkaXNhYmxlcyBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBzdWNoIGFzIE5JWCBTUUVzXG4gIDI4Olx0XHQgICwgTlBBIHN0YWNrIHBhZ2VzIGV0YyBpbiBOREMuIEFsc28gbG9ja3MgZG93biBOSVggU1EvQ1EvUlEvUlNTIGFuZFxuICAyOTpcdFx0ICBOUEEgQXVyYS9Qb29sIGNvbnRleHRzLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBPQ1RFT05UWDJfUEZcbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgMzM6XHRcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuICAzNDpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDM1Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDM2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4gIDM3Olx0XHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuICAzODpcdFx0c2VsZWN0IERJTUxJQlxuICAzOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNDA6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNDE6XHRcdGRlcGVuZHMgb24gTUFDU0VDIHx8ICFNQUNTRUNcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxuICA0NDpcdFxuICA0NTpcdGNvbmZpZyBPQ1RFT05UWDJfVkZcbiAgNDY6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuICA0NzpcdFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDIHZpcnR1YWwgZnVuY3Rpb24uXG4gIDUwOlx0XG4gIDUxOlx0Y29uZmlnIFJWVV9FU1dJVENIXG4gIDUyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gIDUzOlx0XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxuICA1NDpcdFx0ZGVmYXVsdCBtXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgUlZVIEUtU3dpdGNoIHRoYXRcbiAgNTc6XHRcdCAgcHJvdmlkZXMgaW50ZXJuYWwgU1JJT1YgcGFja2V0IHN0ZWVyaW5nIGFuZCBzd2l0Y2hpbmcuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MTYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgaXNfcGZfY2d4bWFwcGVkYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgaXNfcGZfY2d4bWFwcGVkYCBmdW5jdGlvbiwgYW5kIHRoZSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UgYW5kIHVzYWdlLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBtZWFucyB0cmFjaW5nIGl0cyBjYWxscyBhbmQgbG9va2luZyBhdCBpdHMgZGVmaW5pdGlvbi4gU28sIGxldCYjMzk7cyBnZXQgYSBoYW5kbGUgb24gd2hlcmUgaXQmIzM5O3MgYWN0dWFsbHkgYmVpbmcgKnVzZWQqIHdpdGhpbiB0aGUgY29kZWJhc2UuIEkmIzM5O2xsIGZpcmUgdXAgZ3JlcC4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gdG9vbCBmb3IgdGhpcyBraW5kIG9mIHF1aWNrIGFuYWx5c2lzLiBXZSYjMzk7bGwgZmVlZCBpdCB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgbGV0IGl0IHNjb3VyIGZvciBldmVyeSBpbnN0YW5jZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kIGFuZCB3aGVyZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpc19wZl9jZ3htYXBwZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbnBjLmM9NDM0Nz1ib29sIG5wY19pc19jZ3hfb3JfbGJrKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYy00MzQ4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL25wYy5jOjQzNDk6XHRyZXR1cm4gaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYy00MzUwLVx0XHRpc19sYmtfdmYocnZ1LCBwY2lmdW5jKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz03OTA9c3RhdGljIHZvaWQgcnZ1X3NldHVwX3BmdmZfbWFjYWRkcmVzcyhzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtODAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6ODAyOlx0XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTgwMy1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0xNTE1PWludCBydnVfZ2V0X25peF9ibGthZGRyKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTUyMy1cdC8qIEFsbCBDR1ggbWFwcGVkIFBGcyBhcmUgc2V0IHdpdGggYXNzaWduZWQgTklYIGJsb2NrIGR1cmluZyBpbml0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzoxNTI0Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTUyNS1cdFx0YmxrYWRkciA9IHBmLVx1MDAzZW5peF9ibGthZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oPTk2MD1zdGF0aWMgaW5saW5lIGludCBydnVfZ2V0X3BmKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1MTYgcGNpZnVuYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05NzAtLyogQ0dYIEFQSXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjk3MTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfcGZfY2d4bWFwcGVkKHN0cnVjdCBydnUgKnJ2dSwgdTggcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05NzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oPTk4Nj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfY2d4X3ZmKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtOTg4LVx0cmV0dXJuICgocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjk4OTpcdFx0aXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk5MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTQ0PWJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6NDk6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy01MC1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTQ1Nz1pbmxpbmUgYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00NTktXHRpZiAoKHBjaWZ1bmMgXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0NjA6XHQgICAgIWlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00NjEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDY1PXZvaWQgcnZ1X2NneF9lbmFkaXNfcnhfYnAoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6NDcxOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDcyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTY4MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfbWFjX2FkZHJfc2V0KHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNjg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjY4ODpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTY4OS1cdFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTc3MT1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfbWFjX2FkZHJfZ2V0KHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNzc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjc3NzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcmVxLVx1MDAzZWhkci5wY2lmdW5jKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNzc4LVx0XHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9ODIzPXN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04MzYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo4Mzc6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04MzgtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTg1OT1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfcHRwX3J4X2VuYWJsZShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTg2MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6ODYyOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCByZXEtXHUwMDNlaGRyLnBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjMtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTkwOT1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfZ2V0X2xpbmtpbmZvKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjkxNzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkxOC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTkyNz1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfZmVhdHVyZXNfZ2V0KHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjkzNTpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkzNi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEwMDE9aW50IHJ2dV9jZ3hfY2ZnX3BhdXNlX2ZybShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1OCB0eF9wYXVzZSwgdTggcnhfcGF1c2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMDE1Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTAxNi1cdFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEwNDA9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2NmZ19wYXVzZV9mcm0oc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMDUyLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA1MzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwNTQtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDY4PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfcGh5X2ZlY19zdGF0cyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA3NDpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwNzUtXHRcdHJldHVybiBMTUFDX0FGX0VSUl9QRl9OT1RfTUFQUEVEO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTI2PWludCBydnVfY2d4X3N0YXJ0X3N0b3BfaW8oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBzdGFydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTEzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTMxOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTEzMi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTExNzM9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3NldF9mZWNfcGFyYW0oc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjExODA6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTgxLVx0XHRyZXR1cm4gLUVQRVJNO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTkwPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfYXV4X2xpbmtfaW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTE5OTpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyMDAtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEyNzc9aW50IHJ2dV9jZ3hfcHJpb19mbG93X2N0cmxfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU4IHR4X3BhdXNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjg4LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTI4OTpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyOTAtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMzE0PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcmlvX2Zsb3dfY3RybF9jZmcoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzI2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTMyNzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzMjgtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMzQxPXZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEzNDg6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzQ5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzNjY9Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTM3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMzc3Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTM3OC1cdFx0cmV0dXJuIHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzOTg9Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTE0MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTQwNjpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTE0MDctXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTgyMj1zdGF0aWMgaW50IHJ2dV9kYmdfcnZ1X3BmX2NneF9tYXBfZGlzcGxheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbHAsIHZvaWQgKnVudXNlZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTg0Ni1cdGZvciAocGYgPSAwOyBwZiBcdTAwM2MgcnZ1LVx1MDAzZWh3LVx1MDAzZXRvdGFsX3BmczsgcGYmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjg0NzpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTg0OC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzQwPXN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1Mi1cdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzUzOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU0LVx0ICAgIHR5cGUgIT0gTklYX0lOVEZfVFlQRV9TRFApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTU5NT1zdGF0aWMgaW50IG5peF9icF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNjA5LVx0dHlwZSA9IGlzX2xia192ZihydnUsIHBjaWZ1bmMpID8gTklYX0lOVEZfVFlQRV9MQksgOiBOSVhfSU5URl9UWVBFX0NHWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo2MTA6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgdHlwZSAhPSBOSVhfSU5URl9UWVBFX0xCSylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy02MTEtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz03NDE9c3RhdGljIGludCBuaXhfYnBfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNzU5LVx0LyogRW5hYmxlIGJhY2twcmVzc3VyZSBvbmx5IGZvciBDR1ggbWFwcGVkIFBGcyBhbmQgTEJLL1NEUCBpbnRlcmZhY2UgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo3NjA6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgdHlwZSAhPSBOSVhfSU5URl9UWVBFX0xCSyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy03NjEtXHQgICAgdHlwZSAhPSBOSVhfSU5URl9UWVBFX1NEUClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MTUxMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNzAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjE3MDI6XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE3MDMtXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjExMj1zdGF0aWMgaW50IG5peF9nZXRfdHhfbGluayhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yMTE5LVx0XHRyZXR1cm4gaHctXHUwMDNlY2d4X2xpbmtzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjIxMjA6XHR9IGVsc2UgaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMjEtXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjEyOT1zdGF0aWMgdm9pZCBuaXhfZ2V0X3R4c2NocV9yYW5nZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yMTM4LVx0XHQqZW5kID0gKnN0YXJ0ICYjNDM7IGh3LVx1MDAzZWNhcC5uaXhfdHhzY2hfcGVyX2xia19sbWFjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjIxMzk6XHR9IGVsc2UgaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkgeyAvKiBDR1ggbGlua3MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yMTQwLVx0XHQqc3RhcnQgPSBody1cdTAwM2VjYXAubml4X3R4c2NoX3Blcl9jZ3hfbG1hYyAqIGxpbms7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTI0ODY9c3RhdGljIGludCBuaXhfc21xX2ZsdXNoKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI1MDQtXHQvKiBlbmFibGUgY2d4IHR4IGlmIGRpc2FibGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjUwNTpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yNTA2LVx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTI4Nzk9dm9pZCBydnVfbml4X3R4X3RsMl9jZmcoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgdTE2IHBjaWZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI4ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6Mjg4ODpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiAhaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI4ODktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzU2OD12b2lkIG5peF9nZXRfbWNlX2xpc3Qoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1NzQtXHRpZiAoIWh3LVx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0IHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzU3NTpcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNTc2LVx0XHRcdCAgICAgcGNpZnVuYyBcdTAwMjYgflJWVV9QRlZGX0ZVTkNfTUFTSykpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM2MDA9c3RhdGljIGludCBuaXhfdXBkYXRlX21jZV9ydWxlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM2MTYtXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjM2MTc6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE4LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NDY4ND1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfc2V0X2h3X2ZycyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBuaXhfZnJzX2NmZyAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy00NzI0LVx0LyogQ2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgZnJvbSBDR1ggbWFwcGVkIFJWVSBQRiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjQ3MjU6XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNDcyNi1cdFx0LyogR2V0IENHWCBhbmQgTE1BQyB0byB3aGljaCB0aGlzIFBGIGlzIG1hcHBlZCBhbmQgZmluZCBsaW5rICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzMjI9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX3N0YXJ0X3J4KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTM0NS1cdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NTM0NjpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IHJ2dS1cdTAwM2VyZXBfbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01MzQ3LVx0XHRydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHJ2dSwgcGNpZnVuYywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzNTI9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX3N0b3Bfcngoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01Mzc3LVx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1Mzc4Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgcnZ1LVx1MDAzZXJlcF9tb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNzktXHRcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzODU9dm9pZCBydnVfbml4X2xmX3RlYXJkb3duKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBibGthZGRyLCBpbnQgbml4bGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTU0MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NTQwNzpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IHJ2dS1cdTAwM2VyZXBfbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01NDA4LVx0XHRydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHJ2dSwgcGNpZnVuYywgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYz03ODI9dm9pZCBydnVfbnBjX2luc3RhbGxfcHJvbWlzY19lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy04NDktXHRpZiAoaHctXHUwMDNlY2FwLm5peF9yeF9tdWx0aWNhc3QgXHUwMDI2XHUwMDI2IHBmdmYtXHUwMDNldXNlX21jZV9saXN0IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jOjg1MDpcdCAgICBpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy04NTEtXHRcdCoodTY0ICopXHUwMDI2YWN0aW9uID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM9NDIyOD1pbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy00Mjc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jOjQyNzc6XHRcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMtNDI3OC1cdFx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9MTIwPWludCBydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM6MTI1Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMTI2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9MzIyPWludCBydnVfcmVwX2luc3RhbGxfbWNhbV9ydWxlcyhzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTMzMi1cdGZvciAocGYgPSAxOyBwZiBcdTAwM2MgaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzozMzM6XHRcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTMzNC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9NDQ2PWludCBydnVfbWJveF9oYW5kbGVyX2dldF9yZXBfY250KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtNDYxLVx0Zm9yIChwZiA9IDA7IHBmIFx1MDAzYyBydnUtXHUwMDNlaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzo0NjI6XHRcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTQ2My1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmM9ODM9c3RhdGljIGludCBydnVfc3dpdGNoX2luc3RhbGxfcnVsZXMoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYy05Mi1cdGZvciAocGYgPSAxOyBwZiBcdTAwM2MgaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzo5MzpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTQtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jPTIxNz12b2lkIHJ2dV9zd2l0Y2hfZGlzYWJsZShzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTIzNS1cdGZvciAocGYgPSAxOyBwZiBcdTAwM2MgaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzoyMzY6XHRcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTIzNy1cdFx0XHRjb250aW51ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQyOAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIEN1cnJlbnQgQ29tbWl0KioKCk9rYXksIHRpbWUgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoaXMgY29tbWl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ3JhYiB0aGUgYGdpdCBsb2dgIHRvIHByb3ZpZGUgc29tZSBjb250ZXh0IGFyb3VuZCB0aGlzIGJ1ZyBmaXggb3IgY2hhbmdlLiBMZXQgbWUgc2VlLi4uIHdlIGRvbiYjMzk7dCBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gYSBgZ2l0IGxvZ2AgdG9vbCwgYXMgSSBleHBlY3RlZCwgc28gSSYjMzk7bGwgbmVlZCB0byB1c2Ugd2hhdCYjMzk7cyBhdmFpbGFibGUuIEVpdGhlciBgZ3JlcHBlcmAgb3IgY2hlY2tpbmcgdGhlIGZpbGUgY29udGV4dCBzaG91bGQgYmUgc3VmZmljaWVudC4gSSYjMzk7bGwgcmVhZCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oYCBmaWxlIGFyb3VuZCBsaW5lIDk3MC4gSG9wZWZ1bGx5LCB0aGUgc3Vycm91bmRpbmcgY29kZSB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgc2l0dWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5NjA6XHRzdGF0aWMgaW5saW5lIGludCBydnVfZ2V0X3BmKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1MTYgcGNpZnVuYylcbiA5NjE6XHR7XG4gOTYyOlx0XHRpZiAoaXNfY24yMGsocGRldikpXG4gOTYzOlx0XHRcdHJldHVybiAocGNpZnVuYyBcdTAwM2VcdTAwM2UgUlZVX0NOMjBLX1BGVkZfUEZfU0hJRlQpIFx1MDAyNlxuIDk2NDpcdFx0XHRcdFJWVV9DTjIwS19QRlZGX1BGX01BU0s7XG4gOTY1Olx0XHRlbHNlXG4gOTY2Olx0XHRcdHJldHVybiAocGNpZnVuYyBcdTAwM2VcdTAwM2UgUlZVX09UWDJfUEZWRl9QRl9TSElGVCkgXHUwMDI2XG4gOTY3Olx0XHRcdFx0UlZVX09UWDJfUEZWRl9QRl9NQVNLO1xuIDk2ODpcdH1cbiA5Njk6XHRcbiA5NzA6XHQvKiBDR1ggQVBJcyAqL1xuIDk3MTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19wZl9jZ3htYXBwZWQoc3RydWN0IHJ2dSAqcnZ1LCB1OCBwZilcbiA5NzI6XHR7XG4gOTczOlx0XHRpZiAoIXJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcClcbiA5NzQ6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDk3NTpcdFxuIDk3NjpcdFx0cmV0dXJuIChwZiBcdTAwM2U9IFBGX0NHWE1BUF9CQVNFIFx1MDAyNlx1MDAyNiBwZiBcdTAwM2M9IHJ2dS1cdTAwM2VjZ3hfbWFwcGVkX3BmcykgXHUwMDI2XHUwMDI2XG4gOTc3Olx0XHRcdCFpc19zZHBfcGYocnZ1LCBydnVfbWFrZV9wY2lmdW5jKHJ2dS1cdTAwM2VwZGV2LCBwZiwgMCkpO1xuIDk3ODpcdH1cbiA5Nzk6XHRcbiA5ODA6XHRzdGF0aWMgaW5saW5lIHZvaWQgcnZ1X2dldF9jZ3hfbG1hY19pZCh1OCBtYXAsIHU4ICpjZ3hfaWQsIHU4ICpsbWFjX2lkKVxuIDk4MTpcdHtcbiA5ODI6XHRcdCpjZ3hfaWQgPSAobWFwIFx1MDAzZVx1MDAzZSA0KSBcdTAwMjYgMHhGO1xuIDk4MzpcdFx0KmxtYWNfaWQgPSAobWFwIFx1MDAyNiAweEYpO1xuIDk4NDpcdH1cbiA5ODU6XHRcbiA5ODY6XHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfY2d4X3ZmKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4gOTg3Olx0e1xuIDk4ODpcdFx0cmV0dXJuICgocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSBcdTAwMjZcdTAwMjZcbiA5ODk6XHRcdFx0aXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpKTtcbiA5OTA6XHR9XG4gOTkxOlx0XG4gOTkyOlx0I2RlZmluZSBNKF9uYW1lLCBfaWQsIGZuX25hbWUsIHJlcSwgcnNwKVx0XHRcdFx0XFxcbiA5OTM6XHRpbnQgcnZ1X21ib3hfaGFuZGxlcl8gIyMgZm5fbmFtZShzdHJ1Y3QgcnZ1ICosIHN0cnVjdCByZXEgKiwgc3RydWN0IHJzcCAqKTtcbiA5OTQ6XHRNQk9YX01FU1NBR0VTXG4gOTk1Olx0I3VuZGVmIE1cbiA5OTY6XHRcbiA5OTc6XHQvKiBNYm94IEFQSXMgKi9cbiA5OTg6XHR2b2lkIHJ2dV9xdWV1ZV93b3JrKHN0cnVjdCBtYm94X3dxX2luZm8gKm13LCBpbnQgZmlyc3QsXG4gOTk5Olx0XHRcdCAgICBpbnQgbWRldnMsIHU2NCBpbnRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0NTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgT0NURU9OVFgyX0FGIERyaXZlciYjMzk7cyBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBhdCBoYW5kIGlzIHdoZXRoZXIgdGhlIGBPQ1RFT05UWDJfQUZgIGRyaXZlciBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgT0NURU9OVFgyX0FGYCAqaXMqLiBBaCwgaXQmIzM5O3MgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIE5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIGZ1enppbmcgY3JpdGVyaWEg4oCTIHNwZWNpZmljYWxseSwgd2hlbiB3ZSAqc2hvdWxkbiYjMzk7dCogZnV6eiwgdGhlICYjMzQ7bmVnYXRpdmUgY3JpdGVyaWEuJiMzNDsgU2VjdGlvbiAyLCBhbHJpZ2h0LgoKSXQgc2F5cyB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gY2VydGFpbiBjYXRlZ29yaWVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBhdCAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4mIzM0OyBUaGlzIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzICpub3QqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuCgpUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBoZXJlIGlzIGBhbWQ2NGAuIExvb2tpbmcgYXQgdGhlIEtjb25maWcsIHRoZSBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiwgaXQgZGVwZW5kcyBvbiBgKDY0QklUICZhbXA7JmFtcDsgQ09NUElMRV9URVNUKSB8fCBBUk02NGAgYW5kIGFsc28gb24gYFBDSWAuIEEgbGlnaHRidWxiIGp1c3Qgd2VudCBvZmYhIElzIHRoaXMgTWFydmVsbCBPY3Rlb25UWDIgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgb3IgU29DIHRoYXQgYWJzb2x1dGVseSBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZT8gTGV0JiMzOTtzIGludmVzdGlnYXRlLgoKT2theSwgSSBzZWUgYFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGIDB4QTA2NWAgYW5kIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAuIEJpbmdvLiBUaGUgdmVuZG9yIGlzIENhdml1bSwgYW5kIHRoYXQgY29uZmlybXMgaXQmIzM5O3MgTWFydmVsbCBoYXJkd2FyZS4gQ2FuIHN0YW5kYXJkIFFFTVUgZW11bGF0ZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQUY/IERlZmluaXRlbHkgbm90LiBRRU1VIG9mZmVycyB2aXJ0aW8tbmV0LCBlMTAwMCwgYW5kIG90aGVycywgYnV0ICpubyogQ2F2aXVtIE9jdGVvblRYMiBlbXVsYXRpb24uIEZ1cnRoZXJtb3JlLCBpdCYjMzk7cyBhbiBBUk02NCBuZXR3b3JrIHByb2Nlc3NvciAoQ045SywgQ04xMEssIENOMjBLIFNvQykuIEl0ICpvbmx5KiBjb21waWxlcyBvbiB4ODYvYW1kNjQgaWYgYENPTkZJR19DT01QSUxFX1RFU1RgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIGEgYmlnIGhpbnQuIEluIGEgcmVhbC13b3JsZCBzY2VuYXJpbywgT2N0ZW9uVFgyIHJ1bnMgb24gdGhlIEFSTTY0IGNvcmVzIG9mIHRoZSBPY3Rlb25UWDIgU29DIG9yIGlzIGEgUENJIGRldmljZS4KClNvLCB0aGUgbmV4dCBvYnZpb3VzIHF1ZXN0aW9uOiBJcyB0aGVyZSBhbnkga2luZCBvZiB2aXJ0dWFsIGRldmljZSwgbG9vcGJhY2ssIG9yIG1vY2sgZGV2aWNlIGltcGxlbWVudGF0aW9uIGZvciBNYXJ2ZWxsIE9jdGVvblRYMiB3aXRoaW4gdGhlIGtlcm5lbD8gUHJvYmFibHkgbm90LiBJdCYjMzk7cyBhIHNwZWNpYWxpemVkIHBpZWNlIG9mIGhhcmR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LCBidXQgYmFzZWQgb24gZXZlcnl0aGluZyBJIHNlZSBzbyBmYXIsIHRoaXMgY2xlYXJseSBmaXRzIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz00ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo0NTpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00Ni1cdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzQ0Nz1pbnQgcnZ1X2dldF9udW1fbGJrX2NoYW5zKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0NzE6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXHQweEEwRjhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNDczPXN0YXRpYyBpbnQgcnZ1X2VuYWJsZV9zcmlvdihzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0OTU6XHRpZiAocnZ1LVx1MDAzZXZmX2RldmlkID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0OTYtXHRcdGNoYW5zID0gcnZ1X2dldF9udW1fbGJrX2NoYW5zKCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI0OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXHRcdDB4QTA2NVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjUtI2RlZmluZVx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcdFx0XHQweEEwNjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI4MDY9c3RhdGljIHZvaWQgcnZ1X2RiZ19ucGFfaW5pdChzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODI1LS8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLVx1MDAzZWlfcHJpdmF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODI2OiAqIHBvaW50cyBoZXJlIHNvIHNlcV9maWxlIG9wcyBhdm9pZCBwY2lfZ2V0X2RldmljZShQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4MjctICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDQtI2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRlx0XHQweEEwNjRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjQ1OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRlx0XHQweEEwRjhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1OTk6XHRyZXR1cm4gKHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MDAtXHRcdChwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfUlZVX1JFUCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzoyMzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjQtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk3OQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRGlzc2VjdGluZyB0aGUgYHJ2dV9wcm9iZWAgYW5kIFJlZ2lzdHJhdGlvbiBQcm9jZXNzKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBydnVfcHJvYmVgIGZ1bmN0aW9uIG9wZXJhdGVzIGFuZCwgY3J1Y2lhbGx5LCBob3cgaXQgZ2V0cyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgYHJ2dS5jYCBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGF0IGZpbGUsIGBydnUuY2AsIGFuZCB6ZXJvIGluIG9uIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgZmxvdyBhbmQgZmlndXJlIG91dCB0aGUgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbeKAlGlzIGl0IGEgc2ltcGxlIGZ1bmN0aW9uIHBvaW50ZXIgcGFzc2VkIHRvIGEgZHJpdmVyIGZyYW1ld29yaywgb3Igc29tZXRoaW5nIG1vcmUgaW50cmljYXRlPyBLbm93aW5nIHRoaXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBhbmQgcHJvYmluZyBhcmUgaGFuZGxlZC4gSSBleHBlY3QgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGRldGFpbHMgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0c3RhdGljIGlycXJldHVybl90IHJ2dV9tYm94X3BmX2ludHJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpydnVfaXJxKTtcbiAgNDE6XHRzdGF0aWMgaXJxcmV0dXJuX3QgcnZ1X21ib3hfaW50cl9oYW5kbGVyKGludCBpcnEsIHZvaWQgKnJ2dV9pcnEpO1xuICA0MjpcdFxuICA0MzpcdC8qIFN1cHBvcnRlZCBkZXZpY2VzICovXG4gIDQ0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0ge1xuICA0NTpcdFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcbiAgNDY6XHRcdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXG4gIDQ3Olx0fTtcbiAgNDg6XHRcbiAgNDk6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O1N1bmlsIEdvdXRoYW0gXHUwMDNjc2dvdXRoYW1AbWFydmVsbC5jb21cdTAwM2VcJiMzNDspO1xuICA1MDpcdE1PRFVMRV9ERVNDUklQVElPTihEUlZfU1RSSU5HKTtcbiAgNTE6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuICA1MjpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydnVfaWRfdGFibGUpO1xuICA1MzpcdFxuICA1NDpcdHN0YXRpYyBjaGFyICpta2V4X3Byb2ZpbGU7IC8qIE1LRVggcHJvZmlsZSBuYW1lICovXG4gIDU1Olx0bW9kdWxlX3BhcmFtKG1rZXhfcHJvZmlsZSwgY2hhcnAsIDAwMDApO1xuICA1NjpcdE1PRFVMRV9QQVJNX0RFU0MobWtleF9wcm9maWxlLCBcJiMzNDtNS0VYIHByb2ZpbGUgbmFtZSBzdHJpbmdcJiMzNDspO1xuICA1NzpcdFxuICA1ODpcdHN0YXRpYyBjaGFyICprcHVfcHJvZmlsZTsgLyogS1BVIHByb2ZpbGUgbmFtZSAqL1xuICA1OTpcdG1vZHVsZV9wYXJhbShrcHVfcHJvZmlsZSwgY2hhcnAsIDAwMDApO1xuICA2MDpcdE1PRFVMRV9QQVJNX0RFU0Moa3B1X3Byb2ZpbGUsIFwmIzM0O0tQVSBwcm9maWxlIG5hbWUgc3RyaW5nXCYjMzQ7KTtcbiAgNjE6XHRcbiAgNjI6XHRzdGF0aWMgdm9pZCBydnVfc2V0dXBfaHdfY2FwYWJpbGl0aWVzKHN0cnVjdCBydnUgKnJ2dSlcbiAgNjM6XHR7XG4gIDY0Olx0XHRzdHJ1Y3QgcnZ1X2h3aW5mbyAqaHcgPSBydnUtXHUwMDNlaHc7XG4gIDY1Olx0XG4gIDY2Olx0XHRody1cdTAwM2VjYXAubml4X3R4X2FnZ3JfbHZsID0gTklYX1RYU0NIX0xWTF9UTDE7XG4gIDY3Olx0XHRody1cdTAwM2VjYXAubml4X2ZpeGVkX3R4c2NocV9tYXBwaW5nID0gZmFsc2U7XG4gIDY4Olx0XHRody1cdTAwM2VjYXAubml4X3NoYXBpbmcgPSB0cnVlO1xuICA2OTpcdFx0aHctXHUwMDNlY2FwLm5peF90eF9saW5rX2JwID0gdHJ1ZTtcbiAgNzA6XHRcdGh3LVx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0ID0gdHJ1ZTtcbiAgNzE6XHRcdGh3LVx1MDAzZWNhcC5uaXhfc2hhcGVyX3RvZ2dsZV93YWl0ID0gZmFsc2U7XG4gIDcyOlx0XHRody1cdTAwM2VjYXAubnBjX2hhc2hfZXh0cmFjdCA9IGZhbHNlO1xuICA3MzpcdFx0aHctXHUwMDNlY2FwLm5wY19leGFjdF9tYXRjaF9lbmFibGVkID0gZmFsc2U7XG4gIDc0Olx0XHRody1cdTAwM2VydnUgPSBydnU7XG4gIDc1Olx0XG4gIDc2Olx0XHRpZiAoaXNfcnZ1X3ByZV85Nnh4X0MwKHJ2dSkpIHtcbiAgNzc6XHRcdFx0aHctXHUwMDNlY2FwLm5peF9maXhlZF90eHNjaHFfbWFwcGluZyA9IHRydWU7XG4gIDc4Olx0XHRcdGh3LVx1MDAzZWNhcC5uaXhfdHhzY2hfcGVyX2NneF9sbWFjID0gNDtcbiAgNzk6XHRcdFx0aHctXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfbGJrX2xtYWMgPSAxMzI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTg1CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBydnUuYyBEcml2ZXIqKgoKT2theSwgc28gYHJ2dS5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0JiMzOTtzIGEgUENJIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpZGVudGlmaWVkIGFzIGEgQ2F2aXVtIGRldmljZSwgc3BlY2lmaWNhbGx5IHRoZSBPY3Rlb24gVFgyIFJWVSBBRiwgYmFzZWQgb24gdGhlIGBQQ0lfREVWSUNFYCBtYWNybyBkZWZpbmluZyB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciB3b3JrcywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBydnVfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIG1hZ2ljIGxpa2VseSBoYXBwZW5zLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9wY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMzkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTmF2aWdhdGluZyB0aGUgUENJIERyaXZlciBMYW5kc2NhcGUgaW4gUlZVKioKCk9rYXksIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZHJpdmVyIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGZvciB0aGUgUENJIGRldmljZXMgd2l0aGluIHRoZSBSVlUgY29kZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGUga2V5IHdpbGwgbGllIHdpdGhpbiBlaXRoZXIgdGhlIGBtb2R1bGVfcGNpX2RyaXZlcmAgbWFjcm8gb3IsIG1vcmUgZGlyZWN0bHksIHRoZSBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgZnVuY3Rpb24gY2FsbC4gSSBuZWVkIHRvIHF1aWNrbHkgbG9jYXRlIHdoZXJlIHRoZXNlIGFyZSB1c2VkIHdpdGhpbiBgcnZ1LmNgLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBhbmQgYXR0YWNobWVudCBvZiB0aGUgUENJIGRyaXZlciBpcyBoYW5kbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0NDMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTG9jYXRpbmcgdGhlIFBDSSBEcml2ZXIgaW4gcnZ1LmMqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGBwY2lfZHJpdmVyYCBzdHJ1Y3R1cmUgd2l0aGluIGBydnUuY2AuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgc2luY2UgaXQmIzM5O3MgYW4gYHJ2dWAgZmlsZSwgd2UmIzM5O3JlIGxpa2VseSBkZWFsaW5nIHdpdGggc29tZSBraW5kIG9mIHN5c3RlbS1sZXZlbCBvciBoYXJkd2FyZSBhYnN0cmFjdGlvbi4gVGhlIGBwY2lfZHJpdmVyYCBzdHJ1Y3R1cmUgaXMgZnVuZGFtZW50YWwgZm9yIGFueSBQQ0kgZGV2aWNlIGludGVyYWN0aW9uLCBzbyBpdCBuZWVkcyB0byBiZSBsb2NhdGVkLiBNeSBnb2FsIG5vdyBpcyB0byBxdWlja2x5IG5hdmlnYXRlIHRvIHRoZSBzb3VyY2UgY29kZSBhbmQgcGlucG9pbnQgd2hlcmUgdGhpcyBkcml2ZXIgaXMgZGVmaW5lZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBgcnZ1YCBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIHN5c3RlbS4gVGltZSB0byBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jPTIwNjA9c3RhdGljIHZvaWQgY2d4X3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmM6MjA3NDpzdHJ1Y3QgcGNpX2RyaXZlciBjZ3hfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMtMjA3NS1cdC5uYW1lID0gRFJWX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg9MTMyPXN0cnVjdCBjZ3hfZXZlbnRfY2Ige1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTEzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oOjEzNzpleHRlcm4gc3RydWN0IHBjaV9kcml2ZXIgY2d4X2RyaXZlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTEzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuYz0xNjA5PXN0YXRpYyB2b2lkIG1jc19yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmMtMTYyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jOjE2MjI6c3RydWN0IHBjaV9kcml2ZXIgbWNzX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MjMtXHQubmFtZSA9IERSVl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oPTE1NT1zdHJ1Y3QgbWNzX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmgtMTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmg6MTY1OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmgtMTY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjEyOnN0cnVjdCBwY2lfZHJpdmVyIHB0cF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MTMtXHQubmFtZSA9IERSVl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oPTI5PXZvaWQgcHRwX3N0YXJ0KHN0cnVjdCBydnUgKnJ2dSwgdTY0IHNjbGssIHUzMiBleHRfY2xrX2ZyZXEsIHUzMiBleHR0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaC0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oOjMxOmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBwdHBfZHJpdmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmgtMzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9Mzc0Mz1zdGF0aWMgdm9pZCBydnVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzc1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM3NTM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNzU0LVx0Lm5hbWUgPSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTM1MDk9c3RhdGljIHZvaWQgb3R4Ml9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zNTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYzozNTcyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBvdHgyX3BmX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMtMzU3My1cdC5uYW1lID0gRFJWX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz04MTc9c3RhdGljIHZvaWQgb3R4MnZmX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6ODY3OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBvdHgydmZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYy04NjgtXHQubmFtZSA9IERSVl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYz04NDM9c3RhdGljIHZvaWQgcnZ1X3JlcF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3JlcC5jLTg2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYzo4NjE6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9yZXBfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3JlcC5jLTg2Mi1cdC5uYW1lID0gRFJWX05BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjA0CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSVlUgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgYHJ2dV9kcml2ZXJgLiBSaWdodCBvZmYgdGhlIGJhdCwgaXQmIzM5O3MgYSBQQ0kgZHJpdmVyLiBJIGNhbiB0ZWxsIGJlY2F1c2Ugb2YgdGhlIG5hbWluZyBjb252ZW50aW9uLCBhbmQgb2YgY291cnNlLCBiZWNhdXNlIG9mIHRoZSBjb250ZXh0IEkmIzM5O20gd29ya2luZyBpbi4gVGhlIHZlbmRvciBJRCBpcyBgUENJX1ZFTkRPUl9JRF9DQVZJVU1gICgweDE3N2QpLiBBaCwgQ2F2aXVtLCB0aGF0IGJyaW5ncyBiYWNrIG1lbW9yaWVzLiBBbmQgdGhlIGRldmljZSBJRCBpcyBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgICgweGEwNjUpLiBUaGF0IGNsZWFybHkgcG9pbnRzIHRvIGFuIE9jdGVvbiBUWDIgUlZVIEFGIGRldmljZS4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGUgYHJ2dV9pbml0X21vZHVsZWAgZnVuY3Rpb24uIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgc2VlIHdoYXQga2luZCBvZiByZWdpc3RlciBtYXBwaW5ncyBhbmQgaGFyZHdhcmUgc2V0dXAgdGhpcyBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzUwOlx0XHRydnVfY2xlYXJfcnZ1bV9ibGtfcmV2aWQocnZ1KTtcbjM3NTE6XHR9XG4zNzUyOlx0XG4zNzUzOlx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XG4zNzU0Olx0XHQubmFtZSA9IERSVl9OQU1FLFxuMzc1NTpcdFx0LmlkX3RhYmxlID0gcnZ1X2lkX3RhYmxlLFxuMzc1NjpcdFx0LnByb2JlID0gcnZ1X3Byb2JlLFxuMzc1NzpcdFx0LnJlbW92ZSA9IHJ2dV9yZW1vdmUsXG4zNzU4Olx0XHQuc2h1dGRvd24gPSBydnVfc2h1dGRvd24sXG4zNzU5Olx0fTtcbjM3NjA6XHRcbjM3NjE6XHRzdGF0aWMgaW50IF9faW5pdCBydnVfaW5pdF9tb2R1bGUodm9pZClcbjM3NjI6XHR7XG4zNzYzOlx0XHRpbnQgZXJyO1xuMzc2NDpcdFxuMzc2NTpcdFx0cHJfaW5mbyhcJiMzNDslczogJXNcXG5cJiMzNDssIERSVl9OQU1FLCBEUlZfU1RSSU5HKTtcbjM3NjY6XHRcbjM3Njc6XHRcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2Y2d4X2RyaXZlcik7XG4zNzY4Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuMzc2OTpcdFx0XHRyZXR1cm4gZXJyO1xuMzc3MDpcdFxuMzc3MTpcdFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZwdHBfZHJpdmVyKTtcbjM3NzI6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4zNzczOlx0XHRcdGdvdG8gcHRwX2VycjtcbjM3NzQ6XHRcbjM3NzU6XHRcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWNzX2RyaXZlcik7XG4zNzc2Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuMzc3NzpcdFx0XHRnb3RvIG1jc19lcnI7XG4zNzc4Olx0XG4zNzc5Olx0XHRlcnIgPSAgcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZydnVfZHJpdmVyKTtcbjM3ODA6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4zNzgxOlx0XHRcdGdvdG8gcnZ1X2VycjtcbjM3ODI6XHRcbjM3ODM6XHRcdHJldHVybiAwO1xuMzc4NDpcdHJ2dV9lcnI6XG4zNzg1Olx0XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWNzX2RyaXZlcik7XG4zNzg2Olx0bWNzX2VycjpcbjM3ODc6XHRcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZwdHBfZHJpdmVyKTtcbjM3ODg6XHRwdHBfZXJyOlxuMzc4OTpcdFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmNneF9kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA5MQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDYyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmlhZ2U6IENvZGUgUmVhY2hhYmlsaXR5IGZvciBPY3Rlb25UWDIgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBnbyB0aHJvdWdoIHRoaXMgY2FyZWZ1bGx5LiBCYXNlZCBvbiB0aGUgdHJpYWdlIGd1aWRlbGluZXMsIHNwZWNpZmljYWxseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmdgLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyAqdW5jb25kaXRpb25hbGx5KiB1bnJlYWNoYWJsZS4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIGRyaXZlciwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIHNheXMgd2Ugc2hvdWxkIG1hcmsgaXQgYXMgbm90IHdvcnRoIGZ1enppbmcgaWYgdGhlIGNvZGUgcmVxdWlyZXMgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCkFscmlnaHQsIHRoZSBPY3Rlb25UWDIgaXMgYSBTbWFydE5JQy9Tb0MgbmV0d29yayBwcm9jZXNzb3IgZnJvbSBDYXZpdW0vTWFydmVsbC4gVGhhdCBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIHN0YXJ0LiBUaGUgcmVsZXZhbnQgZHJpdmVyIGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MmAsIGFuZCBpdCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyB0aGUgUlZVIChSZXNvdXJjZSBWaXJ0dWFsaXphdGlvbiBVbml0KSBBZG1pbiBGdW5jdGlvbiBhbmQgUEYvVkYgZHJpdmVycy4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IGl0IG5lZWRzIHRoZSBhY3R1YWwgT2N0ZW9uVFgyIGhhcmR3YXJlLCBlaXRoZXIgUENJZSBvciBvbi1jaGlwIGRldmljZXMgd2l0aCBhIHZlbmRvciBJRCBvZiBgMHgxNzdkYC4gUUVNVSAqZGVmaW5pdGVseSogZG9lc24mIzM5O3QgZW11bGF0ZSB0aGF0LiBJdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgYXZhaWxhYmxlIG9uIHg4Ni9hbWQ2NCBvciBldmVuIEFSTTY0IFFFTVUuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGV4cGxpY2l0bHkgYGFtZDY0YC4gTm93LCB0aGUgZGVwZW5kZW5jeSBvZiBgT0NURU9OVFgyX0FGYCBvbiBgQ09NUElMRV9URVNUYCBpcyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGUgY29kZSBpc24mIzM5O3QgZWFzaWx5IHBvcnRhYmxlIGFuZCB0aGlzIHJlaW5mb3JjZXMgdGhlIGFzc3VtcHRpb24gb2YgdGhlIGFyY2hpdGVjdHVyZSBkZXBlbmRlbmN5LgoKU28sIGZyb20gYSBoaWdoIGxldmVsLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBzcGVjaWZpYyB2ZW5kb3IgaGFyZHdhcmUg4oCTIHRoZSBPY3Rlb25UWDIgU21hcnROSUMgQVNJQyDigJMgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCk5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIHBhdGNoLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhgLCBzcGVjaWZpY2FsbHkgdGhlIGBpc19wZl9jZ3htYXBwZWRgIGZ1bmN0aW9uLiBUaGUgY29kZSBjaGVja3MgZm9yIGBydnUtJmd0O3BmMmNneGxtYWNfbWFwYCBhbmQgcmV0dXJucyBgZmFsc2VgIGlmIGl0JiMzOTtzIG5vdCBhdmFpbGFibGUuCgpUaGUgY29uY2VybiBoZXJlIGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBjYWxsZWQgZnJvbSAqb3V0c2lkZSogdGhlIGV4cGVjdGVkIE9jdGVvblRYMiBkcml2ZXIgY29udGV4dC4gV2hpbGUgSSBkaWQgYSBgZ3JlcHBlcmAgcnVuIGVhcmxpZXIsIGxldCYjMzk7cyB2ZXJpZnkgdGhhdCBxdWlja2x5IGJ5IHJ1bm5pbmcgYW5vdGhlciBleGhhdXN0aXZlIHNlYXJjaCwgdG8gYmUgYWJzb2x1dGVseSBzdXJlIG5vIG90aGVyIGRyaXZlcnMgb3Igc3lzdGVtIGNvZGUsIHBlcmhhcHMgYnkgZXJyb3Igb3IgaW50ZW50LCBhcmUgY2FsbGluZyB0aGlzLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIGhpZ2hseSBzcGVjaWZpYywgYnV0IGEgdGhvcm91Z2ggY2hlY2sgaXMgYWx3YXlzIHdpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX3BmX2NneG1hcHBlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYz00MzQ3PWJvb2wgbnBjX2lzX2NneF9vcl9sYmsoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL25wYy5jLTQzNDgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbnBjLmM6NDM0OTpcdHJldHVybiBpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL25wYy5jLTQzNTAtXHRcdGlzX2xia192ZihydnUsIHBjaWZ1bmMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTc5MD1zdGF0aWMgdm9pZCBydnVfc2V0dXBfcGZ2Zl9tYWNhZGRyZXNzKHN0cnVjdCBydnUgKnJ2dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy04MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo4MDI6XHRcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtODAzLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTE1MTU9aW50IHJ2dV9nZXRfbml4X2Jsa2FkZHIoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xNTIzLVx0LyogQWxsIENHWCBtYXBwZWQgUEZzIGFyZSBzZXQgd2l0aCBhc3NpZ25lZCBOSVggYmxvY2sgZHVyaW5nIGluaXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjE1MjQ6XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xNTI1LVx0XHRibGthZGRyID0gcGYtXHUwMDNlbml4X2Jsa2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg9OTYwPXN0YXRpYyBpbmxpbmUgaW50IHJ2dV9nZXRfcGYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk3MC0vKiBDR1ggQVBJcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6OTcxOnN0YXRpYyBpbmxpbmUgYm9vbCBpc19wZl9jZ3htYXBwZWQoc3RydWN0IHJ2dSAqcnZ1LCB1OCBwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk3Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg9OTg2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19jZ3hfdmYoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05ODgtXHRyZXR1cm4gKChwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6OTg5Olx0XHRpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtOTkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDQ9Ym9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0OTpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTUwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDU3PWlubGluZSBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ1OS1cdGlmICgocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjQ2MDpcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ2MS1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz00NjU9dm9pZCBydnVfY2d4X2VuYWRpc19yeF9icChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0NzE6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00NzItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NjgwPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy02ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Njg4Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNjg5LVx0XHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NzcxPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9nZXQoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy03NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Nzc3Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCByZXEtXHUwMDNlaGRyLnBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy03NzgtXHRcdHJldHVybiBMTUFDX0FGX0VSUl9QRl9OT1RfTUFQUEVEO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz04MjM9c3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTgzNi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjgzNzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTgzOC1cdFx0cmV0dXJuIC1FUEVSTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9ODU5PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9wdHBfcnhfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtODYxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo4NjI6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHJlcS1cdTAwM2VoZHIucGNpZnVuYykpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTg2My1cdFx0cmV0dXJuIC1FUEVSTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9OTA5PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfbGlua2luZm8oc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy05MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6OTE3Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTE4LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9OTI3PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9mZWF0dXJlc19nZXQoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy05MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6OTM1Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTM2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTAwMT1pbnQgcnZ1X2NneF9jZmdfcGF1c2VfZnJtKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU4IHR4X3BhdXNlLCB1OCByeF9wYXVzZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTAxNC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEwMTU6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMDE2LVx0XHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTA0MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfY2ZnX3BhdXNlX2ZybShzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwNTItXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMDUzOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1NC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEwNjg9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2dldF9waHlfZmVjX3N0YXRzKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMDc0Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3NS1cdFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTExMjY9aW50IHJ2dV9jZ3hfc3RhcnRfc3RvcF9pbyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIHN0YXJ0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjExMzE6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTMyLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTE3Mz1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfc2V0X2ZlY19wYXJhbShzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTE4MDpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExODEtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTExOTA9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2dldF9hdXhfbGlua19pbmZvKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTE5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTk5Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTIwMC1cdFx0cmV0dXJuIC1FUEVSTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTI3Nz1pbnQgcnZ1X2NneF9wcmlvX2Zsb3dfY3RybF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTggdHhfcGF1c2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyODgtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMjg5Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTI5MC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzMTQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzMjYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMzI3Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyOC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzNDE9dm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTM0ODpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTM2Nj1ib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEzNzc6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc4LVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTM5OD1ib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxNDA2Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNy1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9ODIyPXN0YXRpYyBpbnQgcnZ1X2RiZ19ydnVfcGZfY2d4X21hcF9kaXNwbGF5KHN0cnVjdCBzZXFfZmlsZSAqZmlscCwgdm9pZCAqdW51c2VkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ2LVx0Zm9yIChwZiA9IDA7IHBmIFx1MDAzYyBydnUtXHUwMDNlaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6ODQ3Olx0XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ4LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0zNDA9c3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzUyLVx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNTM6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgdHlwZSAhPSBOSVhfSU5URl9UWVBFX0xCSyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNTQtXHQgICAgdHlwZSAhPSBOSVhfSU5URl9UWVBFX1NEUClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTk1PXN0YXRpYyBpbnQgbml4X2JwX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy02MDktXHR0eXBlID0gaXNfbGJrX3ZmKHJ2dSwgcGNpZnVuYykgPyBOSVhfSU5URl9UWVBFX0xCSyA6IE5JWF9JTlRGX1RZUEVfQ0dYO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjYxMDpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiB0eXBlICE9IE5JWF9JTlRGX1RZUEVfTEJLKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTYxMS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTc0MT1zdGF0aWMgaW50IG5peF9icF9lbmFibGUoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy03NTktXHQvKiBFbmFibGUgYmFja3ByZXNzdXJlIG9ubHkgZm9yIENHWCBtYXBwZWQgUEZzIGFuZCBMQksvU0RQIGludGVyZmFjZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjc2MDpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiB0eXBlICE9IE5JWF9JTlRGX1RZUEVfTEJLIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTc2MS1cdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0xNTEyPWludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE3MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTcwMjpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTcwMy1cdFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0yMTEyPXN0YXRpYyBpbnQgbml4X2dldF90eF9saW5rKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMTktXHRcdHJldHVybiBody1cdTAwM2VjZ3hfbGlua3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjEyMDpcdH0gZWxzZSBpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjEyMS1cdFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0yMTI5PXN0YXRpYyB2b2lkIG5peF9nZXRfdHhzY2hxX3JhbmdlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMzgtXHRcdCplbmQgPSAqc3RhcnQgJiM0MzsgaHctXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfbGJrX2xtYWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjEzOTpcdH0gZWxzZSBpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7IC8qIENHWCBsaW5rcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxNDAtXHRcdCpzdGFydCA9IGh3LVx1MDAzZWNhcC5uaXhfdHhzY2hfcGVyX2NneF9sbWFjICogbGluaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjQ4Nj1zdGF0aWMgaW50IG5peF9zbXFfZmx1c2goc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjUwNC1cdC8qIGVuYWJsZSBjZ3ggdHggaWYgZGlzYWJsZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoyNTA1Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI1MDYtXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9Mjg3OT12b2lkIHJ2dV9uaXhfdHhfdGwyX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1MTYgcGNpZnVuYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjg4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoyODg4Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2ICFpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjg4OS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0zNTY4PXZvaWQgbml4X2dldF9tY2VfbGlzdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU3NC1cdGlmICghaHctXHUwMDNlY2FwLm5peF9yeF9tdWx0aWNhc3QgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNTc1Olx0ICAgICFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1NzYtXHRcdFx0ICAgICBwY2lmdW5jIFx1MDAyNiB+UlZVX1BGVkZfRlVOQ19NQVNLKSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzYwMD1zdGF0aWMgaW50IG5peF91cGRhdGVfbWNlX3J1bGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzYxNi1cdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzYxNzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM2MTgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz00Njg0PWludCBydnVfbWJveF9oYW5kbGVyX25peF9zZXRfaHdfZnJzKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5peF9mcnNfY2ZnICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTQ3MjQtXHQvKiBDaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBmcm9tIENHWCBtYXBwZWQgUlZVIFBGICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NDcyNTpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy00NzI2LVx0XHQvKiBHZXQgQ0dYIGFuZCBMTUFDIHRvIHdoaWNoIHRoaXMgUEYgaXMgbWFwcGVkIGFuZCBmaW5kIGxpbmsgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTMyMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfc3RhcnRfcngoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01MzQ1LVx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1MzQ2Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgcnZ1LVx1MDAzZXJlcF9tb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNDctXHRcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTM1Mj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfc3RvcF9yeChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNzctXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjUzNzg6XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiBydnUtXHUwMDNlcmVwX21vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTM3OS1cdFx0cnZ1X3JlcF9ub3RpZnlfcGZ2Zl9zdGF0ZShydnUsIHBjaWZ1bmMsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTM4NT12b2lkIHJ2dV9uaXhfbGZfdGVhcmRvd24oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IGJsa2FkZHIsIGludCBuaXhsZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1NDA3Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgcnZ1LVx1MDAzZXJlcF9tb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTU0MDgtXHRcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jPTc4Mj12b2lkIHJ2dV9ucGNfaW5zdGFsbF9wcm9taXNjX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTg0OS1cdGlmIChody1cdTAwM2VjYXAubml4X3J4X211bHRpY2FzdCBcdTAwMjZcdTAwMjYgcGZ2Zi1cdTAwM2V1c2VfbWNlX2xpc3QgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM6ODUwOlx0ICAgIGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTg1MS1cdFx0Kih1NjQgKilcdTAwMjZhY3Rpb24gPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYz00MjI4PWludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTQyNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM6NDI3NzpcdFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy00Mjc4LVx0XHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYz0xMjA9aW50IHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzoxMjU6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYy0xMjYtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYz0zMjI9aW50IHJ2dV9yZXBfaW5zdGFsbF9tY2FtX3J1bGVzKHN0cnVjdCBydnUgKnJ2dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMzMyLVx0Zm9yIChwZiA9IDE7IHBmIFx1MDAzYyBody1cdTAwM2V0b3RhbF9wZnM7IHBmJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jOjMzMzpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMzM0LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYz00NDY9aW50IHJ2dV9tYm94X2hhbmRsZXJfZ2V0X3JlcF9jbnQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYy00NjEtXHRmb3IgKHBmID0gMDsgcGYgXHUwMDNjIHJ2dS1cdTAwM2Vody1cdTAwM2V0b3RhbF9wZnM7IHBmJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jOjQ2MjpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtNDYzLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYz04Mz1zdGF0aWMgaW50IHJ2dV9zd2l0Y2hfaW5zdGFsbF9ydWxlcyhzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTkyLVx0Zm9yIChwZiA9IDE7IHBmIFx1MDAzYyBody1cdTAwM2V0b3RhbF9wZnM7IHBmJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jOjkzOlx0XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYy05NC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmM9MjE3PXZvaWQgcnZ1X3N3aXRjaF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtMjM1LVx0Zm9yIChwZiA9IDE7IHBmIFx1MDAzYyBody1cdTAwM2V0b3RhbF9wZnM7IHBmJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jOjIzNjpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtMjM3LVx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODUzMAoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgY29kZSBjaGFuZ2UgdGFyZ2V0cyBgaXNfcGZfY2d4bWFwcGVkKClgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AgZGlyZWN0b3J5LiBUaGF0IGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyJiMzNDsgdG8gbWUuIEkga25vdyB0aGF0IGRyaXZlciBwcmV0dHkgd2VsbCwgYW5kIGl0cyBkZXBlbmRlbmN5IG9uIHNwZWNpZmljIGhhcmR3YXJlIGlzIGEga2V5IGRldGFpbC4gSSBjYW4gc2VlIHRoYXQgb25seSBmaWxlcyB3aXRoaW4gdGhhdCBkcml2ZXIgZGlyZWN0b3J5IGFjdHVhbGx5IGRlZmluZSBvciBjYWxsIHRoaXMgZnVuY3Rpb24uCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudC4gVGhpcyBpc24mIzM5O3QganVzdCAqYW55KiBoYXJkd2FyZTsgaXQmIzM5O3Mgc3BlY2lmaWMgTWFydmVsbC9DYXZpdW0gT2N0ZW9uVFgyIGhhcmR3YXJlIHdpdGggYSBQQ0kgZGV2aWNlIElEIG9mIDE3N2Q6YTA2NS4gU3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHM/IEZvcmdldCBhYm91dCBpdC4gVGhleSBkb24mIzM5O3QgZW11bGF0ZSB0aGlzIGtpbmQgb2Ygc3BlY2lhbGl6ZWQgaGFyZHdhcmUuIFRoYXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnLgoKVGhlIGRvY3VtZW50YXRpb24mIzM5O3Mgc2VjdGlvbiBvbiAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IHNlYWxzIHRoZSBkZWFsLiBUaGlzIGZhbGxzICpkaXJlY3RseSogaW50byB0aGF0IGNhdGVnb3J5LiBJdCYjMzk7cyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIHJlcXVpcmluZyBhbiBBU0lDL1BDSWUgY2FyZCB0aGF0IEkmIzM5O20gbm90IGdvaW5nIHRvIGZpbmQgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLiBHaXZlbiB0aGF0LCBJIGNhbiBjb25maWRlbnRseSBjb25jbHVkZSB0aGF0IGZ1enppbmcgdGhpcyBjb2RlIHdpbGwgYmUgZnJ1aXRsZXNzLiBUaGVyZSYjMzk7cyBubyB3YXkgdG8gcmVhY2ggaXQuCgpUaGVyZWZvcmUsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIGRlZmluaXRlbHkgYGZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGxpc3Qgd2lsbCBiZSBlbXB0eSBiZWNhdXNlLCBmcmFua2x5LCB0aGVyZSYjMzk7cyBub3RoaW5nIHRvIGZvY3VzIG9uLiBBbmQgb2YgY291cnNlLCBgRW5hYmxlQ29uZmlnc2AgaXMgZW1wdHksIGFzIHRoZXJlIGFyZSBubyByZWxldmFudCBjb25maWd1cmF0aW9ucy4KClRpbWUgdG8gcHJlcGFyZSB0aGUgdG9vbCBjYWxsIHRvIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaXNfcGZfY2d4bWFwcGVkKCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgsIHdoaWNoIGlzIGludGVybmFsIHRvIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIFBDSWUgLyBTbWFydE5JQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGlzX3BmX2NneG1hcHBlZCgpIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLCB3aGljaCBpcyBpbnRlcm5hbCB0byB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIENhdml1bS9NYXJ2ZWxsIE9jdGVvblRYMiBQQ0llIC8gU21hcnROSUMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6MzYuNjQxODc4MjAyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwOTI1NTg2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpc19wZl9jZ3htYXBwZWQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCwgd2hpY2ggaXMgaW50ZXJuYWwgdG8gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgUENJZSAvIFNtYXJ0TklDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6MzYuNjQxODgyNTQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk2NjA1MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwYjg3ZTI2MzVkNGIxZThiOGU1NTVlZTJiNGQ0Zjc3MjJlNDdlM2Q4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDE1IDAzOjA2OjM1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5pbmRleCAwOTQyMjc0MDRlZjlmLi4xZTBhNWFlYjNmNTc3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5AQCAtOTcwLDYgKzk3MCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJ2dV9nZXRfcGYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBwY2lmdW5jKVxcbiAvKiBDR1ggQVBJcyAqL1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfcGZfY2d4bWFwcGVkKHN0cnVjdCBydnUgKnJ2dSwgdTggcGYpXFxuIHtcXG4rXFx0aWYgKCFydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbiBcXHRyZXR1cm4gKHBmIFxcdTAwM2U9IFBGX0NHWE1BUF9CQVNFIFxcdTAwMjZcXHUwMDI2IHBmIFxcdTAwM2M9IHJ2dS1cXHUwMDNlY2d4X21hcHBlZF9wZnMpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCFpc19zZHBfcGYocnZ1LCBydnVfbWFrZV9wY2lmdW5jKHJ2dS1cXHUwMDNlcGRldiwgcGYsIDApKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNjozNy4xMTIyNzY1NzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYwNjIyMTQ4MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpc19wZl9jZ3htYXBwZWQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCwgd2hpY2ggaXMgaW50ZXJuYWwgdG8gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgUENJZSAvIFNtYXJ0TklDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwYjg3ZTI2MzVkNGIxZThiOGU1NTVlZTJiNGQ0Zjc3MjJlNDdlM2Q4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDM6MDY6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5pbmRleCAwOTQyMjc0MDRlZjlmLi4xZTBhNWFlYjNmNTc3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5AQCAtOTcwLDYgKzk3MCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJ2dV9nZXRfcGYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBwY2lmdW5jKVxuIC8qIENHWCBBUElzICovXG4gc3RhdGljIGlubGluZSBib29sIGlzX3BmX2NneG1hcHBlZChzdHJ1Y3QgcnZ1ICpydnUsIHU4IHBmKVxuIHtcbitcdGlmICghcnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4gXHRyZXR1cm4gKHBmIFx1MDAzZT0gUEZfQ0dYTUFQX0JBU0UgXHUwMDI2XHUwMDI2IHBmIFx1MDAzYz0gcnZ1LVx1MDAzZWNneF9tYXBwZWRfcGZzKSBcdTAwMjZcdTAwMjZcbiBcdFx0IWlzX3NkcF9wZihydnUsIHJ2dV9tYWtlX3BjaWZ1bmMocnZ1LVx1MDAzZXBkZXYsIHBmLCAwKSk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6MzcuMTEyMjc4NTE1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTc3MzkyNzg5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIE9jdGVvblRYMiBOZXR3b3JrIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBUaGUgZGlmZiBpdHNlbGYgaXMgZm9jdXNlZCBvbiBgcnZ1LmhgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlci4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5LiBMb29raW5nIGF0IHRoZSBkaWZmLCBpdCBzZWVtcyBsaWtlIGEgbmV3IGNoZWNrIGhhcyBiZWVuIGFkZGVkIHdpdGhpbiB0aGUgYGlzX3BmX2NneG1hcHBlZGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoYXQgdGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gUEYgaXMgbWFwcGVkIHRvIGEgQ0dYIGxtYWMuIFRoZSBhZGRlZCBjb25kaXRpb25hbCBgIXJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcGAgc3VnZ2VzdHMgYSBuZXcgY29uZmlndXJhdGlvbiBvciBpbml0aWFsaXphdGlvbiBzdGF0ZS4gVGhpcyBpbmRpY2F0ZXMgdGhhdCwgaWYgdGhlIG1hcHBpbmcgaXNuJ3QgZXN0YWJsaXNoZWQsIHRoZSBmdW5jdGlvbiBzaG9ydC1jaXJjdWl0cyBhbmQgYXZvaWRzIHBvdGVudGlhbCBlcnJvcnMuXG5cbk5vdywgbGV0J3MgcGxhY2UgdGhpcyBwYXRjaCBpbiBjb250ZXh0LiBUaGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oYCBwYXRoIHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgT2N0ZW9uVFgyLCBhIE1hcnZlbGwgQVJNNjQgU29DLCBzcGVjaWZpY2FsbHkgdGhlIENOOUsgb3IgQ04xMEsuIFRoaXMgbGlrZWx5IGludm9sdmVzIHNvbWUgTklDIG9yIG5ldHdvcmsgaW50ZXJmYWNlIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBydnVgIHN0cnVjdHVyZSBmaXRzIGluIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuSSB3YW50IHRvIGtub3cgd2hlcmUgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUgZHJpdmVyLCBzbyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlIGZvciB0aGlzIGRpcmVjdG9yeSB0byBzZWUgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIHZhcmlhYmxlIGlzIGluaXRpYWxpemVkLCBhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgdGhpcyBjaGVjay4gSSdsbCBwcm9iYWJseSBncmVwIGZvciBgcGYyY2d4bG1hY19tYXBgIGFjcm9zcyB0aGUgZHJpdmVyIHNvdXJjZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyIGFuZCB3aGF0IHRoaXMgY2hhbmdlIGRvZXMgd2l0aGluIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTY1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6NTQuODUxNTYwMTAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMDIxNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk9DVEVPTlRYMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo2OmNvbmZpZyBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMTpcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEyLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVxcdGJvb2wgXFxcIkRpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjMxOmNvbmZpZyBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzM6XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NTpjb25maWcgT0NURU9OVFgyX1ZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NDc6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9NTE9Y29uZmlnIFJWVV9FU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01Mi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBSVlUgRS1Td2l0Y2ggc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjUzOlxcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01NC1cXHRkZWZhdWx0IG1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IGFmL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSArPSBuaWMvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT02PWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSArPSBydnVfbWJveC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSArPSBydnVfYWYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlLTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2d4X2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmM6Njc6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0NHWCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy02OC1cXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfQ04xMEtfUlBNLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTUtIC8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg6MTY6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfQ0dYXFx0XFx0MHhBMDU5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MTU0PURFRklORV9TSE9XX0FUVFJJQlVURShucGNfbWNhbV9sYXlvdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE1NjojZGVmaW5lIF9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSAjIyBfZm9wcyA9IHtcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNjU6I2RlZmluZSBERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShfX25hbWUsIF9fc2l6ZSlcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE2Ni1zdGF0aWMgaW50IF9fbmFtZSAjIyBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcwLX1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE3MTpfX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9GT1BTKF9fbmFtZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50IG5wY19tY2FtX2RzdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0Mi0jZGVmaW5lIFRPVEFMX1NaIChNQVhfTlVNX0JBTktTICogTUFYX05VTV9TVUJfQkFOS1MgKiBNQVhfU1VCQkFOS19ERVBUSCAqIDY0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoyNDM6REVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUobnBjX21jYW1fZHN0YXRzLCBUT1RBTF9TWik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MjQ1PXN0YXRpYyBpbnQgbnBjX21jYW1fbWlzbWF0Y2hfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODQtLyogXFxcIiV1XFxcXHQlZFxcXFx0JXVcXFxcblxcXCIgbmVlZHMgbGVzcyB0aGFuIDY0IGNoYXJhY3RlcnMgdG8gcHJpbnQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI4NTpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9taXNtYXRjaCwgVE9UQUxfU1opO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzoyMTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQXFx0XFx0XFx0MHhBMDBDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjItI2RlZmluZSBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk4eHhfUFRQXFx0XFx0MHhCMTAwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yNy0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE9fUFRQXFx0MHhCNjAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6Mjg6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JTVFxcdFxcdFxcdDB4QTA4NVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI5LSNkZWZpbmUgUENJX0RFVklEX0NOMTBLX1BUUFxcdFxcdFxcdDB4QTA5RVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM9NTg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwdHBfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTA6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTkxLVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTItXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NTkzOlxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NC1cXHRcXHRcXHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk1LVxcdFxcdFxcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk2WFhfUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5NjpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTctXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5OC1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYX1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTk6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjAwLVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDEtXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE5fUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjYwMjpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDMtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwNC1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NU1NX1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo2MDU6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA2LVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo0NTpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ2LVxcdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz05Mjc9c3RhdGljIHZvaWQgcnZ1X2dldF9sYmtfYnVmc2l6ZShzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy05MzMtXFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjkzNDpcXHRcXHRcXHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTM1LVxcdGlmICghcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM0NDc9aW50IHJ2dV9nZXRfbnVtX2xia19jaGFucyh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDUzOlxcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9MQkssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ1NC1cXHRcXHRcXHQgICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MzQ3MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkZcXHQweEEwRjhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM0NzM9c3RhdGljIGludCBydnVfZW5hYmxlX3NyaW92KHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0OTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MzQ5NTpcXHRpZiAocnZ1LVxcdTAwM2V2Zl9kZXZpZCA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ5Ni1cXHRcXHRjaGFucyA9IHJ2dV9nZXRfbnVtX2xia19jaGFucygpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNDojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZcXHRcXHQweEEwNjVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNTojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcXHRcXHRcXHQweEEwNjFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jPTM5Mj1zdGF0aWMgdm9pZCBydnVfbGJrX3NldF9jaGFubmVscyhzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYy00MTUtXFx0XFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jOjQxNjpcXHRcXHRcXHRcXHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE3LVxcdFxcdGlmICghcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9MjgwNj1zdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgyNS0vKiBQZXItbG1hYyBDR1ggZGVidWdmcyBmaWxlcyBuZWVkIGJvdGggUlZVIGFuZCBDR1ggaGFuZGxlOyBpbm9kZS1cXHUwMDNlaV9wcml2YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODI2OiAqIHBvaW50cyBoZXJlIHNvIHNlcV9maWxlIG9wcyBhdm9pZCBwY2lfZ2V0X2RldmljZShQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODI3LSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgKz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICs9IHJ2dV9yZXAub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDItLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0MzojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1BGICAgICAgICAgICAgICAweEEwNjNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXFx0XFx0MHhBMDY0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXFx0XFx0MHhBMEY4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFxcdFxcdDB4QTBGN1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NTk3PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX2xia3ZmKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NTk5OlxcdHJldHVybiAocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjAwLVxcdFxcdChwZGV2LVxcdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX1JWVV9SRVApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo2MTc6XFx0cmV0dXJuIHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfcGZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjM3OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zOC1cXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjM6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjQ6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjYtXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA2OjU0Ljk0MzU5ODc4MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE3ODczODAxNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBPY3Rlb25UWDIgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE9jdGVvblRYMiBldGhlcm5ldCBkcml2ZXIuIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZmlsZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLiBJJ2xsIHJlYWQgdGhyb3VnaCBpdCBjYXJlZnVsbHksIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgYW5kIGFueSBzcGVjaWZpYyBmZWF0dXJlcyB0aGlzIGRyaXZlciBleHBvc2VzLiBUaGlzIEtjb25maWcgZmlsZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoZSBkcml2ZXIgaXMgc3RydWN0dXJlZCBhbmQgaG93IGl0cyBiZWhhdmlvdXIgaXMgY29udHJvbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg4NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA2OjU2LjczMDk4MjIwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgT0NURU9OVFgyX0FGXFxuICAxMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDExOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMTI6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXFxuICAxODpcXHRcXHQgIFVuaXQncyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcXG4gIDE5OlxcdFxcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxcbiAgMjA6XFx0XFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXFxuICAyMzpcXHRcXHRib29sIFxcXCJEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1xcXCJcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXFxuICAyNTpcXHRcXHRkZWZhdWx0IG5cXG4gIDI2OlxcdFxcdGhlbHBcXG4gIDI3OlxcdFxcdCAgVGhpcyBjb25maWcgb3B0aW9uIGRpc2FibGVzIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIHN1Y2ggYXMgTklYIFNRRXNcXG4gIDI4OlxcdFxcdCAgLCBOUEEgc3RhY2sgcGFnZXMgZXRjIGluIE5EQy4gQWxzbyBsb2NrcyBkb3duIE5JWCBTUS9DUS9SUS9SU1MgYW5kXFxuICAyOTpcXHRcXHQgIE5QQSBBdXJhL1Bvb2wgY29udGV4dHMuXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBPQ1RFT05UWDJfUEZcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgMzM6XFx0XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDM1OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDM2OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gKDY0QklUIFxcdTAwMjZcXHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcXG4gIDM4OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgT0NURU9OVFgyX1ZGXFxuICA0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBOSUMgdmlydHVhbCBmdW5jdGlvbi5cXG4gIDUwOlxcdFxcbiAgNTE6XFx0Y29uZmlnIFJWVV9FU1dJVENIXFxuICA1MjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBSVlUgRS1Td2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDUzOlxcdFxcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXFxuICA1NDpcXHRcXHRkZWZhdWx0IG1cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIFJWVSBFLVN3aXRjaCB0aGF0XFxuICA1NzpcXHRcXHQgIHByb3ZpZGVzIGludGVybmFsIFNSSU9WIHBhY2tldCBzdGVlcmluZyBhbmQgc3dpdGNoaW5nLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNjo1Ni43MzEwNTM3MTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozMTY0NDE4Njg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBpc19wZl9jZ3htYXBwZWRgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgaXNfcGZfY2d4bWFwcGVkYCBmdW5jdGlvbiwgYW5kIHRoZSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UgYW5kIHVzYWdlLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBtZWFucyB0cmFjaW5nIGl0cyBjYWxscyBhbmQgbG9va2luZyBhdCBpdHMgZGVmaW5pdGlvbi4gU28sIGxldCdzIGdldCBhIGhhbmRsZSBvbiB3aGVyZSBpdCdzIGFjdHVhbGx5IGJlaW5nICp1c2VkKiB3aXRoaW4gdGhlIGNvZGViYXNlLiBJJ2xsIGZpcmUgdXAgZ3JlcC4gVGhhdCdzIHRoZSBnby10byB0b29sIGZvciB0aGlzIGtpbmQgb2YgcXVpY2sgYW5hbHlzaXMuIFdlJ2xsIGZlZWQgaXQgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGxldCBpdCBzY291ciBmb3IgZXZlcnkgaW5zdGFuY2UuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGxheSBvZiB0aGUgbGFuZCBhbmQgd2hlcmUgdG8gc3RhcnQgZGlnZ2luZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTE2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNjo1OS44OTU0NzUzNDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2NDQ4NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNfcGZfY2d4bWFwcGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYz00MzQ3PWJvb2wgbnBjX2lzX2NneF9vcl9sYmsoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYy00MzQ4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYzo0MzQ5OlxcdHJldHVybiBpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYykpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbnBjLmMtNDM1MC1cXHRcXHRpc19sYmtfdmYocnZ1LCBwY2lmdW5jKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTc5MD1zdGF0aWMgdm9pZCBydnVfc2V0dXBfcGZ2Zl9tYWNhZGRyZXNzKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTgwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo4MDI6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtODAzLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MTUxNT1pbnQgcnZ1X2dldF9uaXhfYmxrYWRkcihzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTUyMy1cXHQvKiBBbGwgQ0dYIG1hcHBlZCBQRnMgYXJlIHNldCB3aXRoIGFzc2lnbmVkIE5JWCBibG9jayBkdXJpbmcgaW5pdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjE1MjQ6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xNTI1LVxcdFxcdGJsa2FkZHIgPSBwZi1cXHUwMDNlbml4X2Jsa2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaD05NjA9c3RhdGljIGlubGluZSBpbnQgcnZ1X2dldF9wZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IHBjaWZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05NzAtLyogQ0dYIEFQSXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDo5NzE6c3RhdGljIGlubGluZSBib29sIGlzX3BmX2NneG1hcHBlZChzdHJ1Y3QgcnZ1ICpydnUsIHU4IHBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaD05ODY9c3RhdGljIGlubGluZSBib29sIGlzX2NneF92ZihzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtOTg4LVxcdHJldHVybiAoKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6OTg5OlxcdFxcdGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk5MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDQ9Ym9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0OTpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNTAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDU3PWlubGluZSBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDU5LVxcdGlmICgocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6NDYwOlxcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDYxLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz00NjU9dm9pZCBydnVfY2d4X2VuYWRpc19yeF9icChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0NzE6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ3Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NjgwPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTY4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Njg4OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy02ODktXFx0XFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NzcxPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9nZXQoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTc3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Nzc3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHJlcS1cXHUwMDNlaGRyLnBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNzc4LVxcdFxcdHJldHVybiBMTUFDX0FGX0VSUl9QRl9OT1RfTUFQUEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTgyMz1zdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04MzYtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjgzNzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtODM4LVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9ODU5PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9wdHBfcnhfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo4NjI6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcmVxLVxcdTAwM2VoZHIucGNpZnVuYykpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjMtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz05MDk9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2dldF9saW5raW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo5MTc6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkxOC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz05Mjc9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2ZlYXR1cmVzX2dldChzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo5MzU6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkzNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDAxPWludCBydnVfY2d4X2NmZ19wYXVzZV9mcm0oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTggdHhfcGF1c2UsIHU4IHJ4X3BhdXNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEwMTU6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTYtXFx0XFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTA0MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfY2ZnX3BhdXNlX2ZybShzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA1MzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1NC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDY4PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfcGh5X2ZlY19zdGF0cyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA3NDpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3NS1cXHRcXHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTI2PWludCBydnVfY2d4X3N0YXJ0X3N0b3BfaW8oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBzdGFydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTMxOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTEzMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTczPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9zZXRfZmVjX3BhcmFtKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTgwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTgxLVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTE5MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfZ2V0X2F1eF9saW5rX2luZm8oc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjExOTk6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyMDAtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMjc3PWludCBydnVfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1OCB0eF9wYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjg4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMjg5OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjkwLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzMTQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyNi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTMyNzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyOC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMzQxPXZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEzNDg6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzNjY9Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMzc3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc4LVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzOTg9Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTQwNjpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNy1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTgyMj1zdGF0aWMgaW50IHJ2dV9kYmdfcnZ1X3BmX2NneF9tYXBfZGlzcGxheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbHAsIHZvaWQgKnVudXNlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ2LVxcdGZvciAocGYgPSAwOyBwZiBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6ODQ3OlxcdFxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM0MD1zdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1Mi1cXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzUzOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU0LVxcdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTU5NT1zdGF0aWMgaW50IG5peF9icF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy02MDktXFx0dHlwZSA9IGlzX2xia192ZihydnUsIHBjaWZ1bmMpID8gTklYX0lOVEZfVFlQRV9MQksgOiBOSVhfSU5URl9UWVBFX0NHWDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NjEwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQkspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTYxMS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz03NDE9c3RhdGljIGludCBuaXhfYnBfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy03NTktXFx0LyogRW5hYmxlIGJhY2twcmVzc3VyZSBvbmx5IGZvciBDR1ggbWFwcGVkIFBGcyBhbmQgTEJLL1NEUCBpbnRlcmZhY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NzYwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNzYxLVxcdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTE1MTI9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNzAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNzAyOlxcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTcwMy1cXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjExMj1zdGF0aWMgaW50IG5peF9nZXRfdHhfbGluayhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMTktXFx0XFx0cmV0dXJuIGh3LVxcdTAwM2VjZ3hfbGlua3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjIxMjA6XFx0fSBlbHNlIGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjEyMS1cXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjEyOT1zdGF0aWMgdm9pZCBuaXhfZ2V0X3R4c2NocV9yYW5nZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMzgtXFx0XFx0KmVuZCA9ICpzdGFydCArIGh3LVxcdTAwM2VjYXAubml4X3R4c2NoX3Blcl9sYmtfbG1hYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjEzOTpcXHR9IGVsc2UgaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkgeyAvKiBDR1ggbGlua3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjE0MC1cXHRcXHQqc3RhcnQgPSBody1cXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfY2d4X2xtYWMgKiBsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTI0ODY9c3RhdGljIGludCBuaXhfc21xX2ZsdXNoKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjUwNC1cXHQvKiBlbmFibGUgY2d4IHR4IGlmIGRpc2FibGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjI1MDU6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yNTA2LVxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0yODc5PXZvaWQgcnZ1X25peF90eF90bDJfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI4ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjI4ODg6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgIWlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjg4OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzU2OD12b2lkIG5peF9nZXRfbWNlX2xpc3Qoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU3NC1cXHRpZiAoIWh3LVxcdTAwM2VjYXAubml4X3J4X211bHRpY2FzdCB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNTc1OlxcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1NzYtXFx0XFx0XFx0ICAgICBwY2lmdW5jIFxcdTAwMjYgflJWVV9QRlZGX0ZVTkNfTUFTSykpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzYwMD1zdGF0aWMgaW50IG5peF91cGRhdGVfbWNlX3J1bGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE2LVxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNjE3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTQ2ODQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X3NldF9od19mcnMoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3Qgbml4X2Zyc19jZmcgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy00NzI0LVxcdC8qIENoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGZyb20gQ0dYIG1hcHBlZCBSVlUgUEYgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NDcyNTpcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTQ3MjYtXFx0XFx0LyogR2V0IENHWCBhbmQgTE1BQyB0byB3aGljaCB0aGlzIFBGIGlzIG1hcHBlZCBhbmQgZmluZCBsaW5rICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTMyMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfc3RhcnRfcngoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNDUtXFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjUzNDY6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBydnUtXFx1MDAzZXJlcF9tb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01MzQ3LVxcdFxcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz01MzUyPWludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9zdG9wX3J4KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01Mzc3LVxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1Mzc4OlxcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgcnZ1LVxcdTAwM2VyZXBfbW9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTM3OS1cXHRcXHRydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHJ2dSwgcGNpZnVuYywgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzODU9dm9pZCBydnVfbml4X2xmX3RlYXJkb3duKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBibGthZGRyLCBpbnQgbml4bGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NTQwNzpcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHJ2dS1cXHUwMDNlcmVwX21vZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTU0MDgtXFx0XFx0cnZ1X3JlcF9ub3RpZnlfcGZ2Zl9zdGF0ZShydnUsIHBjaWZ1bmMsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYz03ODI9dm9pZCBydnVfbnBjX2luc3RhbGxfcHJvbWlzY19lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTg0OS1cXHRpZiAoaHctXFx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0IFxcdTAwMjZcXHUwMDI2IHBmdmYtXFx1MDAzZXVzZV9tY2VfbGlzdCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYzo4NTA6XFx0ICAgIGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMtODUxLVxcdFxcdCoodTY0ICopXFx1MDAyNmFjdGlvbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM9NDIyOD1pbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTQyNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jOjQyNzc6XFx0XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy00Mjc4LVxcdFxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9MTIwPWludCBydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM6MTI1OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMTI2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jPTMyMj1pbnQgcnZ1X3JlcF9pbnN0YWxsX21jYW1fcnVsZXMoc3RydWN0IHJ2dSAqcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTMzMi1cXHRmb3IgKHBmID0gMTsgcGYgXFx1MDAzYyBody1cXHUwMDNldG90YWxfcGZzOyBwZisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jOjMzMzpcXHRcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMzM0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jPTQ0Nj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9nZXRfcmVwX2NudChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtNDYxLVxcdGZvciAocGYgPSAwOyBwZiBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzo0NjI6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTQ2My1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYz04Mz1zdGF0aWMgaW50IHJ2dV9zd2l0Y2hfaW5zdGFsbF9ydWxlcyhzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTItXFx0Zm9yIChwZiA9IDE7IHBmIFxcdTAwM2MgaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzo5MzpcXHRcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTQtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmM9MjE3PXZvaWQgcnZ1X3N3aXRjaF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYy0yMzUtXFx0Zm9yIChwZiA9IDE7IHBmIFxcdTAwM2MgaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzoyMzY6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTIzNy1cXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6NTkuOTUyMTI1MzI2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjAwOTE2NjYyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBDdXJyZW50IENvbW1pdCoqXG5cbk9rYXksIHRpbWUgdG8gZmlndXJlIG91dCB3aGF0J3MgaGFwcGVuaW5nIHdpdGggdGhpcyBjb21taXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBncmFiIHRoZSBgZ2l0IGxvZ2AgdG8gcHJvdmlkZSBzb21lIGNvbnRleHQgYXJvdW5kIHRoaXMgYnVnIGZpeCBvciBjaGFuZ2UuIExldCBtZSBzZWUuLi4gd2UgZG9uJ3QgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIGEgYGdpdCBsb2dgIHRvb2wsIGFzIEkgZXhwZWN0ZWQsIHNvIEknbGwgbmVlZCB0byB1c2Ugd2hhdCdzIGF2YWlsYWJsZS4gRWl0aGVyIGBncmVwcGVyYCBvciBjaGVja2luZyB0aGUgZmlsZSBjb250ZXh0IHNob3VsZCBiZSBzdWZmaWNpZW50LiBJJ2xsIHJlYWQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaGAgZmlsZSBhcm91bmQgbGluZSA5NzAuIEhvcGVmdWxseSwgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHNpdHVhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0MjgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzowMS45NjEyOTU5NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA5NjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5NjA6XFx0c3RhdGljIGlubGluZSBpbnQgcnZ1X2dldF9wZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IHBjaWZ1bmMpXFxuIDk2MTpcXHR7XFxuIDk2MjpcXHRcXHRpZiAoaXNfY24yMGsocGRldikpXFxuIDk2MzpcXHRcXHRcXHRyZXR1cm4gKHBjaWZ1bmMgXFx1MDAzZVxcdTAwM2UgUlZVX0NOMjBLX1BGVkZfUEZfU0hJRlQpIFxcdTAwMjZcXG4gOTY0OlxcdFxcdFxcdFxcdFJWVV9DTjIwS19QRlZGX1BGX01BU0s7XFxuIDk2NTpcXHRcXHRlbHNlXFxuIDk2NjpcXHRcXHRcXHRyZXR1cm4gKHBjaWZ1bmMgXFx1MDAzZVxcdTAwM2UgUlZVX09UWDJfUEZWRl9QRl9TSElGVCkgXFx1MDAyNlxcbiA5Njc6XFx0XFx0XFx0XFx0UlZVX09UWDJfUEZWRl9QRl9NQVNLO1xcbiA5Njg6XFx0fVxcbiA5Njk6XFx0XFxuIDk3MDpcXHQvKiBDR1ggQVBJcyAqL1xcbiA5NzE6XFx0c3RhdGljIGlubGluZSBib29sIGlzX3BmX2NneG1hcHBlZChzdHJ1Y3QgcnZ1ICpydnUsIHU4IHBmKVxcbiA5NzI6XFx0e1xcbiA5NzM6XFx0XFx0aWYgKCFydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwKVxcbiA5NzQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA5NzU6XFx0XFxuIDk3NjpcXHRcXHRyZXR1cm4gKHBmIFxcdTAwM2U9IFBGX0NHWE1BUF9CQVNFIFxcdTAwMjZcXHUwMDI2IHBmIFxcdTAwM2M9IHJ2dS1cXHUwMDNlY2d4X21hcHBlZF9wZnMpIFxcdTAwMjZcXHUwMDI2XFxuIDk3NzpcXHRcXHRcXHQhaXNfc2RwX3BmKHJ2dSwgcnZ1X21ha2VfcGNpZnVuYyhydnUtXFx1MDAzZXBkZXYsIHBmLCAwKSk7XFxuIDk3ODpcXHR9XFxuIDk3OTpcXHRcXG4gOTgwOlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBydnVfZ2V0X2NneF9sbWFjX2lkKHU4IG1hcCwgdTggKmNneF9pZCwgdTggKmxtYWNfaWQpXFxuIDk4MTpcXHR7XFxuIDk4MjpcXHRcXHQqY2d4X2lkID0gKG1hcCBcXHUwMDNlXFx1MDAzZSA0KSBcXHUwMDI2IDB4RjtcXG4gOTgzOlxcdFxcdCpsbWFjX2lkID0gKG1hcCBcXHUwMDI2IDB4Rik7XFxuIDk4NDpcXHR9XFxuIDk4NTpcXHRcXG4gOTg2OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19jZ3hfdmYoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4gOTg3OlxcdHtcXG4gOTg4OlxcdFxcdHJldHVybiAoKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIFxcdTAwMjZcXHUwMDI2XFxuIDk4OTpcXHRcXHRcXHRpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYykpKTtcXG4gOTkwOlxcdH1cXG4gOTkxOlxcdFxcbiA5OTI6XFx0I2RlZmluZSBNKF9uYW1lLCBfaWQsIGZuX25hbWUsIHJlcSwgcnNwKVxcdFxcdFxcdFxcdFxcXFxcXG4gOTkzOlxcdGludCBydnVfbWJveF9oYW5kbGVyXyAjIyBmbl9uYW1lKHN0cnVjdCBydnUgKiwgc3RydWN0IHJlcSAqLCBzdHJ1Y3QgcnNwICopO1xcbiA5OTQ6XFx0TUJPWF9NRVNTQUdFU1xcbiA5OTU6XFx0I3VuZGVmIE1cXG4gOTk2OlxcdFxcbiA5OTc6XFx0LyogTWJveCBBUElzICovXFxuIDk5ODpcXHR2b2lkIHJ2dV9xdWV1ZV93b3JrKHN0cnVjdCBtYm94X3dxX2luZm8gKm13LCBpbnQgZmlyc3QsXFxuIDk5OTpcXHRcXHRcXHQgICAgaW50IG1kZXZzLCB1NjQgaW50cik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjAxLjk2MTM5MTgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQ3NzY4NTI3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgT0NURU9OVFgyX0FGIERyaXZlcidzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBhdCBoYW5kIGlzIHdoZXRoZXIgdGhlIGBPQ1RFT05UWDJfQUZgIGRyaXZlciBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgT0NURU9OVFgyX0FGYCAqaXMqLiBBaCwgaXQncyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gTm93LCBsZXQncyBjb25zdWx0IHRoZSBmdXp6aW5nIGNyaXRlcmlhIOKAkyBzcGVjaWZpY2FsbHksIHdoZW4gd2UgKnNob3VsZG4ndCogZnV6eiwgdGhlIFwibmVnYXRpdmUgY3JpdGVyaWEuXCIgU2VjdGlvbiAyLCBhbHJpZ2h0LlxuXG5JdCBzYXlzIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXMuIFNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgYXQgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXCIgVGhpcyBpbmNsdWRlcyB0aGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyAqbm90KiBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VLlxuXG5UaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBoZXJlIGlzIGBhbWQ2NGAuIExvb2tpbmcgYXQgdGhlIEtjb25maWcsIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uLCBpdCBkZXBlbmRzIG9uIGAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRgIGFuZCBhbHNvIG9uIGBQQ0lgLiBBIGxpZ2h0YnVsYiBqdXN0IHdlbnQgb2ZmISBJcyB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIG9yIFNvQyB0aGF0IGFic29sdXRlbHkgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmU/IExldCdzIGludmVzdGlnYXRlLlxuXG5Pa2F5LCBJIHNlZSBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYgMHhBMDY1YCBhbmQgYFBDSV9WRU5ET1JfSURfQ0FWSVVNYC4gQmluZ28uIFRoZSB2ZW5kb3IgaXMgQ2F2aXVtLCBhbmQgdGhhdCBjb25maXJtcyBpdCdzIE1hcnZlbGwgaGFyZHdhcmUuIENhbiBzdGFuZGFyZCBRRU1VIGVtdWxhdGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFGPyBEZWZpbml0ZWx5IG5vdC4gUUVNVSBvZmZlcnMgdmlydGlvLW5ldCwgZTEwMDAsIGFuZCBvdGhlcnMsIGJ1dCAqbm8qIENhdml1bSBPY3Rlb25UWDIgZW11bGF0aW9uLiBGdXJ0aGVybW9yZSwgaXQncyBhbiBBUk02NCBuZXR3b3JrIHByb2Nlc3NvciAoQ045SywgQ04xMEssIENOMjBLIFNvQykuIEl0ICpvbmx5KiBjb21waWxlcyBvbiB4ODYvYW1kNjQgaWYgYENPTkZJR19DT01QSUxFX1RFU1RgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIGEgYmlnIGhpbnQuIEluIGEgcmVhbC13b3JsZCBzY2VuYXJpbywgT2N0ZW9uVFgyIHJ1bnMgb24gdGhlIEFSTTY0IGNvcmVzIG9mIHRoZSBPY3Rlb25UWDIgU29DIG9yIGlzIGEgUENJIGRldmljZS5cblxuU28sIHRoZSBuZXh0IG9idmlvdXMgcXVlc3Rpb246IElzIHRoZXJlIGFueSBraW5kIG9mIHZpcnR1YWwgZGV2aWNlLCBsb29wYmFjaywgb3IgbW9jayBkZXZpY2UgaW1wbGVtZW50YXRpb24gZm9yIE1hcnZlbGwgT2N0ZW9uVFgyIHdpdGhpbiB0aGUga2VybmVsPyBQcm9iYWJseSBub3QuIEl0J3MgYSBzcGVjaWFsaXplZCBwaWVjZSBvZiBoYXJkd2FyZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LCBidXQgYmFzZWQgb24gZXZlcnl0aGluZyBJIHNlZSBzbyBmYXIsIHRoaXMgY2xlYXJseSBmaXRzIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGNhdGVnb3J5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzowNi43MzgyNDcyMzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjIyNTIxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz00ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6NDU6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00Ni1cXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzQ0Nz1pbnQgcnZ1X2dldF9udW1fbGJrX2NoYW5zKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0NzE6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXFx0MHhBMEY4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNDczPXN0YXRpYyBpbnQgcnZ1X2VuYWJsZV9zcmlvdihzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0OTU6XFx0aWYgKHJ2dS1cXHUwMDNldmZfZGV2aWQgPT0gUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0OTYtXFx0XFx0Y2hhbnMgPSBydnVfZ2V0X251bV9sYmtfY2hhbnMoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjQ6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXFx0XFx0MHhBMDY1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjUtI2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXFx0XFx0XFx0MHhBMDYxXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI4MDY9c3RhdGljIHZvaWQgcnZ1X2RiZ19ucGFfaW5pdChzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4MjUtLyogUGVyLWxtYWMgQ0dYIGRlYnVnZnMgZmlsZXMgbmVlZCBib3RoIFJWVSBhbmQgQ0dYIGhhbmRsZTsgaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MjgyNjogKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgyNy0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQ0LSNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkZcXHRcXHQweEEwNjRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkZcXHRcXHQweEEwRjhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01OTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjU5OTpcXHRyZXR1cm4gKHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYwMC1cXHRcXHQocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9SVlVfUkVQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM9MjI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfdmZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjIzOlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTI0LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkYpIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjA3LjU1MDQ3NzM3OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODc5MzA2NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIGBydnVfcHJvYmVgIGFuZCBSZWdpc3RyYXRpb24gUHJvY2VzcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBydnVfcHJvYmVgIGZ1bmN0aW9uIG9wZXJhdGVzIGFuZCwgY3J1Y2lhbGx5LCBob3cgaXQgZ2V0cyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgYHJ2dS5jYCBjb2RlLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoYXQgZmlsZSwgYHJ2dS5jYCwgYW5kIHplcm8gaW4gb24gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGZsb3cgYW5kIGZpZ3VyZSBvdXQgdGhlIHJlZ2lzdHJhdGlvbiBtZWNoYW5pc23igJRpcyBpdCBhIHNpbXBsZSBmdW5jdGlvbiBwb2ludGVyIHBhc3NlZCB0byBhIGRyaXZlciBmcmFtZXdvcmssIG9yIHNvbWV0aGluZyBtb3JlIGludHJpY2F0ZT8gS25vd2luZyB0aGlzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcgYXJlIGhhbmRsZWQuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBpbnRlcmVzdGluZyBkZXRhaWxzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzk3OSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjA5LjQyOTgwMTQ2NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0c3RhdGljIGlycXJldHVybl90IHJ2dV9tYm94X3BmX2ludHJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpydnVfaXJxKTtcXG4gIDQxOlxcdHN0YXRpYyBpcnFyZXR1cm5fdCBydnVfbWJveF9pbnRyX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcnZ1X2lycSk7XFxuICA0MjpcXHRcXG4gIDQzOlxcdC8qIFN1cHBvcnRlZCBkZXZpY2VzICovXFxuICA0NDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XFxuICA0NTpcXHRcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxcbiAgNDY6XFx0XFx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cXG4gIDQ3OlxcdH07XFxuICA0ODpcXHRcXG4gIDQ5OlxcdE1PRFVMRV9BVVRIT1IoXFxcIlN1bmlsIEdvdXRoYW0gXFx1MDAzY3Nnb3V0aGFtQG1hcnZlbGwuY29tXFx1MDAzZVxcXCIpO1xcbiAgNTA6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKERSVl9TVFJJTkcpO1xcbiAgNTE6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbiAgNTI6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ2dV9pZF90YWJsZSk7XFxuICA1MzpcXHRcXG4gIDU0OlxcdHN0YXRpYyBjaGFyICpta2V4X3Byb2ZpbGU7IC8qIE1LRVggcHJvZmlsZSBuYW1lICovXFxuICA1NTpcXHRtb2R1bGVfcGFyYW0obWtleF9wcm9maWxlLCBjaGFycCwgMDAwMCk7XFxuICA1NjpcXHRNT0RVTEVfUEFSTV9ERVNDKG1rZXhfcHJvZmlsZSwgXFxcIk1LRVggcHJvZmlsZSBuYW1lIHN0cmluZ1xcXCIpO1xcbiAgNTc6XFx0XFxuICA1ODpcXHRzdGF0aWMgY2hhciAqa3B1X3Byb2ZpbGU7IC8qIEtQVSBwcm9maWxlIG5hbWUgKi9cXG4gIDU5OlxcdG1vZHVsZV9wYXJhbShrcHVfcHJvZmlsZSwgY2hhcnAsIDAwMDApO1xcbiAgNjA6XFx0TU9EVUxFX1BBUk1fREVTQyhrcHVfcHJvZmlsZSwgXFxcIktQVSBwcm9maWxlIG5hbWUgc3RyaW5nXFxcIik7XFxuICA2MTpcXHRcXG4gIDYyOlxcdHN0YXRpYyB2b2lkIHJ2dV9zZXR1cF9od19jYXBhYmlsaXRpZXMoc3RydWN0IHJ2dSAqcnZ1KVxcbiAgNjM6XFx0e1xcbiAgNjQ6XFx0XFx0c3RydWN0IHJ2dV9od2luZm8gKmh3ID0gcnZ1LVxcdTAwM2VodztcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0aHctXFx1MDAzZWNhcC5uaXhfdHhfYWdncl9sdmwgPSBOSVhfVFhTQ0hfTFZMX1RMMTtcXG4gIDY3OlxcdFxcdGh3LVxcdTAwM2VjYXAubml4X2ZpeGVkX3R4c2NocV9tYXBwaW5nID0gZmFsc2U7XFxuICA2ODpcXHRcXHRody1cXHUwMDNlY2FwLm5peF9zaGFwaW5nID0gdHJ1ZTtcXG4gIDY5OlxcdFxcdGh3LVxcdTAwM2VjYXAubml4X3R4X2xpbmtfYnAgPSB0cnVlO1xcbiAgNzA6XFx0XFx0aHctXFx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0ID0gdHJ1ZTtcXG4gIDcxOlxcdFxcdGh3LVxcdTAwM2VjYXAubml4X3NoYXBlcl90b2dnbGVfd2FpdCA9IGZhbHNlO1xcbiAgNzI6XFx0XFx0aHctXFx1MDAzZWNhcC5ucGNfaGFzaF9leHRyYWN0ID0gZmFsc2U7XFxuICA3MzpcXHRcXHRody1cXHUwMDNlY2FwLm5wY19leGFjdF9tYXRjaF9lbmFibGVkID0gZmFsc2U7XFxuICA3NDpcXHRcXHRody1cXHUwMDNlcnZ1ID0gcnZ1O1xcbiAgNzU6XFx0XFxuICA3NjpcXHRcXHRpZiAoaXNfcnZ1X3ByZV85Nnh4X0MwKHJ2dSkpIHtcXG4gIDc3OlxcdFxcdFxcdGh3LVxcdTAwM2VjYXAubml4X2ZpeGVkX3R4c2NocV9tYXBwaW5nID0gdHJ1ZTtcXG4gIDc4OlxcdFxcdFxcdGh3LVxcdTAwM2VjYXAubml4X3R4c2NoX3Blcl9jZ3hfbG1hYyA9IDQ7XFxuICA3OTpcXHRcXHRcXHRody1cXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfbGJrX2xtYWMgPSAxMzI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjA5LjQzMDAxODk4N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjU0NTkzMjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgcnZ1LmMgRHJpdmVyKipcblxuT2theSwgc28gYHJ2dS5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0J3MgYSBQQ0kgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgaWRlbnRpZmllZCBhcyBhIENhdml1bSBkZXZpY2UsIHNwZWNpZmljYWxseSB0aGUgT2N0ZW9uIFRYMiBSVlUgQUYsIGJhc2VkIG9uIHRoZSBgUENJX0RFVklDRWAgbWFjcm8gZGVmaW5pbmcgdGhlIHZlbmRvciBhbmQgZGV2aWNlIElEcy4gVGhhdCdzIGdvb2QsIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciB3b3JrcywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBydnVfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gbWFnaWMgbGlrZWx5IGhhcHBlbnMuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTg1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzoxMS42ODQ2MTUyNzhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDYyOTU2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnZ1X3BjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzoxMS43NDI2ODY5MDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTU1NTIyMzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFBDSSBEcml2ZXIgTGFuZHNjYXBlIGluIFJWVSoqXG5cbk9rYXksIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZHJpdmVyIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGZvciB0aGUgUENJIGRldmljZXMgd2l0aGluIHRoZSBSVlUgY29kZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIHByZXR0eSBzdXJlIHRoZSBrZXkgd2lsbCBsaWUgd2l0aGluIGVpdGhlciB0aGUgYG1vZHVsZV9wY2lfZHJpdmVyYCBtYWNybyBvciwgbW9yZSBkaXJlY3RseSwgdGhlIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBmdW5jdGlvbiBjYWxsLiBJIG5lZWQgdG8gcXVpY2tseSBsb2NhdGUgd2hlcmUgdGhlc2UgYXJlIHVzZWQgd2l0aGluIGBydnUuY2AuIFRoYXQncyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gYW5kIGF0dGFjaG1lbnQgb2YgdGhlIFBDSSBkcml2ZXIgaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUyMzksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzoxMy4yOTc5MTMxOTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzQ4OTIwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjEzLjM0OTY3NTg0OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNjk4MzEyMTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTG9jYXRpbmcgdGhlIFBDSSBEcml2ZXIgaW4gcnZ1LmMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgYHBjaV9kcml2ZXJgIHN0cnVjdHVyZSB3aXRoaW4gYHJ2dS5jYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gSSdtIGFzc3VtaW5nIHRoYXQgc2luY2UgaXQncyBhbiBgcnZ1YCBmaWxlLCB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIHNvbWUga2luZCBvZiBzeXN0ZW0tbGV2ZWwgb3IgaGFyZHdhcmUgYWJzdHJhY3Rpb24uIFRoZSBgcGNpX2RyaXZlcmAgc3RydWN0dXJlIGlzIGZ1bmRhbWVudGFsIGZvciBhbnkgUENJIGRldmljZSBpbnRlcmFjdGlvbiwgc28gaXQgbmVlZHMgdG8gYmUgbG9jYXRlZC4gTXkgZ29hbCBub3cgaXMgdG8gcXVpY2tseSBuYXZpZ2F0ZSB0byB0aGUgc291cmNlIGNvZGUgYW5kIHBpbnBvaW50IHdoZXJlIHRoaXMgZHJpdmVyIGlzIGRlZmluZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgYHJ2dWAgbW9kdWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0uIFRpbWUgdG8gZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ0MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjE1LjA0Nzk5MDA2MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MDI3NDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz0yMDYwPXN0YXRpYyB2b2lkIGNneF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jOjIwNzQ6c3RydWN0IHBjaV9kcml2ZXIgY2d4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDc1LVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaD0xMzI9c3RydWN0IGNneF9ldmVudF9jYiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg6MTM3OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBjZ3hfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTEzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jPTE2MDk9c3RhdGljIHZvaWQgbWNzX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmM6MTYyMjpzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MjMtXFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oPTE1NT1zdHJ1Y3QgbWNzX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuaC0xNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmg6MTY1OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oLTE2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjEyOnN0cnVjdCBwY2lfZHJpdmVyIHB0cF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjEzLVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaD0yOT12b2lkIHB0cF9zdGFydChzdHJ1Y3QgcnZ1ICpydnUsIHU2NCBzY2xrLCB1MzIgZXh0X2Nsa19mcmVxLCB1MzIgZXh0dHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oOjMxOmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBwdHBfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9Mzc0Mz1zdGF0aWMgdm9pZCBydnVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNzUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM3NTM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzc1NC1cXHQubmFtZSA9IERSVl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYz0zNTA5PXN0YXRpYyB2b2lkIG90eDJfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zNTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM6MzU3MjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgb3R4Ml9wZl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zNTczLVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jPTgxNz1zdGF0aWMgdm9pZCBvdHgydmZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYy04NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzo4Njc6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG90eDJ2Zl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYy04NjgtXFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYz04NDM9c3RhdGljIHZvaWQgcnZ1X3JlcF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcmVwLmMtODYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYzo4NjE6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9yZXBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYy04NjItXFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDc6MTUuMzQyMDIyNTA3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI1NDEzODcwNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSVlUgRHJpdmVyKipcblxuT2theSwgbGV0J3MgZGlzc2VjdCB0aGlzIGBydnVfZHJpdmVyYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0J3MgYSBQQ0kgZHJpdmVyLiBJIGNhbiB0ZWxsIGJlY2F1c2Ugb2YgdGhlIG5hbWluZyBjb252ZW50aW9uLCBhbmQgb2YgY291cnNlLCBiZWNhdXNlIG9mIHRoZSBjb250ZXh0IEknbSB3b3JraW5nIGluLiBUaGUgdmVuZG9yIElEIGlzIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgKDB4MTc3ZCkuIEFoLCBDYXZpdW0sIHRoYXQgYnJpbmdzIGJhY2sgbWVtb3JpZXMuIEFuZCB0aGUgZGV2aWNlIElEIGlzIGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAgKDB4YTA2NSkuIFRoYXQgY2xlYXJseSBwb2ludHMgdG8gYW4gT2N0ZW9uIFRYMiBSVlUgQUYgZGV2aWNlLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCB3aGF0J3MgZ29pbmcgb24gaW4gdGhlIGBydnVfaW5pdF9tb2R1bGVgIGZ1bmN0aW9uLiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgc2VlIHdoYXQga2luZCBvZiByZWdpc3RlciBtYXBwaW5ncyBhbmQgaGFyZHdhcmUgc2V0dXAgdGhpcyBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzIwNCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjE3Ljg4MzQxMTk4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ5OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzc1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzc1MDpcXHRcXHRydnVfY2xlYXJfcnZ1bV9ibGtfcmV2aWQocnZ1KTtcXG4zNzUxOlxcdH1cXG4zNzUyOlxcdFxcbjM3NTM6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XFxuMzc1NDpcXHRcXHQubmFtZSA9IERSVl9OQU1FLFxcbjM3NTU6XFx0XFx0LmlkX3RhYmxlID0gcnZ1X2lkX3RhYmxlLFxcbjM3NTY6XFx0XFx0LnByb2JlID0gcnZ1X3Byb2JlLFxcbjM3NTc6XFx0XFx0LnJlbW92ZSA9IHJ2dV9yZW1vdmUsXFxuMzc1ODpcXHRcXHQuc2h1dGRvd24gPSBydnVfc2h1dGRvd24sXFxuMzc1OTpcXHR9O1xcbjM3NjA6XFx0XFxuMzc2MTpcXHRzdGF0aWMgaW50IF9faW5pdCBydnVfaW5pdF9tb2R1bGUodm9pZClcXG4zNzYyOlxcdHtcXG4zNzYzOlxcdFxcdGludCBlcnI7XFxuMzc2NDpcXHRcXG4zNzY1OlxcdFxcdHByX2luZm8oXFxcIiVzOiAlc1xcXFxuXFxcIiwgRFJWX05BTUUsIERSVl9TVFJJTkcpO1xcbjM3NjY6XFx0XFxuMzc2NzpcXHRcXHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZjZ3hfZHJpdmVyKTtcXG4zNzY4OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjM3Njk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zNzcwOlxcdFxcbjM3NzE6XFx0XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2cHRwX2RyaXZlcik7XFxuMzc3MjpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4zNzczOlxcdFxcdFxcdGdvdG8gcHRwX2VycjtcXG4zNzc0OlxcdFxcbjM3NzU6XFx0XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWNzX2RyaXZlcik7XFxuMzc3NjpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4zNzc3OlxcdFxcdFxcdGdvdG8gbWNzX2VycjtcXG4zNzc4OlxcdFxcbjM3Nzk6XFx0XFx0ZXJyID0gIHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnJ2dV9kcml2ZXIpO1xcbjM3ODA6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuMzc4MTpcXHRcXHRcXHRnb3RvIHJ2dV9lcnI7XFxuMzc4MjpcXHRcXG4zNzgzOlxcdFxcdHJldHVybiAwO1xcbjM3ODQ6XFx0cnZ1X2VycjpcXG4zNzg1OlxcdFxcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWNzX2RyaXZlcik7XFxuMzc4NjpcXHRtY3NfZXJyOlxcbjM3ODc6XFx0XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZwdHBfZHJpdmVyKTtcXG4zNzg4OlxcdHB0cF9lcnI6XFxuMzc4OTpcXHRcXHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmNneF9kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzoxNy44ODM1Njg3OTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTAzMDUwNTI4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJpYWdlOiBDb2RlIFJlYWNoYWJpbGl0eSBmb3IgT2N0ZW9uVFgyIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGdvIHRocm91Z2ggdGhpcyBjYXJlZnVsbHkuIEJhc2VkIG9uIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgc3BlY2lmaWNhbGx5IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBmb3IgYFdvcnRoRnV6emluZ2AsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzICp1bmNvbmRpdGlvbmFsbHkqIHVucmVhY2hhYmxlLiBXZSdyZSBsb29raW5nIGF0IHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBkcml2ZXIsIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIHdlIHNob3VsZCBtYXJrIGl0IGFzIG5vdCB3b3J0aCBmdXp6aW5nIGlmIHRoZSBjb2RlIHJlcXVpcmVzIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuQWxyaWdodCwgdGhlIE9jdGVvblRYMiBpcyBhIFNtYXJ0TklDL1NvQyBuZXR3b3JrIHByb2Nlc3NvciBmcm9tIENhdml1bS9NYXJ2ZWxsLiBUaGF0IGxvb2tzIGxpa2UgYSBwcm9taXNpbmcgc3RhcnQuIFRoZSByZWxldmFudCBkcml2ZXIgaXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyYCwgYW5kIGl0IHNwZWNpZmljYWxseSB0YXJnZXRzIHRoZSBSVlUgKFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQpIEFkbWluIEZ1bmN0aW9uIGFuZCBQRi9WRiBkcml2ZXJzLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgaXQgbmVlZHMgdGhlIGFjdHVhbCBPY3Rlb25UWDIgaGFyZHdhcmUsIGVpdGhlciBQQ0llIG9yIG9uLWNoaXAgZGV2aWNlcyB3aXRoIGEgdmVuZG9yIElEIG9mIGAweDE3N2RgLiBRRU1VICpkZWZpbml0ZWx5KiBkb2Vzbid0IGVtdWxhdGUgdGhhdC4gSXQncyBub3QgZ29pbmcgdG8gYmUgYXZhaWxhYmxlIG9uIHg4Ni9hbWQ2NCBvciBldmVuIEFSTTY0IFFFTVUuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGV4cGxpY2l0bHkgYGFtZDY0YC4gTm93LCB0aGUgZGVwZW5kZW5jeSBvZiBgT0NURU9OVFgyX0FGYCBvbiBgQ09NUElMRV9URVNUYCBpcyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGUgY29kZSBpc24ndCBlYXNpbHkgcG9ydGFibGUgYW5kIHRoaXMgcmVpbmZvcmNlcyB0aGUgYXNzdW1wdGlvbiBvZiB0aGUgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY3kuXG5cblNvLCBmcm9tIGEgaGlnaCBsZXZlbCwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBiZWNhdXNlIGl0IGRlcGVuZHMgb24gc3BlY2lmaWMgdmVuZG9yIGhhcmR3YXJlIOKAkyB0aGUgT2N0ZW9uVFgyIFNtYXJ0TklDIEFTSUMg4oCTIHRoYXQncyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuTm93LCBsZXQncyB6b29tIGluIG9uIHRoZSBzcGVjaWZpYyBwYXRjaC4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oYCwgc3BlY2lmaWNhbGx5IHRoZSBgaXNfcGZfY2d4bWFwcGVkYCBmdW5jdGlvbi4gVGhlIGNvZGUgY2hlY2tzIGZvciBgcnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwYCBhbmQgcmV0dXJucyBgZmFsc2VgIGlmIGl0J3Mgbm90IGF2YWlsYWJsZS5cblxuVGhlIGNvbmNlcm4gaGVyZSBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gY291bGQgYmUgY2FsbGVkIGZyb20gKm91dHNpZGUqIHRoZSBleHBlY3RlZCBPY3Rlb25UWDIgZHJpdmVyIGNvbnRleHQuIFdoaWxlIEkgZGlkIGEgYGdyZXBwZXJgIHJ1biBlYXJsaWVyLCBsZXQncyB2ZXJpZnkgdGhhdCBxdWlja2x5IGJ5IHJ1bm5pbmcgYW5vdGhlciBleGhhdXN0aXZlIHNlYXJjaCwgdG8gYmUgYWJzb2x1dGVseSBzdXJlIG5vIG90aGVyIGRyaXZlcnMgb3Igc3lzdGVtIGNvZGUsIHBlcmhhcHMgYnkgZXJyb3Igb3IgaW50ZW50LCBhcmUgY2FsbGluZyB0aGlzLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIGhpZ2hseSBzcGVjaWZpYywgYnV0IGEgdGhvcm91Z2ggY2hlY2sgaXMgYWx3YXlzIHdpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDkxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDc6MjguMTg4NjI0MDc3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI4ODAwNDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX3BmX2NneG1hcHBlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYz00MzQ3PWJvb2wgbnBjX2lzX2NneF9vcl9sYmsoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYy00MzQ4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYzo0MzQ5OlxcdHJldHVybiBpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYykpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbnBjLmMtNDM1MC1cXHRcXHRpc19sYmtfdmYocnZ1LCBwY2lmdW5jKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTc5MD1zdGF0aWMgdm9pZCBydnVfc2V0dXBfcGZ2Zl9tYWNhZGRyZXNzKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTgwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo4MDI6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtODAzLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MTUxNT1pbnQgcnZ1X2dldF9uaXhfYmxrYWRkcihzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTUyMy1cXHQvKiBBbGwgQ0dYIG1hcHBlZCBQRnMgYXJlIHNldCB3aXRoIGFzc2lnbmVkIE5JWCBibG9jayBkdXJpbmcgaW5pdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjE1MjQ6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xNTI1LVxcdFxcdGJsa2FkZHIgPSBwZi1cXHUwMDNlbml4X2Jsa2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaD05NjA9c3RhdGljIGlubGluZSBpbnQgcnZ1X2dldF9wZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IHBjaWZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05NzAtLyogQ0dYIEFQSXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDo5NzE6c3RhdGljIGlubGluZSBib29sIGlzX3BmX2NneG1hcHBlZChzdHJ1Y3QgcnZ1ICpydnUsIHU4IHBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaD05ODY9c3RhdGljIGlubGluZSBib29sIGlzX2NneF92ZihzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtOTg4LVxcdHJldHVybiAoKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6OTg5OlxcdFxcdGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk5MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDQ9Ym9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0OTpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNTAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDU3PWlubGluZSBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDU5LVxcdGlmICgocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6NDYwOlxcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDYxLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz00NjU9dm9pZCBydnVfY2d4X2VuYWRpc19yeF9icChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0NzE6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ3Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NjgwPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTY4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Njg4OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy02ODktXFx0XFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NzcxPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9nZXQoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTc3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Nzc3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHJlcS1cXHUwMDNlaGRyLnBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNzc4LVxcdFxcdHJldHVybiBMTUFDX0FGX0VSUl9QRl9OT1RfTUFQUEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTgyMz1zdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04MzYtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjgzNzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtODM4LVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9ODU5PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9wdHBfcnhfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo4NjI6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcmVxLVxcdTAwM2VoZHIucGNpZnVuYykpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjMtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz05MDk9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2dldF9saW5raW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo5MTc6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkxOC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz05Mjc9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2ZlYXR1cmVzX2dldChzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo5MzU6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkzNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDAxPWludCBydnVfY2d4X2NmZ19wYXVzZV9mcm0oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTggdHhfcGF1c2UsIHU4IHJ4X3BhdXNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEwMTU6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTYtXFx0XFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTA0MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfY2ZnX3BhdXNlX2ZybShzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA1MzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1NC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDY4PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfcGh5X2ZlY19zdGF0cyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA3NDpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3NS1cXHRcXHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTI2PWludCBydnVfY2d4X3N0YXJ0X3N0b3BfaW8oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBzdGFydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTMxOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTEzMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTczPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9zZXRfZmVjX3BhcmFtKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTgwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTgxLVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTE5MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfZ2V0X2F1eF9saW5rX2luZm8oc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjExOTk6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyMDAtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMjc3PWludCBydnVfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1OCB0eF9wYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjg4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMjg5OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjkwLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzMTQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyNi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTMyNzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyOC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMzQxPXZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEzNDg6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzNjY9Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMzc3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc4LVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzOTg9Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTQwNjpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNy1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTgyMj1zdGF0aWMgaW50IHJ2dV9kYmdfcnZ1X3BmX2NneF9tYXBfZGlzcGxheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbHAsIHZvaWQgKnVudXNlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ2LVxcdGZvciAocGYgPSAwOyBwZiBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6ODQ3OlxcdFxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM0MD1zdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1Mi1cXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzUzOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU0LVxcdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTU5NT1zdGF0aWMgaW50IG5peF9icF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy02MDktXFx0dHlwZSA9IGlzX2xia192ZihydnUsIHBjaWZ1bmMpID8gTklYX0lOVEZfVFlQRV9MQksgOiBOSVhfSU5URl9UWVBFX0NHWDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NjEwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQkspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTYxMS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz03NDE9c3RhdGljIGludCBuaXhfYnBfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy03NTktXFx0LyogRW5hYmxlIGJhY2twcmVzc3VyZSBvbmx5IGZvciBDR1ggbWFwcGVkIFBGcyBhbmQgTEJLL1NEUCBpbnRlcmZhY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NzYwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNzYxLVxcdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTE1MTI9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNzAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNzAyOlxcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTcwMy1cXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjExMj1zdGF0aWMgaW50IG5peF9nZXRfdHhfbGluayhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMTktXFx0XFx0cmV0dXJuIGh3LVxcdTAwM2VjZ3hfbGlua3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjIxMjA6XFx0fSBlbHNlIGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjEyMS1cXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjEyOT1zdGF0aWMgdm9pZCBuaXhfZ2V0X3R4c2NocV9yYW5nZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMzgtXFx0XFx0KmVuZCA9ICpzdGFydCArIGh3LVxcdTAwM2VjYXAubml4X3R4c2NoX3Blcl9sYmtfbG1hYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjEzOTpcXHR9IGVsc2UgaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkgeyAvKiBDR1ggbGlua3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjE0MC1cXHRcXHQqc3RhcnQgPSBody1cXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfY2d4X2xtYWMgKiBsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTI0ODY9c3RhdGljIGludCBuaXhfc21xX2ZsdXNoKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjUwNC1cXHQvKiBlbmFibGUgY2d4IHR4IGlmIGRpc2FibGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjI1MDU6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yNTA2LVxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0yODc5PXZvaWQgcnZ1X25peF90eF90bDJfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI4ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjI4ODg6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgIWlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjg4OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzU2OD12b2lkIG5peF9nZXRfbWNlX2xpc3Qoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU3NC1cXHRpZiAoIWh3LVxcdTAwM2VjYXAubml4X3J4X211bHRpY2FzdCB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNTc1OlxcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1NzYtXFx0XFx0XFx0ICAgICBwY2lmdW5jIFxcdTAwMjYgflJWVV9QRlZGX0ZVTkNfTUFTSykpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzYwMD1zdGF0aWMgaW50IG5peF91cGRhdGVfbWNlX3J1bGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE2LVxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNjE3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTQ2ODQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X3NldF9od19mcnMoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3Qgbml4X2Zyc19jZmcgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy00NzI0LVxcdC8qIENoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGZyb20gQ0dYIG1hcHBlZCBSVlUgUEYgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NDcyNTpcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTQ3MjYtXFx0XFx0LyogR2V0IENHWCBhbmQgTE1BQyB0byB3aGljaCB0aGlzIFBGIGlzIG1hcHBlZCBhbmQgZmluZCBsaW5rICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTMyMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfc3RhcnRfcngoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNDUtXFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjUzNDY6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBydnUtXFx1MDAzZXJlcF9tb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01MzQ3LVxcdFxcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz01MzUyPWludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9zdG9wX3J4KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01Mzc3LVxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1Mzc4OlxcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgcnZ1LVxcdTAwM2VyZXBfbW9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTM3OS1cXHRcXHRydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHJ2dSwgcGNpZnVuYywgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzODU9dm9pZCBydnVfbml4X2xmX3RlYXJkb3duKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBibGthZGRyLCBpbnQgbml4bGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NTQwNzpcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHJ2dS1cXHUwMDNlcmVwX21vZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTU0MDgtXFx0XFx0cnZ1X3JlcF9ub3RpZnlfcGZ2Zl9zdGF0ZShydnUsIHBjaWZ1bmMsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYz03ODI9dm9pZCBydnVfbnBjX2luc3RhbGxfcHJvbWlzY19lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTg0OS1cXHRpZiAoaHctXFx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0IFxcdTAwMjZcXHUwMDI2IHBmdmYtXFx1MDAzZXVzZV9tY2VfbGlzdCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYzo4NTA6XFx0ICAgIGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMtODUxLVxcdFxcdCoodTY0ICopXFx1MDAyNmFjdGlvbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM9NDIyOD1pbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTQyNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jOjQyNzc6XFx0XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy00Mjc4LVxcdFxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9MTIwPWludCBydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM6MTI1OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMTI2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jPTMyMj1pbnQgcnZ1X3JlcF9pbnN0YWxsX21jYW1fcnVsZXMoc3RydWN0IHJ2dSAqcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTMzMi1cXHRmb3IgKHBmID0gMTsgcGYgXFx1MDAzYyBody1cXHUwMDNldG90YWxfcGZzOyBwZisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jOjMzMzpcXHRcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMzM0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jPTQ0Nj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9nZXRfcmVwX2NudChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtNDYxLVxcdGZvciAocGYgPSAwOyBwZiBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzo0NjI6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTQ2My1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYz04Mz1zdGF0aWMgaW50IHJ2dV9zd2l0Y2hfaW5zdGFsbF9ydWxlcyhzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTItXFx0Zm9yIChwZiA9IDE7IHBmIFxcdTAwM2MgaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzo5MzpcXHRcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTQtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmM9MjE3PXZvaWQgcnZ1X3N3aXRjaF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYy0yMzUtXFx0Zm9yIChwZiA9IDE7IHBmIFxcdTAwM2MgaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzoyMzY6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTIzNy1cXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDc6MzAuMDE3NDMxNTk2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjc3MTY5NjYxODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGNoYW5nZSB0YXJnZXRzIGBpc19wZl9jZ3htYXBwZWQoKWAgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCBkaXJlY3RvcnkuIFRoYXQgaW1tZWRpYXRlbHkgc2NyZWFtcyBcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcIiB0byBtZS4gSSBrbm93IHRoYXQgZHJpdmVyIHByZXR0eSB3ZWxsLCBhbmQgaXRzIGRlcGVuZGVuY3kgb24gc3BlY2lmaWMgaGFyZHdhcmUgaXMgYSBrZXkgZGV0YWlsLiBJIGNhbiBzZWUgdGhhdCBvbmx5IGZpbGVzIHdpdGhpbiB0aGF0IGRyaXZlciBkaXJlY3RvcnkgYWN0dWFsbHkgZGVmaW5lIG9yIGNhbGwgdGhpcyBmdW5jdGlvbi5cblxuVGhlbiB0aGVyZSdzIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudC4gVGhpcyBpc24ndCBqdXN0ICphbnkqIGhhcmR3YXJlOyBpdCdzIHNwZWNpZmljIE1hcnZlbGwvQ2F2aXVtIE9jdGVvblRYMiBoYXJkd2FyZSB3aXRoIGEgUENJIGRldmljZSBJRCBvZiAxNzdkOmEwNjUuIFN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzPyBGb3JnZXQgYWJvdXQgaXQuIFRoZXkgZG9uJ3QgZW11bGF0ZSB0aGlzIGtpbmQgb2Ygc3BlY2lhbGl6ZWQgaGFyZHdhcmUuIFRoYXQncyBhIGh1Z2UgcmVkIGZsYWcuXG5cblRoZSBkb2N1bWVudGF0aW9uJ3Mgc2VjdGlvbiBvbiBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIHNlYWxzIHRoZSBkZWFsLiBUaGlzIGZhbGxzICpkaXJlY3RseSogaW50byB0aGF0IGNhdGVnb3J5LiBJdCdzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgcmVxdWlyaW5nIGFuIEFTSUMvUENJZSBjYXJkIHRoYXQgSSdtIG5vdCBnb2luZyB0byBmaW5kIGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4gR2l2ZW4gdGhhdCwgSSBjYW4gY29uZmlkZW50bHkgY29uY2x1ZGUgdGhhdCBmdXp6aW5nIHRoaXMgY29kZSB3aWxsIGJlIGZydWl0bGVzcy4gVGhlcmUncyBubyB3YXkgdG8gcmVhY2ggaXQuXG5cblRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgZGVmaW5pdGVseSBgZmFsc2VgLiBUaGUgYEZvY3VzU3ltYm9sc2AgbGlzdCB3aWxsIGJlIGVtcHR5IGJlY2F1c2UsIGZyYW5rbHksIHRoZXJlJ3Mgbm90aGluZyB0byBmb2N1cyBvbi4gQW5kIG9mIGNvdXJzZSwgYEVuYWJsZUNvbmZpZ3NgIGlzIGVtcHR5LCBhcyB0aGVyZSBhcmUgbm8gcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblRpbWUgdG8gcHJlcGFyZSB0aGUgdG9vbCBjYWxsIHRvIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTMwLCJPdXRwdXRUb2tlbnMiOjEzMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzozNy43MzQ0MDA1NDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpc19wZl9jZ3htYXBwZWQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCwgd2hpY2ggaXMgaW50ZXJuYWwgdG8gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgUENJZSAvIFNtYXJ0TklDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaXNfcGZfY2d4bWFwcGVkKCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgsIHdoaWNoIGlzIGludGVybmFsIHRvIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIFBDSWUgLyBTbWFydE5JQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjM3LjczNDQyNjg2M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowgxvng[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 02:48:51 +0000 UTC FinishedAt: 2026-09-15 03:07:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaXNfcGZfY2d4bWFwcGVkKCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgsIHdoaWNoIGlzIGludGVybmFsIHRvIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIFBDSWUgLyBTbWFydE5JQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwYjg3ZTI2MzVkNGIxZThiOGU1NTVlZTJiNGQ0Zjc3MjJlNDdlM2Q4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDM6MDY6MzUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuaW5kZXggMDk0MjI3NDA0ZWY5Zi4uMWUwYTVhZWIzZjU3NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFxuQEAgLTk3MCw2ICYjNDM7OTcwLDkgQEAgc3RhdGljIGlubGluZSBpbnQgcnZ1X2dldF9wZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IHBjaWZ1bmMpXG4gLyogQ0dYIEFQSXMgKi9cbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfcGZfY2d4bWFwcGVkKHN0cnVjdCBydnUgKnJ2dSwgdTggcGYpXG4ge1xuJiM0MztcdGlmICghcnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiBcdHJldHVybiAocGYgXHUwMDNlPSBQRl9DR1hNQVBfQkFTRSBcdTAwMjZcdTAwMjYgcGYgXHUwMDNjPSBydnUtXHUwMDNlY2d4X21hcHBlZF9wZnMpIFx1MDAyNlx1MDAyNlxuIFx0XHQhaXNfc2RwX3BmKHJ2dSwgcnZ1X21ha2VfcGNpZnVuYyhydnUtXHUwMDNlcGRldiwgcGYsIDApKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaXNfcGZfY2d4bWFwcGVkKCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgsIHdoaWNoIGlzIGludGVybmFsIHRvIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIFBDSWUgLyBTbWFydE5JQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYjg3ZTI2MzVkNGIxZThiOGU1NTVlZTJiNGQ0Zjc3MjJlNDdlM2Q4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMTUgMDM6MDY6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCmluZGV4IDA5NDIyNzQwNGVmOWYuLjFlMGE1YWViM2Y1NzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oCkBAIC05NzAsNiAmIzQzOzk3MCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJ2dV9nZXRfcGYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBwY2lmdW5jKQogLyogQ0dYIEFQSXMgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19wZl9jZ3htYXBwZWQoc3RydWN0IHJ2dSAqcnZ1LCB1OCBwZikKIHsKJiM0MzsJaWYgKCFydnUtJmd0O3BmMmNneGxtYWNfbWFwKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwogCXJldHVybiAocGYgJmd0Oz0gUEZfQ0dYTUFQX0JBU0UgJmFtcDsmYW1wOyBwZiAmbHQ7PSBydnUtJmd0O2NneF9tYXBwZWRfcGZzKSAmYW1wOyZhbXA7CiAJCSFpc19zZHBfcGYocnZ1LCBydnVfbWFrZV9wY2lmdW5jKHJ2dS0mZ3Q7cGRldiwgcGYsIDApKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk2NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBpbiB0aGUgT2N0ZW9uVFgyIE5ldHdvcmsgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gVGhlIGRpZmYgaXRzZWxmIGlzIGZvY3VzZWQgb24gYHJ2dS5oYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeS4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgbGlrZSBhIG5ldyBjaGVjayBoYXMgYmVlbiBhZGRlZCB3aXRoaW4gdGhlIGBpc19wZl9jZ3htYXBwZWRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGF0IHRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBhIGdpdmVuIFBGIGlzIG1hcHBlZCB0byBhIENHWCBsbWFjLiBUaGUgYWRkZWQgY29uZGl0aW9uYWwgYCFydnUtJmd0O3BmMmNneGxtYWNfbWFwYCBzdWdnZXN0cyBhIG5ldyBjb25maWd1cmF0aW9uIG9yIGluaXRpYWxpemF0aW9uIHN0YXRlLiBUaGlzIGluZGljYXRlcyB0aGF0LCBpZiB0aGUgbWFwcGluZyBpc24mIzM5O3QgZXN0YWJsaXNoZWQsIHRoZSBmdW5jdGlvbiBzaG9ydC1jaXJjdWl0cyBhbmQgYXZvaWRzIHBvdGVudGlhbCBlcnJvcnMuCgpOb3csIGxldCYjMzk7cyBwbGFjZSB0aGlzIHBhdGNoIGluIGNvbnRleHQuIFRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhgIHBhdGggdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBPY3Rlb25UWDIsIGEgTWFydmVsbCBBUk02NCBTb0MsIHNwZWNpZmljYWxseSB0aGUgQ045SyBvciBDTjEwSy4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgc29tZSBOSUMgb3IgbmV0d29yayBpbnRlcmZhY2UgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYHJ2dWAgc3RydWN0dXJlIGZpdHMgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLgoKSSB3YW50IHRvIGtub3cgd2hlcmUgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUgZHJpdmVyLCBzbyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGFuZCBNYWtlZmlsZSBmb3IgdGhpcyBkaXJlY3RvcnkgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRnJvbSB0aGVyZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyB2YXJpYWJsZSBpcyBpbml0aWFsaXplZCwgYW5kIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIHRoaXMgY2hlY2suIEkmIzM5O2xsIHByb2JhYmx5IGdyZXAgZm9yIGBwZjJjZ3hsbWFjX21hcGAgYWNyb3NzIHRoZSBkcml2ZXIgc291cmNlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkcml2ZXIgYW5kIHdoYXQgdGhpcyBjaGFuZ2UgZG9lcyB3aXRoaW4gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7T0NURU9OVFgyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo2OmNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy03LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMTpcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMi1cdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MjI9Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVx0Ym9vbCBcJiMzNDtEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoyNDpcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzE6Y29uZmlnIE9DVEVPTlRYMl9QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzM6XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzQtXHRzZWxlY3QgTkVUX0RFVkxJTktcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NTpjb25maWcgT0NURU9OVFgyX1ZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ3Olx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz01MT1jb25maWcgUlZVX0VTV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNTItXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjUzOlx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNTQtXHRkZWZhdWx0IG1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICYjNDM7PSBhZi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgJiM0Mzs9IGFmL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSAmIzQzOz0gbmljL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlPTY9Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICYjNDM7PSBydnVfbWJveC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICYjNDM7PSBydnVfYWYub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGUtOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2d4X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYzo2NzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9DR1gpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy02OC1cdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9DTjEwS19SUE0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTUtIC8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaDoxNjojZGVmaW5lXHRQQ0lfREVWSURfT0NURU9OVFgyX0NHWFx0XHQweEEwNTlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xNTQ9REVGSU5FX1NIT1dfQVRUUklCVVRFKG5wY19tY2FtX2xheW91dCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE1NjojZGVmaW5lIF9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVx0XHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSAjIyBfZm9wcyA9IHtcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTY1OiNkZWZpbmUgREVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUoX19uYW1lLCBfX3NpemUpXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY2LXN0YXRpYyBpbnQgX19uYW1lICMjIF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzAtfVx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNzE6X19PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfRk9QUyhfX25hbWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xODE9c3RhdGljIGludCBucGNfbWNhbV9kc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQyLSNkZWZpbmUgVE9UQUxfU1ogKE1BWF9OVU1fQkFOS1MgKiBNQVhfTlVNX1NVQl9CQU5LUyAqIE1BWF9TVUJCQU5LX0RFUFRIICogNjQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MjQzOkRFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKG5wY19tY2FtX2RzdGF0cywgVE9UQUxfU1opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0yNDU9c3RhdGljIGludCBucGNfbWNhbV9taXNtYXRjaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODQtLyogXCYjMzQ7JXVcXHQlZFxcdCV1XFxuXCYjMzQ7IG5lZWRzIGxlc3MgdGhhbiA2NCBjaGFyYWN0ZXJzIHRvIHByaW50LiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI4NTpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9taXNtYXRjaCwgVE9UQUxfU1opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjIxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9QVFBcdFx0XHQweEEwMENcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTIyLSNkZWZpbmUgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85OHh4X1BUUFx0XHQweEIxMDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yNy0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE9fUFRQXHQweEI2MDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjI4OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SU1RcdFx0XHQweEEwODVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI5LSNkZWZpbmUgUENJX0RFVklEX0NOMTBLX1BUUFx0XHRcdDB4QTA5RVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTA6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5MS1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTItXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTM6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NC1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTUtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTZYWF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTY6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Ny1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTgtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTk6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMC1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDEtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE5fUFRQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjAyOlx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDMtXHRcdFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA0LVx0XHRcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk1TU1fUFRQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjA1Olx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDYtXHRcdFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ1Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ2LVx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz05Mjc9c3RhdGljIHZvaWQgcnZ1X2dldF9sYmtfYnVmc2l6ZShzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTMzLVx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6OTM0Olx0XHRcdCAgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLLCBwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTkzNS1cdGlmICghcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNDQ3PWludCBydnVfZ2V0X251bV9sYmtfY2hhbnModm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MzQ1MzpcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9MQkssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDU0LVx0XHRcdCAgICAgIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDcxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRlx0MHhBMEY4XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzQ3Mz1zdGF0aWMgaW50IHJ2dV9lbmFibGVfc3Jpb3Yoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0OTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDk1Olx0aWYgKHJ2dS1cdTAwM2V2Zl9kZXZpZCA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDk2LVx0XHRjaGFucyA9IHJ2dV9nZXRfbnVtX2xia19jaGFucygpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNDojZGVmaW5lXHRQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlx0XHQweEEwNjVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI1OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXHRcdFx0MHhBMDYxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC0yNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYz0zOTI9c3RhdGljIHZvaWQgcnZ1X2xia19zZXRfY2hhbm5lbHMoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jLTQxNS1cdFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmM6NDE2Olx0XHRcdFx0ICAgICAgUENJX0RFVklEX09DVEVPTlRYMl9MQkssIHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE3LVx0XHRpZiAoIXBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYz0yODA2PXN0YXRpYyB2b2lkIHJ2dV9kYmdfbnBhX2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgyNS0vKiBQZXItbG1hYyBDR1ggZGVidWdmcyBmaWxlcyBuZWVkIGJvdGggUlZVIGFuZCBDR1ggaGFuZGxlOyBpbm9kZS1cdTAwM2VpX3ByaXZhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MjgyNjogKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODI3LSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgJiM0Mzs9IHJ2dV9uaWNwZi5vIG90eDJfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICYjNDM7PSBydnVfbmljdmYubyBvdHgyX3B0cC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICYjNDM7PSBydnVfcmVwLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Mi0vKiBQQ0kgZGV2aWNlIElEcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDM6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9QRiAgICAgICAgICAgICAgMHhBMDYzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXHRcdDB4QTA2NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXHRcdDB4QTBGOFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFx0XHQweEEwRjdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1OTk6XHRyZXR1cm4gKHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MDAtXHRcdChwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfUlZVX1JFUCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NjE3Olx0cmV0dXJuIHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYxOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYz0zNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml9wZl9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYzozNzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTM4LVx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jPTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBvdHgyX3ZmX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjIzOlx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzoyNDpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTI2LVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg4NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBPY3Rlb25UWDIgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBPY3Rlb25UWDIgZXRoZXJuZXQgZHJpdmVyLiBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBmaWxlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ2AuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4gSSYjMzk7bGwgcmVhZCB0aHJvdWdoIGl0IGNhcmVmdWxseSwgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBhbmQgYW55IHNwZWNpZmljIGZlYXR1cmVzIHRoaXMgZHJpdmVyIGV4cG9zZXMuIFRoaXMgS2NvbmZpZyBmaWxlIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiBob3cgdGhlIGRyaXZlciBpcyBzdHJ1Y3R1cmVkIGFuZCBob3cgaXRzIGJlaGF2aW91ciBpcyBjb250cm9sbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1hcnZlbGwgUlZVIE5ldHdvcmsgZHJpdmVycyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuICAgNzpcdFx0dHJpc3RhdGVcbiAgIDg6XHRcbiAgIDk6XHRjb25maWcgT0NURU9OVFgyX0FGXG4gIDEwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4gIDExOlx0XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbiAgMTI6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxMzpcdFx0ZGVwZW5kcyBvbiAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcbiAgMTQ6XHRcdGRlcGVuZHMgb24gUENJXG4gIDE1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXG4gIDE4Olx0XHQgIFVuaXQmIzM5O3MgYWRtaW4gZnVuY3Rpb24gbWFuYWdlciB3aGljaCBtYW5hZ2VzIGFsbCBSVlUgSFcgcmVzb3VyY2VzXG4gIDE5Olx0XHQgIGFuZCBwcm92aWRlcyBhIG1lZGl1bSB0byBvdGhlciBQRi9WRnMgdG8gY29uZmlndXJlIEhXLiBTaG91bGQgYmVcbiAgMjA6XHRcdCAgZW5hYmxlZCBmb3Igb3RoZXIgUlZVIGRldmljZSBkcml2ZXJzIHRvIHdvcmsuXG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXG4gIDIzOlx0XHRib29sIFwmIzM0O0Rpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXCYjMzQ7XG4gIDI0Olx0XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxuICAyNTpcdFx0ZGVmYXVsdCBuXG4gIDI2Olx0XHRoZWxwXG4gIDI3Olx0XHQgIFRoaXMgY29uZmlnIG9wdGlvbiBkaXNhYmxlcyBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBzdWNoIGFzIE5JWCBTUUVzXG4gIDI4Olx0XHQgICwgTlBBIHN0YWNrIHBhZ2VzIGV0YyBpbiBOREMuIEFsc28gbG9ja3MgZG93biBOSVggU1EvQ1EvUlEvUlNTIGFuZFxuICAyOTpcdFx0ICBOUEEgQXVyYS9Qb29sIGNvbnRleHRzLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBPQ1RFT05UWDJfUEZcbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgMzM6XHRcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuICAzNDpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDM1Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDM2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4gIDM3Olx0XHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuICAzODpcdFx0c2VsZWN0IERJTUxJQlxuICAzOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNDA6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNDE6XHRcdGRlcGVuZHMgb24gTUFDU0VDIHx8ICFNQUNTRUNcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxuICA0NDpcdFxuICA0NTpcdGNvbmZpZyBPQ1RFT05UWDJfVkZcbiAgNDY6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuICA0NzpcdFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDIHZpcnR1YWwgZnVuY3Rpb24uXG4gIDUwOlx0XG4gIDUxOlx0Y29uZmlnIFJWVV9FU1dJVENIXG4gIDUyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gIDUzOlx0XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxuICA1NDpcdFx0ZGVmYXVsdCBtXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgUlZVIEUtU3dpdGNoIHRoYXRcbiAgNTc6XHRcdCAgcHJvdmlkZXMgaW50ZXJuYWwgU1JJT1YgcGFja2V0IHN0ZWVyaW5nIGFuZCBzd2l0Y2hpbmcuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MTYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgaXNfcGZfY2d4bWFwcGVkYCBGdW5jdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgaXNfcGZfY2d4bWFwcGVkYCBmdW5jdGlvbiwgYW5kIHRoZSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UgYW5kIHVzYWdlLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBtZWFucyB0cmFjaW5nIGl0cyBjYWxscyBhbmQgbG9va2luZyBhdCBpdHMgZGVmaW5pdGlvbi4gU28sIGxldCYjMzk7cyBnZXQgYSBoYW5kbGUgb24gd2hlcmUgaXQmIzM5O3MgYWN0dWFsbHkgYmVpbmcgKnVzZWQqIHdpdGhpbiB0aGUgY29kZWJhc2UuIEkmIzM5O2xsIGZpcmUgdXAgZ3JlcC4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gdG9vbCBmb3IgdGhpcyBraW5kIG9mIHF1aWNrIGFuYWx5c2lzLiBXZSYjMzk7bGwgZmVlZCBpdCB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgbGV0IGl0IHNjb3VyIGZvciBldmVyeSBpbnN0YW5jZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kIGFuZCB3aGVyZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpc19wZl9jZ3htYXBwZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbnBjLmM9NDM0Nz1ib29sIG5wY19pc19jZ3hfb3JfbGJrKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYy00MzQ4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL25wYy5jOjQzNDk6XHRyZXR1cm4gaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYy00MzUwLVx0XHRpc19sYmtfdmYocnZ1LCBwY2lmdW5jKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz03OTA9c3RhdGljIHZvaWQgcnZ1X3NldHVwX3BmdmZfbWFjYWRkcmVzcyhzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtODAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6ODAyOlx0XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTgwMy1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0xNTE1PWludCBydnVfZ2V0X25peF9ibGthZGRyKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTUyMy1cdC8qIEFsbCBDR1ggbWFwcGVkIFBGcyBhcmUgc2V0IHdpdGggYXNzaWduZWQgTklYIGJsb2NrIGR1cmluZyBpbml0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzoxNTI0Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTUyNS1cdFx0YmxrYWRkciA9IHBmLVx1MDAzZW5peF9ibGthZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oPTk2MD1zdGF0aWMgaW5saW5lIGludCBydnVfZ2V0X3BmKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1MTYgcGNpZnVuYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05NzAtLyogQ0dYIEFQSXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjk3MTpzdGF0aWMgaW5saW5lIGJvb2wgaXNfcGZfY2d4bWFwcGVkKHN0cnVjdCBydnUgKnJ2dSwgdTggcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05NzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oPTk4Nj1zdGF0aWMgaW5saW5lIGJvb2wgaXNfY2d4X3ZmKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtOTg4LVx0cmV0dXJuICgocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjk4OTpcdFx0aXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk5MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTQ0PWJvb2wgaXNfbWFjX2ZlYXR1cmVfc3VwcG9ydGVkKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBpbnQgZmVhdHVyZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6NDk6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy01MC1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTQ1Nz1pbmxpbmUgYm9vbCBpc19jZ3hfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00NTktXHRpZiAoKHBjaWZ1bmMgXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0NjA6XHQgICAgIWlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00NjEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDY1PXZvaWQgcnZ1X2NneF9lbmFkaXNfcnhfYnAoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00NzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6NDcxOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDcyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTY4MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfbWFjX2FkZHJfc2V0KHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNjg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjY4ODpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTY4OS1cdFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTc3MT1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfbWFjX2FkZHJfZ2V0KHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNzc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjc3NzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcmVxLVx1MDAzZWhkci5wY2lmdW5jKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNzc4LVx0XHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9ODIzPXN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04MzYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo4Mzc6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04MzgtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTg1OT1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfcHRwX3J4X2VuYWJsZShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTg2MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6ODYyOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCByZXEtXHUwMDNlaGRyLnBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjMtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTkwOT1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfZ2V0X2xpbmtpbmZvKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjkxNzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkxOC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTkyNz1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfZmVhdHVyZXNfZ2V0KHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjkzNTpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkzNi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEwMDE9aW50IHJ2dV9jZ3hfY2ZnX3BhdXNlX2ZybShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1OCB0eF9wYXVzZSwgdTggcnhfcGF1c2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTQtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMDE1Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTAxNi1cdFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEwNDA9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2NmZ19wYXVzZV9mcm0oc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMDUyLVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA1MzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwNTQtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDY4PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfcGh5X2ZlY19zdGF0cyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwNzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA3NDpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwNzUtXHRcdHJldHVybiBMTUFDX0FGX0VSUl9QRl9OT1RfTUFQUEVEO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTI2PWludCBydnVfY2d4X3N0YXJ0X3N0b3BfaW8oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBzdGFydClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTEzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTMxOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTEzMi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTExNzM9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3NldF9mZWNfcGFyYW0oc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjExODA6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTgxLVx0XHRyZXR1cm4gLUVQRVJNO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTkwPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfYXV4X2xpbmtfaW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTE5OTpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyMDAtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEyNzc9aW50IHJ2dV9jZ3hfcHJpb19mbG93X2N0cmxfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU4IHR4X3BhdXNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjg4LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTI4OTpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyOTAtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMzE0PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcmlvX2Zsb3dfY3RybF9jZmcoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzI2LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTMyNzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzMjgtXHRcdHJldHVybiAtRU5PREVWO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMzQxPXZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEzNDg6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzQ5LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzNjY9Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTM3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMzc3Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTM3OC1cdFx0cmV0dXJuIHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzOTg9Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTE0MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTQwNjpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTE0MDctXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTgyMj1zdGF0aWMgaW50IHJ2dV9kYmdfcnZ1X3BmX2NneF9tYXBfZGlzcGxheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbHAsIHZvaWQgKnVudXNlZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTg0Ni1cdGZvciAocGYgPSAwOyBwZiBcdTAwM2MgcnZ1LVx1MDAzZWh3LVx1MDAzZXRvdGFsX3BmczsgcGYmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjg0NzpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTg0OC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzQwPXN0YXRpYyBpbnQgbml4X2ludGVyZmFjZV9pbml0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCB0eXBlLCBpbnQgbml4bGYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1Mi1cdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzUzOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU0LVx0ICAgIHR5cGUgIT0gTklYX0lOVEZfVFlQRV9TRFApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTU5NT1zdGF0aWMgaW50IG5peF9icF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNjA5LVx0dHlwZSA9IGlzX2xia192ZihydnUsIHBjaWZ1bmMpID8gTklYX0lOVEZfVFlQRV9MQksgOiBOSVhfSU5URl9UWVBFX0NHWDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo2MTA6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgdHlwZSAhPSBOSVhfSU5URl9UWVBFX0xCSylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy02MTEtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz03NDE9c3RhdGljIGludCBuaXhfYnBfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNzU5LVx0LyogRW5hYmxlIGJhY2twcmVzc3VyZSBvbmx5IGZvciBDR1ggbWFwcGVkIFBGcyBhbmQgTEJLL1NEUCBpbnRlcmZhY2UgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo3NjA6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgdHlwZSAhPSBOSVhfSU5URl9UWVBFX0xCSyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy03NjEtXHQgICAgdHlwZSAhPSBOSVhfSU5URl9UWVBFX1NEUClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MTUxMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNzAxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjE3MDI6XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE3MDMtXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjExMj1zdGF0aWMgaW50IG5peF9nZXRfdHhfbGluayhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yMTE5LVx0XHRyZXR1cm4gaHctXHUwMDNlY2d4X2xpbmtzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjIxMjA6XHR9IGVsc2UgaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMjEtXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjEyOT1zdGF0aWMgdm9pZCBuaXhfZ2V0X3R4c2NocV9yYW5nZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yMTM4LVx0XHQqZW5kID0gKnN0YXJ0ICYjNDM7IGh3LVx1MDAzZWNhcC5uaXhfdHhzY2hfcGVyX2xia19sbWFjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjIxMzk6XHR9IGVsc2UgaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkgeyAvKiBDR1ggbGlua3MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yMTQwLVx0XHQqc3RhcnQgPSBody1cdTAwM2VjYXAubml4X3R4c2NoX3Blcl9jZ3hfbG1hYyAqIGxpbms7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTI0ODY9c3RhdGljIGludCBuaXhfc21xX2ZsdXNoKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI1MDQtXHQvKiBlbmFibGUgY2d4IHR4IGlmIGRpc2FibGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjUwNTpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yNTA2LVx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCwgXHUwMDI2bG1hY19pZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTI4Nzk9dm9pZCBydnVfbml4X3R4X3RsMl9jZmcoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkciwgdTE2IHBjaWZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI4ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6Mjg4ODpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiAhaXNfcmVwX2RldihydnUsIHBjaWZ1bmMpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI4ODktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzU2OD12b2lkIG5peF9nZXRfbWNlX2xpc3Qoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1NzQtXHRpZiAoIWh3LVx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0IHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzU3NTpcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNTc2LVx0XHRcdCAgICAgcGNpZnVuYyBcdTAwMjYgflJWVV9QRlZGX0ZVTkNfTUFTSykpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM2MDA9c3RhdGljIGludCBuaXhfdXBkYXRlX21jZV9ydWxlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM2MTYtXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjM2MTc6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE4LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NDY4ND1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfc2V0X2h3X2ZycyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBuaXhfZnJzX2NmZyAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy00NzI0LVx0LyogQ2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgZnJvbSBDR1ggbWFwcGVkIFJWVSBQRiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjQ3MjU6XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNDcyNi1cdFx0LyogR2V0IENHWCBhbmQgTE1BQyB0byB3aGljaCB0aGlzIFBGIGlzIG1hcHBlZCBhbmQgZmluZCBsaW5rICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzMjI9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX3N0YXJ0X3J4KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTM0NS1cdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NTM0NjpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IHJ2dS1cdTAwM2VyZXBfbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01MzQ3LVx0XHRydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHJ2dSwgcGNpZnVuYywgdHJ1ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzNTI9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX3N0b3Bfcngoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01Mzc3LVx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1Mzc4Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgcnZ1LVx1MDAzZXJlcF9tb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNzktXHRcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzODU9dm9pZCBydnVfbml4X2xmX3RlYXJkb3duKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBibGthZGRyLCBpbnQgbml4bGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTU0MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NTQwNzpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IHJ2dS1cdTAwM2VyZXBfbW9kZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01NDA4LVx0XHRydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHJ2dSwgcGNpZnVuYywgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYz03ODI9dm9pZCBydnVfbnBjX2luc3RhbGxfcHJvbWlzY19lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy04NDktXHRpZiAoaHctXHUwMDNlY2FwLm5peF9yeF9tdWx0aWNhc3QgXHUwMDI2XHUwMDI2IHBmdmYtXHUwMDNldXNlX21jZV9saXN0IFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jOjg1MDpcdCAgICBpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy04NTEtXHRcdCoodTY0ICopXHUwMDI2YWN0aW9uID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM9NDIyOD1pbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy00Mjc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jOjQyNzc6XHRcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMtNDI3OC1cdFx0XHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFx1MDAyNmNneF9pZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9MTIwPWludCBydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYy0xMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM6MTI1Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMTI2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9MzIyPWludCBydnVfcmVwX2luc3RhbGxfbWNhbV9ydWxlcyhzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTMzMi1cdGZvciAocGYgPSAxOyBwZiBcdTAwM2MgaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzozMzM6XHRcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTMzNC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9NDQ2PWludCBydnVfbWJveF9oYW5kbGVyX2dldF9yZXBfY250KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtNDYxLVx0Zm9yIChwZiA9IDA7IHBmIFx1MDAzYyBydnUtXHUwMDNlaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzo0NjI6XHRcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTQ2My1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmM9ODM9c3RhdGljIGludCBydnVfc3dpdGNoX2luc3RhbGxfcnVsZXMoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYy05Mi1cdGZvciAocGYgPSAxOyBwZiBcdTAwM2MgaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzo5MzpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTQtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jPTIxNz12b2lkIHJ2dV9zd2l0Y2hfZGlzYWJsZShzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTIzNS1cdGZvciAocGYgPSAxOyBwZiBcdTAwM2MgaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzoyMzY6XHRcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTIzNy1cdFx0XHRjb250aW51ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQyOAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIEN1cnJlbnQgQ29tbWl0KioKCk9rYXksIHRpbWUgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoaXMgY29tbWl0LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ3JhYiB0aGUgYGdpdCBsb2dgIHRvIHByb3ZpZGUgc29tZSBjb250ZXh0IGFyb3VuZCB0aGlzIGJ1ZyBmaXggb3IgY2hhbmdlLiBMZXQgbWUgc2VlLi4uIHdlIGRvbiYjMzk7dCBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gYSBgZ2l0IGxvZ2AgdG9vbCwgYXMgSSBleHBlY3RlZCwgc28gSSYjMzk7bGwgbmVlZCB0byB1c2Ugd2hhdCYjMzk7cyBhdmFpbGFibGUuIEVpdGhlciBgZ3JlcHBlcmAgb3IgY2hlY2tpbmcgdGhlIGZpbGUgY29udGV4dCBzaG91bGQgYmUgc3VmZmljaWVudC4gSSYjMzk7bGwgcmVhZCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oYCBmaWxlIGFyb3VuZCBsaW5lIDk3MC4gSG9wZWZ1bGx5LCB0aGUgc3Vycm91bmRpbmcgY29kZSB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgc2l0dWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5NjA6XHRzdGF0aWMgaW5saW5lIGludCBydnVfZ2V0X3BmKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB1MTYgcGNpZnVuYylcbiA5NjE6XHR7XG4gOTYyOlx0XHRpZiAoaXNfY24yMGsocGRldikpXG4gOTYzOlx0XHRcdHJldHVybiAocGNpZnVuYyBcdTAwM2VcdTAwM2UgUlZVX0NOMjBLX1BGVkZfUEZfU0hJRlQpIFx1MDAyNlxuIDk2NDpcdFx0XHRcdFJWVV9DTjIwS19QRlZGX1BGX01BU0s7XG4gOTY1Olx0XHRlbHNlXG4gOTY2Olx0XHRcdHJldHVybiAocGNpZnVuYyBcdTAwM2VcdTAwM2UgUlZVX09UWDJfUEZWRl9QRl9TSElGVCkgXHUwMDI2XG4gOTY3Olx0XHRcdFx0UlZVX09UWDJfUEZWRl9QRl9NQVNLO1xuIDk2ODpcdH1cbiA5Njk6XHRcbiA5NzA6XHQvKiBDR1ggQVBJcyAqL1xuIDk3MTpcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19wZl9jZ3htYXBwZWQoc3RydWN0IHJ2dSAqcnZ1LCB1OCBwZilcbiA5NzI6XHR7XG4gOTczOlx0XHRpZiAoIXJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcClcbiA5NzQ6XHRcdFx0cmV0dXJuIGZhbHNlO1xuIDk3NTpcdFxuIDk3NjpcdFx0cmV0dXJuIChwZiBcdTAwM2U9IFBGX0NHWE1BUF9CQVNFIFx1MDAyNlx1MDAyNiBwZiBcdTAwM2M9IHJ2dS1cdTAwM2VjZ3hfbWFwcGVkX3BmcykgXHUwMDI2XHUwMDI2XG4gOTc3Olx0XHRcdCFpc19zZHBfcGYocnZ1LCBydnVfbWFrZV9wY2lmdW5jKHJ2dS1cdTAwM2VwZGV2LCBwZiwgMCkpO1xuIDk3ODpcdH1cbiA5Nzk6XHRcbiA5ODA6XHRzdGF0aWMgaW5saW5lIHZvaWQgcnZ1X2dldF9jZ3hfbG1hY19pZCh1OCBtYXAsIHU4ICpjZ3hfaWQsIHU4ICpsbWFjX2lkKVxuIDk4MTpcdHtcbiA5ODI6XHRcdCpjZ3hfaWQgPSAobWFwIFx1MDAzZVx1MDAzZSA0KSBcdTAwMjYgMHhGO1xuIDk4MzpcdFx0KmxtYWNfaWQgPSAobWFwIFx1MDAyNiAweEYpO1xuIDk4NDpcdH1cbiA5ODU6XHRcbiA5ODY6XHRzdGF0aWMgaW5saW5lIGJvb2wgaXNfY2d4X3ZmKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4gOTg3Olx0e1xuIDk4ODpcdFx0cmV0dXJuICgocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSBcdTAwMjZcdTAwMjZcbiA5ODk6XHRcdFx0aXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpKTtcbiA5OTA6XHR9XG4gOTkxOlx0XG4gOTkyOlx0I2RlZmluZSBNKF9uYW1lLCBfaWQsIGZuX25hbWUsIHJlcSwgcnNwKVx0XHRcdFx0XFxcbiA5OTM6XHRpbnQgcnZ1X21ib3hfaGFuZGxlcl8gIyMgZm5fbmFtZShzdHJ1Y3QgcnZ1ICosIHN0cnVjdCByZXEgKiwgc3RydWN0IHJzcCAqKTtcbiA5OTQ6XHRNQk9YX01FU1NBR0VTXG4gOTk1Olx0I3VuZGVmIE1cbiA5OTY6XHRcbiA5OTc6XHQvKiBNYm94IEFQSXMgKi9cbiA5OTg6XHR2b2lkIHJ2dV9xdWV1ZV93b3JrKHN0cnVjdCBtYm94X3dxX2luZm8gKm13LCBpbnQgZmlyc3QsXG4gOTk5Olx0XHRcdCAgICBpbnQgbWRldnMsIHU2NCBpbnRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0NTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA1NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgT0NURU9OVFgyX0FGIERyaXZlciYjMzk7cyBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBhdCBoYW5kIGlzIHdoZXRoZXIgdGhlIGBPQ1RFT05UWDJfQUZgIGRyaXZlciBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgT0NURU9OVFgyX0FGYCAqaXMqLiBBaCwgaXQmIzM5O3MgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIE5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIGZ1enppbmcgY3JpdGVyaWEg4oCTIHNwZWNpZmljYWxseSwgd2hlbiB3ZSAqc2hvdWxkbiYjMzk7dCogZnV6eiwgdGhlICYjMzQ7bmVnYXRpdmUgY3JpdGVyaWEuJiMzNDsgU2VjdGlvbiAyLCBhbHJpZ2h0LgoKSXQgc2F5cyB3ZSBzaG91bGQgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gY2VydGFpbiBjYXRlZ29yaWVzLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbG9va2luZyBhdCAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4mIzM0OyBUaGlzIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzICpub3QqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuCgpUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBoZXJlIGlzIGBhbWQ2NGAuIExvb2tpbmcgYXQgdGhlIEtjb25maWcsIHRoZSBkcml2ZXImIzM5O3MgY29uZmlndXJhdGlvbiwgaXQgZGVwZW5kcyBvbiBgKDY0QklUICZhbXA7JmFtcDsgQ09NUElMRV9URVNUKSB8fCBBUk02NGAgYW5kIGFsc28gb24gYFBDSWAuIEEgbGlnaHRidWxiIGp1c3Qgd2VudCBvZmYhIElzIHRoaXMgTWFydmVsbCBPY3Rlb25UWDIgYSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUMgb3IgU29DIHRoYXQgYWJzb2x1dGVseSBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZT8gTGV0JiMzOTtzIGludmVzdGlnYXRlLgoKT2theSwgSSBzZWUgYFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGIDB4QTA2NWAgYW5kIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAuIEJpbmdvLiBUaGUgdmVuZG9yIGlzIENhdml1bSwgYW5kIHRoYXQgY29uZmlybXMgaXQmIzM5O3MgTWFydmVsbCBoYXJkd2FyZS4gQ2FuIHN0YW5kYXJkIFFFTVUgZW11bGF0ZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQUY/IERlZmluaXRlbHkgbm90LiBRRU1VIG9mZmVycyB2aXJ0aW8tbmV0LCBlMTAwMCwgYW5kIG90aGVycywgYnV0ICpubyogQ2F2aXVtIE9jdGVvblRYMiBlbXVsYXRpb24uIEZ1cnRoZXJtb3JlLCBpdCYjMzk7cyBhbiBBUk02NCBuZXR3b3JrIHByb2Nlc3NvciAoQ045SywgQ04xMEssIENOMjBLIFNvQykuIEl0ICpvbmx5KiBjb21waWxlcyBvbiB4ODYvYW1kNjQgaWYgYENPTkZJR19DT01QSUxFX1RFU1RgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIGEgYmlnIGhpbnQuIEluIGEgcmVhbC13b3JsZCBzY2VuYXJpbywgT2N0ZW9uVFgyIHJ1bnMgb24gdGhlIEFSTTY0IGNvcmVzIG9mIHRoZSBPY3Rlb25UWDIgU29DIG9yIGlzIGEgUENJIGRldmljZS4KClNvLCB0aGUgbmV4dCBvYnZpb3VzIHF1ZXN0aW9uOiBJcyB0aGVyZSBhbnkga2luZCBvZiB2aXJ0dWFsIGRldmljZSwgbG9vcGJhY2ssIG9yIG1vY2sgZGV2aWNlIGltcGxlbWVudGF0aW9uIGZvciBNYXJ2ZWxsIE9jdGVvblRYMiB3aXRoaW4gdGhlIGtlcm5lbD8gUHJvYmFibHkgbm90LiBJdCYjMzk7cyBhIHNwZWNpYWxpemVkIHBpZWNlIG9mIGhhcmR3YXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LCBidXQgYmFzZWQgb24gZXZlcnl0aGluZyBJIHNlZSBzbyBmYXIsIHRoaXMgY2xlYXJseSBmaXRzIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz00ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo0NTpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00Ni1cdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzQ0Nz1pbnQgcnZ1X2dldF9udW1fbGJrX2NoYW5zKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0NzE6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXHQweEEwRjhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNDczPXN0YXRpYyBpbnQgcnZ1X2VuYWJsZV9zcmlvdihzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0OTU6XHRpZiAocnZ1LVx1MDAzZXZmX2RldmlkID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0OTYtXHRcdGNoYW5zID0gcnZ1X2dldF9udW1fbGJrX2NoYW5zKCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI0OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXHRcdDB4QTA2NVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjUtI2RlZmluZVx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcdFx0XHQweEEwNjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI4MDY9c3RhdGljIHZvaWQgcnZ1X2RiZ19ucGFfaW5pdChzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODI1LS8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLVx1MDAzZWlfcHJpdmF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODI2OiAqIHBvaW50cyBoZXJlIHNvIHNlcV9maWxlIG9wcyBhdm9pZCBwY2lfZ2V0X2RldmljZShQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4MjctICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDQtI2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRlx0XHQweEEwNjRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjQ1OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRlx0XHQweEEwRjhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1OTk6XHRyZXR1cm4gKHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MDAtXHRcdChwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfUlZVX1JFUCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzoyMzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjQtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk3OQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRGlzc2VjdGluZyB0aGUgYHJ2dV9wcm9iZWAgYW5kIFJlZ2lzdHJhdGlvbiBQcm9jZXNzKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBydnVfcHJvYmVgIGZ1bmN0aW9uIG9wZXJhdGVzIGFuZCwgY3J1Y2lhbGx5LCBob3cgaXQgZ2V0cyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgYHJ2dS5jYCBjb2RlLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGF0IGZpbGUsIGBydnUuY2AsIGFuZCB6ZXJvIGluIG9uIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgZmxvdyBhbmQgZmlndXJlIG91dCB0aGUgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbeKAlGlzIGl0IGEgc2ltcGxlIGZ1bmN0aW9uIHBvaW50ZXIgcGFzc2VkIHRvIGEgZHJpdmVyIGZyYW1ld29yaywgb3Igc29tZXRoaW5nIG1vcmUgaW50cmljYXRlPyBLbm93aW5nIHRoaXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBhbmQgcHJvYmluZyBhcmUgaGFuZGxlZC4gSSBleHBlY3QgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGRldGFpbHMgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0c3RhdGljIGlycXJldHVybl90IHJ2dV9tYm94X3BmX2ludHJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpydnVfaXJxKTtcbiAgNDE6XHRzdGF0aWMgaXJxcmV0dXJuX3QgcnZ1X21ib3hfaW50cl9oYW5kbGVyKGludCBpcnEsIHZvaWQgKnJ2dV9pcnEpO1xuICA0MjpcdFxuICA0MzpcdC8qIFN1cHBvcnRlZCBkZXZpY2VzICovXG4gIDQ0Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0ge1xuICA0NTpcdFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcbiAgNDY6XHRcdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXG4gIDQ3Olx0fTtcbiAgNDg6XHRcbiAgNDk6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O1N1bmlsIEdvdXRoYW0gXHUwMDNjc2dvdXRoYW1AbWFydmVsbC5jb21cdTAwM2VcJiMzNDspO1xuICA1MDpcdE1PRFVMRV9ERVNDUklQVElPTihEUlZfU1RSSU5HKTtcbiAgNTE6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuICA1MjpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBydnVfaWRfdGFibGUpO1xuICA1MzpcdFxuICA1NDpcdHN0YXRpYyBjaGFyICpta2V4X3Byb2ZpbGU7IC8qIE1LRVggcHJvZmlsZSBuYW1lICovXG4gIDU1Olx0bW9kdWxlX3BhcmFtKG1rZXhfcHJvZmlsZSwgY2hhcnAsIDAwMDApO1xuICA1NjpcdE1PRFVMRV9QQVJNX0RFU0MobWtleF9wcm9maWxlLCBcJiMzNDtNS0VYIHByb2ZpbGUgbmFtZSBzdHJpbmdcJiMzNDspO1xuICA1NzpcdFxuICA1ODpcdHN0YXRpYyBjaGFyICprcHVfcHJvZmlsZTsgLyogS1BVIHByb2ZpbGUgbmFtZSAqL1xuICA1OTpcdG1vZHVsZV9wYXJhbShrcHVfcHJvZmlsZSwgY2hhcnAsIDAwMDApO1xuICA2MDpcdE1PRFVMRV9QQVJNX0RFU0Moa3B1X3Byb2ZpbGUsIFwmIzM0O0tQVSBwcm9maWxlIG5hbWUgc3RyaW5nXCYjMzQ7KTtcbiAgNjE6XHRcbiAgNjI6XHRzdGF0aWMgdm9pZCBydnVfc2V0dXBfaHdfY2FwYWJpbGl0aWVzKHN0cnVjdCBydnUgKnJ2dSlcbiAgNjM6XHR7XG4gIDY0Olx0XHRzdHJ1Y3QgcnZ1X2h3aW5mbyAqaHcgPSBydnUtXHUwMDNlaHc7XG4gIDY1Olx0XG4gIDY2Olx0XHRody1cdTAwM2VjYXAubml4X3R4X2FnZ3JfbHZsID0gTklYX1RYU0NIX0xWTF9UTDE7XG4gIDY3Olx0XHRody1cdTAwM2VjYXAubml4X2ZpeGVkX3R4c2NocV9tYXBwaW5nID0gZmFsc2U7XG4gIDY4Olx0XHRody1cdTAwM2VjYXAubml4X3NoYXBpbmcgPSB0cnVlO1xuICA2OTpcdFx0aHctXHUwMDNlY2FwLm5peF90eF9saW5rX2JwID0gdHJ1ZTtcbiAgNzA6XHRcdGh3LVx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0ID0gdHJ1ZTtcbiAgNzE6XHRcdGh3LVx1MDAzZWNhcC5uaXhfc2hhcGVyX3RvZ2dsZV93YWl0ID0gZmFsc2U7XG4gIDcyOlx0XHRody1cdTAwM2VjYXAubnBjX2hhc2hfZXh0cmFjdCA9IGZhbHNlO1xuICA3MzpcdFx0aHctXHUwMDNlY2FwLm5wY19leGFjdF9tYXRjaF9lbmFibGVkID0gZmFsc2U7XG4gIDc0Olx0XHRody1cdTAwM2VydnUgPSBydnU7XG4gIDc1Olx0XG4gIDc2Olx0XHRpZiAoaXNfcnZ1X3ByZV85Nnh4X0MwKHJ2dSkpIHtcbiAgNzc6XHRcdFx0aHctXHUwMDNlY2FwLm5peF9maXhlZF90eHNjaHFfbWFwcGluZyA9IHRydWU7XG4gIDc4Olx0XHRcdGh3LVx1MDAzZWNhcC5uaXhfdHhzY2hfcGVyX2NneF9sbWFjID0gNDtcbiAgNzk6XHRcdFx0aHctXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfbGJrX2xtYWMgPSAxMzI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTg1CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBydnUuYyBEcml2ZXIqKgoKT2theSwgc28gYHJ2dS5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0JiMzOTtzIGEgUENJIGRyaXZlci4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpZGVudGlmaWVkIGFzIGEgQ2F2aXVtIGRldmljZSwgc3BlY2lmaWNhbGx5IHRoZSBPY3Rlb24gVFgyIFJWVSBBRiwgYmFzZWQgb24gdGhlIGBQQ0lfREVWSUNFYCBtYWNybyBkZWZpbmluZyB0aGUgdmVuZG9yIGFuZCBkZXZpY2UgSURzLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciB3b3JrcywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBydnVfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIG1hZ2ljIGxpa2VseSBoYXBwZW5zLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9wY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUyMzkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTmF2aWdhdGluZyB0aGUgUENJIERyaXZlciBMYW5kc2NhcGUgaW4gUlZVKioKCk9rYXksIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZHJpdmVyIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGZvciB0aGUgUENJIGRldmljZXMgd2l0aGluIHRoZSBSVlUgY29kZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGUga2V5IHdpbGwgbGllIHdpdGhpbiBlaXRoZXIgdGhlIGBtb2R1bGVfcGNpX2RyaXZlcmAgbWFjcm8gb3IsIG1vcmUgZGlyZWN0bHksIHRoZSBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAgZnVuY3Rpb24gY2FsbC4gSSBuZWVkIHRvIHF1aWNrbHkgbG9jYXRlIHdoZXJlIHRoZXNlIGFyZSB1c2VkIHdpdGhpbiBgcnZ1LmNgLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBhbmQgYXR0YWNobWVudCBvZiB0aGUgUENJIGRyaXZlciBpcyBoYW5kbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMDM6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0NDMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTG9jYXRpbmcgdGhlIFBDSSBEcml2ZXIgaW4gcnZ1LmMqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGBwY2lfZHJpdmVyYCBzdHJ1Y3R1cmUgd2l0aGluIGBydnUuY2AuIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgc2luY2UgaXQmIzM5O3MgYW4gYHJ2dWAgZmlsZSwgd2UmIzM5O3JlIGxpa2VseSBkZWFsaW5nIHdpdGggc29tZSBraW5kIG9mIHN5c3RlbS1sZXZlbCBvciBoYXJkd2FyZSBhYnN0cmFjdGlvbi4gVGhlIGBwY2lfZHJpdmVyYCBzdHJ1Y3R1cmUgaXMgZnVuZGFtZW50YWwgZm9yIGFueSBQQ0kgZGV2aWNlIGludGVyYWN0aW9uLCBzbyBpdCBuZWVkcyB0byBiZSBsb2NhdGVkLiBNeSBnb2FsIG5vdyBpcyB0byBxdWlja2x5IG5hdmlnYXRlIHRvIHRoZSBzb3VyY2UgY29kZSBhbmQgcGlucG9pbnQgd2hlcmUgdGhpcyBkcml2ZXIgaXMgZGVmaW5lZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBgcnZ1YCBtb2R1bGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBvdmVyYWxsIHN5c3RlbS4gVGltZSB0byBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jPTIwNjA9c3RhdGljIHZvaWQgY2d4X3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmM6MjA3NDpzdHJ1Y3QgcGNpX2RyaXZlciBjZ3hfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmMtMjA3NS1cdC5uYW1lID0gRFJWX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg9MTMyPXN0cnVjdCBjZ3hfZXZlbnRfY2Ige1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTEzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oOjEzNzpleHRlcm4gc3RydWN0IHBjaV9kcml2ZXIgY2d4X2RyaXZlcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTEzOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuYz0xNjA5PXN0YXRpYyB2b2lkIG1jc19yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmMtMTYyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jOjE2MjI6c3RydWN0IHBjaV9kcml2ZXIgbWNzX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MjMtXHQubmFtZSA9IERSVl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oPTE1NT1zdHJ1Y3QgbWNzX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmgtMTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmg6MTY1OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmgtMTY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjEyOnN0cnVjdCBwY2lfZHJpdmVyIHB0cF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MTMtXHQubmFtZSA9IERSVl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oPTI5PXZvaWQgcHRwX3N0YXJ0KHN0cnVjdCBydnUgKnJ2dSwgdTY0IHNjbGssIHUzMiBleHRfY2xrX2ZyZXEsIHUzMiBleHR0cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaC0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oOjMxOmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBwdHBfZHJpdmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmgtMzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9Mzc0Mz1zdGF0aWMgdm9pZCBydnVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzc1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM3NTM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNzU0LVx0Lm5hbWUgPSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTM1MDk9c3RhdGljIHZvaWQgb3R4Ml9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zNTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYzozNTcyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBvdHgyX3BmX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMtMzU3My1cdC5uYW1lID0gRFJWX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz04MTc9c3RhdGljIHZvaWQgb3R4MnZmX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6ODY3OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBvdHgydmZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYy04NjgtXHQubmFtZSA9IERSVl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYz04NDM9c3RhdGljIHZvaWQgcnZ1X3JlcF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3JlcC5jLTg2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYzo4NjE6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9yZXBfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3JlcC5jLTg2Mi1cdC5uYW1lID0gRFJWX05BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MjA0CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSVlUgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgYHJ2dV9kcml2ZXJgLiBSaWdodCBvZmYgdGhlIGJhdCwgaXQmIzM5O3MgYSBQQ0kgZHJpdmVyLiBJIGNhbiB0ZWxsIGJlY2F1c2Ugb2YgdGhlIG5hbWluZyBjb252ZW50aW9uLCBhbmQgb2YgY291cnNlLCBiZWNhdXNlIG9mIHRoZSBjb250ZXh0IEkmIzM5O20gd29ya2luZyBpbi4gVGhlIHZlbmRvciBJRCBpcyBgUENJX1ZFTkRPUl9JRF9DQVZJVU1gICgweDE3N2QpLiBBaCwgQ2F2aXVtLCB0aGF0IGJyaW5ncyBiYWNrIG1lbW9yaWVzLiBBbmQgdGhlIGRldmljZSBJRCBpcyBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgICgweGEwNjUpLiBUaGF0IGNsZWFybHkgcG9pbnRzIHRvIGFuIE9jdGVvbiBUWDIgUlZVIEFGIGRldmljZS4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGUgYHJ2dV9pbml0X21vZHVsZWAgZnVuY3Rpb24uIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgc2VlIHdoYXQga2luZCBvZiByZWdpc3RlciBtYXBwaW5ncyBhbmQgaGFyZHdhcmUgc2V0dXAgdGhpcyBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzc1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszNzUwOlx0XHRydnVfY2xlYXJfcnZ1bV9ibGtfcmV2aWQocnZ1KTtcbjM3NTE6XHR9XG4zNzUyOlx0XG4zNzUzOlx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XG4zNzU0Olx0XHQubmFtZSA9IERSVl9OQU1FLFxuMzc1NTpcdFx0LmlkX3RhYmxlID0gcnZ1X2lkX3RhYmxlLFxuMzc1NjpcdFx0LnByb2JlID0gcnZ1X3Byb2JlLFxuMzc1NzpcdFx0LnJlbW92ZSA9IHJ2dV9yZW1vdmUsXG4zNzU4Olx0XHQuc2h1dGRvd24gPSBydnVfc2h1dGRvd24sXG4zNzU5Olx0fTtcbjM3NjA6XHRcbjM3NjE6XHRzdGF0aWMgaW50IF9faW5pdCBydnVfaW5pdF9tb2R1bGUodm9pZClcbjM3NjI6XHR7XG4zNzYzOlx0XHRpbnQgZXJyO1xuMzc2NDpcdFxuMzc2NTpcdFx0cHJfaW5mbyhcJiMzNDslczogJXNcXG5cJiMzNDssIERSVl9OQU1FLCBEUlZfU1RSSU5HKTtcbjM3NjY6XHRcbjM3Njc6XHRcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2Y2d4X2RyaXZlcik7XG4zNzY4Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuMzc2OTpcdFx0XHRyZXR1cm4gZXJyO1xuMzc3MDpcdFxuMzc3MTpcdFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZwdHBfZHJpdmVyKTtcbjM3NzI6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4zNzczOlx0XHRcdGdvdG8gcHRwX2VycjtcbjM3NzQ6XHRcbjM3NzU6XHRcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWNzX2RyaXZlcik7XG4zNzc2Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuMzc3NzpcdFx0XHRnb3RvIG1jc19lcnI7XG4zNzc4Olx0XG4zNzc5Olx0XHRlcnIgPSAgcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZydnVfZHJpdmVyKTtcbjM3ODA6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4zNzgxOlx0XHRcdGdvdG8gcnZ1X2VycjtcbjM3ODI6XHRcbjM3ODM6XHRcdHJldHVybiAwO1xuMzc4NDpcdHJ2dV9lcnI6XG4zNzg1Olx0XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWNzX2RyaXZlcik7XG4zNzg2Olx0bWNzX2VycjpcbjM3ODc6XHRcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZwdHBfZHJpdmVyKTtcbjM3ODg6XHRwdHBfZXJyOlxuMzc4OTpcdFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmNneF9kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA5MQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDYyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmlhZ2U6IENvZGUgUmVhY2hhYmlsaXR5IGZvciBPY3Rlb25UWDIgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBnbyB0aHJvdWdoIHRoaXMgY2FyZWZ1bGx5LiBCYXNlZCBvbiB0aGUgdHJpYWdlIGd1aWRlbGluZXMsIHNwZWNpZmljYWxseSB0aGUgbmVnYXRpdmUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmdgLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY29kZSBpcyAqdW5jb25kaXRpb25hbGx5KiB1bnJlYWNoYWJsZS4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIGRyaXZlciwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIHNheXMgd2Ugc2hvdWxkIG1hcmsgaXQgYXMgbm90IHdvcnRoIGZ1enppbmcgaWYgdGhlIGNvZGUgcmVxdWlyZXMgaGFyZHdhcmUgdGhhdCBpc24mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCkFscmlnaHQsIHRoZSBPY3Rlb25UWDIgaXMgYSBTbWFydE5JQy9Tb0MgbmV0d29yayBwcm9jZXNzb3IgZnJvbSBDYXZpdW0vTWFydmVsbC4gVGhhdCBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIHN0YXJ0LiBUaGUgcmVsZXZhbnQgZHJpdmVyIGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MmAsIGFuZCBpdCBzcGVjaWZpY2FsbHkgdGFyZ2V0cyB0aGUgUlZVIChSZXNvdXJjZSBWaXJ0dWFsaXphdGlvbiBVbml0KSBBZG1pbiBGdW5jdGlvbiBhbmQgUEYvVkYgZHJpdmVycy4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGF0IGl0IG5lZWRzIHRoZSBhY3R1YWwgT2N0ZW9uVFgyIGhhcmR3YXJlLCBlaXRoZXIgUENJZSBvciBvbi1jaGlwIGRldmljZXMgd2l0aCBhIHZlbmRvciBJRCBvZiBgMHgxNzdkYC4gUUVNVSAqZGVmaW5pdGVseSogZG9lc24mIzM5O3QgZW11bGF0ZSB0aGF0LiBJdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgYXZhaWxhYmxlIG9uIHg4Ni9hbWQ2NCBvciBldmVuIEFSTTY0IFFFTVUuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGV4cGxpY2l0bHkgYGFtZDY0YC4gTm93LCB0aGUgZGVwZW5kZW5jeSBvZiBgT0NURU9OVFgyX0FGYCBvbiBgQ09NUElMRV9URVNUYCBpcyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGUgY29kZSBpc24mIzM5O3QgZWFzaWx5IHBvcnRhYmxlIGFuZCB0aGlzIHJlaW5mb3JjZXMgdGhlIGFzc3VtcHRpb24gb2YgdGhlIGFyY2hpdGVjdHVyZSBkZXBlbmRlbmN5LgoKU28sIGZyb20gYSBoaWdoIGxldmVsLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBzcGVjaWZpYyB2ZW5kb3IgaGFyZHdhcmUg4oCTIHRoZSBPY3Rlb25UWDIgU21hcnROSUMgQVNJQyDigJMgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KCk5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gdGhlIHNwZWNpZmljIHBhdGNoLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhgLCBzcGVjaWZpY2FsbHkgdGhlIGBpc19wZl9jZ3htYXBwZWRgIGZ1bmN0aW9uLiBUaGUgY29kZSBjaGVja3MgZm9yIGBydnUtJmd0O3BmMmNneGxtYWNfbWFwYCBhbmQgcmV0dXJucyBgZmFsc2VgIGlmIGl0JiMzOTtzIG5vdCBhdmFpbGFibGUuCgpUaGUgY29uY2VybiBoZXJlIGlzIHdoZXRoZXIgdGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBjYWxsZWQgZnJvbSAqb3V0c2lkZSogdGhlIGV4cGVjdGVkIE9jdGVvblRYMiBkcml2ZXIgY29udGV4dC4gV2hpbGUgSSBkaWQgYSBgZ3JlcHBlcmAgcnVuIGVhcmxpZXIsIGxldCYjMzk7cyB2ZXJpZnkgdGhhdCBxdWlja2x5IGJ5IHJ1bm5pbmcgYW5vdGhlciBleGhhdXN0aXZlIHNlYXJjaCwgdG8gYmUgYWJzb2x1dGVseSBzdXJlIG5vIG90aGVyIGRyaXZlcnMgb3Igc3lzdGVtIGNvZGUsIHBlcmhhcHMgYnkgZXJyb3Igb3IgaW50ZW50LCBhcmUgY2FsbGluZyB0aGlzLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIGhpZ2hseSBzcGVjaWZpYywgYnV0IGEgdGhvcm91Z2ggY2hlY2sgaXMgYWx3YXlzIHdpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX3BmX2NneG1hcHBlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYz00MzQ3PWJvb2wgbnBjX2lzX2NneF9vcl9sYmsoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL25wYy5jLTQzNDgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbnBjLmM6NDM0OTpcdHJldHVybiBpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL25wYy5jLTQzNTAtXHRcdGlzX2xia192ZihydnUsIHBjaWZ1bmMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTc5MD1zdGF0aWMgdm9pZCBydnVfc2V0dXBfcGZ2Zl9tYWNhZGRyZXNzKHN0cnVjdCBydnUgKnJ2dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy04MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo4MDI6XHRcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtODAzLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTE1MTU9aW50IHJ2dV9nZXRfbml4X2Jsa2FkZHIoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xNTIzLVx0LyogQWxsIENHWCBtYXBwZWQgUEZzIGFyZSBzZXQgd2l0aCBhc3NpZ25lZCBOSVggYmxvY2sgZHVyaW5nIGluaXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjE1MjQ6XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xNTI1LVx0XHRibGthZGRyID0gcGYtXHUwMDNlbml4X2Jsa2FkZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg9OTYwPXN0YXRpYyBpbmxpbmUgaW50IHJ2dV9nZXRfcGYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk3MC0vKiBDR1ggQVBJcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6OTcxOnN0YXRpYyBpbmxpbmUgYm9vbCBpc19wZl9jZ3htYXBwZWQoc3RydWN0IHJ2dSAqcnZ1LCB1OCBwZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk3Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg9OTg2PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19jZ3hfdmYoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05ODgtXHRyZXR1cm4gKChwY2lmdW5jIFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6OTg5Olx0XHRpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtOTkwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDQ9Ym9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0OTpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTUwLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDU3PWlubGluZSBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ1OS1cdGlmICgocGNpZnVuYyBcdTAwMjYgUlZVX1BGVkZfRlVOQ19NQVNLKSB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjQ2MDpcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYykpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ2MS1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz00NjU9dm9pZCBydnVfY2d4X2VuYWRpc19yeF9icChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0NzE6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy00NzItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NjgwPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy02ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Njg4Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNjg5LVx0XHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NzcxPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9nZXQoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy03NzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Nzc3Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCByZXEtXHUwMDNlaGRyLnBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy03NzgtXHRcdHJldHVybiBMTUFDX0FGX0VSUl9QRl9OT1RfTUFQUEVEO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz04MjM9c3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTgzNi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjgzNzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTgzOC1cdFx0cmV0dXJuIC1FUEVSTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9ODU5PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9wdHBfcnhfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtODYxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo4NjI6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHJlcS1cdTAwM2VoZHIucGNpZnVuYykpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTg2My1cdFx0cmV0dXJuIC1FUEVSTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9OTA5PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfbGlua2luZm8oc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy05MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6OTE3Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTE4LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9OTI3PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9mZWF0dXJlc19nZXQoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy05MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6OTM1Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTM2LVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTAwMT1pbnQgcnZ1X2NneF9jZmdfcGF1c2VfZnJtKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU4IHR4X3BhdXNlLCB1OCByeF9wYXVzZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTAxNC1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEwMTU6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMDE2LVx0XHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTA0MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfY2ZnX3BhdXNlX2ZybShzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwNTItXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMDUzOlx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1NC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEwNjg9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2dldF9waHlfZmVjX3N0YXRzKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMDc0Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3NS1cdFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTExMjY9aW50IHJ2dV9jZ3hfc3RhcnRfc3RvcF9pbyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIHN0YXJ0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjExMzE6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTMyLVx0XHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTE3Mz1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfc2V0X2ZlY19wYXJhbShzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTE4MDpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExODEtXHRcdHJldHVybiAtRVBFUk07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTExOTA9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2dldF9hdXhfbGlua19pbmZvKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTE5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTk5Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTIwMC1cdFx0cmV0dXJuIC1FUEVSTTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTI3Nz1pbnQgcnZ1X2NneF9wcmlvX2Zsb3dfY3RybF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTggdHhfcGF1c2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyODgtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMjg5Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTI5MC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzMTQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzMjYtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMzI3Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyOC1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzNDE9dm9pZCBydnVfbWFjX3Jlc2V0KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTM0ODpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTM2Nj1ib29sIHJ2dV9jZ3hfaXNfcGtpbmRfY29uZmlnX3Blcm1pdHRlZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEzNzc6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc4LVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTM5OD1ib29sIHJ2dV9jZ3hfY2hlY2tfcGVybWlzc2lvbl9hbmRfc2V0X3BraW5kKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBwa2luZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxNDA2Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNy1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9ODIyPXN0YXRpYyBpbnQgcnZ1X2RiZ19ydnVfcGZfY2d4X21hcF9kaXNwbGF5KHN0cnVjdCBzZXFfZmlsZSAqZmlscCwgdm9pZCAqdW51c2VkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ2LVx0Zm9yIChwZiA9IDA7IHBmIFx1MDAzYyBydnUtXHUwMDNlaHctXHUwMDNldG90YWxfcGZzOyBwZiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6ODQ3Olx0XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ4LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0zNDA9c3RhdGljIGludCBuaXhfaW50ZXJmYWNlX2luaXQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsIGludCBuaXhsZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzUyLVx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNTM6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgdHlwZSAhPSBOSVhfSU5URl9UWVBFX0xCSyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNTQtXHQgICAgdHlwZSAhPSBOSVhfSU5URl9UWVBFX1NEUClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTk1PXN0YXRpYyBpbnQgbml4X2JwX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy02MDktXHR0eXBlID0gaXNfbGJrX3ZmKHJ2dSwgcGNpZnVuYykgPyBOSVhfSU5URl9UWVBFX0xCSyA6IE5JWF9JTlRGX1RZUEVfQ0dYO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjYxMDpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiB0eXBlICE9IE5JWF9JTlRGX1RZUEVfTEJLKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTYxMS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTc0MT1zdGF0aWMgaW50IG5peF9icF9lbmFibGUoc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy03NTktXHQvKiBFbmFibGUgYmFja3ByZXNzdXJlIG9ubHkgZm9yIENHWCBtYXBwZWQgUEZzIGFuZCBMQksvU0RQIGludGVyZmFjZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjc2MDpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiB0eXBlICE9IE5JWF9JTlRGX1RZUEVfTEJLIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTc2MS1cdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0xNTEyPWludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE3MDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTcwMjpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2IGlzX3ZmKHBjaWZ1bmMpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTcwMy1cdFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0yMTEyPXN0YXRpYyBpbnQgbml4X2dldF90eF9saW5rKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMTktXHRcdHJldHVybiBody1cdTAwM2VjZ3hfbGlua3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjEyMDpcdH0gZWxzZSBpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjEyMS1cdFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0yMTI5PXN0YXRpYyB2b2lkIG5peF9nZXRfdHhzY2hxX3JhbmdlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMzgtXHRcdCplbmQgPSAqc3RhcnQgJiM0MzsgaHctXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfbGJrX2xtYWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjEzOTpcdH0gZWxzZSBpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7IC8qIENHWCBsaW5rcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxNDAtXHRcdCpzdGFydCA9IGh3LVx1MDAzZWNhcC5uaXhfdHhzY2hfcGVyX2NneF9sbWFjICogbGluaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjQ4Nj1zdGF0aWMgaW50IG5peF9zbXFfZmx1c2goc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjUwNC1cdC8qIGVuYWJsZSBjZ3ggdHggaWYgZGlzYWJsZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoyNTA1Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI1MDYtXHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9Mjg3OT12b2lkIHJ2dV9uaXhfdHhfdGwyX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBibGthZGRyLCB1MTYgcGNpZnVuYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjg4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoyODg4Olx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXHUwMDI2XHUwMDI2ICFpc19yZXBfZGV2KHJ2dSwgcGNpZnVuYykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjg4OS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0zNTY4PXZvaWQgbml4X2dldF9tY2VfbGlzdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU3NC1cdGlmICghaHctXHUwMDNlY2FwLm5peF9yeF9tdWx0aWNhc3QgfHxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNTc1Olx0ICAgICFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1NzYtXHRcdFx0ICAgICBwY2lmdW5jIFx1MDAyNiB+UlZVX1BGVkZfRlVOQ19NQVNLKSkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzYwMD1zdGF0aWMgaW50IG5peF91cGRhdGVfbWNlX3J1bGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzYxNi1cdHBmID0gcnZ1X2dldF9wZihydnUtXHUwMDNlcGRldiwgcGNpZnVuYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzYxNzpcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM2MTgtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz00Njg0PWludCBydnVfbWJveF9oYW5kbGVyX25peF9zZXRfaHdfZnJzKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG5peF9mcnNfY2ZnICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTQ3MjQtXHQvKiBDaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBmcm9tIENHWCBtYXBwZWQgUlZVIFBGICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NDcyNTpcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy00NzI2LVx0XHQvKiBHZXQgQ0dYIGFuZCBMTUFDIHRvIHdoaWNoIHRoaXMgUEYgaXMgbWFwcGVkIGFuZCBmaW5kIGxpbmsgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTMyMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfc3RhcnRfcngoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01MzQ1LVx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cdTAwM2VwZGV2LCBwY2lmdW5jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1MzQ2Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgcnZ1LVx1MDAzZXJlcF9tb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNDctXHRcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCB0cnVlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTM1Mj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfc3RvcF9yeChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNzctXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjUzNzg6XHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFx1MDAyNlx1MDAyNiBydnUtXHUwMDNlcmVwX21vZGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTM3OS1cdFx0cnZ1X3JlcF9ub3RpZnlfcGZ2Zl9zdGF0ZShydnUsIHBjaWZ1bmMsIGZhbHNlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTM4NT12b2lkIHJ2dV9uaXhfbGZfdGVhcmRvd24oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IGJsa2FkZHIsIGludCBuaXhsZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1NDA3Olx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgcnZ1LVx1MDAzZXJlcF9tb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTU0MDgtXHRcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCBmYWxzZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jPTc4Mj12b2lkIHJ2dV9ucGNfaW5zdGFsbF9wcm9taXNjX2VudHJ5KHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTg0OS1cdGlmIChody1cdTAwM2VjYXAubml4X3J4X211bHRpY2FzdCBcdTAwMjZcdTAwMjYgcGZ2Zi1cdTAwM2V1c2VfbWNlX2xpc3QgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM6ODUwOlx0ICAgIGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTg1MS1cdFx0Kih1NjQgKilcdTAwMjZhY3Rpb24gPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYz00MjI4PWludCBydnVfbnBjX3NldF9wYXJzZV9tb2RlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIHU2NCBtb2RlLCB1OCBkaXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTQyNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM6NDI3NzpcdFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcdTAwMjZcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy00Mjc4LVx0XHRcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYz0xMjA9aW50IHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzoxMjU6XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYy0xMjYtXHRcdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYz0zMjI9aW50IHJ2dV9yZXBfaW5zdGFsbF9tY2FtX3J1bGVzKHN0cnVjdCBydnUgKnJ2dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMzMyLVx0Zm9yIChwZiA9IDE7IHBmIFx1MDAzYyBody1cdTAwM2V0b3RhbF9wZnM7IHBmJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jOjMzMzpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMzM0LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYz00NDY9aW50IHJ2dV9tYm94X2hhbmRsZXJfZ2V0X3JlcF9jbnQoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYy00NjEtXHRmb3IgKHBmID0gMDsgcGYgXHUwMDNjIHJ2dS1cdTAwM2Vody1cdTAwM2V0b3RhbF9wZnM7IHBmJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jOjQ2MjpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtNDYzLVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYz04Mz1zdGF0aWMgaW50IHJ2dV9zd2l0Y2hfaW5zdGFsbF9ydWxlcyhzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTkyLVx0Zm9yIChwZiA9IDE7IHBmIFx1MDAzYyBody1cdTAwM2V0b3RhbF9wZnM7IHBmJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jOjkzOlx0XHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYy05NC1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmM9MjE3PXZvaWQgcnZ1X3N3aXRjaF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtMjM1LVx0Zm9yIChwZiA9IDE7IHBmIFx1MDAzYyBody1cdTAwM2V0b3RhbF9wZnM7IHBmJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jOjIzNjpcdFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtMjM3LVx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODUzMAoJCQkJCQkJb3V0cHV0OiAxMzMKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBzbyB0aGUgY29kZSBjaGFuZ2UgdGFyZ2V0cyBgaXNfcGZfY2d4bWFwcGVkKClgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AgZGlyZWN0b3J5LiBUaGF0IGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyJiMzNDsgdG8gbWUuIEkga25vdyB0aGF0IGRyaXZlciBwcmV0dHkgd2VsbCwgYW5kIGl0cyBkZXBlbmRlbmN5IG9uIHNwZWNpZmljIGhhcmR3YXJlIGlzIGEga2V5IGRldGFpbC4gSSBjYW4gc2VlIHRoYXQgb25seSBmaWxlcyB3aXRoaW4gdGhhdCBkcml2ZXIgZGlyZWN0b3J5IGFjdHVhbGx5IGRlZmluZSBvciBjYWxsIHRoaXMgZnVuY3Rpb24uCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudC4gVGhpcyBpc24mIzM5O3QganVzdCAqYW55KiBoYXJkd2FyZTsgaXQmIzM5O3Mgc3BlY2lmaWMgTWFydmVsbC9DYXZpdW0gT2N0ZW9uVFgyIGhhcmR3YXJlIHdpdGggYSBQQ0kgZGV2aWNlIElEIG9mIDE3N2Q6YTA2NS4gU3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbCBlbnZpcm9ubWVudHM/IEZvcmdldCBhYm91dCBpdC4gVGhleSBkb24mIzM5O3QgZW11bGF0ZSB0aGlzIGtpbmQgb2Ygc3BlY2lhbGl6ZWQgaGFyZHdhcmUuIFRoYXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnLgoKVGhlIGRvY3VtZW50YXRpb24mIzM5O3Mgc2VjdGlvbiBvbiAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IHNlYWxzIHRoZSBkZWFsLiBUaGlzIGZhbGxzICpkaXJlY3RseSogaW50byB0aGF0IGNhdGVnb3J5LiBJdCYjMzk7cyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIHJlcXVpcmluZyBhbiBBU0lDL1BDSWUgY2FyZCB0aGF0IEkmIzM5O20gbm90IGdvaW5nIHRvIGZpbmQgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLiBHaXZlbiB0aGF0LCBJIGNhbiBjb25maWRlbnRseSBjb25jbHVkZSB0aGF0IGZ1enppbmcgdGhpcyBjb2RlIHdpbGwgYmUgZnJ1aXRsZXNzLiBUaGVyZSYjMzk7cyBubyB3YXkgdG8gcmVhY2ggaXQuCgpUaGVyZWZvcmUsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIGRlZmluaXRlbHkgYGZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGxpc3Qgd2lsbCBiZSBlbXB0eSBiZWNhdXNlLCBmcmFua2x5LCB0aGVyZSYjMzk7cyBub3RoaW5nIHRvIGZvY3VzIG9uLiBBbmQgb2YgY291cnNlLCBgRW5hYmxlQ29uZmlnc2AgaXMgZW1wdHksIGFzIHRoZXJlIGFyZSBubyByZWxldmFudCBjb25maWd1cmF0aW9ucy4KClRpbWUgdG8gcHJlcGFyZSB0aGUgdG9vbCBjYWxsIHRvIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDAzOjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgaXNfcGZfY2d4bWFwcGVkKCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgsIHdoaWNoIGlzIGludGVybmFsIHRvIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIFBDSWUgLyBTbWFydE5JQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGlzX3BmX2NneG1hcHBlZCgpIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLCB3aGljaCBpcyBpbnRlcm5hbCB0byB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIENhdml1bS9NYXJ2ZWxsIE9jdGVvblRYMiBQQ0llIC8gU21hcnROSUMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIHJlbmRlcmluZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAwMzowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6MzYuNjQxODc4MjAyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwOTI1NTg2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpc19wZl9jZ3htYXBwZWQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCwgd2hpY2ggaXMgaW50ZXJuYWwgdG8gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgUENJZSAvIFNtYXJ0TklDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6MzYuNjQxODgyNTQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk2NjA1MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwYjg3ZTI2MzVkNGIxZThiOGU1NTVlZTJiNGQ0Zjc3MjJlNDdlM2Q4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDE1IDAzOjA2OjM1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5pbmRleCAwOTQyMjc0MDRlZjlmLi4xZTBhNWFlYjNmNTc3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcXG5AQCAtOTcwLDYgKzk3MCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJ2dV9nZXRfcGYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBwY2lmdW5jKVxcbiAvKiBDR1ggQVBJcyAqL1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgaXNfcGZfY2d4bWFwcGVkKHN0cnVjdCBydnUgKnJ2dSwgdTggcGYpXFxuIHtcXG4rXFx0aWYgKCFydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbiBcXHRyZXR1cm4gKHBmIFxcdTAwM2U9IFBGX0NHWE1BUF9CQVNFIFxcdTAwMjZcXHUwMDI2IHBmIFxcdTAwM2M9IHJ2dS1cXHUwMDNlY2d4X21hcHBlZF9wZnMpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCFpc19zZHBfcGYocnZ1LCBydnVfbWFrZV9wY2lmdW5jKHJ2dS1cXHUwMDNlcGRldiwgcGYsIDApKTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNjozNy4xMTIyNzY1NzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYwNjIyMTQ4MDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpc19wZl9jZ3htYXBwZWQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCwgd2hpY2ggaXMgaW50ZXJuYWwgdG8gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgUENJZSAvIFNtYXJ0TklDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwYjg3ZTI2MzVkNGIxZThiOGU1NTVlZTJiNGQ0Zjc3MjJlNDdlM2Q4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMDM6MDY6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5pbmRleCAwOTQyMjc0MDRlZjlmLi4xZTBhNWFlYjNmNTc3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oXG5AQCAtOTcwLDYgKzk3MCw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJ2dV9nZXRfcGYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBwY2lmdW5jKVxuIC8qIENHWCBBUElzICovXG4gc3RhdGljIGlubGluZSBib29sIGlzX3BmX2NneG1hcHBlZChzdHJ1Y3QgcnZ1ICpydnUsIHU4IHBmKVxuIHtcbitcdGlmICghcnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4gXHRyZXR1cm4gKHBmIFx1MDAzZT0gUEZfQ0dYTUFQX0JBU0UgXHUwMDI2XHUwMDI2IHBmIFx1MDAzYz0gcnZ1LVx1MDAzZWNneF9tYXBwZWRfcGZzKSBcdTAwMjZcdTAwMjZcbiBcdFx0IWlzX3NkcF9wZihydnUsIHJ2dV9tYWtlX3BjaWZ1bmMocnZ1LVx1MDAzZXBkZXYsIHBmLCAwKSk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6MzcuMTEyMjc4NTE1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTc3MzkyNzg5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIE9jdGVvblRYMiBOZXR3b3JrIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBUaGUgZGlmZiBpdHNlbGYgaXMgZm9jdXNlZCBvbiBgcnZ1LmhgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlci4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5LiBMb29raW5nIGF0IHRoZSBkaWZmLCBpdCBzZWVtcyBsaWtlIGEgbmV3IGNoZWNrIGhhcyBiZWVuIGFkZGVkIHdpdGhpbiB0aGUgYGlzX3BmX2NneG1hcHBlZGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoYXQgdGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gUEYgaXMgbWFwcGVkIHRvIGEgQ0dYIGxtYWMuIFRoZSBhZGRlZCBjb25kaXRpb25hbCBgIXJ2dS1cdTAwM2VwZjJjZ3hsbWFjX21hcGAgc3VnZ2VzdHMgYSBuZXcgY29uZmlndXJhdGlvbiBvciBpbml0aWFsaXphdGlvbiBzdGF0ZS4gVGhpcyBpbmRpY2F0ZXMgdGhhdCwgaWYgdGhlIG1hcHBpbmcgaXNuJ3QgZXN0YWJsaXNoZWQsIHRoZSBmdW5jdGlvbiBzaG9ydC1jaXJjdWl0cyBhbmQgYXZvaWRzIHBvdGVudGlhbCBlcnJvcnMuXG5cbk5vdywgbGV0J3MgcGxhY2UgdGhpcyBwYXRjaCBpbiBjb250ZXh0LiBUaGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oYCBwYXRoIHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgT2N0ZW9uVFgyLCBhIE1hcnZlbGwgQVJNNjQgU29DLCBzcGVjaWZpY2FsbHkgdGhlIENOOUsgb3IgQ04xMEsuIFRoaXMgbGlrZWx5IGludm9sdmVzIHNvbWUgTklDIG9yIG5ldHdvcmsgaW50ZXJmYWNlIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBydnVgIHN0cnVjdHVyZSBmaXRzIGluIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuSSB3YW50IHRvIGtub3cgd2hlcmUgdGhpcyBpcyB1c2VkIHdpdGhpbiB0aGUgZHJpdmVyLCBzbyBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlIGZvciB0aGlzIGRpcmVjdG9yeSB0byBzZWUgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBGcm9tIHRoZXJlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGlzIHZhcmlhYmxlIGlzIGluaXRpYWxpemVkLCBhbmQgd2hhdCBjb25kaXRpb25zIHRyaWdnZXIgdGhpcyBjaGVjay4gSSdsbCBwcm9iYWJseSBncmVwIGZvciBgcGYyY2d4bG1hY19tYXBgIGFjcm9zcyB0aGUgZHJpdmVyIHNvdXJjZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwcm9wZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyIGFuZCB3aGF0IHRoaXMgY2hhbmdlIGRvZXMgd2l0aGluIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTY1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6NTQuODUxNTYwMTAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMDIxNjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk9DVEVPTlRYMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo2OmNvbmZpZyBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjk6Y29uZmlnIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMTpcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEyLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0yMj1jb25maWcgTkRDX0RJU19EWU5BTUlDX0NBQ0hJTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVxcdGJvb2wgXFxcIkRpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MjQ6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfQUZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjMxOmNvbmZpZyBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzM6XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NTpjb25maWcgT0NURU9OVFgyX1ZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NDc6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9NTE9Y29uZmlnIFJWVV9FU1dJVENIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01Mi1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBSVlUgRS1Td2l0Y2ggc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjUzOlxcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01NC1cXHRkZWZhdWx0IG1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IGFmL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSArPSBuaWMvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZT02PWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9NQk9YKSArPSBydnVfbWJveC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSArPSBydnVfYWYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlLTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2d4X2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmM6Njc6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0NHWCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy02OC1cXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfQ04xMEtfUlBNLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTUtIC8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg6MTY6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfQ0dYXFx0XFx0MHhBMDU5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MTU0PURFRklORV9TSE9XX0FUVFJJQlVURShucGNfbWNhbV9sYXlvdXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE1NjojZGVmaW5lIF9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSAjIyBfZm9wcyA9IHtcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNjU6I2RlZmluZSBERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShfX25hbWUsIF9fc2l6ZSlcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE2Ni1zdGF0aWMgaW50IF9fbmFtZSAjIyBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcwLX1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE3MTpfX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9GT1BTKF9fbmFtZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50IG5wY19tY2FtX2RzdGF0c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0Mi0jZGVmaW5lIFRPVEFMX1NaIChNQVhfTlVNX0JBTktTICogTUFYX05VTV9TVUJfQkFOS1MgKiBNQVhfU1VCQkFOS19ERVBUSCAqIDY0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoyNDM6REVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUobnBjX21jYW1fZHN0YXRzLCBUT1RBTF9TWik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MjQ1PXN0YXRpYyBpbnQgbnBjX21jYW1fbWlzbWF0Y2hfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODQtLyogXFxcIiV1XFxcXHQlZFxcXFx0JXVcXFxcblxcXCIgbmVlZHMgbGVzcyB0aGFuIDY0IGNoYXJhY3RlcnMgdG8gcHJpbnQuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI4NTpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9taXNtYXRjaCwgVE9UQUxfU1opO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzoyMTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQXFx0XFx0XFx0MHhBMDBDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjItI2RlZmluZSBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk4eHhfUFRQXFx0XFx0MHhCMTAwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yNy0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE9fUFRQXFx0MHhCNjAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6Mjg6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JTVFxcdFxcdFxcdDB4QTA4NVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI5LSNkZWZpbmUgUENJX0RFVklEX0NOMTBLX1BUUFxcdFxcdFxcdDB4QTA5RVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM9NTg5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwdHBfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTA6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTkxLVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTItXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NTkzOlxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NC1cXHRcXHRcXHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk1LVxcdFxcdFxcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk2WFhfUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5NjpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTctXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5OC1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYX1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTk6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjAwLVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDEtXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE5fUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjYwMjpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDMtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwNC1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NU1NX1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo2MDU6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA2LVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo0NTpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ2LVxcdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz05Mjc9c3RhdGljIHZvaWQgcnZ1X2dldF9sYmtfYnVmc2l6ZShzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy05MzMtXFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjkzNDpcXHRcXHRcXHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTM1LVxcdGlmICghcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM0NDc9aW50IHJ2dV9nZXRfbnVtX2xia19jaGFucyh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzozNDUzOlxcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9MQkssXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ1NC1cXHRcXHRcXHQgICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0NzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MzQ3MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkZcXHQweEEwRjhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTM0NzM9c3RhdGljIGludCBydnVfZW5hYmxlX3NyaW92KHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0OTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MzQ5NTpcXHRpZiAocnZ1LVxcdTAwM2V2Zl9kZXZpZCA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ5Ni1cXHRcXHRjaGFucyA9IHJ2dV9nZXRfbnVtX2xia19jaGFucygpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNDojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZcXHRcXHQweEEwNjVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNTojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcXHRcXHRcXHQweEEwNjFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jPTM5Mj1zdGF0aWMgdm9pZCBydnVfbGJrX3NldF9jaGFubmVscyhzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYy00MTUtXFx0XFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jOjQxNjpcXHRcXHRcXHRcXHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE3LVxcdFxcdGlmICghcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9MjgwNj1zdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgyNS0vKiBQZXItbG1hYyBDR1ggZGVidWdmcyBmaWxlcyBuZWVkIGJvdGggUlZVIGFuZCBDR1ggaGFuZGxlOyBpbm9kZS1cXHUwMDNlaV9wcml2YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODI2OiAqIHBvaW50cyBoZXJlIHNvIHNlcV9maWxlIG9wcyBhdm9pZCBwY2lfZ2V0X2RldmljZShQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODI3LSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgKz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICs9IHJ2dV9yZXAub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDItLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0MzojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1BGICAgICAgICAgICAgICAweEEwNjNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXFx0XFx0MHhBMDY0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXFx0XFx0MHhBMEY4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFxcdFxcdDB4QTBGN1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NTk3PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX2xia3ZmKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NTk5OlxcdHJldHVybiAocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjAwLVxcdFxcdChwZGV2LVxcdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX1JWVV9SRVApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo2MTc6XFx0cmV0dXJuIHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfcGZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjM3OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zOC1cXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjM6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjQ6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjYtXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA2OjU0Ljk0MzU5ODc4MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE3ODczODAxNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBPY3Rlb25UWDIgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIE9jdGVvblRYMiBldGhlcm5ldCBkcml2ZXIuIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIEtjb25maWcgZmlsZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLiBJJ2xsIHJlYWQgdGhyb3VnaCBpdCBjYXJlZnVsbHksIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgYW5kIGFueSBzcGVjaWZpYyBmZWF0dXJlcyB0aGlzIGRyaXZlciBleHBvc2VzLiBUaGlzIEtjb25maWcgZmlsZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRoZSBkcml2ZXIgaXMgc3RydWN0dXJlZCBhbmQgaG93IGl0cyBiZWhhdmlvdXIgaXMgY29udHJvbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg4NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA2OjU2LjczMDk4MjIwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4NzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFydmVsbCBSVlUgTmV0d29yayBkcml2ZXJzIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFxuICAgOTpcXHRjb25maWcgT0NURU9OVFgyX0FGXFxuICAxMDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDExOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMTI6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXFxuICAxODpcXHRcXHQgIFVuaXQncyBhZG1pbiBmdW5jdGlvbiBtYW5hZ2VyIHdoaWNoIG1hbmFnZXMgYWxsIFJWVSBIVyByZXNvdXJjZXNcXG4gIDE5OlxcdFxcdCAgYW5kIHByb3ZpZGVzIGEgbWVkaXVtIHRvIG90aGVyIFBGL1ZGcyB0byBjb25maWd1cmUgSFcuIFNob3VsZCBiZVxcbiAgMjA6XFx0XFx0ICBlbmFibGVkIGZvciBvdGhlciBSVlUgZGV2aWNlIGRyaXZlcnMgdG8gd29yay5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXFxuICAyMzpcXHRcXHRib29sIFxcXCJEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1xcXCJcXG4gIDI0OlxcdFxcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXFxuICAyNTpcXHRcXHRkZWZhdWx0IG5cXG4gIDI2OlxcdFxcdGhlbHBcXG4gIDI3OlxcdFxcdCAgVGhpcyBjb25maWcgb3B0aW9uIGRpc2FibGVzIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIHN1Y2ggYXMgTklYIFNRRXNcXG4gIDI4OlxcdFxcdCAgLCBOUEEgc3RhY2sgcGFnZXMgZXRjIGluIE5EQy4gQWxzbyBsb2NrcyBkb3duIE5JWCBTUS9DUS9SUS9SU1MgYW5kXFxuICAyOTpcXHRcXHQgIE5QQSBBdXJhL1Bvb2wgY29udGV4dHMuXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBPQ1RFT05UWDJfUEZcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgMzM6XFx0XFx0c2VsZWN0IE9DVEVPTlRYMl9NQk9YXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gIDM1OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gIDM2OlxcdFxcdHNlbGVjdCBDUllQVE9fTElCX0FFUyBpZiBNQUNTRUNcXG4gIDM3OlxcdFxcdGRlcGVuZHMgb24gKDY0QklUIFxcdTAwMjZcXHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcXG4gIDM4OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gIDM5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA0MDpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICA0MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ1NFQyB8fCAhTUFDU0VDXFxuICA0MjpcXHRcXHRoZWxwXFxuICA0MzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxcbiAgNDQ6XFx0XFxuICA0NTpcXHRjb25maWcgT0NURU9OVFgyX1ZGXFxuICA0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXFxcIlxcbiAgNDc6XFx0XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBOSUMgdmlydHVhbCBmdW5jdGlvbi5cXG4gIDUwOlxcdFxcbiAgNTE6XFx0Y29uZmlnIFJWVV9FU1dJVENIXFxuICA1MjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBSVlUgRS1Td2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDUzOlxcdFxcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXFxuICA1NDpcXHRcXHRkZWZhdWx0IG1cXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIFJWVSBFLVN3aXRjaCB0aGF0XFxuICA1NzpcXHRcXHQgIHByb3ZpZGVzIGludGVybmFsIFNSSU9WIHBhY2tldCBzdGVlcmluZyBhbmQgc3dpdGNoaW5nLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNjo1Ni43MzEwNTM3MTVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozMTY0NDE4Njg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBpc19wZl9jZ3htYXBwZWRgIEZ1bmN0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgaXNfcGZfY2d4bWFwcGVkYCBmdW5jdGlvbiwgYW5kIHRoZSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGZpZ3VyZSBvdXQgaXRzIHB1cnBvc2UgYW5kIHVzYWdlLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBtZWFucyB0cmFjaW5nIGl0cyBjYWxscyBhbmQgbG9va2luZyBhdCBpdHMgZGVmaW5pdGlvbi4gU28sIGxldCdzIGdldCBhIGhhbmRsZSBvbiB3aGVyZSBpdCdzIGFjdHVhbGx5IGJlaW5nICp1c2VkKiB3aXRoaW4gdGhlIGNvZGViYXNlLiBJJ2xsIGZpcmUgdXAgZ3JlcC4gVGhhdCdzIHRoZSBnby10byB0b29sIGZvciB0aGlzIGtpbmQgb2YgcXVpY2sgYW5hbHlzaXMuIFdlJ2xsIGZlZWQgaXQgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGxldCBpdCBzY291ciBmb3IgZXZlcnkgaW5zdGFuY2UuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGxheSBvZiB0aGUgbGFuZCBhbmQgd2hlcmUgdG8gc3RhcnQgZGlnZ2luZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTE2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNjo1OS44OTU0NzUzNDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2NDQ4NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNfcGZfY2d4bWFwcGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYz00MzQ3PWJvb2wgbnBjX2lzX2NneF9vcl9sYmsoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYy00MzQ4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYzo0MzQ5OlxcdHJldHVybiBpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYykpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbnBjLmMtNDM1MC1cXHRcXHRpc19sYmtfdmYocnZ1LCBwY2lmdW5jKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTc5MD1zdGF0aWMgdm9pZCBydnVfc2V0dXBfcGZ2Zl9tYWNhZGRyZXNzKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTgwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo4MDI6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtODAzLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MTUxNT1pbnQgcnZ1X2dldF9uaXhfYmxrYWRkcihzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTUyMy1cXHQvKiBBbGwgQ0dYIG1hcHBlZCBQRnMgYXJlIHNldCB3aXRoIGFzc2lnbmVkIE5JWCBibG9jayBkdXJpbmcgaW5pdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjE1MjQ6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xNTI1LVxcdFxcdGJsa2FkZHIgPSBwZi1cXHUwMDNlbml4X2Jsa2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaD05NjA9c3RhdGljIGlubGluZSBpbnQgcnZ1X2dldF9wZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IHBjaWZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05NzAtLyogQ0dYIEFQSXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDo5NzE6c3RhdGljIGlubGluZSBib29sIGlzX3BmX2NneG1hcHBlZChzdHJ1Y3QgcnZ1ICpydnUsIHU4IHBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaD05ODY9c3RhdGljIGlubGluZSBib29sIGlzX2NneF92ZihzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtOTg4LVxcdHJldHVybiAoKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6OTg5OlxcdFxcdGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk5MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDQ9Ym9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0OTpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNTAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDU3PWlubGluZSBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDU5LVxcdGlmICgocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6NDYwOlxcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDYxLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz00NjU9dm9pZCBydnVfY2d4X2VuYWRpc19yeF9icChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0NzE6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ3Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NjgwPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTY4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Njg4OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy02ODktXFx0XFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NzcxPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9nZXQoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTc3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Nzc3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHJlcS1cXHUwMDNlaGRyLnBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNzc4LVxcdFxcdHJldHVybiBMTUFDX0FGX0VSUl9QRl9OT1RfTUFQUEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTgyMz1zdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04MzYtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjgzNzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtODM4LVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9ODU5PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9wdHBfcnhfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo4NjI6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcmVxLVxcdTAwM2VoZHIucGNpZnVuYykpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjMtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz05MDk9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2dldF9saW5raW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo5MTc6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkxOC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz05Mjc9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2ZlYXR1cmVzX2dldChzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo5MzU6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkzNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDAxPWludCBydnVfY2d4X2NmZ19wYXVzZV9mcm0oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTggdHhfcGF1c2UsIHU4IHJ4X3BhdXNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEwMTU6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTYtXFx0XFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTA0MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfY2ZnX3BhdXNlX2ZybShzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA1MzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1NC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDY4PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfcGh5X2ZlY19zdGF0cyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA3NDpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3NS1cXHRcXHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTI2PWludCBydnVfY2d4X3N0YXJ0X3N0b3BfaW8oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBzdGFydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTMxOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTEzMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTczPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9zZXRfZmVjX3BhcmFtKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTgwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTgxLVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTE5MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfZ2V0X2F1eF9saW5rX2luZm8oc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjExOTk6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyMDAtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMjc3PWludCBydnVfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1OCB0eF9wYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjg4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMjg5OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjkwLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzMTQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyNi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTMyNzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyOC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMzQxPXZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEzNDg6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzNjY9Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMzc3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc4LVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzOTg9Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTQwNjpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNy1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTgyMj1zdGF0aWMgaW50IHJ2dV9kYmdfcnZ1X3BmX2NneF9tYXBfZGlzcGxheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbHAsIHZvaWQgKnVudXNlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ2LVxcdGZvciAocGYgPSAwOyBwZiBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6ODQ3OlxcdFxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM0MD1zdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1Mi1cXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzUzOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU0LVxcdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTU5NT1zdGF0aWMgaW50IG5peF9icF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy02MDktXFx0dHlwZSA9IGlzX2xia192ZihydnUsIHBjaWZ1bmMpID8gTklYX0lOVEZfVFlQRV9MQksgOiBOSVhfSU5URl9UWVBFX0NHWDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NjEwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQkspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTYxMS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz03NDE9c3RhdGljIGludCBuaXhfYnBfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy03NTktXFx0LyogRW5hYmxlIGJhY2twcmVzc3VyZSBvbmx5IGZvciBDR1ggbWFwcGVkIFBGcyBhbmQgTEJLL1NEUCBpbnRlcmZhY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NzYwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNzYxLVxcdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTE1MTI9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNzAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNzAyOlxcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTcwMy1cXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjExMj1zdGF0aWMgaW50IG5peF9nZXRfdHhfbGluayhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMTktXFx0XFx0cmV0dXJuIGh3LVxcdTAwM2VjZ3hfbGlua3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjIxMjA6XFx0fSBlbHNlIGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjEyMS1cXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjEyOT1zdGF0aWMgdm9pZCBuaXhfZ2V0X3R4c2NocV9yYW5nZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMzgtXFx0XFx0KmVuZCA9ICpzdGFydCArIGh3LVxcdTAwM2VjYXAubml4X3R4c2NoX3Blcl9sYmtfbG1hYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjEzOTpcXHR9IGVsc2UgaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkgeyAvKiBDR1ggbGlua3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjE0MC1cXHRcXHQqc3RhcnQgPSBody1cXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfY2d4X2xtYWMgKiBsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTI0ODY9c3RhdGljIGludCBuaXhfc21xX2ZsdXNoKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjUwNC1cXHQvKiBlbmFibGUgY2d4IHR4IGlmIGRpc2FibGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjI1MDU6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yNTA2LVxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0yODc5PXZvaWQgcnZ1X25peF90eF90bDJfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI4ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjI4ODg6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgIWlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjg4OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzU2OD12b2lkIG5peF9nZXRfbWNlX2xpc3Qoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU3NC1cXHRpZiAoIWh3LVxcdTAwM2VjYXAubml4X3J4X211bHRpY2FzdCB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNTc1OlxcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1NzYtXFx0XFx0XFx0ICAgICBwY2lmdW5jIFxcdTAwMjYgflJWVV9QRlZGX0ZVTkNfTUFTSykpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzYwMD1zdGF0aWMgaW50IG5peF91cGRhdGVfbWNlX3J1bGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE2LVxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNjE3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTQ2ODQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X3NldF9od19mcnMoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3Qgbml4X2Zyc19jZmcgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy00NzI0LVxcdC8qIENoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGZyb20gQ0dYIG1hcHBlZCBSVlUgUEYgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NDcyNTpcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTQ3MjYtXFx0XFx0LyogR2V0IENHWCBhbmQgTE1BQyB0byB3aGljaCB0aGlzIFBGIGlzIG1hcHBlZCBhbmQgZmluZCBsaW5rICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTMyMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfc3RhcnRfcngoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNDUtXFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjUzNDY6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBydnUtXFx1MDAzZXJlcF9tb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01MzQ3LVxcdFxcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz01MzUyPWludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9zdG9wX3J4KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01Mzc3LVxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1Mzc4OlxcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgcnZ1LVxcdTAwM2VyZXBfbW9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTM3OS1cXHRcXHRydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHJ2dSwgcGNpZnVuYywgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzODU9dm9pZCBydnVfbml4X2xmX3RlYXJkb3duKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBibGthZGRyLCBpbnQgbml4bGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NTQwNzpcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHJ2dS1cXHUwMDNlcmVwX21vZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTU0MDgtXFx0XFx0cnZ1X3JlcF9ub3RpZnlfcGZ2Zl9zdGF0ZShydnUsIHBjaWZ1bmMsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYz03ODI9dm9pZCBydnVfbnBjX2luc3RhbGxfcHJvbWlzY19lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTg0OS1cXHRpZiAoaHctXFx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0IFxcdTAwMjZcXHUwMDI2IHBmdmYtXFx1MDAzZXVzZV9tY2VfbGlzdCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYzo4NTA6XFx0ICAgIGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMtODUxLVxcdFxcdCoodTY0ICopXFx1MDAyNmFjdGlvbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM9NDIyOD1pbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTQyNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jOjQyNzc6XFx0XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy00Mjc4LVxcdFxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9MTIwPWludCBydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM6MTI1OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMTI2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jPTMyMj1pbnQgcnZ1X3JlcF9pbnN0YWxsX21jYW1fcnVsZXMoc3RydWN0IHJ2dSAqcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTMzMi1cXHRmb3IgKHBmID0gMTsgcGYgXFx1MDAzYyBody1cXHUwMDNldG90YWxfcGZzOyBwZisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jOjMzMzpcXHRcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMzM0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jPTQ0Nj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9nZXRfcmVwX2NudChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtNDYxLVxcdGZvciAocGYgPSAwOyBwZiBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzo0NjI6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTQ2My1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYz04Mz1zdGF0aWMgaW50IHJ2dV9zd2l0Y2hfaW5zdGFsbF9ydWxlcyhzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTItXFx0Zm9yIChwZiA9IDE7IHBmIFxcdTAwM2MgaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzo5MzpcXHRcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTQtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmM9MjE3PXZvaWQgcnZ1X3N3aXRjaF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYy0yMzUtXFx0Zm9yIChwZiA9IDE7IHBmIFxcdTAwM2MgaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzoyMzY6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTIzNy1cXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDY6NTkuOTUyMTI1MzI2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjAwOTE2NjYyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBDdXJyZW50IENvbW1pdCoqXG5cbk9rYXksIHRpbWUgdG8gZmlndXJlIG91dCB3aGF0J3MgaGFwcGVuaW5nIHdpdGggdGhpcyBjb21taXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBncmFiIHRoZSBgZ2l0IGxvZ2AgdG8gcHJvdmlkZSBzb21lIGNvbnRleHQgYXJvdW5kIHRoaXMgYnVnIGZpeCBvciBjaGFuZ2UuIExldCBtZSBzZWUuLi4gd2UgZG9uJ3QgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIGEgYGdpdCBsb2dgIHRvb2wsIGFzIEkgZXhwZWN0ZWQsIHNvIEknbGwgbmVlZCB0byB1c2Ugd2hhdCdzIGF2YWlsYWJsZS4gRWl0aGVyIGBncmVwcGVyYCBvciBjaGVja2luZyB0aGUgZmlsZSBjb250ZXh0IHNob3VsZCBiZSBzdWZmaWNpZW50LiBJJ2xsIHJlYWQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaGAgZmlsZSBhcm91bmQgbGluZSA5NzAuIEhvcGVmdWxseSwgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHNpdHVhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA0MjgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzowMS45NjEyOTU5NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaFwiLFxuICBcIkZpcnN0TGluZVwiOiA5NjAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5NjA6XFx0c3RhdGljIGlubGluZSBpbnQgcnZ1X2dldF9wZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IHBjaWZ1bmMpXFxuIDk2MTpcXHR7XFxuIDk2MjpcXHRcXHRpZiAoaXNfY24yMGsocGRldikpXFxuIDk2MzpcXHRcXHRcXHRyZXR1cm4gKHBjaWZ1bmMgXFx1MDAzZVxcdTAwM2UgUlZVX0NOMjBLX1BGVkZfUEZfU0hJRlQpIFxcdTAwMjZcXG4gOTY0OlxcdFxcdFxcdFxcdFJWVV9DTjIwS19QRlZGX1BGX01BU0s7XFxuIDk2NTpcXHRcXHRlbHNlXFxuIDk2NjpcXHRcXHRcXHRyZXR1cm4gKHBjaWZ1bmMgXFx1MDAzZVxcdTAwM2UgUlZVX09UWDJfUEZWRl9QRl9TSElGVCkgXFx1MDAyNlxcbiA5Njc6XFx0XFx0XFx0XFx0UlZVX09UWDJfUEZWRl9QRl9NQVNLO1xcbiA5Njg6XFx0fVxcbiA5Njk6XFx0XFxuIDk3MDpcXHQvKiBDR1ggQVBJcyAqL1xcbiA5NzE6XFx0c3RhdGljIGlubGluZSBib29sIGlzX3BmX2NneG1hcHBlZChzdHJ1Y3QgcnZ1ICpydnUsIHU4IHBmKVxcbiA5NzI6XFx0e1xcbiA5NzM6XFx0XFx0aWYgKCFydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwKVxcbiA5NzQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiA5NzU6XFx0XFxuIDk3NjpcXHRcXHRyZXR1cm4gKHBmIFxcdTAwM2U9IFBGX0NHWE1BUF9CQVNFIFxcdTAwMjZcXHUwMDI2IHBmIFxcdTAwM2M9IHJ2dS1cXHUwMDNlY2d4X21hcHBlZF9wZnMpIFxcdTAwMjZcXHUwMDI2XFxuIDk3NzpcXHRcXHRcXHQhaXNfc2RwX3BmKHJ2dSwgcnZ1X21ha2VfcGNpZnVuYyhydnUtXFx1MDAzZXBkZXYsIHBmLCAwKSk7XFxuIDk3ODpcXHR9XFxuIDk3OTpcXHRcXG4gOTgwOlxcdHN0YXRpYyBpbmxpbmUgdm9pZCBydnVfZ2V0X2NneF9sbWFjX2lkKHU4IG1hcCwgdTggKmNneF9pZCwgdTggKmxtYWNfaWQpXFxuIDk4MTpcXHR7XFxuIDk4MjpcXHRcXHQqY2d4X2lkID0gKG1hcCBcXHUwMDNlXFx1MDAzZSA0KSBcXHUwMDI2IDB4RjtcXG4gOTgzOlxcdFxcdCpsbWFjX2lkID0gKG1hcCBcXHUwMDI2IDB4Rik7XFxuIDk4NDpcXHR9XFxuIDk4NTpcXHRcXG4gOTg2OlxcdHN0YXRpYyBpbmxpbmUgYm9vbCBpc19jZ3hfdmYoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4gOTg3OlxcdHtcXG4gOTg4OlxcdFxcdHJldHVybiAoKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIFxcdTAwMjZcXHUwMDI2XFxuIDk4OTpcXHRcXHRcXHRpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYykpKTtcXG4gOTkwOlxcdH1cXG4gOTkxOlxcdFxcbiA5OTI6XFx0I2RlZmluZSBNKF9uYW1lLCBfaWQsIGZuX25hbWUsIHJlcSwgcnNwKVxcdFxcdFxcdFxcdFxcXFxcXG4gOTkzOlxcdGludCBydnVfbWJveF9oYW5kbGVyXyAjIyBmbl9uYW1lKHN0cnVjdCBydnUgKiwgc3RydWN0IHJlcSAqLCBzdHJ1Y3QgcnNwICopO1xcbiA5OTQ6XFx0TUJPWF9NRVNTQUdFU1xcbiA5OTU6XFx0I3VuZGVmIE1cXG4gOTk2OlxcdFxcbiA5OTc6XFx0LyogTWJveCBBUElzICovXFxuIDk5ODpcXHR2b2lkIHJ2dV9xdWV1ZV93b3JrKHN0cnVjdCBtYm94X3dxX2luZm8gKm13LCBpbnQgZmlyc3QsXFxuIDk5OTpcXHRcXHRcXHQgICAgaW50IG1kZXZzLCB1NjQgaW50cik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjAxLjk2MTM5MTgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjQ3NzY4NTI3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgT0NURU9OVFgyX0FGIERyaXZlcidzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBhdCBoYW5kIGlzIHdoZXRoZXIgdGhlIGBPQ1RFT05UWDJfQUZgIGRyaXZlciBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgT0NURU9OVFgyX0FGYCAqaXMqLiBBaCwgaXQncyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gTm93LCBsZXQncyBjb25zdWx0IHRoZSBmdXp6aW5nIGNyaXRlcmlhIOKAkyBzcGVjaWZpY2FsbHksIHdoZW4gd2UgKnNob3VsZG4ndCogZnV6eiwgdGhlIFwibmVnYXRpdmUgY3JpdGVyaWEuXCIgU2VjdGlvbiAyLCBhbHJpZ2h0LlxuXG5JdCBzYXlzIHdlIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBjZXJ0YWluIGNhdGVnb3JpZXMuIFNwZWNpZmljYWxseSwgSSdtIGxvb2tpbmcgYXQgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXCIgVGhpcyBpbmNsdWRlcyB0aGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyAqbm90KiBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VLlxuXG5UaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBoZXJlIGlzIGBhbWQ2NGAuIExvb2tpbmcgYXQgdGhlIEtjb25maWcsIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uLCBpdCBkZXBlbmRzIG9uIGAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRgIGFuZCBhbHNvIG9uIGBQQ0lgLiBBIGxpZ2h0YnVsYiBqdXN0IHdlbnQgb2ZmISBJcyB0aGlzIE1hcnZlbGwgT2N0ZW9uVFgyIGEgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDIG9yIFNvQyB0aGF0IGFic29sdXRlbHkgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmU/IExldCdzIGludmVzdGlnYXRlLlxuXG5Pa2F5LCBJIHNlZSBgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYgMHhBMDY1YCBhbmQgYFBDSV9WRU5ET1JfSURfQ0FWSVVNYC4gQmluZ28uIFRoZSB2ZW5kb3IgaXMgQ2F2aXVtLCBhbmQgdGhhdCBjb25maXJtcyBpdCdzIE1hcnZlbGwgaGFyZHdhcmUuIENhbiBzdGFuZGFyZCBRRU1VIGVtdWxhdGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFGPyBEZWZpbml0ZWx5IG5vdC4gUUVNVSBvZmZlcnMgdmlydGlvLW5ldCwgZTEwMDAsIGFuZCBvdGhlcnMsIGJ1dCAqbm8qIENhdml1bSBPY3Rlb25UWDIgZW11bGF0aW9uLiBGdXJ0aGVybW9yZSwgaXQncyBhbiBBUk02NCBuZXR3b3JrIHByb2Nlc3NvciAoQ045SywgQ04xMEssIENOMjBLIFNvQykuIEl0ICpvbmx5KiBjb21waWxlcyBvbiB4ODYvYW1kNjQgaWYgYENPTkZJR19DT01QSUxFX1RFU1RgIGlzIGVuYWJsZWQsIHdoaWNoIGlzIGEgYmlnIGhpbnQuIEluIGEgcmVhbC13b3JsZCBzY2VuYXJpbywgT2N0ZW9uVFgyIHJ1bnMgb24gdGhlIEFSTTY0IGNvcmVzIG9mIHRoZSBPY3Rlb25UWDIgU29DIG9yIGlzIGEgUENJIGRldmljZS5cblxuU28sIHRoZSBuZXh0IG9idmlvdXMgcXVlc3Rpb246IElzIHRoZXJlIGFueSBraW5kIG9mIHZpcnR1YWwgZGV2aWNlLCBsb29wYmFjaywgb3IgbW9jayBkZXZpY2UgaW1wbGVtZW50YXRpb24gZm9yIE1hcnZlbGwgT2N0ZW9uVFgyIHdpdGhpbiB0aGUga2VybmVsPyBQcm9iYWJseSBub3QuIEl0J3MgYSBzcGVjaWFsaXplZCBwaWVjZSBvZiBoYXJkd2FyZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LCBidXQgYmFzZWQgb24gZXZlcnl0aGluZyBJIHNlZSBzbyBmYXIsIHRoaXMgY2xlYXJseSBmaXRzIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGNhdGVnb3J5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0NTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzowNi43MzgyNDcyMzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMjIyNTIxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz00ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6NDU6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00Ni1cXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzQ0Nz1pbnQgcnZ1X2dldF9udW1fbGJrX2NoYW5zKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0NzE6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXFx0MHhBMEY4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzQ3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNDczPXN0YXRpYyBpbnQgcnZ1X2VuYWJsZV9zcmlvdihzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0OTU6XFx0aWYgKHJ2dS1cXHUwMDNldmZfZGV2aWQgPT0gUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTM0OTYtXFx0XFx0Y2hhbnMgPSBydnVfZ2V0X251bV9sYmtfY2hhbnMoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjQ6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXFx0XFx0MHhBMDY1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjUtI2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXFx0XFx0XFx0MHhBMDYxXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI4MDY9c3RhdGljIHZvaWQgcnZ1X2RiZ19ucGFfaW5pdChzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4MjUtLyogUGVyLWxtYWMgQ0dYIGRlYnVnZnMgZmlsZXMgbmVlZCBib3RoIFJWVSBhbmQgQ0dYIGhhbmRsZTsgaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MjgyNjogKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgyNy0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQ0LSNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkZcXHRcXHQweEEwNjRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkZcXHRcXHQweEEwRjhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01OTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjU5OTpcXHRyZXR1cm4gKHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYwMC1cXHRcXHQocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9SVlVfUkVQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM9MjI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfdmZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjIzOlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTI0LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkYpIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjA3LjU1MDQ3NzM3OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxODc5MzA2NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpc3NlY3RpbmcgdGhlIGBydnVfcHJvYmVgIGFuZCBSZWdpc3RyYXRpb24gUHJvY2VzcyoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIGBydnVfcHJvYmVgIGZ1bmN0aW9uIG9wZXJhdGVzIGFuZCwgY3J1Y2lhbGx5LCBob3cgaXQgZ2V0cyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgYHJ2dS5jYCBjb2RlLiBJJ20gZ29pbmcgdG8ganVtcCBpbnRvIHRoYXQgZmlsZSwgYHJ2dS5jYCwgYW5kIHplcm8gaW4gb24gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGZsb3cgYW5kIGZpZ3VyZSBvdXQgdGhlIHJlZ2lzdHJhdGlvbiBtZWNoYW5pc23igJRpcyBpdCBhIHNpbXBsZSBmdW5jdGlvbiBwb2ludGVyIHBhc3NlZCB0byBhIGRyaXZlciBmcmFtZXdvcmssIG9yIHNvbWV0aGluZyBtb3JlIGludHJpY2F0ZT8gS25vd2luZyB0aGlzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcgYXJlIGhhbmRsZWQuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBpbnRlcmVzdGluZyBkZXRhaWxzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzk3OSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjA5LjQyOTgwMTQ2NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0c3RhdGljIGlycXJldHVybl90IHJ2dV9tYm94X3BmX2ludHJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpydnVfaXJxKTtcXG4gIDQxOlxcdHN0YXRpYyBpcnFyZXR1cm5fdCBydnVfbWJveF9pbnRyX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcnZ1X2lycSk7XFxuICA0MjpcXHRcXG4gIDQzOlxcdC8qIFN1cHBvcnRlZCBkZXZpY2VzICovXFxuICA0NDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XFxuICA0NTpcXHRcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSB9LFxcbiAgNDY6XFx0XFx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cXG4gIDQ3OlxcdH07XFxuICA0ODpcXHRcXG4gIDQ5OlxcdE1PRFVMRV9BVVRIT1IoXFxcIlN1bmlsIEdvdXRoYW0gXFx1MDAzY3Nnb3V0aGFtQG1hcnZlbGwuY29tXFx1MDAzZVxcXCIpO1xcbiAgNTA6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKERSVl9TVFJJTkcpO1xcbiAgNTE6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbiAgNTI6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJ2dV9pZF90YWJsZSk7XFxuICA1MzpcXHRcXG4gIDU0OlxcdHN0YXRpYyBjaGFyICpta2V4X3Byb2ZpbGU7IC8qIE1LRVggcHJvZmlsZSBuYW1lICovXFxuICA1NTpcXHRtb2R1bGVfcGFyYW0obWtleF9wcm9maWxlLCBjaGFycCwgMDAwMCk7XFxuICA1NjpcXHRNT0RVTEVfUEFSTV9ERVNDKG1rZXhfcHJvZmlsZSwgXFxcIk1LRVggcHJvZmlsZSBuYW1lIHN0cmluZ1xcXCIpO1xcbiAgNTc6XFx0XFxuICA1ODpcXHRzdGF0aWMgY2hhciAqa3B1X3Byb2ZpbGU7IC8qIEtQVSBwcm9maWxlIG5hbWUgKi9cXG4gIDU5OlxcdG1vZHVsZV9wYXJhbShrcHVfcHJvZmlsZSwgY2hhcnAsIDAwMDApO1xcbiAgNjA6XFx0TU9EVUxFX1BBUk1fREVTQyhrcHVfcHJvZmlsZSwgXFxcIktQVSBwcm9maWxlIG5hbWUgc3RyaW5nXFxcIik7XFxuICA2MTpcXHRcXG4gIDYyOlxcdHN0YXRpYyB2b2lkIHJ2dV9zZXR1cF9od19jYXBhYmlsaXRpZXMoc3RydWN0IHJ2dSAqcnZ1KVxcbiAgNjM6XFx0e1xcbiAgNjQ6XFx0XFx0c3RydWN0IHJ2dV9od2luZm8gKmh3ID0gcnZ1LVxcdTAwM2VodztcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0aHctXFx1MDAzZWNhcC5uaXhfdHhfYWdncl9sdmwgPSBOSVhfVFhTQ0hfTFZMX1RMMTtcXG4gIDY3OlxcdFxcdGh3LVxcdTAwM2VjYXAubml4X2ZpeGVkX3R4c2NocV9tYXBwaW5nID0gZmFsc2U7XFxuICA2ODpcXHRcXHRody1cXHUwMDNlY2FwLm5peF9zaGFwaW5nID0gdHJ1ZTtcXG4gIDY5OlxcdFxcdGh3LVxcdTAwM2VjYXAubml4X3R4X2xpbmtfYnAgPSB0cnVlO1xcbiAgNzA6XFx0XFx0aHctXFx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0ID0gdHJ1ZTtcXG4gIDcxOlxcdFxcdGh3LVxcdTAwM2VjYXAubml4X3NoYXBlcl90b2dnbGVfd2FpdCA9IGZhbHNlO1xcbiAgNzI6XFx0XFx0aHctXFx1MDAzZWNhcC5ucGNfaGFzaF9leHRyYWN0ID0gZmFsc2U7XFxuICA3MzpcXHRcXHRody1cXHUwMDNlY2FwLm5wY19leGFjdF9tYXRjaF9lbmFibGVkID0gZmFsc2U7XFxuICA3NDpcXHRcXHRody1cXHUwMDNlcnZ1ID0gcnZ1O1xcbiAgNzU6XFx0XFxuICA3NjpcXHRcXHRpZiAoaXNfcnZ1X3ByZV85Nnh4X0MwKHJ2dSkpIHtcXG4gIDc3OlxcdFxcdFxcdGh3LVxcdTAwM2VjYXAubml4X2ZpeGVkX3R4c2NocV9tYXBwaW5nID0gdHJ1ZTtcXG4gIDc4OlxcdFxcdFxcdGh3LVxcdTAwM2VjYXAubml4X3R4c2NoX3Blcl9jZ3hfbG1hYyA9IDQ7XFxuICA3OTpcXHRcXHRcXHRody1cXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfbGJrX2xtYWMgPSAxMzI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjA5LjQzMDAxODk4N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMjU0NTkzMjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgcnZ1LmMgRHJpdmVyKipcblxuT2theSwgc28gYHJ2dS5jYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0J3MgYSBQQ0kgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgaWRlbnRpZmllZCBhcyBhIENhdml1bSBkZXZpY2UsIHNwZWNpZmljYWxseSB0aGUgT2N0ZW9uIFRYMiBSVlUgQUYsIGJhc2VkIG9uIHRoZSBgUENJX0RFVklDRWAgbWFjcm8gZGVmaW5pbmcgdGhlIHZlbmRvciBhbmQgZGV2aWNlIElEcy4gVGhhdCdzIGdvb2QsIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciB3b3JrcywgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBydnVfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gbWFnaWMgbGlrZWx5IGhhcHBlbnMuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTg1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzoxMS42ODQ2MTUyNzhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDYyOTU2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcnZ1X3BjaV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzoxMS43NDI2ODY5MDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTU1NTIyMzI1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFBDSSBEcml2ZXIgTGFuZHNjYXBlIGluIFJWVSoqXG5cbk9rYXksIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZHJpdmVyIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGZvciB0aGUgUENJIGRldmljZXMgd2l0aGluIHRoZSBSVlUgY29kZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIHByZXR0eSBzdXJlIHRoZSBrZXkgd2lsbCBsaWUgd2l0aGluIGVpdGhlciB0aGUgYG1vZHVsZV9wY2lfZHJpdmVyYCBtYWNybyBvciwgbW9yZSBkaXJlY3RseSwgdGhlIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYCBmdW5jdGlvbiBjYWxsLiBJIG5lZWQgdG8gcXVpY2tseSBsb2NhdGUgd2hlcmUgdGhlc2UgYXJlIHVzZWQgd2l0aGluIGBydnUuY2AuIFRoYXQncyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgaW5pdGlhbGl6YXRpb24gYW5kIGF0dGFjaG1lbnQgb2YgdGhlIFBDSSBkcml2ZXIgaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUyMzksIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzoxMy4yOTc5MTMxOTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzQ4OTIwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjEzLjM0OTY3NTg0OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxNjk4MzEyMTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTG9jYXRpbmcgdGhlIFBDSSBEcml2ZXIgaW4gcnZ1LmMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgYHBjaV9kcml2ZXJgIHN0cnVjdHVyZSB3aXRoaW4gYHJ2dS5jYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gSSdtIGFzc3VtaW5nIHRoYXQgc2luY2UgaXQncyBhbiBgcnZ1YCBmaWxlLCB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIHNvbWUga2luZCBvZiBzeXN0ZW0tbGV2ZWwgb3IgaGFyZHdhcmUgYWJzdHJhY3Rpb24uIFRoZSBgcGNpX2RyaXZlcmAgc3RydWN0dXJlIGlzIGZ1bmRhbWVudGFsIGZvciBhbnkgUENJIGRldmljZSBpbnRlcmFjdGlvbiwgc28gaXQgbmVlZHMgdG8gYmUgbG9jYXRlZC4gTXkgZ29hbCBub3cgaXMgdG8gcXVpY2tseSBuYXZpZ2F0ZSB0byB0aGUgc291cmNlIGNvZGUgYW5kIHBpbnBvaW50IHdoZXJlIHRoaXMgZHJpdmVyIGlzIGRlZmluZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgYHJ2dWAgbW9kdWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0uIFRpbWUgdG8gZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ0MywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjE1LjA0Nzk5MDA2MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MDI3NDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz0yMDYwPXN0YXRpYyB2b2lkIGNneF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jOjIwNzQ6c3RydWN0IHBjaV9kcml2ZXIgY2d4X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy0yMDc1LVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaD0xMzI9c3RydWN0IGNneF9ldmVudF9jYiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4Lmg6MTM3OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBjZ3hfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTEzOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jPTE2MDk9c3RhdGljIHZvaWQgbWNzX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmM6MTYyMjpzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5jLTE2MjMtXFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oPTE1NT1zdHJ1Y3QgbWNzX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tY3MuaC0xNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWNzLmg6MTY1OmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBtY3NfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21jcy5oLTE2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjEyOnN0cnVjdCBwY2lfZHJpdmVyIHB0cF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjEzLVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuaD0yOT12b2lkIHB0cF9zdGFydChzdHJ1Y3QgcnZ1ICpydnUsIHU2NCBzY2xrLCB1MzIgZXh0X2Nsa19mcmVxLCB1MzIgZXh0dHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oOjMxOmV4dGVybiBzdHJ1Y3QgcGNpX2RyaXZlciBwdHBfZHJpdmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5oLTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9Mzc0Mz1zdGF0aWMgdm9pZCBydnVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNzUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM3NTM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMzc1NC1cXHQubmFtZSA9IERSVl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYz0zNTA5PXN0YXRpYyB2b2lkIG90eDJfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zNTcxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM6MzU3MjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgb3R4Ml9wZl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zNTczLVxcdC5uYW1lID0gRFJWX05BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jPTgxNz1zdGF0aWMgdm9pZCBvdHgydmZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYy04NjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzo4Njc6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG90eDJ2Zl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYy04NjgtXFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYz04NDM9c3RhdGljIHZvaWQgcnZ1X3JlcF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcmVwLmMtODYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYzo4NjE6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9yZXBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9yZXAuYy04NjItXFx0Lm5hbWUgPSBEUlZfTkFNRSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDc6MTUuMzQyMDIyNTA3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI1NDEzODcwNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBSVlUgRHJpdmVyKipcblxuT2theSwgbGV0J3MgZGlzc2VjdCB0aGlzIGBydnVfZHJpdmVyYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIGl0J3MgYSBQQ0kgZHJpdmVyLiBJIGNhbiB0ZWxsIGJlY2F1c2Ugb2YgdGhlIG5hbWluZyBjb252ZW50aW9uLCBhbmQgb2YgY291cnNlLCBiZWNhdXNlIG9mIHRoZSBjb250ZXh0IEknbSB3b3JraW5nIGluLiBUaGUgdmVuZG9yIElEIGlzIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgKDB4MTc3ZCkuIEFoLCBDYXZpdW0sIHRoYXQgYnJpbmdzIGJhY2sgbWVtb3JpZXMuIEFuZCB0aGUgZGV2aWNlIElEIGlzIGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAgKDB4YTA2NSkuIFRoYXQgY2xlYXJseSBwb2ludHMgdG8gYW4gT2N0ZW9uIFRYMiBSVlUgQUYgZGV2aWNlLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCB3aGF0J3MgZ29pbmcgb24gaW4gdGhlIGBydnVfaW5pdF9tb2R1bGVgIGZ1bmN0aW9uLiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgc2VlIHdoYXQga2luZCBvZiByZWdpc3RlciBtYXBwaW5ncyBhbmQgaGFyZHdhcmUgc2V0dXAgdGhpcyBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzIwNCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjE3Ljg4MzQxMTk4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ5OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzc1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzc1MDpcXHRcXHRydnVfY2xlYXJfcnZ1bV9ibGtfcmV2aWQocnZ1KTtcXG4zNzUxOlxcdH1cXG4zNzUyOlxcdFxcbjM3NTM6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ2dV9kcml2ZXIgPSB7XFxuMzc1NDpcXHRcXHQubmFtZSA9IERSVl9OQU1FLFxcbjM3NTU6XFx0XFx0LmlkX3RhYmxlID0gcnZ1X2lkX3RhYmxlLFxcbjM3NTY6XFx0XFx0LnByb2JlID0gcnZ1X3Byb2JlLFxcbjM3NTc6XFx0XFx0LnJlbW92ZSA9IHJ2dV9yZW1vdmUsXFxuMzc1ODpcXHRcXHQuc2h1dGRvd24gPSBydnVfc2h1dGRvd24sXFxuMzc1OTpcXHR9O1xcbjM3NjA6XFx0XFxuMzc2MTpcXHRzdGF0aWMgaW50IF9faW5pdCBydnVfaW5pdF9tb2R1bGUodm9pZClcXG4zNzYyOlxcdHtcXG4zNzYzOlxcdFxcdGludCBlcnI7XFxuMzc2NDpcXHRcXG4zNzY1OlxcdFxcdHByX2luZm8oXFxcIiVzOiAlc1xcXFxuXFxcIiwgRFJWX05BTUUsIERSVl9TVFJJTkcpO1xcbjM3NjY6XFx0XFxuMzc2NzpcXHRcXHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZjZ3hfZHJpdmVyKTtcXG4zNzY4OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjM3Njk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zNzcwOlxcdFxcbjM3NzE6XFx0XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2cHRwX2RyaXZlcik7XFxuMzc3MjpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4zNzczOlxcdFxcdFxcdGdvdG8gcHRwX2VycjtcXG4zNzc0OlxcdFxcbjM3NzU6XFx0XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWNzX2RyaXZlcik7XFxuMzc3NjpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4zNzc3OlxcdFxcdFxcdGdvdG8gbWNzX2VycjtcXG4zNzc4OlxcdFxcbjM3Nzk6XFx0XFx0ZXJyID0gIHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnJ2dV9kcml2ZXIpO1xcbjM3ODA6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuMzc4MTpcXHRcXHRcXHRnb3RvIHJ2dV9lcnI7XFxuMzc4MjpcXHRcXG4zNzgzOlxcdFxcdHJldHVybiAwO1xcbjM3ODQ6XFx0cnZ1X2VycjpcXG4zNzg1OlxcdFxcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWNzX2RyaXZlcik7XFxuMzc4NjpcXHRtY3NfZXJyOlxcbjM3ODc6XFx0XFx0cGNpX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZwdHBfZHJpdmVyKTtcXG4zNzg4OlxcdHB0cF9lcnI6XFxuMzc4OTpcXHRcXHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmNneF9kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzoxNy44ODM1Njg3OTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTAzMDUwNTI4NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJpYWdlOiBDb2RlIFJlYWNoYWJpbGl0eSBmb3IgT2N0ZW9uVFgyIERyaXZlcioqXG5cbk9rYXksIGxldCdzIGdvIHRocm91Z2ggdGhpcyBjYXJlZnVsbHkuIEJhc2VkIG9uIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgc3BlY2lmaWNhbGx5IHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBmb3IgYFdvcnRoRnV6emluZ2AsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjb2RlIGlzICp1bmNvbmRpdGlvbmFsbHkqIHVucmVhY2hhYmxlLiBXZSdyZSBsb29raW5nIGF0IHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBkcml2ZXIsIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIHdlIHNob3VsZCBtYXJrIGl0IGFzIG5vdCB3b3J0aCBmdXp6aW5nIGlmIHRoZSBjb2RlIHJlcXVpcmVzIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuQWxyaWdodCwgdGhlIE9jdGVvblRYMiBpcyBhIFNtYXJ0TklDL1NvQyBuZXR3b3JrIHByb2Nlc3NvciBmcm9tIENhdml1bS9NYXJ2ZWxsLiBUaGF0IGxvb2tzIGxpa2UgYSBwcm9taXNpbmcgc3RhcnQuIFRoZSByZWxldmFudCBkcml2ZXIgaXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyYCwgYW5kIGl0IHNwZWNpZmljYWxseSB0YXJnZXRzIHRoZSBSVlUgKFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQpIEFkbWluIEZ1bmN0aW9uIGFuZCBQRi9WRiBkcml2ZXJzLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgaXQgbmVlZHMgdGhlIGFjdHVhbCBPY3Rlb25UWDIgaGFyZHdhcmUsIGVpdGhlciBQQ0llIG9yIG9uLWNoaXAgZGV2aWNlcyB3aXRoIGEgdmVuZG9yIElEIG9mIGAweDE3N2RgLiBRRU1VICpkZWZpbml0ZWx5KiBkb2Vzbid0IGVtdWxhdGUgdGhhdC4gSXQncyBub3QgZ29pbmcgdG8gYmUgYXZhaWxhYmxlIG9uIHg4Ni9hbWQ2NCBvciBldmVuIEFSTTY0IFFFTVUuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGV4cGxpY2l0bHkgYGFtZDY0YC4gTm93LCB0aGUgZGVwZW5kZW5jeSBvZiBgT0NURU9OVFgyX0FGYCBvbiBgQ09NUElMRV9URVNUYCBpcyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGUgY29kZSBpc24ndCBlYXNpbHkgcG9ydGFibGUgYW5kIHRoaXMgcmVpbmZvcmNlcyB0aGUgYXNzdW1wdGlvbiBvZiB0aGUgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY3kuXG5cblNvLCBmcm9tIGEgaGlnaCBsZXZlbCwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBiZWNhdXNlIGl0IGRlcGVuZHMgb24gc3BlY2lmaWMgdmVuZG9yIGhhcmR3YXJlIOKAkyB0aGUgT2N0ZW9uVFgyIFNtYXJ0TklDIEFTSUMg4oCTIHRoYXQncyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuTm93LCBsZXQncyB6b29tIGluIG9uIHRoZSBzcGVjaWZpYyBwYXRjaC4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oYCwgc3BlY2lmaWNhbGx5IHRoZSBgaXNfcGZfY2d4bWFwcGVkYCBmdW5jdGlvbi4gVGhlIGNvZGUgY2hlY2tzIGZvciBgcnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwYCBhbmQgcmV0dXJucyBgZmFsc2VgIGlmIGl0J3Mgbm90IGF2YWlsYWJsZS5cblxuVGhlIGNvbmNlcm4gaGVyZSBpcyB3aGV0aGVyIHRoaXMgZnVuY3Rpb24gY291bGQgYmUgY2FsbGVkIGZyb20gKm91dHNpZGUqIHRoZSBleHBlY3RlZCBPY3Rlb25UWDIgZHJpdmVyIGNvbnRleHQuIFdoaWxlIEkgZGlkIGEgYGdyZXBwZXJgIHJ1biBlYXJsaWVyLCBsZXQncyB2ZXJpZnkgdGhhdCBxdWlja2x5IGJ5IHJ1bm5pbmcgYW5vdGhlciBleGhhdXN0aXZlIHNlYXJjaCwgdG8gYmUgYWJzb2x1dGVseSBzdXJlIG5vIG90aGVyIGRyaXZlcnMgb3Igc3lzdGVtIGNvZGUsIHBlcmhhcHMgYnkgZXJyb3Igb3IgaW50ZW50LCBhcmUgY2FsbGluZyB0aGlzLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIGhpZ2hseSBzcGVjaWZpYywgYnV0IGEgdGhvcm91Z2ggY2hlY2sgaXMgYWx3YXlzIHdpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MDkxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDc6MjguMTg4NjI0MDc3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI4ODAwNDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX3BmX2NneG1hcHBlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYz00MzQ3PWJvb2wgbnBjX2lzX2NneF9vcl9sYmsoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYy00MzQ4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9ucGMuYzo0MzQ5OlxcdHJldHVybiBpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYykpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbnBjLmMtNDM1MC1cXHRcXHRpc19sYmtfdmYocnZ1LCBwY2lmdW5jKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTc5MD1zdGF0aWMgdm9pZCBydnVfc2V0dXBfcGZ2Zl9tYWNhZGRyZXNzKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTgwMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo4MDI6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtODAzLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MTUxNT1pbnQgcnZ1X2dldF9uaXhfYmxrYWRkcihzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTUyMy1cXHQvKiBBbGwgQ0dYIG1hcHBlZCBQRnMgYXJlIHNldCB3aXRoIGFzc2lnbmVkIE5JWCBibG9jayBkdXJpbmcgaW5pdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjE1MjQ6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xNTI1LVxcdFxcdGJsa2FkZHIgPSBwZi1cXHUwMDNlbml4X2Jsa2FkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaD05NjA9c3RhdGljIGlubGluZSBpbnQgcnZ1X2dldF9wZihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IHBjaWZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC05NzAtLyogQ0dYIEFQSXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDo5NzE6c3RhdGljIGlubGluZSBib29sIGlzX3BmX2NneG1hcHBlZChzdHJ1Y3QgcnZ1ICpydnUsIHU4IHBmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaD05ODY9c3RhdGljIGlubGluZSBib29sIGlzX2NneF92ZihzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtOTg4LVxcdHJldHVybiAoKHBjaWZ1bmMgXFx1MDAyNiBSVlVfUEZWRl9GVU5DX01BU0spIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6OTg5OlxcdFxcdGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTk5MC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDQ9Ym9vbCBpc19tYWNfZmVhdHVyZV9zdXBwb3J0ZWQoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgcGYsIGludCBmZWF0dXJlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0OTpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNTAtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NDU3PWlubGluZSBib29sIGlzX2NneF9jb25maWdfcGVybWl0dGVkKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDU5LVxcdGlmICgocGNpZnVuYyBcXHUwMDI2IFJWVV9QRlZGX0ZVTkNfTUFTSykgfHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6NDYwOlxcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDYxLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz00NjU9dm9pZCBydnVfY2d4X2VuYWRpc19yeF9icChzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNDcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo0NzE6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTQ3Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NjgwPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9zZXQoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTY4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Njg4OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy02ODktXFx0XFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9NzcxPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9tYWNfYWRkcl9nZXQoc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTc3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6Nzc3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHJlcS1cXHUwMDNlaGRyLnBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtNzc4LVxcdFxcdHJldHVybiBMTUFDX0FGX0VSUl9QRl9OT1RfTUFQUEVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTgyMz1zdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04MzYtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjgzNzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtODM4LVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9ODU5PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9wdHBfcnhfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo4NjI6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcmVxLVxcdTAwM2VoZHIucGNpZnVuYykpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy04NjMtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz05MDk9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2dldF9saW5raW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo5MTc6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkxOC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz05Mjc9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X2ZlYXR1cmVzX2dldChzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtOTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzo5MzU6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTkzNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDAxPWludCBydnVfY2d4X2NmZ19wYXVzZV9mcm0oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgdTggdHhfcGF1c2UsIHU4IHJ4X3BhdXNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTQtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEwMTU6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEwMTYtXFx0XFx0cmV0dXJuIExNQUNfQUZfRVJSX1BGX05PVF9NQVBQRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTA0MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfY2ZnX3BhdXNlX2ZybShzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1Mi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA1MzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA1NC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMDY4PWludCBydnVfbWJveF9oYW5kbGVyX2NneF9nZXRfcGh5X2ZlY19zdGF0cyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTA3NDpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTA3NS1cXHRcXHRyZXR1cm4gTE1BQ19BRl9FUlJfUEZfTk9UX01BUFBFRDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTI2PWludCBydnVfY2d4X3N0YXJ0X3N0b3BfaW8oc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBzdGFydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTMxOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTEzMi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMTczPWludCBydnVfbWJveF9oYW5kbGVyX2NneF9zZXRfZmVjX3BhcmFtKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMTgwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMTgxLVxcdFxcdHJldHVybiAtRVBFUk07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM9MTE5MD1pbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfZ2V0X2F1eF9saW5rX2luZm8oc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTExOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjExOTk6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEyMDAtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMjc3PWludCBydnVfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1OCB0eF9wYXVzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjg4LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMjg5OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMjkwLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzMTQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3ByaW9fZmxvd19jdHJsX2NmZyhzdHJ1Y3QgcnZ1ICpydnUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyNi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTMyNzpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTMyOC1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYz0xMzQxPXZvaWQgcnZ1X21hY19yZXNldChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jOjEzNDg6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jLTEzNDktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzNjY9Ym9vbCBydnVfY2d4X2lzX3BraW5kX2NvbmZpZ19wZXJtaXR0ZWQoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYzoxMzc3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYy0xMzc4LVxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jPTEzOTg9Ym9vbCBydnVfY2d4X2NoZWNrX3Blcm1pc3Npb25fYW5kX3NldF9wa2luZChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgcGtpbmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmM6MTQwNjpcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMtMTQwNy1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTgyMj1zdGF0aWMgaW50IHJ2dV9kYmdfcnZ1X3BmX2NneF9tYXBfZGlzcGxheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbHAsIHZvaWQgKnVudXNlZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ2LVxcdGZvciAocGYgPSAwOyBwZiBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6ODQ3OlxcdFxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtODQ4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM0MD1zdGF0aWMgaW50IG5peF9pbnRlcmZhY2VfaW5pdChzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBpbnQgdHlwZSwgaW50IG5peGxmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1Mi1cXHRwZiA9IHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MzUzOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU0LVxcdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTU5NT1zdGF0aWMgaW50IG5peF9icF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy02MDktXFx0dHlwZSA9IGlzX2xia192ZihydnUsIHBjaWZ1bmMpID8gTklYX0lOVEZfVFlQRV9MQksgOiBOSVhfSU5URl9UWVBFX0NHWDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NjEwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQkspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTYxMS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz03NDE9c3RhdGljIGludCBuaXhfYnBfZW5hYmxlKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy03NTktXFx0LyogRW5hYmxlIGJhY2twcmVzc3VyZSBvbmx5IGZvciBDR1ggbWFwcGVkIFBGcyBhbmQgTEJLL1NEUCBpbnRlcmZhY2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NzYwOlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHR5cGUgIT0gTklYX0lOVEZfVFlQRV9MQksgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNzYxLVxcdCAgICB0eXBlICE9IE5JWF9JTlRGX1RZUEVfU0RQKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTE1MTI9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X2xmX2FsbG9jKHN0cnVjdCBydnUgKnJ2dSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNzAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNzAyOlxcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgaXNfdmYocGNpZnVuYykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTcwMy1cXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjExMj1zdGF0aWMgaW50IG5peF9nZXRfdHhfbGluayhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMTktXFx0XFx0cmV0dXJuIGh3LVxcdTAwM2VjZ3hfbGlua3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjIxMjA6XFx0fSBlbHNlIGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjEyMS1cXHRcXHRydnVfZ2V0X2NneF9sbWFjX2lkKHJ2dS1cXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcXHUwMDI2Y2d4X2lkLCBcXHUwMDI2bG1hY19pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MjEyOT1zdGF0aWMgdm9pZCBuaXhfZ2V0X3R4c2NocV9yYW5nZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTIxMzgtXFx0XFx0KmVuZCA9ICpzdGFydCArIGh3LVxcdTAwM2VjYXAubml4X3R4c2NoX3Blcl9sYmtfbG1hYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MjEzOTpcXHR9IGVsc2UgaWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkgeyAvKiBDR1ggbGlua3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjE0MC1cXHRcXHQqc3RhcnQgPSBody1cXHUwMDNlY2FwLm5peF90eHNjaF9wZXJfY2d4X2xtYWMgKiBsaW5rO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTI0ODY9c3RhdGljIGludCBuaXhfc21xX2ZsdXNoKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjUwNC1cXHQvKiBlbmFibGUgY2d4IHR4IGlmIGRpc2FibGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjI1MDU6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0yNTA2LVxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsIFxcdTAwMjZsbWFjX2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz0yODc5PXZvaWQgcnZ1X25peF90eF90bDJfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTI4ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjI4ODg6XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgIWlzX3JlcF9kZXYocnZ1LCBwY2lmdW5jKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMjg4OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzU2OD12b2lkIG5peF9nZXRfbWNlX2xpc3Qoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgaW50IHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMzU3NC1cXHRpZiAoIWh3LVxcdTAwM2VjYXAubml4X3J4X211bHRpY2FzdCB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNTc1OlxcdCAgICAhaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM1NzYtXFx0XFx0XFx0ICAgICBwY2lmdW5jIFxcdTAwMjYgflJWVV9QRlZGX0ZVTkNfTUFTSykpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MzYwMD1zdGF0aWMgaW50IG5peF91cGRhdGVfbWNlX3J1bGUoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE2LVxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNjE3OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNjE4LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTQ2ODQ9aW50IHJ2dV9tYm94X2hhbmRsZXJfbml4X3NldF9od19mcnMoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3Qgbml4X2Zyc19jZmcgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy00NzI0LVxcdC8qIENoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGZyb20gQ0dYIG1hcHBlZCBSVlUgUEYgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NDcyNTpcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTQ3MjYtXFx0XFx0LyogR2V0IENHWCBhbmQgTE1BQyB0byB3aGljaCB0aGlzIFBGIGlzIG1hcHBlZCBhbmQgZmluZCBsaW5rICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9NTMyMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfc3RhcnRfcngoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTUzNDUtXFx0cGYgPSBydnVfZ2V0X3BmKHJ2dS1cXHUwMDNlcGRldiwgcGNpZnVuYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjUzNDY6XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBydnUtXFx1MDAzZXJlcF9tb2RlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01MzQ3LVxcdFxcdHJ2dV9yZXBfbm90aWZ5X3BmdmZfc3RhdGUocnZ1LCBwY2lmdW5jLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYz01MzUyPWludCBydnVfbWJveF9oYW5kbGVyX25peF9sZl9zdG9wX3J4KHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy01Mzc3LVxcdHBmID0gcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo1Mzc4OlxcdGlmIChpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikgXFx1MDAyNlxcdTAwMjYgcnZ1LVxcdTAwM2VyZXBfbW9kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTM3OS1cXHRcXHRydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHJ2dSwgcGNpZnVuYywgZmFsc2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTUzODU9dm9pZCBydnVfbml4X2xmX3RlYXJkb3duKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGludCBibGthZGRyLCBpbnQgbml4bGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtNTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6NTQwNzpcXHRpZiAoaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpIFxcdTAwMjZcXHUwMDI2IHJ2dS1cXHUwMDNlcmVwX21vZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTU0MDgtXFx0XFx0cnZ1X3JlcF9ub3RpZnlfcGZ2Zl9zdGF0ZShydnUsIHBjaWZ1bmMsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYz03ODI9dm9pZCBydnVfbnBjX2luc3RhbGxfcHJvbWlzY19lbnRyeShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTg0OS1cXHRpZiAoaHctXFx1MDAzZWNhcC5uaXhfcnhfbXVsdGljYXN0IFxcdTAwMjZcXHUwMDI2IHBmdmYtXFx1MDAzZXVzZV9tY2VfbGlzdCBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYzo4NTA6XFx0ICAgIGlzX3BmX2NneG1hcHBlZChydnUsIHJ2dV9nZXRfcGYocnZ1LVxcdTAwM2VwZGV2LCBwY2lmdW5jKSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmMtODUxLVxcdFxcdCoodTY0ICopXFx1MDAyNmFjdGlvbiA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBjLmM9NDIyOD1pbnQgcnZ1X25wY19zZXRfcGFyc2VfbW9kZShzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCB1NjQgbW9kZSwgdTggZGlyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jLTQyNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYy5jOjQyNzc6XFx0XFx0aWYgKGlzX3BmX2NneG1hcHBlZChydnUsIHBmKSBcXHUwMDI2XFx1MDAyNiBpc192ZihwY2lmdW5jKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGMuYy00Mjc4LVxcdFxcdFxcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVxcdTAwM2VwZjJjZ3hsbWFjX21hcFtwZl0sIFxcdTAwMjZjZ3hfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM9MTIwPWludCBydnVfcmVwX25vdGlmeV9wZnZmX3N0YXRlKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmM6MTI1OlxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcnZ1X2dldF9wZihydnUtXFx1MDAzZXBkZXYsIHBjaWZ1bmMpKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMTI2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jPTMyMj1pbnQgcnZ1X3JlcF9pbnN0YWxsX21jYW1fcnVsZXMoc3RydWN0IHJ2dSAqcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTMzMi1cXHRmb3IgKHBmID0gMTsgcGYgXFx1MDAzYyBody1cXHUwMDNldG90YWxfcGZzOyBwZisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jOjMzMzpcXHRcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtMzM0LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jPTQ0Nj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9nZXRfcmVwX2NudChzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfcmVwLmMtNDYxLVxcdGZvciAocGYgPSAwOyBwZiBcXHUwMDNjIHJ2dS1cXHUwMDNlaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9yZXAuYzo0NjI6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3JlcC5jLTQ2My1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYz04Mz1zdGF0aWMgaW50IHJ2dV9zd2l0Y2hfaW5zdGFsbF9ydWxlcyhzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTItXFx0Zm9yIChwZiA9IDE7IHBmIFxcdTAwM2MgaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzo5MzpcXHRcXHRpZiAoIWlzX3BmX2NneG1hcHBlZChydnUsIHBmKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmMtOTQtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfc3dpdGNoLmM9MjE3PXZvaWQgcnZ1X3N3aXRjaF9kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYy0yMzUtXFx0Zm9yIChwZiA9IDE7IHBmIFxcdTAwM2MgaHctXFx1MDAzZXRvdGFsX3BmczsgcGYrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9zd2l0Y2guYzoyMzY6XFx0XFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X3N3aXRjaC5jLTIzNy1cXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMDM6MDc6MzAuMDE3NDMxNTk2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjc3MTY5NjYxODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIHNvIHRoZSBjb2RlIGNoYW5nZSB0YXJnZXRzIGBpc19wZl9jZ3htYXBwZWQoKWAgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvYCBkaXJlY3RvcnkuIFRoYXQgaW1tZWRpYXRlbHkgc2NyZWFtcyBcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcIiB0byBtZS4gSSBrbm93IHRoYXQgZHJpdmVyIHByZXR0eSB3ZWxsLCBhbmQgaXRzIGRlcGVuZGVuY3kgb24gc3BlY2lmaWMgaGFyZHdhcmUgaXMgYSBrZXkgZGV0YWlsLiBJIGNhbiBzZWUgdGhhdCBvbmx5IGZpbGVzIHdpdGhpbiB0aGF0IGRyaXZlciBkaXJlY3RvcnkgYWN0dWFsbHkgZGVmaW5lIG9yIGNhbGwgdGhpcyBmdW5jdGlvbi5cblxuVGhlbiB0aGVyZSdzIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudC4gVGhpcyBpc24ndCBqdXN0ICphbnkqIGhhcmR3YXJlOyBpdCdzIHNwZWNpZmljIE1hcnZlbGwvQ2F2aXVtIE9jdGVvblRYMiBoYXJkd2FyZSB3aXRoIGEgUENJIGRldmljZSBJRCBvZiAxNzdkOmEwNjUuIFN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWwgZW52aXJvbm1lbnRzPyBGb3JnZXQgYWJvdXQgaXQuIFRoZXkgZG9uJ3QgZW11bGF0ZSB0aGlzIGtpbmQgb2Ygc3BlY2lhbGl6ZWQgaGFyZHdhcmUuIFRoYXQncyBhIGh1Z2UgcmVkIGZsYWcuXG5cblRoZSBkb2N1bWVudGF0aW9uJ3Mgc2VjdGlvbiBvbiBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIHNlYWxzIHRoZSBkZWFsLiBUaGlzIGZhbGxzICpkaXJlY3RseSogaW50byB0aGF0IGNhdGVnb3J5LiBJdCdzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgcmVxdWlyaW5nIGFuIEFTSUMvUENJZSBjYXJkIHRoYXQgSSdtIG5vdCBnb2luZyB0byBmaW5kIGluIGEgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4gR2l2ZW4gdGhhdCwgSSBjYW4gY29uZmlkZW50bHkgY29uY2x1ZGUgdGhhdCBmdXp6aW5nIHRoaXMgY29kZSB3aWxsIGJlIGZydWl0bGVzcy4gVGhlcmUncyBubyB3YXkgdG8gcmVhY2ggaXQuXG5cblRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgZGVmaW5pdGVseSBgZmFsc2VgLiBUaGUgYEZvY3VzU3ltYm9sc2AgbGlzdCB3aWxsIGJlIGVtcHR5IGJlY2F1c2UsIGZyYW5rbHksIHRoZXJlJ3Mgbm90aGluZyB0byBmb2N1cyBvbi4gQW5kIG9mIGNvdXJzZSwgYEVuYWJsZUNvbmZpZ3NgIGlzIGVtcHR5LCBhcyB0aGVyZSBhcmUgbm8gcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblRpbWUgdG8gcHJlcGFyZSB0aGUgdG9vbCBjYWxsIHRvIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTMwLCJPdXRwdXRUb2tlbnMiOjEzMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQwMzowNzozNy43MzQ0MDA1NDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBpc19wZl9jZ3htYXBwZWQoKSBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaCwgd2hpY2ggaXMgaW50ZXJuYWwgdG8gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgUENJZSAvIFNtYXJ0TklDIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgaXNfcGZfY2d4bWFwcGVkKCkgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgsIHdoaWNoIGlzIGludGVybmFsIHRvIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIFBDSWUgLyBTbWFydE5JQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDAzOjA3OjM3LjczNDQyNjg2M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowgxvng[1] Phase: Running StartedAt: 2026-09-15 03:07:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgxvng[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 03:07:49 +0000 UTC FinishedAt: 2026-09-15 03:07:54 +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,}