Name: series-workflowbwb9q Phase: Failed StartedAt: 2026-08-21 07:36:24 +0000 UTC FinishedAt: 2026-08-21 08:38:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbwb9q[0] Phase: Succeeded StartedAt: 2026-08-21 07:36:24 +0000 UTC FinishedAt: 2026-08-21 08:38:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbwb9q[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 07:36:24 +0000 UTC FinishedAt: 2026-08-21 08:38:08 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGNhcmQgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTBiMGVkYWU4NWU1MzhjZjE4YWIwM2E1ZmE1NGIzMWYxOWFhNGM2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDA4OjM2OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY1xuaW5kZXggNjljMDkxMWUyOGU5MS4uMjE5NDNmYzA1OWRiMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jXG5AQCAtMjM1LDYgJiM0MzsyMzUsNDkgQEAgc3RhdGljIGludCBvdHgyX3Fvc190eHNjaHFfc2V0X3BhcmVudF90b3BvbG9neShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsXG4gXHRyZXR1cm4gcmM7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWJveCAqbWJveCA9IFx1MDAyNnBmdmYtXHUwMDNlbWJveDtcbiYjNDM7XHRzdHJ1Y3Qgbml4X3R4c2NocV9jb25maWcgKmNmZztcbiYjNDM7XHRpbnQgaSwgZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBmdmYtXHUwMDNlaHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF0pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZtYm94LVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZnZmLVx1MDAzZWh3LnR4c2NocV9jbnRbTklYX1RYU0NIX0xWTF9UTDRdOyApIHtcbiYjNDM7XHRcdGNmZyA9IG90eDJfbWJveF9hbGxvY19tc2dfbml4X3R4c2NocV9jZmcobWJveCk7XG4mIzQzO1x0XHRpZiAoIWNmZykge1xuJiM0MztcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2bWJveC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0Y2ZnLVx1MDAzZWx2bCA9IE5JWF9UWFNDSF9MVkxfVEw0O1xuJiM0MztcdFx0Y2ZnLVx1MDAzZW51bV9yZWdzID0gMDtcbiYjNDM7XG4mIzQzO1x0XHR3aGlsZSAoaSBcdTAwM2MgcGZ2Zi1cdTAwM2Vody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAgICBjZmctXHUwMDNlbnVtX3JlZ3MgXHUwMDNjIE1BWF9SRUdTX1BFUl9NQk9YX01TRykge1xuJiM0MztcdFx0XHRpbnQgc2NocSA9IHBmdmYtXHUwMDNlaHcudHhzY2hxX2xpc3RbTklYX1RYU0NIX0xWTF9UTDRdW2ldO1xuJiM0MztcbiYjNDM7XHRcdFx0Y2ZnLVx1MDAzZXJlZ1tjZmctXHUwMDNlbnVtX3JlZ3NdID0gTklYX0FGX1RMNFhfVE9QT0xPR1koc2NocSk7XG4mIzQzO1x0XHRcdGNmZy1cdTAwM2VyZWd2YWxbY2ZnLVx1MDAzZW51bV9yZWdzXSA9IDA7XG4mIzQzO1x0XHRcdGNmZy1cdTAwM2VudW1fcmVncyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdGkmIzQzOyYjNDM7O1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGVyciA9IG90eDJfc3luY19tYm94X21zZyhtYm94KTtcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1ib3gtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bWJveC1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgb3R4Ml9xb3NfZnJlZV9od19ub2RlX3NjaHEoc3RydWN0IG90eDJfbmljICpwZnZmLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBvdHgyX3Fvc19ub2RlICpwYXJlbnQpXG4ge1xuQEAgLTEwOTgsNiAmIzQzOzExNDEsNyBAQCBzdGF0aWMgaW50IG90eDJfcW9zX3Jvb3RfYWRkKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTE2IGh0Yl9tYWpfaWQsIHUxNiBodGJfZGVmY1xuIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZilcbiB7XG4gXHRzdHJ1Y3Qgb3R4Ml9xb3Nfbm9kZSAqcm9vdDtcbiYjNDM7XHRpbnQgZXJyO1xuIFxuIFx0bmV0ZGV2X2RiZyhwZnZmLVx1MDAzZW5ldGRldiwgXCYjMzQ7VENfSFRCX0RFU1RST1lcXG5cJiMzNDspO1xuIFxuQEAgLTExMDksNiAmIzQzOzExNTMsMTQgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2Rlc3Ryb3koc3RydWN0IG90eDJfbmljICpwZnZmKVxuIFx0LyogZnJlZSB0aGUgaHcgbWFwcGluZ3MgKi9cbiBcdG90eDJfcW9zX2Rlc3Ryb3lfbm9kZShwZnZmLCByb290KTtcbiBcbiYjNDM7XHRpZiAobmV0aWZfcnVubmluZyhwZnZmLVx1MDAzZW5ldGRldikpIHtcbiYjNDM7XHRcdGVyciA9IG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neShwZnZmKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdG5ldGRldl93YXJuKHBmdmYtXHUwMDNlbmV0ZGV2LFxuJiM0MztcdFx0XHRcdCAgICBcJiMzNDtIVEIgZGVzdHJveTogZmFpbGVkIHRvIHJlc2V0IFRMNCB0b3BvbG9neTogJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgIGVycik7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwODozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGNhcmQgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTBiMGVkYWU4NWU1MzhjZjE4YWIwM2E1ZmE1NGIzMWYxOWFhNGM2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDA4OjM2OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jCmluZGV4IDY5YzA5MTFlMjhlOTEuLjIxOTQzZmMwNTlkYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmMKQEAgLTIzNSw2ICYjNDM7MjM1LDQ5IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3NfdHhzY2hxX3NldF9wYXJlbnRfdG9wb2xvZ3koc3RydWN0IG90eDJfbmljICpwZnZmLAogCXJldHVybiByYzsKIH0KIAomIzQzO3N0YXRpYyBpbnQgb3R4Ml9xb3NfcmVzZXRfdGw0X3RvcG9sb2d5KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtYm94ICptYm94ID0gJmFtcDtwZnZmLSZndDttYm94OwomIzQzOwlzdHJ1Y3Qgbml4X3R4c2NocV9jb25maWcgKmNmZzsKJiM0MzsJaW50IGksIGVycjsKJiM0MzsKJiM0MzsJaWYgKCFwZnZmLSZndDtody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7bWJveC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBwZnZmLSZndDtody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XTsgKSB7CiYjNDM7CQljZmcgPSBvdHgyX21ib3hfYWxsb2NfbXNnX25peF90eHNjaHFfY2ZnKG1ib3gpOwomIzQzOwkJaWYgKCFjZmcpIHsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDttYm94LSZndDtsb2NrKTsKJiM0MzsJCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWNmZy0mZ3Q7bHZsID0gTklYX1RYU0NIX0xWTF9UTDQ7CiYjNDM7CQljZmctJmd0O251bV9yZWdzID0gMDsKJiM0MzsKJiM0MzsJCXdoaWxlIChpICZsdDsgcGZ2Zi0mZ3Q7aHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF0gJmFtcDsmYW1wOwomIzQzOwkJICAgICAgIGNmZy0mZ3Q7bnVtX3JlZ3MgJmx0OyBNQVhfUkVHU19QRVJfTUJPWF9NU0cpIHsKJiM0MzsJCQlpbnQgc2NocSA9IHBmdmYtJmd0O2h3LnR4c2NocV9saXN0W05JWF9UWFNDSF9MVkxfVEw0XVtpXTsKJiM0MzsKJiM0MzsJCQljZmctJmd0O3JlZ1tjZmctJmd0O251bV9yZWdzXSA9IE5JWF9BRl9UTDRYX1RPUE9MT0dZKHNjaHEpOwomIzQzOwkJCWNmZy0mZ3Q7cmVndmFsW2NmZy0mZ3Q7bnVtX3JlZ3NdID0gMDsKJiM0MzsJCQljZmctJmd0O251bV9yZWdzJiM0MzsmIzQzOzsKJiM0MzsJCQlpJiM0MzsmIzQzOzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWVyciA9IG90eDJfc3luY19tYm94X21zZyhtYm94KTsKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDttYm94LSZndDtsb2NrKTsKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO21ib3gtJmd0O2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBvdHgyX3Fvc19mcmVlX2h3X25vZGVfc2NocShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsCiAJCQkJICAgICAgIHN0cnVjdCBvdHgyX3Fvc19ub2RlICpwYXJlbnQpCiB7CkBAIC0xMDk4LDYgJiM0MzsxMTQxLDcgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2FkZChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBodGJfbWFqX2lkLCB1MTYgaHRiX2RlZmMKIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZikKIHsKIAlzdHJ1Y3Qgb3R4Ml9xb3Nfbm9kZSAqcm9vdDsKJiM0MzsJaW50IGVycjsKIAogCW5ldGRldl9kYmcocGZ2Zi0mZ3Q7bmV0ZGV2LCAmIzM0O1RDX0hUQl9ERVNUUk9ZXG4mIzM0Oyk7CiAKQEAgLTExMDksNiAmIzQzOzExNTMsMTQgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2Rlc3Ryb3koc3RydWN0IG90eDJfbmljICpwZnZmKQogCS8qIGZyZWUgdGhlIGh3IG1hcHBpbmdzICovCiAJb3R4Ml9xb3NfZGVzdHJveV9ub2RlKHBmdmYsIHJvb3QpOwogCiYjNDM7CWlmIChuZXRpZl9ydW5uaW5nKHBmdmYtJmd0O25ldGRldikpIHsKJiM0MzsJCWVyciA9IG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neShwZnZmKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJbmV0ZGV2X3dhcm4ocGZ2Zi0mZ3Q7bmV0ZGV2LAomIzQzOwkJCQkgICAgJiMzNDtIVEIgZGVzdHJveTogZmFpbGVkIHRvIHJlc2V0IFRMNCB0b3BvbG9neTogJWRcbiYjMzQ7LAomIzQzOwkJCQkgICAgZXJyKTsKJiM0MzsJfQomIzQzOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWFydmVsbCBPY3Rlb25UWDIgTklDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJIHNlZSBhIHBhdGNoIGltcGFjdGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSBuZXcgZnVuY3Rpb24sIGBvdHgyX3Fvc19yZXNldF90bDRfdG9wb2xvZ3lgLCBhbmQgYXJlIGNhbGxpbmcgaXQgZnJvbSBgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95YC4gR2l2ZW4gdGhhdCB0aGlzIGlzIHRoZSBPY3Rlb25UWDIgTklDIGRyaXZlciwgbXkgbWVudGFsIGdlYXJzIGFyZSBzdGFydGluZyB0byB0dXJuLiBJcyB0aGlzIHRhcmdldGVkIGF0IHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIG9yIGRvZXMgaXQgYWxzbyBhcHBseSBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byBjbGFyaWZ5IHRoZSBjb250ZXh0LiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBgbmljYCBkaXJlY3RvcnksIG9yIG1heWJlIHNvbWV3aGVyZSBzaW1pbGFyLCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGluZGljYXRpb24gb2YgdGhlIHN1cHBvcnRlZCBoYXJkd2FyZSBwbGF0Zm9ybXMgb3IgYW55IGhpbnRzIG9uIGhvdyB0aGlzIGlzIHVzZWQuIEl0IHdvdWxkIGJlIGdvb2QgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2NvcGUgYmVmb3JlIGRpdmluZyBkZWVwZXIgaW50byB0aGUgc3BlY2lmaWNzIG9mIGBvdHgyX3Fvc19yZXNldF90bDRfdG9wb2xvZ3lgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29jdGVvbnR4MiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz0xNjk9Y29uZmlnIFNLWTJfREVCVUdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctMTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjE4MDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTE4MS1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGU9MTU9b2JqLXlcdFx0JiM0Mzs9IG9jdGVvbl9lcF92Zi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGU6MTY6b2JqLXlcdFx0JiM0Mzs9IG9jdGVvbnR4Mi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGUtMTctb2JqLXlcdFx0JiM0Mzs9IHByZXN0ZXJhL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjI4OiNkZWZpbmUgREVCVUdGU19ESVJfTkFNRSBcJiMzNDtvY3Rlb250eDJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYz00MDEzPXN0YXRpYyBjb25zdCBjaGFyICpydnVfZ2V0X2RiZ19kaXJfbmFtZShzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy00MDIwLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzo0MDIxOlx0XHRyZXR1cm4gXCYjMzQ7b2N0ZW9udHgyXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy00MDIyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGV2bGluay5jLTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RldmxpbmsuYzoxNjojZGVmaW5lIERSVl9OQU1FIFwmIzM0O29jdGVvbnR4Mi1hZlwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RldmxpbmsuYy0xNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU9MTg9cnZ1X25pY3BmLSQoQ09ORklHX1hGUk1fT0ZGTE9BRCkgJiM0Mzs9IGNuMTBrX2lwc2VjLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZToyMDpjY2ZsYWdzLXkgJiM0Mzs9IC1JJChzcmN0cmVlKS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTE3LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvYy9tYXJ2ZWxsL3NpbGljb25zLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjE4OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvYy9tYXJ2ZWxsL29jdGVvbnR4Mi9hc20uaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtMTktI2luY2x1ZGUgXHUwMDNjbmV0L21hY3NlYy5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jPTExNjc9c3RhdGljIGludCBvdHgyX3Fvc192YWxpZGF0ZV9xdWFudHVtKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTMyIHF1YW50dW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jLTExNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmM6MTE3MjpcdC8qIE1heCBSb3VuZCByb2JpbiB3ZWlnaHQgc3VwcG9ydGVkIGJ5IG9jdGVvbnR4MiBhbmQgQ04xMEtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYy0xMTczLVx0ICogaXMgZGlmZmVyZW50LiBWYWxpZGF0ZSBhY2NvcmRpbmdseVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIuIEl0JiMzOTtzIGEgaGFyZHdhcmUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZCwgYSByZWFsIHBpZWNlIG9mIHNpbGljb24uIE5vdywgdGhlIGNvbnRleHQgbWVudGlvbnMgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBjb2RlIHRoYXQmIzM5O3MgdGllZCB0byB0aGUgcGh5c2ljYWwgcHJlc2VuY2Ugb2YgUENJZSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhleSYjMzk7cmUgcmVmZXJlbmNpbmcgZXhhbXBsZXMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcywgaXMgdGhlIE9jdGVvblRYMiAqZW11bGF0ZWQqIGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IEFuZCB0aGUgYW5zd2VyIGlzIGEgZmlybSBubzsgaXQmIzM5O3MgYSBkZWRpY2F0ZWQgTWFydmVsbCBoYXJkd2FyZSBOSUMuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCB0aG91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGNvbmZpcm0gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1hcnZlbGwgUlZVIE5ldHdvcmsgZHJpdmVycyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuICAgNzpcdFx0dHJpc3RhdGVcbiAgIDg6XHRcbiAgIDk6XHRjb25maWcgT0NURU9OVFgyX0FGXG4gIDEwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4gIDExOlx0XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbiAgMTI6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxMzpcdFx0ZGVwZW5kcyBvbiAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcbiAgMTQ6XHRcdGRlcGVuZHMgb24gUENJXG4gIDE1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXG4gIDE4Olx0XHQgIFVuaXQmIzM5O3MgYWRtaW4gZnVuY3Rpb24gbWFuYWdlciB3aGljaCBtYW5hZ2VzIGFsbCBSVlUgSFcgcmVzb3VyY2VzXG4gIDE5Olx0XHQgIGFuZCBwcm92aWRlcyBhIG1lZGl1bSB0byBvdGhlciBQRi9WRnMgdG8gY29uZmlndXJlIEhXLiBTaG91bGQgYmVcbiAgMjA6XHRcdCAgZW5hYmxlZCBmb3Igb3RoZXIgUlZVIGRldmljZSBkcml2ZXJzIHRvIHdvcmsuXG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXG4gIDIzOlx0XHRib29sIFwmIzM0O0Rpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXCYjMzQ7XG4gIDI0Olx0XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxuICAyNTpcdFx0ZGVmYXVsdCBuXG4gIDI2Olx0XHRoZWxwXG4gIDI3Olx0XHQgIFRoaXMgY29uZmlnIG9wdGlvbiBkaXNhYmxlcyBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBzdWNoIGFzIE5JWCBTUUVzXG4gIDI4Olx0XHQgICwgTlBBIHN0YWNrIHBhZ2VzIGV0YyBpbiBOREMuIEFsc28gbG9ja3MgZG93biBOSVggU1EvQ1EvUlEvUlNTIGFuZFxuICAyOTpcdFx0ICBOUEEgQXVyYS9Qb29sIGNvbnRleHRzLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBPQ1RFT05UWDJfUEZcbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgMzM6XHRcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuICAzNDpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDM1Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDM2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4gIDM3Olx0XHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuICAzODpcdFx0c2VsZWN0IERJTUxJQlxuICAzOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNDA6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNDE6XHRcdGRlcGVuZHMgb24gTUFDU0VDIHx8ICFNQUNTRUNcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxuICA0NDpcdFxuICA0NTpcdGNvbmZpZyBPQ1RFT05UWDJfVkZcbiAgNDY6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuICA0NzpcdFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDIHZpcnR1YWwgZnVuY3Rpb24uXG4gIDUwOlx0XG4gIDUxOlx0Y29uZmlnIFJWVV9FU1dJVENIXG4gIDUyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gIDUzOlx0XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxuICA1NDpcdFx0ZGVmYXVsdCBtXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgUlZVIEUtU3dpdGNoIHRoYXRcbiAgNTc6XHRcdCAgcHJvdmlkZXMgaW50ZXJuYWwgU1JJT1YgcGFja2V0IHN0ZWVyaW5nIGFuZCBzd2l0Y2hpbmcuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM5OAoJCQkJCQkJb3V0cHV0OiAxMDUKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgRHJpdmVyKioKCk9rYXksIHNvIHRoZSB0ZXh0IGV4cGxpY2l0bHkgaWRlbnRpZmllcyB0aGlzIGFzIHRoZSAmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXIuJiMzNDsgUmlnaHQgYXdheSwgdGhhdCBrZXkgcGhyYXNlIHRlbGxzIG1lIGV4YWN0bHkgd2hhdCBJIG5lZWQgdG8ga25vdy4gVGhpcyBpc24mIzM5O3Qgc29tZSBzb2Z0d2FyZS1kZWZpbmVkIG5ldHdvcmsgaW50ZXJmYWNlIG9yIGFuIGVtdWxhdGVkIGRldmljZSB3aXRoaW4gUUVNVS4gVGhpcyBpcyBhICpwaHlzaWNhbCogTklDLiBJdCYjMzk7cyB0aWVkIHRvIGFuIGFjdHVhbCBQQ0llIGhhcmR3YXJlIGNhcmQsIHdoaWNoIGlzIGEgY3J1Y2lhbCBkaXN0aW5jdGlvbi4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgZnV6emluZyBhbmQgdGhlIGxpbWl0YXRpb25zLCB0cnlpbmcgdG8gZnV6eiBhIHBoeXNpY2FsIGRldmljZSBkcml2ZXIgd2l0aG91dCB0aGUgaGFyZHdhcmUgcHJlc2VudCBpcyBhIGNvbXBsZXRlIGRlYWQgZW5kLiBJdCYjMzk7cyBzaW1wbHkgbm90IGZlYXNpYmxlIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhpcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoZSB0ZXN0aW5nIEkmIzM5O2QgbmVlZCB0byBkbyBzaW1wbHkgd291bGRuJiMzOTt0IGJlIGFibGUgdG8gaGFwcGVuLgoKVGhlcmVmb3JlLCBhZnRlciBjb25zaWRlcmluZyBhbGwgdGhpcywgSSYjMzk7bSBjb25maWRlbnQgaW4gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCB3YXN0aW5nIHZhbHVhYmxlIHRpbWUgYW5kIHJlc291cmNlcyBvbiBhbiBhcHByb2FjaCB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MikuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgbmV0d29yayBjYXJkIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGNhcmQgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwODozNjo1OC42MjIzMDI0MTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU1NDU2ODU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MikuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgbmV0d29yayBjYXJkIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6MzY6NTguNjIyMzA4NDU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI1MzgxNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTBiMGVkYWU4NWU1MzhjZjE4YWIwM2E1ZmE1NGIzMWYxOWFhNGM2NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyMSAwODozNjo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmNcXG5pbmRleCA2OWMwOTExZTI4ZTkxLi4yMTk0M2ZjMDU5ZGIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY1xcbkBAIC0yMzUsNiArMjM1LDQ5IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3NfdHhzY2hxX3NldF9wYXJlbnRfdG9wb2xvZ3koc3RydWN0IG90eDJfbmljICpwZnZmLFxcbiBcXHRyZXR1cm4gcmM7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R4Ml9xb3NfcmVzZXRfdGw0X3RvcG9sb2d5KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZilcXG4re1xcbitcXHRzdHJ1Y3QgbWJveCAqbWJveCA9IFxcdTAwMjZwZnZmLVxcdTAwM2VtYm94O1xcbitcXHRzdHJ1Y3Qgbml4X3R4c2NocV9jb25maWcgKmNmZztcXG4rXFx0aW50IGksIGVycjtcXG4rXFxuK1xcdGlmICghcGZ2Zi1cXHUwMDNlaHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF0pXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2bWJveC1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGZ2Zi1cXHUwMDNlaHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF07ICkge1xcbitcXHRcXHRjZmcgPSBvdHgyX21ib3hfYWxsb2NfbXNnX25peF90eHNjaHFfY2ZnKG1ib3gpO1xcbitcXHRcXHRpZiAoIWNmZykge1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1ib3gtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0Y2ZnLVxcdTAwM2VsdmwgPSBOSVhfVFhTQ0hfTFZMX1RMNDtcXG4rXFx0XFx0Y2ZnLVxcdTAwM2VudW1fcmVncyA9IDA7XFxuK1xcbitcXHRcXHR3aGlsZSAoaSBcXHUwMDNjIHBmdmYtXFx1MDAzZWh3LnR4c2NocV9jbnRbTklYX1RYU0NIX0xWTF9UTDRdIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAgICBjZmctXFx1MDAzZW51bV9yZWdzIFxcdTAwM2MgTUFYX1JFR1NfUEVSX01CT1hfTVNHKSB7XFxuK1xcdFxcdFxcdGludCBzY2hxID0gcGZ2Zi1cXHUwMDNlaHcudHhzY2hxX2xpc3RbTklYX1RYU0NIX0xWTF9UTDRdW2ldO1xcbitcXG4rXFx0XFx0XFx0Y2ZnLVxcdTAwM2VyZWdbY2ZnLVxcdTAwM2VudW1fcmVnc10gPSBOSVhfQUZfVEw0WF9UT1BPTE9HWShzY2hxKTtcXG4rXFx0XFx0XFx0Y2ZnLVxcdTAwM2VyZWd2YWxbY2ZnLVxcdTAwM2VudW1fcmVnc10gPSAwO1xcbitcXHRcXHRcXHRjZmctXFx1MDAzZW51bV9yZWdzKys7XFxuK1xcdFxcdFxcdGkrKztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0ZXJyID0gb3R4Ml9zeW5jX21ib3hfbXNnKG1ib3gpO1xcbitcXHRcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bWJveC1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYm94LVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBvdHgyX3Fvc19mcmVlX2h3X25vZGVfc2NocShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgb3R4Ml9xb3Nfbm9kZSAqcGFyZW50KVxcbiB7XFxuQEAgLTEwOTgsNiArMTE0MSw3IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9hZGQoc3RydWN0IG90eDJfbmljICpwZnZmLCB1MTYgaHRiX21hal9pZCwgdTE2IGh0Yl9kZWZjXFxuIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZilcXG4ge1xcbiBcXHRzdHJ1Y3Qgb3R4Ml9xb3Nfbm9kZSAqcm9vdDtcXG4rXFx0aW50IGVycjtcXG4gXFxuIFxcdG5ldGRldl9kYmcocGZ2Zi1cXHUwMDNlbmV0ZGV2LCBcXFwiVENfSFRCX0RFU1RST1lcXFxcblxcXCIpO1xcbiBcXG5AQCAtMTEwOSw2ICsxMTUzLDE0IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZilcXG4gXFx0LyogZnJlZSB0aGUgaHcgbWFwcGluZ3MgKi9cXG4gXFx0b3R4Ml9xb3NfZGVzdHJveV9ub2RlKHBmdmYsIHJvb3QpO1xcbiBcXG4rXFx0aWYgKG5ldGlmX3J1bm5pbmcocGZ2Zi1cXHUwMDNlbmV0ZGV2KSkge1xcbitcXHRcXHRlcnIgPSBvdHgyX3Fvc19yZXNldF90bDRfdG9wb2xvZ3kocGZ2Zik7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdG5ldGRldl93YXJuKHBmdmYtXFx1MDAzZW5ldGRldixcXG4rXFx0XFx0XFx0XFx0ICAgIFxcXCJIVEIgZGVzdHJveTogZmFpbGVkIHRvIHJlc2V0IFRMNCB0b3BvbG9neTogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBlcnIpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MDAuMDQ4MzQ4NTk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTMxMjg1MDkwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MikuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgbmV0d29yayBjYXJkIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTBiMGVkYWU4NWU1MzhjZjE4YWIwM2E1ZmE1NGIzMWYxOWFhNGM2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDA4OjM2OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jXG5pbmRleCA2OWMwOTExZTI4ZTkxLi4yMTk0M2ZjMDU5ZGIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmNcbkBAIC0yMzUsNiArMjM1LDQ5IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3NfdHhzY2hxX3NldF9wYXJlbnRfdG9wb2xvZ3koc3RydWN0IG90eDJfbmljICpwZnZmLFxuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbitzdGF0aWMgaW50IG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYpXG4re1xuK1x0c3RydWN0IG1ib3ggKm1ib3ggPSBcdTAwMjZwZnZmLVx1MDAzZW1ib3g7XG4rXHRzdHJ1Y3Qgbml4X3R4c2NocV9jb25maWcgKmNmZztcbitcdGludCBpLCBlcnI7XG4rXG4rXHRpZiAoIXBmdmYtXHUwMDNlaHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF0pXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZtYm94LVx1MDAzZWxvY2spO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGZ2Zi1cdTAwM2Vody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XTsgKSB7XG4rXHRcdGNmZyA9IG90eDJfbWJveF9hbGxvY19tc2dfbml4X3R4c2NocV9jZmcobWJveCk7XG4rXHRcdGlmICghY2ZnKSB7XG4rXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1ib3gtXHUwMDNlbG9jayk7XG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHRcdH1cbitcbitcdFx0Y2ZnLVx1MDAzZWx2bCA9IE5JWF9UWFNDSF9MVkxfVEw0O1xuK1x0XHRjZmctXHUwMDNlbnVtX3JlZ3MgPSAwO1xuK1xuK1x0XHR3aGlsZSAoaSBcdTAwM2MgcGZ2Zi1cdTAwM2Vody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICAgIGNmZy1cdTAwM2VudW1fcmVncyBcdTAwM2MgTUFYX1JFR1NfUEVSX01CT1hfTVNHKSB7XG4rXHRcdFx0aW50IHNjaHEgPSBwZnZmLVx1MDAzZWh3LnR4c2NocV9saXN0W05JWF9UWFNDSF9MVkxfVEw0XVtpXTtcbitcbitcdFx0XHRjZmctXHUwMDNlcmVnW2NmZy1cdTAwM2VudW1fcmVnc10gPSBOSVhfQUZfVEw0WF9UT1BPTE9HWShzY2hxKTtcbitcdFx0XHRjZmctXHUwMDNlcmVndmFsW2NmZy1cdTAwM2VudW1fcmVnc10gPSAwO1xuK1x0XHRcdGNmZy1cdTAwM2VudW1fcmVncysrO1xuK1x0XHRcdGkrKztcbitcdFx0fVxuK1xuK1x0XHRlcnIgPSBvdHgyX3N5bmNfbWJveF9tc2cobWJveCk7XG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2bWJveC1cdTAwM2Vsb2NrKTtcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bWJveC1cdTAwM2Vsb2NrKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCBvdHgyX3Fvc19mcmVlX2h3X25vZGVfc2NocShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IG90eDJfcW9zX25vZGUgKnBhcmVudClcbiB7XG5AQCAtMTA5OCw2ICsxMTQxLDcgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2FkZChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBodGJfbWFqX2lkLCB1MTYgaHRiX2RlZmNcbiBzdGF0aWMgaW50IG90eDJfcW9zX3Jvb3RfZGVzdHJveShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYpXG4ge1xuIFx0c3RydWN0IG90eDJfcW9zX25vZGUgKnJvb3Q7XG4rXHRpbnQgZXJyO1xuIFxuIFx0bmV0ZGV2X2RiZyhwZnZmLVx1MDAzZW5ldGRldiwgXCJUQ19IVEJfREVTVFJPWVxcblwiKTtcbiBcbkBAIC0xMTA5LDYgKzExNTMsMTQgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2Rlc3Ryb3koc3RydWN0IG90eDJfbmljICpwZnZmKVxuIFx0LyogZnJlZSB0aGUgaHcgbWFwcGluZ3MgKi9cbiBcdG90eDJfcW9zX2Rlc3Ryb3lfbm9kZShwZnZmLCByb290KTtcbiBcbitcdGlmIChuZXRpZl9ydW5uaW5nKHBmdmYtXHUwMDNlbmV0ZGV2KSkge1xuK1x0XHRlcnIgPSBvdHgyX3Fvc19yZXNldF90bDRfdG9wb2xvZ3kocGZ2Zik7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0bmV0ZGV2X3dhcm4ocGZ2Zi1cdTAwM2VuZXRkZXYsXG4rXHRcdFx0XHQgICAgXCJIVEIgZGVzdHJveTogZmFpbGVkIHRvIHJlc2V0IFRMNCB0b3BvbG9neTogJWRcXG5cIixcbitcdFx0XHRcdCAgICBlcnIpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MDAuMDQ4MzUwMDA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3NTA5NTcyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSBzZWUgYSBwYXRjaCBpbXBhY3RpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHdoYXQncyBiZWVuIGNoYW5nZWQuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBhZGRlZCBhIG5ldyBmdW5jdGlvbiwgYG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neWAsIGFuZCBhcmUgY2FsbGluZyBpdCBmcm9tIGBvdHgyX3Fvc19yb290X2Rlc3Ryb3lgLiBHaXZlbiB0aGF0IHRoaXMgaXMgdGhlIE9jdGVvblRYMiBOSUMgZHJpdmVyLCBteSBtZW50YWwgZ2VhcnMgYXJlIHN0YXJ0aW5nIHRvIHR1cm4uIElzIHRoaXMgdGFyZ2V0ZWQgYXQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgb3IgZG9lcyBpdCBhbHNvIGFwcGx5IGluIGEgUUVNVSBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIGNvbnRleHQuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gdGhlIGBuaWNgIGRpcmVjdG9yeSwgb3IgbWF5YmUgc29tZXdoZXJlIHNpbWlsYXIsIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBpbmRpY2F0aW9uIG9mIHRoZSBzdXBwb3J0ZWQgaGFyZHdhcmUgcGxhdGZvcm1zIG9yIGFueSBoaW50cyBvbiBob3cgdGhpcyBpcyB1c2VkLiBJdCB3b3VsZCBiZSBnb29kIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNjb3BlIGJlZm9yZSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIHNwZWNpZmljcyBvZiBgb3R4Ml9xb3NfcmVzZXRfdGw0X3RvcG9sb2d5YC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA4OjM3OjA0LjMyMzQ1Mjk5N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjY4MTkwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb250eDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTE2OT1jb25maWcgU0tZMl9ERUJVR1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTE3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6MTgwOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctMTgxLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGU9MTU9b2JqLXlcXHRcXHQrPSBvY3Rlb25fZXBfdmYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9NYWtlZmlsZToxNjpvYmoteVxcdFxcdCs9IG9jdGVvbnR4Mi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlLTE3LW9iai15XFx0XFx0Kz0gcHJlc3RlcmEvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6Mjg6I2RlZmluZSBERUJVR0ZTX0RJUl9OQU1FIFxcXCJvY3Rlb250eDJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9NDAxMz1zdGF0aWMgY29uc3QgY2hhciAqcnZ1X2dldF9kYmdfZGlyX25hbWUoc3RydWN0IHJ2dSAqcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy00MDIwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjQwMjE6XFx0XFx0cmV0dXJuIFxcXCJvY3Rlb250eDJcXFwiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtNDAyMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGV2bGluay5jLTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZXZsaW5rLmM6MTY6I2RlZmluZSBEUlZfTkFNRSBcXFwib2N0ZW9udHgyLWFmXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZXZsaW5rLmMtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU9MTg9cnZ1X25pY3BmLSQoQ09ORklHX1hGUk1fT0ZGTE9BRCkgKz0gY24xMGtfaXBzZWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6MjA6Y2NmbGFncy15ICs9IC1JJChzcmN0cmVlKS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtMTctI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NvYy9tYXJ2ZWxsL3NpbGljb25zLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6MTg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NvYy9tYXJ2ZWxsL29jdGVvbnR4Mi9hc20uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC0xOS0jaW5jbHVkZSBcXHUwMDNjbmV0L21hY3NlYy5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jPTExNjc9c3RhdGljIGludCBvdHgyX3Fvc192YWxpZGF0ZV9xdWFudHVtKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTMyIHF1YW50dW0pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmMtMTE3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmM6MTE3MjpcXHQvKiBNYXggUm91bmQgcm9iaW4gd2VpZ2h0IHN1cHBvcnRlZCBieSBvY3Rlb250eDIgYW5kIENOMTBLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jLTExNzMtXFx0ICogaXMgZGlmZmVyZW50LiBWYWxpZGF0ZSBhY2NvcmRpbmdseVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwODozNzowNC4zOTAxMzk2ODRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkwNDgwNzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGFuZCBpdCdzIHNwZWNpZmljYWxseSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyLiBJdCdzIGEgaGFyZHdhcmUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZCwgYSByZWFsIHBpZWNlIG9mIHNpbGljb24uIE5vdywgdGhlIGNvbnRleHQgbWVudGlvbnMgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBjb2RlIHRoYXQncyB0aWVkIHRvIHRoZSBwaHlzaWNhbCBwcmVzZW5jZSBvZiBQQ0llIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLiBUaGV5J3JlIHJlZmVyZW5jaW5nIGV4YW1wbGVzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMsIGlzIHRoZSBPY3Rlb25UWDIgKmVtdWxhdGVkKiBpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBBbmQgdGhlIGFuc3dlciBpcyBhIGZpcm0gbm87IGl0J3MgYSBkZWRpY2F0ZWQgTWFydmVsbCBoYXJkd2FyZSBOSUMuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCB0aG91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnYCBmaWxlLiBUaGF0IHNob3VsZCBjb25maXJtIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTk4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA4OjM3OjA4LjY4MDYyMjc0N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1hcnZlbGwgUlZVIE5ldHdvcmsgZHJpdmVycyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBPQ1RFT05UWDJfTUJPWFxcbiAgIDc6XFx0XFx0dHJpc3RhdGVcXG4gICA4OlxcdFxcbiAgIDk6XFx0Y29uZmlnIE9DVEVPTlRYMl9BRlxcbiAgMTA6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuICAxMTpcXHRcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG4gIDEyOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiAoNjRCSVQgXFx1MDAyNlxcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBSZXNvdXJjZSBWaXJ0dWFsaXphdGlvblxcbiAgMTg6XFx0XFx0ICBVbml0J3MgYWRtaW4gZnVuY3Rpb24gbWFuYWdlciB3aGljaCBtYW5hZ2VzIGFsbCBSVlUgSFcgcmVzb3VyY2VzXFxuICAxOTpcXHRcXHQgIGFuZCBwcm92aWRlcyBhIG1lZGl1bSB0byBvdGhlciBQRi9WRnMgdG8gY29uZmlndXJlIEhXLiBTaG91bGQgYmVcXG4gIDIwOlxcdFxcdCAgZW5hYmxlZCBmb3Igb3RoZXIgUlZVIGRldmljZSBkcml2ZXJzIHRvIHdvcmsuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xcbiAgMjM6XFx0XFx0Ym9vbCBcXFwiRGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxcbiAgMjU6XFx0XFx0ZGVmYXVsdCBuXFxuICAyNjpcXHRcXHRoZWxwXFxuICAyNzpcXHRcXHQgIFRoaXMgY29uZmlnIG9wdGlvbiBkaXNhYmxlcyBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBzdWNoIGFzIE5JWCBTUUVzXFxuICAyODpcXHRcXHQgICwgTlBBIHN0YWNrIHBhZ2VzIGV0YyBpbiBOREMuIEFsc28gbG9ja3MgZG93biBOSVggU1EvQ1EvUlEvUlNTIGFuZFxcbiAgMjk6XFx0XFx0ICBOUEEgQXVyYS9Qb29sIGNvbnRleHRzLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgT0NURU9OVFgyX1BGXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMzQ6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAzNTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAzNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAzODpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBNQUNTRUMgfHwgIU1BQ1NFQ1xcbiAgNDI6XFx0XFx0aGVscFxcbiAgNDM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIE5JQyBwaHlzaWNhbCBmdW5jdGlvbi5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0Y29uZmlnIE9DVEVPTlRYMl9WRlxcbiAgNDY6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBPY3Rlb25UWDIgTklDIHZpcnR1YWwgZnVuY3Rpb24uXFxuICA1MDpcXHRcXG4gIDUxOlxcdGNvbmZpZyBSVlVfRVNXSVRDSFxcbiAgNTI6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgUlZVIEUtU3dpdGNoIHN1cHBvcnRcXFwiXFxuICA1MzpcXHRcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxcbiAgNTQ6XFx0XFx0ZGVmYXVsdCBtXFxuICA1NTpcXHRcXHRoZWxwXFxuICA1NjpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBSVlUgRS1Td2l0Y2ggdGhhdFxcbiAgNTc6XFx0XFx0ICBwcm92aWRlcyBpbnRlcm5hbCBTUklPViBwYWNrZXQgc3RlZXJpbmcgYW5kIHN3aXRjaGluZy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MDguNjgwNzAwNDQ3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5NjExMDYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgRHJpdmVyKipcblxuT2theSwgc28gdGhlIHRleHQgZXhwbGljaXRseSBpZGVudGlmaWVzIHRoaXMgYXMgdGhlIFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlci5cIiBSaWdodCBhd2F5LCB0aGF0IGtleSBwaHJhc2UgdGVsbHMgbWUgZXhhY3RseSB3aGF0IEkgbmVlZCB0byBrbm93LiBUaGlzIGlzbid0IHNvbWUgc29mdHdhcmUtZGVmaW5lZCBuZXR3b3JrIGludGVyZmFjZSBvciBhbiBlbXVsYXRlZCBkZXZpY2Ugd2l0aGluIFFFTVUuIFRoaXMgaXMgYSAqcGh5c2ljYWwqIE5JQy4gSXQncyB0aWVkIHRvIGFuIGFjdHVhbCBQQ0llIGhhcmR3YXJlIGNhcmQsIHdoaWNoIGlzIGEgY3J1Y2lhbCBkaXN0aW5jdGlvbi5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBmdXp6aW5nIGFuZCB0aGUgbGltaXRhdGlvbnMsIHRyeWluZyB0byBmdXp6IGEgcGh5c2ljYWwgZGV2aWNlIGRyaXZlciB3aXRob3V0IHRoZSBoYXJkd2FyZSBwcmVzZW50IGlzIGEgY29tcGxldGUgZGVhZCBlbmQuIEl0J3Mgc2ltcGx5IG5vdCBmZWFzaWJsZSB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgdGVzdGluZyBJJ2QgbmVlZCB0byBkbyBzaW1wbHkgd291bGRuJ3QgYmUgYWJsZSB0byBoYXBwZW4uXG5cblRoZXJlZm9yZSwgYWZ0ZXIgY29uc2lkZXJpbmcgYWxsIHRoaXMsIEknbSBjb25maWRlbnQgaW4gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCB3YXN0aW5nIHZhbHVhYmxlIHRpbWUgYW5kIHJlc291cmNlcyBvbiBhbiBhcHByb2FjaCB0aGF0J3MgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzk4LCJPdXRwdXRUb2tlbnMiOjEwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MTMuMTc2ODEzNzExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIpLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIG5ldHdvcmsgY2FyZCB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBvciBleGVjdXRlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MikuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgbmV0d29yayBjYXJkIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MTMuMTc2ODU5ODQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowbwb9q[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 07:36:24 +0000 UTC FinishedAt: 2026-08-21 08:37:14 +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+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGNhcmQgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTBiMGVkYWU4NWU1MzhjZjE4YWIwM2E1ZmE1NGIzMWYxOWFhNGM2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDA4OjM2OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY1xuaW5kZXggNjljMDkxMWUyOGU5MS4uMjE5NDNmYzA1OWRiMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jXG5AQCAtMjM1LDYgJiM0MzsyMzUsNDkgQEAgc3RhdGljIGludCBvdHgyX3Fvc190eHNjaHFfc2V0X3BhcmVudF90b3BvbG9neShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsXG4gXHRyZXR1cm4gcmM7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbWJveCAqbWJveCA9IFx1MDAyNnBmdmYtXHUwMDNlbWJveDtcbiYjNDM7XHRzdHJ1Y3Qgbml4X3R4c2NocV9jb25maWcgKmNmZztcbiYjNDM7XHRpbnQgaSwgZXJyO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBmdmYtXHUwMDNlaHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF0pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZtYm94LVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZnZmLVx1MDAzZWh3LnR4c2NocV9jbnRbTklYX1RYU0NIX0xWTF9UTDRdOyApIHtcbiYjNDM7XHRcdGNmZyA9IG90eDJfbWJveF9hbGxvY19tc2dfbml4X3R4c2NocV9jZmcobWJveCk7XG4mIzQzO1x0XHRpZiAoIWNmZykge1xuJiM0MztcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2bWJveC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0Y2ZnLVx1MDAzZWx2bCA9IE5JWF9UWFNDSF9MVkxfVEw0O1xuJiM0MztcdFx0Y2ZnLVx1MDAzZW51bV9yZWdzID0gMDtcbiYjNDM7XG4mIzQzO1x0XHR3aGlsZSAoaSBcdTAwM2MgcGZ2Zi1cdTAwM2Vody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAgICBjZmctXHUwMDNlbnVtX3JlZ3MgXHUwMDNjIE1BWF9SRUdTX1BFUl9NQk9YX01TRykge1xuJiM0MztcdFx0XHRpbnQgc2NocSA9IHBmdmYtXHUwMDNlaHcudHhzY2hxX2xpc3RbTklYX1RYU0NIX0xWTF9UTDRdW2ldO1xuJiM0MztcbiYjNDM7XHRcdFx0Y2ZnLVx1MDAzZXJlZ1tjZmctXHUwMDNlbnVtX3JlZ3NdID0gTklYX0FGX1RMNFhfVE9QT0xPR1koc2NocSk7XG4mIzQzO1x0XHRcdGNmZy1cdTAwM2VyZWd2YWxbY2ZnLVx1MDAzZW51bV9yZWdzXSA9IDA7XG4mIzQzO1x0XHRcdGNmZy1cdTAwM2VudW1fcmVncyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRcdGkmIzQzOyYjNDM7O1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGVyciA9IG90eDJfc3luY19tYm94X21zZyhtYm94KTtcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1ib3gtXHUwMDNlbG9jayk7XG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bWJveC1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgb3R4Ml9xb3NfZnJlZV9od19ub2RlX3NjaHEoc3RydWN0IG90eDJfbmljICpwZnZmLFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCBvdHgyX3Fvc19ub2RlICpwYXJlbnQpXG4ge1xuQEAgLTEwOTgsNiAmIzQzOzExNDEsNyBAQCBzdGF0aWMgaW50IG90eDJfcW9zX3Jvb3RfYWRkKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTE2IGh0Yl9tYWpfaWQsIHUxNiBodGJfZGVmY1xuIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZilcbiB7XG4gXHRzdHJ1Y3Qgb3R4Ml9xb3Nfbm9kZSAqcm9vdDtcbiYjNDM7XHRpbnQgZXJyO1xuIFxuIFx0bmV0ZGV2X2RiZyhwZnZmLVx1MDAzZW5ldGRldiwgXCYjMzQ7VENfSFRCX0RFU1RST1lcXG5cJiMzNDspO1xuIFxuQEAgLTExMDksNiAmIzQzOzExNTMsMTQgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2Rlc3Ryb3koc3RydWN0IG90eDJfbmljICpwZnZmKVxuIFx0LyogZnJlZSB0aGUgaHcgbWFwcGluZ3MgKi9cbiBcdG90eDJfcW9zX2Rlc3Ryb3lfbm9kZShwZnZmLCByb290KTtcbiBcbiYjNDM7XHRpZiAobmV0aWZfcnVubmluZyhwZnZmLVx1MDAzZW5ldGRldikpIHtcbiYjNDM7XHRcdGVyciA9IG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neShwZnZmKTtcbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdG5ldGRldl93YXJuKHBmdmYtXHUwMDNlbmV0ZGV2LFxuJiM0MztcdFx0XHRcdCAgICBcJiMzNDtIVEIgZGVzdHJveTogZmFpbGVkIHRvIHJlc2V0IFRMNCB0b3BvbG9neTogJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgIGVycik7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwODozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGNhcmQgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTBiMGVkYWU4NWU1MzhjZjE4YWIwM2E1ZmE1NGIzMWYxOWFhNGM2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDIxIDA4OjM2OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jCmluZGV4IDY5YzA5MTFlMjhlOTEuLjIxOTQzZmMwNTlkYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmMKQEAgLTIzNSw2ICYjNDM7MjM1LDQ5IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3NfdHhzY2hxX3NldF9wYXJlbnRfdG9wb2xvZ3koc3RydWN0IG90eDJfbmljICpwZnZmLAogCXJldHVybiByYzsKIH0KIAomIzQzO3N0YXRpYyBpbnQgb3R4Ml9xb3NfcmVzZXRfdGw0X3RvcG9sb2d5KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZikKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtYm94ICptYm94ID0gJmFtcDtwZnZmLSZndDttYm94OwomIzQzOwlzdHJ1Y3Qgbml4X3R4c2NocV9jb25maWcgKmNmZzsKJiM0MzsJaW50IGksIGVycjsKJiM0MzsKJiM0MzsJaWYgKCFwZnZmLSZndDtody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7bWJveC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBwZnZmLSZndDtody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XTsgKSB7CiYjNDM7CQljZmcgPSBvdHgyX21ib3hfYWxsb2NfbXNnX25peF90eHNjaHFfY2ZnKG1ib3gpOwomIzQzOwkJaWYgKCFjZmcpIHsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDttYm94LSZndDtsb2NrKTsKJiM0MzsJCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWNmZy0mZ3Q7bHZsID0gTklYX1RYU0NIX0xWTF9UTDQ7CiYjNDM7CQljZmctJmd0O251bV9yZWdzID0gMDsKJiM0MzsKJiM0MzsJCXdoaWxlIChpICZsdDsgcGZ2Zi0mZ3Q7aHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF0gJmFtcDsmYW1wOwomIzQzOwkJICAgICAgIGNmZy0mZ3Q7bnVtX3JlZ3MgJmx0OyBNQVhfUkVHU19QRVJfTUJPWF9NU0cpIHsKJiM0MzsJCQlpbnQgc2NocSA9IHBmdmYtJmd0O2h3LnR4c2NocV9saXN0W05JWF9UWFNDSF9MVkxfVEw0XVtpXTsKJiM0MzsKJiM0MzsJCQljZmctJmd0O3JlZ1tjZmctJmd0O251bV9yZWdzXSA9IE5JWF9BRl9UTDRYX1RPUE9MT0dZKHNjaHEpOwomIzQzOwkJCWNmZy0mZ3Q7cmVndmFsW2NmZy0mZ3Q7bnVtX3JlZ3NdID0gMDsKJiM0MzsJCQljZmctJmd0O251bV9yZWdzJiM0MzsmIzQzOzsKJiM0MzsJCQlpJiM0MzsmIzQzOzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWVyciA9IG90eDJfc3luY19tYm94X21zZyhtYm94KTsKJiM0MzsJCWlmIChlcnIpIHsKJiM0MzsJCQltdXRleF91bmxvY2soJmFtcDttYm94LSZndDtsb2NrKTsKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO21ib3gtJmd0O2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBvdHgyX3Fvc19mcmVlX2h3X25vZGVfc2NocShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsCiAJCQkJICAgICAgIHN0cnVjdCBvdHgyX3Fvc19ub2RlICpwYXJlbnQpCiB7CkBAIC0xMDk4LDYgJiM0MzsxMTQxLDcgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2FkZChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBodGJfbWFqX2lkLCB1MTYgaHRiX2RlZmMKIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZikKIHsKIAlzdHJ1Y3Qgb3R4Ml9xb3Nfbm9kZSAqcm9vdDsKJiM0MzsJaW50IGVycjsKIAogCW5ldGRldl9kYmcocGZ2Zi0mZ3Q7bmV0ZGV2LCAmIzM0O1RDX0hUQl9ERVNUUk9ZXG4mIzM0Oyk7CiAKQEAgLTExMDksNiAmIzQzOzExNTMsMTQgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2Rlc3Ryb3koc3RydWN0IG90eDJfbmljICpwZnZmKQogCS8qIGZyZWUgdGhlIGh3IG1hcHBpbmdzICovCiAJb3R4Ml9xb3NfZGVzdHJveV9ub2RlKHBmdmYsIHJvb3QpOwogCiYjNDM7CWlmIChuZXRpZl9ydW5uaW5nKHBmdmYtJmd0O25ldGRldikpIHsKJiM0MzsJCWVyciA9IG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neShwZnZmKTsKJiM0MzsJCWlmIChlcnIpCiYjNDM7CQkJbmV0ZGV2X3dhcm4ocGZ2Zi0mZ3Q7bmV0ZGV2LAomIzQzOwkJCQkgICAgJiMzNDtIVEIgZGVzdHJveTogZmFpbGVkIHRvIHJlc2V0IFRMNCB0b3BvbG9neTogJWRcbiYjMzQ7LAomIzQzOwkJCQkgICAgZXJyKTsKJiM0MzsJfQomIzQzOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTWFydmVsbCBPY3Rlb25UWDIgTklDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJIHNlZSBhIHBhdGNoIGltcGFjdGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gd2hhdCYjMzk7cyBiZWVuIGNoYW5nZWQuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgYSBuZXcgZnVuY3Rpb24sIGBvdHgyX3Fvc19yZXNldF90bDRfdG9wb2xvZ3lgLCBhbmQgYXJlIGNhbGxpbmcgaXQgZnJvbSBgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95YC4gR2l2ZW4gdGhhdCB0aGlzIGlzIHRoZSBPY3Rlb25UWDIgTklDIGRyaXZlciwgbXkgbWVudGFsIGdlYXJzIGFyZSBzdGFydGluZyB0byB0dXJuLiBJcyB0aGlzIHRhcmdldGVkIGF0IHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUsIG9yIGRvZXMgaXQgYWxzbyBhcHBseSBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byBjbGFyaWZ5IHRoZSBjb250ZXh0LiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBgbmljYCBkaXJlY3RvcnksIG9yIG1heWJlIHNvbWV3aGVyZSBzaW1pbGFyLCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGluZGljYXRpb24gb2YgdGhlIHN1cHBvcnRlZCBoYXJkd2FyZSBwbGF0Zm9ybXMgb3IgYW55IGhpbnRzIG9uIGhvdyB0aGlzIGlzIHVzZWQuIEl0IHdvdWxkIGJlIGdvb2QgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2NvcGUgYmVmb3JlIGRpdmluZyBkZWVwZXIgaW50byB0aGUgc3BlY2lmaWNzIG9mIGBvdHgyX3Fvc19yZXNldF90bDRfdG9wb2xvZ3lgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29jdGVvbnR4MiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz0xNjk9Y29uZmlnIFNLWTJfREVCVUdcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctMTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjE4MDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTE4MS1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGU9MTU9b2JqLXlcdFx0JiM0Mzs9IG9jdGVvbl9lcF92Zi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGU6MTY6b2JqLXlcdFx0JiM0Mzs9IG9jdGVvbnR4Mi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGUtMTctb2JqLXlcdFx0JiM0Mzs9IHByZXN0ZXJhL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjI4OiNkZWZpbmUgREVCVUdGU19ESVJfTkFNRSBcJiMzNDtvY3Rlb250eDJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYz00MDEzPXN0YXRpYyBjb25zdCBjaGFyICpydnVfZ2V0X2RiZ19kaXJfbmFtZShzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy00MDIwLVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzo0MDIxOlx0XHRyZXR1cm4gXCYjMzQ7b2N0ZW9udHgyXCYjMzQ7O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy00MDIyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGV2bGluay5jLTE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RldmxpbmsuYzoxNjojZGVmaW5lIERSVl9OQU1FIFwmIzM0O29jdGVvbnR4Mi1hZlwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RldmxpbmsuYy0xNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU9MTg9cnZ1X25pY3BmLSQoQ09ORklHX1hGUk1fT0ZGTE9BRCkgJiM0Mzs9IGNuMTBrX2lwc2VjLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZToyMDpjY2ZsYWdzLXkgJiM0Mzs9IC1JJChzcmN0cmVlKS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTE3LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvYy9tYXJ2ZWxsL3NpbGljb25zLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjE4OiNpbmNsdWRlIFx1MDAzY2xpbnV4L3NvYy9tYXJ2ZWxsL29jdGVvbnR4Mi9hc20uaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtMTktI2luY2x1ZGUgXHUwMDNjbmV0L21hY3NlYy5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jPTExNjc9c3RhdGljIGludCBvdHgyX3Fvc192YWxpZGF0ZV9xdWFudHVtKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTMyIHF1YW50dW0pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jLTExNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmM6MTE3MjpcdC8qIE1heCBSb3VuZCByb2JpbiB3ZWlnaHQgc3VwcG9ydGVkIGJ5IG9jdGVvbnR4MiBhbmQgQ04xMEtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuYy0xMTczLVx0ICogaXMgZGlmZmVyZW50LiBWYWxpZGF0ZSBhY2NvcmRpbmdseVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTgKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIuIEl0JiMzOTtzIGEgaGFyZHdhcmUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZCwgYSByZWFsIHBpZWNlIG9mIHNpbGljb24uIE5vdywgdGhlIGNvbnRleHQgbWVudGlvbnMgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBjb2RlIHRoYXQmIzM5O3MgdGllZCB0byB0aGUgcGh5c2ljYWwgcHJlc2VuY2Ugb2YgUENJZSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhleSYjMzk7cmUgcmVmZXJlbmNpbmcgZXhhbXBsZXMgbGlrZSBgbWx4c3dgLCBgcGRzX2NvcmVgLCBgcWVkYCwgYGlvbmljYCwgYW5kIGBhbWRncHVgLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcywgaXMgdGhlIE9jdGVvblRYMiAqZW11bGF0ZWQqIGluIHNvbWV0aGluZyBsaWtlIFFFTVU/IEFuZCB0aGUgYW5zd2VyIGlzIGEgZmlybSBubzsgaXQmIzM5O3MgYSBkZWRpY2F0ZWQgTWFydmVsbCBoYXJkd2FyZSBOSUMuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCB0aG91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGNvbmZpcm0gdGhlIGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDg6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1hcnZlbGwgUlZVIE5ldHdvcmsgZHJpdmVycyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuICAgNzpcdFx0dHJpc3RhdGVcbiAgIDg6XHRcbiAgIDk6XHRjb25maWcgT0NURU9OVFgyX0FGXG4gIDEwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG4gIDExOlx0XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbiAgMTI6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxMzpcdFx0ZGVwZW5kcyBvbiAoNjRCSVQgXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVCkgfHwgQVJNNjRcbiAgMTQ6XHRcdGRlcGVuZHMgb24gUENJXG4gIDE1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgT2N0ZW9uVFgyIFJlc291cmNlIFZpcnR1YWxpemF0aW9uXG4gIDE4Olx0XHQgIFVuaXQmIzM5O3MgYWRtaW4gZnVuY3Rpb24gbWFuYWdlciB3aGljaCBtYW5hZ2VzIGFsbCBSVlUgSFcgcmVzb3VyY2VzXG4gIDE5Olx0XHQgIGFuZCBwcm92aWRlcyBhIG1lZGl1bSB0byBvdGhlciBQRi9WRnMgdG8gY29uZmlndXJlIEhXLiBTaG91bGQgYmVcbiAgMjA6XHRcdCAgZW5hYmxlZCBmb3Igb3RoZXIgUlZVIGRldmljZSBkcml2ZXJzIHRvIHdvcmsuXG4gIDIxOlx0XG4gIDIyOlx0Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXG4gIDIzOlx0XHRib29sIFwmIzM0O0Rpc2FibGUgY2FjaGluZyBvZiBkeW5hbWljIGVudHJpZXMgaW4gTkRDXCYjMzQ7XG4gIDI0Olx0XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxuICAyNTpcdFx0ZGVmYXVsdCBuXG4gIDI2Olx0XHRoZWxwXG4gIDI3Olx0XHQgIFRoaXMgY29uZmlnIG9wdGlvbiBkaXNhYmxlcyBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBzdWNoIGFzIE5JWCBTUUVzXG4gIDI4Olx0XHQgICwgTlBBIHN0YWNrIHBhZ2VzIGV0YyBpbiBOREMuIEFsc28gbG9ja3MgZG93biBOSVggU1EvQ1EvUlEvUlNTIGFuZFxuICAyOTpcdFx0ICBOUEEgQXVyYS9Qb29sIGNvbnRleHRzLlxuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBPQ1RFT05UWDJfUEZcbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbiAgMzM6XHRcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuICAzNDpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDM1Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDM2Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4gIDM3Olx0XHRkZXBlbmRzIG9uICg2NEJJVCBcdTAwMjZcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxuICAzODpcdFx0c2VsZWN0IERJTUxJQlxuICAzOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNDA6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNDE6XHRcdGRlcGVuZHMgb24gTUFDU0VDIHx8ICFNQUNTRUNcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDIHBoeXNpY2FsIGZ1bmN0aW9uLlxuICA0NDpcdFxuICA0NTpcdGNvbmZpZyBPQ1RFT05UWDJfVkZcbiAgNDY6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuICA0NzpcdFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCYjMzk7cyBPY3Rlb25UWDIgTklDIHZpcnR1YWwgZnVuY3Rpb24uXG4gIDUwOlx0XG4gIDUxOlx0Y29uZmlnIFJWVV9FU1dJVENIXG4gIDUyOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gIDUzOlx0XHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxuICA1NDpcdFx0ZGVmYXVsdCBtXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwmIzM5O3MgUlZVIEUtU3dpdGNoIHRoYXRcbiAgNTc6XHRcdCAgcHJvdmlkZXMgaW50ZXJuYWwgU1JJT1YgcGFja2V0IHN0ZWVyaW5nIGFuZCBzd2l0Y2hpbmcuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMDg6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM5OAoJCQkJCQkJb3V0cHV0OiAxMDUKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgRHJpdmVyKioKCk9rYXksIHNvIHRoZSB0ZXh0IGV4cGxpY2l0bHkgaWRlbnRpZmllcyB0aGlzIGFzIHRoZSAmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXIuJiMzNDsgUmlnaHQgYXdheSwgdGhhdCBrZXkgcGhyYXNlIHRlbGxzIG1lIGV4YWN0bHkgd2hhdCBJIG5lZWQgdG8ga25vdy4gVGhpcyBpc24mIzM5O3Qgc29tZSBzb2Z0d2FyZS1kZWZpbmVkIG5ldHdvcmsgaW50ZXJmYWNlIG9yIGFuIGVtdWxhdGVkIGRldmljZSB3aXRoaW4gUUVNVS4gVGhpcyBpcyBhICpwaHlzaWNhbCogTklDLiBJdCYjMzk7cyB0aWVkIHRvIGFuIGFjdHVhbCBQQ0llIGhhcmR3YXJlIGNhcmQsIHdoaWNoIGlzIGEgY3J1Y2lhbCBkaXN0aW5jdGlvbi4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgZnV6emluZyBhbmQgdGhlIGxpbWl0YXRpb25zLCB0cnlpbmcgdG8gZnV6eiBhIHBoeXNpY2FsIGRldmljZSBkcml2ZXIgd2l0aG91dCB0aGUgaGFyZHdhcmUgcHJlc2VudCBpcyBhIGNvbXBsZXRlIGRlYWQgZW5kLiBJdCYjMzk7cyBzaW1wbHkgbm90IGZlYXNpYmxlIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhpcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoZSB0ZXN0aW5nIEkmIzM5O2QgbmVlZCB0byBkbyBzaW1wbHkgd291bGRuJiMzOTt0IGJlIGFibGUgdG8gaGFwcGVuLgoKVGhlcmVmb3JlLCBhZnRlciBjb25zaWRlcmluZyBhbGwgdGhpcywgSSYjMzk7bSBjb25maWRlbnQgaW4gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCB3YXN0aW5nIHZhbHVhYmxlIHRpbWUgYW5kIHJlc291cmNlcyBvbiBhbiBhcHByb2FjaCB0aGF0JiMzOTtzIGZ1bmRhbWVudGFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAwODozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MikuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgbmV0d29yayBjYXJkIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyKS4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBuZXR3b3JrIGNhcmQgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDA4OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwODozNjo1OC42MjIzMDI0MTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU1NDU2ODU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MikuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgbmV0d29yayBjYXJkIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6MzY6NTguNjIyMzA4NDU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDI1MzgxNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTBiMGVkYWU4NWU1MzhjZjE4YWIwM2E1ZmE1NGIzMWYxOWFhNGM2NFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAyMSAwODozNjo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmNcXG5pbmRleCA2OWMwOTExZTI4ZTkxLi4yMTk0M2ZjMDU5ZGIwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY1xcbkBAIC0yMzUsNiArMjM1LDQ5IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3NfdHhzY2hxX3NldF9wYXJlbnRfdG9wb2xvZ3koc3RydWN0IG90eDJfbmljICpwZnZmLFxcbiBcXHRyZXR1cm4gcmM7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgb3R4Ml9xb3NfcmVzZXRfdGw0X3RvcG9sb2d5KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZilcXG4re1xcbitcXHRzdHJ1Y3QgbWJveCAqbWJveCA9IFxcdTAwMjZwZnZmLVxcdTAwM2VtYm94O1xcbitcXHRzdHJ1Y3Qgbml4X3R4c2NocV9jb25maWcgKmNmZztcXG4rXFx0aW50IGksIGVycjtcXG4rXFxuK1xcdGlmICghcGZ2Zi1cXHUwMDNlaHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF0pXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2bWJveC1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGZ2Zi1cXHUwMDNlaHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF07ICkge1xcbitcXHRcXHRjZmcgPSBvdHgyX21ib3hfYWxsb2NfbXNnX25peF90eHNjaHFfY2ZnKG1ib3gpO1xcbitcXHRcXHRpZiAoIWNmZykge1xcbitcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm1ib3gtXFx1MDAzZWxvY2spO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0Y2ZnLVxcdTAwM2VsdmwgPSBOSVhfVFhTQ0hfTFZMX1RMNDtcXG4rXFx0XFx0Y2ZnLVxcdTAwM2VudW1fcmVncyA9IDA7XFxuK1xcbitcXHRcXHR3aGlsZSAoaSBcXHUwMDNjIHBmdmYtXFx1MDAzZWh3LnR4c2NocV9jbnRbTklYX1RYU0NIX0xWTF9UTDRdIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICAgICBjZmctXFx1MDAzZW51bV9yZWdzIFxcdTAwM2MgTUFYX1JFR1NfUEVSX01CT1hfTVNHKSB7XFxuK1xcdFxcdFxcdGludCBzY2hxID0gcGZ2Zi1cXHUwMDNlaHcudHhzY2hxX2xpc3RbTklYX1RYU0NIX0xWTF9UTDRdW2ldO1xcbitcXG4rXFx0XFx0XFx0Y2ZnLVxcdTAwM2VyZWdbY2ZnLVxcdTAwM2VudW1fcmVnc10gPSBOSVhfQUZfVEw0WF9UT1BPTE9HWShzY2hxKTtcXG4rXFx0XFx0XFx0Y2ZnLVxcdTAwM2VyZWd2YWxbY2ZnLVxcdTAwM2VudW1fcmVnc10gPSAwO1xcbitcXHRcXHRcXHRjZmctXFx1MDAzZW51bV9yZWdzKys7XFxuK1xcdFxcdFxcdGkrKztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0ZXJyID0gb3R4Ml9zeW5jX21ib3hfbXNnKG1ib3gpO1xcbitcXHRcXHRpZiAoZXJyKSB7XFxuK1xcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bWJveC1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdFxcdHJldHVybiBlcnI7XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZtYm94LVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBvdHgyX3Fvc19mcmVlX2h3X25vZGVfc2NocShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgb3R4Ml9xb3Nfbm9kZSAqcGFyZW50KVxcbiB7XFxuQEAgLTEwOTgsNiArMTE0MSw3IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9hZGQoc3RydWN0IG90eDJfbmljICpwZnZmLCB1MTYgaHRiX21hal9pZCwgdTE2IGh0Yl9kZWZjXFxuIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZilcXG4ge1xcbiBcXHRzdHJ1Y3Qgb3R4Ml9xb3Nfbm9kZSAqcm9vdDtcXG4rXFx0aW50IGVycjtcXG4gXFxuIFxcdG5ldGRldl9kYmcocGZ2Zi1cXHUwMDNlbmV0ZGV2LCBcXFwiVENfSFRCX0RFU1RST1lcXFxcblxcXCIpO1xcbiBcXG5AQCAtMTEwOSw2ICsxMTUzLDE0IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3Nfcm9vdF9kZXN0cm95KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZilcXG4gXFx0LyogZnJlZSB0aGUgaHcgbWFwcGluZ3MgKi9cXG4gXFx0b3R4Ml9xb3NfZGVzdHJveV9ub2RlKHBmdmYsIHJvb3QpO1xcbiBcXG4rXFx0aWYgKG5ldGlmX3J1bm5pbmcocGZ2Zi1cXHUwMDNlbmV0ZGV2KSkge1xcbitcXHRcXHRlcnIgPSBvdHgyX3Fvc19yZXNldF90bDRfdG9wb2xvZ3kocGZ2Zik7XFxuK1xcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdG5ldGRldl93YXJuKHBmdmYtXFx1MDAzZW5ldGRldixcXG4rXFx0XFx0XFx0XFx0ICAgIFxcXCJIVEIgZGVzdHJveTogZmFpbGVkIHRvIHJlc2V0IFRMNCB0b3BvbG9neTogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBlcnIpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MDAuMDQ4MzQ4NTk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTMxMjg1MDkwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MikuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgbmV0d29yayBjYXJkIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZTBiMGVkYWU4NWU1MzhjZjE4YWIwM2E1ZmE1NGIzMWYxOWFhNGM2NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDA4OjM2OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jXG5pbmRleCA2OWMwOTExZTI4ZTkxLi4yMTk0M2ZjMDU5ZGIwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmNcbkBAIC0yMzUsNiArMjM1LDQ5IEBAIHN0YXRpYyBpbnQgb3R4Ml9xb3NfdHhzY2hxX3NldF9wYXJlbnRfdG9wb2xvZ3koc3RydWN0IG90eDJfbmljICpwZnZmLFxuIFx0cmV0dXJuIHJjO1xuIH1cbiBcbitzdGF0aWMgaW50IG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYpXG4re1xuK1x0c3RydWN0IG1ib3ggKm1ib3ggPSBcdTAwMjZwZnZmLVx1MDAzZW1ib3g7XG4rXHRzdHJ1Y3Qgbml4X3R4c2NocV9jb25maWcgKmNmZztcbitcdGludCBpLCBlcnI7XG4rXG4rXHRpZiAoIXBmdmYtXHUwMDNlaHcudHhzY2hxX2NudFtOSVhfVFhTQ0hfTFZMX1RMNF0pXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZtYm94LVx1MDAzZWxvY2spO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGZ2Zi1cdTAwM2Vody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XTsgKSB7XG4rXHRcdGNmZyA9IG90eDJfbWJveF9hbGxvY19tc2dfbml4X3R4c2NocV9jZmcobWJveCk7XG4rXHRcdGlmICghY2ZnKSB7XG4rXHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm1ib3gtXHUwMDNlbG9jayk7XG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHRcdH1cbitcbitcdFx0Y2ZnLVx1MDAzZWx2bCA9IE5JWF9UWFNDSF9MVkxfVEw0O1xuK1x0XHRjZmctXHUwMDNlbnVtX3JlZ3MgPSAwO1xuK1xuK1x0XHR3aGlsZSAoaSBcdTAwM2MgcGZ2Zi1cdTAwM2Vody50eHNjaHFfY250W05JWF9UWFNDSF9MVkxfVEw0XSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICAgIGNmZy1cdTAwM2VudW1fcmVncyBcdTAwM2MgTUFYX1JFR1NfUEVSX01CT1hfTVNHKSB7XG4rXHRcdFx0aW50IHNjaHEgPSBwZnZmLVx1MDAzZWh3LnR4c2NocV9saXN0W05JWF9UWFNDSF9MVkxfVEw0XVtpXTtcbitcbitcdFx0XHRjZmctXHUwMDNlcmVnW2NmZy1cdTAwM2VudW1fcmVnc10gPSBOSVhfQUZfVEw0WF9UT1BPTE9HWShzY2hxKTtcbitcdFx0XHRjZmctXHUwMDNlcmVndmFsW2NmZy1cdTAwM2VudW1fcmVnc10gPSAwO1xuK1x0XHRcdGNmZy1cdTAwM2VudW1fcmVncysrO1xuK1x0XHRcdGkrKztcbitcdFx0fVxuK1xuK1x0XHRlcnIgPSBvdHgyX3N5bmNfbWJveF9tc2cobWJveCk7XG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2bWJveC1cdTAwM2Vsb2NrKTtcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4rXHR9XG4rXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bWJveC1cdTAwM2Vsb2NrKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgdm9pZCBvdHgyX3Fvc19mcmVlX2h3X25vZGVfc2NocShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsXG4gXHRcdFx0XHQgICAgICAgc3RydWN0IG90eDJfcW9zX25vZGUgKnBhcmVudClcbiB7XG5AQCAtMTA5OCw2ICsxMTQxLDcgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2FkZChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBodGJfbWFqX2lkLCB1MTYgaHRiX2RlZmNcbiBzdGF0aWMgaW50IG90eDJfcW9zX3Jvb3RfZGVzdHJveShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYpXG4ge1xuIFx0c3RydWN0IG90eDJfcW9zX25vZGUgKnJvb3Q7XG4rXHRpbnQgZXJyO1xuIFxuIFx0bmV0ZGV2X2RiZyhwZnZmLVx1MDAzZW5ldGRldiwgXCJUQ19IVEJfREVTVFJPWVxcblwiKTtcbiBcbkBAIC0xMTA5LDYgKzExNTMsMTQgQEAgc3RhdGljIGludCBvdHgyX3Fvc19yb290X2Rlc3Ryb3koc3RydWN0IG90eDJfbmljICpwZnZmKVxuIFx0LyogZnJlZSB0aGUgaHcgbWFwcGluZ3MgKi9cbiBcdG90eDJfcW9zX2Rlc3Ryb3lfbm9kZShwZnZmLCByb290KTtcbiBcbitcdGlmIChuZXRpZl9ydW5uaW5nKHBmdmYtXHUwMDNlbmV0ZGV2KSkge1xuK1x0XHRlcnIgPSBvdHgyX3Fvc19yZXNldF90bDRfdG9wb2xvZ3kocGZ2Zik7XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0bmV0ZGV2X3dhcm4ocGZ2Zi1cdTAwM2VuZXRkZXYsXG4rXHRcdFx0XHQgICAgXCJIVEIgZGVzdHJveTogZmFpbGVkIHRvIHJlc2V0IFRMNCB0b3BvbG9neTogJWRcXG5cIixcbitcdFx0XHRcdCAgICBlcnIpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MDAuMDQ4MzUwMDA3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3NTA5NTcyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSBzZWUgYSBwYXRjaCBpbXBhY3RpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9xb3MuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHdoYXQncyBiZWVuIGNoYW5nZWQuIEl0IGxvb2tzIGxpa2UgdGhleSd2ZSBhZGRlZCBhIG5ldyBmdW5jdGlvbiwgYG90eDJfcW9zX3Jlc2V0X3RsNF90b3BvbG9neWAsIGFuZCBhcmUgY2FsbGluZyBpdCBmcm9tIGBvdHgyX3Fvc19yb290X2Rlc3Ryb3lgLiBHaXZlbiB0aGF0IHRoaXMgaXMgdGhlIE9jdGVvblRYMiBOSUMgZHJpdmVyLCBteSBtZW50YWwgZ2VhcnMgYXJlIHN0YXJ0aW5nIHRvIHR1cm4uIElzIHRoaXMgdGFyZ2V0ZWQgYXQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgb3IgZG9lcyBpdCBhbHNvIGFwcGx5IGluIGEgUUVNVSBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIGNvbnRleHQuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gdGhlIGBuaWNgIGRpcmVjdG9yeSwgb3IgbWF5YmUgc29tZXdoZXJlIHNpbWlsYXIsIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBpbmRpY2F0aW9uIG9mIHRoZSBzdXBwb3J0ZWQgaGFyZHdhcmUgcGxhdGZvcm1zIG9yIGFueSBoaW50cyBvbiBob3cgdGhpcyBpcyB1c2VkLiBJdCB3b3VsZCBiZSBnb29kIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNjb3BlIGJlZm9yZSBkaXZpbmcgZGVlcGVyIGludG8gdGhlIHNwZWNpZmljcyBvZiBgb3R4Ml9xb3NfcmVzZXRfdGw0X3RvcG9sb2d5YC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA4OjM3OjA0LjMyMzQ1Mjk5N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjY4MTkwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb250eDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTE2OT1jb25maWcgU0tZMl9ERUJVR1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTE3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6MTgwOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctMTgxLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvTWFrZWZpbGU9MTU9b2JqLXlcXHRcXHQrPSBvY3Rlb25fZXBfdmYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9NYWtlZmlsZToxNjpvYmoteVxcdFxcdCs9IG9jdGVvbnR4Mi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL01ha2VmaWxlLTE3LW9iai15XFx0XFx0Kz0gcHJlc3RlcmEvXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6Mjg6I2RlZmluZSBERUJVR0ZTX0RJUl9OQU1FIFxcXCJvY3Rlb250eDJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9NDAxMz1zdGF0aWMgY29uc3QgY2hhciAqcnZ1X2dldF9kYmdfZGlyX25hbWUoc3RydWN0IHJ2dSAqcnZ1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy00MDIwLVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jOjQwMjE6XFx0XFx0cmV0dXJuIFxcXCJvY3Rlb250eDJcXFwiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtNDAyMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGV2bGluay5jLTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZXZsaW5rLmM6MTY6I2RlZmluZSBEUlZfTkFNRSBcXFwib2N0ZW9udHgyLWFmXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZXZsaW5rLmMtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU9MTg9cnZ1X25pY3BmLSQoQ09ORklHX1hGUk1fT0ZGTE9BRCkgKz0gY24xMGtfaXBzZWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGU6MjA6Y2NmbGFncy15ICs9IC1JJChzcmN0cmVlKS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtMTctI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NvYy9tYXJ2ZWxsL3NpbGljb25zLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6MTg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NvYy9tYXJ2ZWxsL29jdGVvbnR4Mi9hc20uaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC0xOS0jaW5jbHVkZSBcXHUwMDNjbmV0L21hY3NlYy5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jPTExNjc9c3RhdGljIGludCBvdHgyX3Fvc192YWxpZGF0ZV9xdWFudHVtKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTMyIHF1YW50dW0pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmMtMTE3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvcW9zLmM6MTE3MjpcXHQvKiBNYXggUm91bmQgcm9iaW4gd2VpZ2h0IHN1cHBvcnRlZCBieSBvY3Rlb250eDIgYW5kIENOMTBLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL3Fvcy5jLTExNzMtXFx0ICogaXMgZGlmZmVyZW50LiBWYWxpZGF0ZSBhY2NvcmRpbmdseVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQwODozNzowNC4zOTAxMzk2ODRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkwNDgwNzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGFuZCBpdCdzIHNwZWNpZmljYWxseSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyLiBJdCdzIGEgaGFyZHdhcmUgTmV0d29yayBJbnRlcmZhY2UgQ2FyZCwgYSByZWFsIHBpZWNlIG9mIHNpbGljb24uIE5vdywgdGhlIGNvbnRleHQgbWVudGlvbnMgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBjb2RlIHRoYXQncyB0aWVkIHRvIHRoZSBwaHlzaWNhbCBwcmVzZW5jZSBvZiBQQ0llIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLiBUaGV5J3JlIHJlZmVyZW5jaW5nIGV4YW1wbGVzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUgaXMsIGlzIHRoZSBPY3Rlb25UWDIgKmVtdWxhdGVkKiBpbiBzb21ldGhpbmcgbGlrZSBRRU1VPyBBbmQgdGhlIGFuc3dlciBpcyBhIGZpcm0gbm87IGl0J3MgYSBkZWRpY2F0ZWQgTWFydmVsbCBoYXJkd2FyZSBOSUMuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCB0aG91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnYCBmaWxlLiBUaGF0IHNob3VsZCBjb25maXJtIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTk4LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDA4OjM3OjA4LjY4MDYyMjc0N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1hcnZlbGwgUlZVIE5ldHdvcmsgZHJpdmVycyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBPQ1RFT05UWDJfTUJPWFxcbiAgIDc6XFx0XFx0dHJpc3RhdGVcXG4gICA4OlxcdFxcbiAgIDk6XFx0Y29uZmlnIE9DVEVPTlRYMl9BRlxcbiAgMTA6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuICAxMTpcXHRcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG4gIDEyOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTM6XFx0XFx0ZGVwZW5kcyBvbiAoNjRCSVQgXFx1MDAyNlxcdTAwMjYgQ09NUElMRV9URVNUKSB8fCBBUk02NFxcbiAgMTQ6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgTWFydmVsbCdzIE9jdGVvblRYMiBSZXNvdXJjZSBWaXJ0dWFsaXphdGlvblxcbiAgMTg6XFx0XFx0ICBVbml0J3MgYWRtaW4gZnVuY3Rpb24gbWFuYWdlciB3aGljaCBtYW5hZ2VzIGFsbCBSVlUgSFcgcmVzb3VyY2VzXFxuICAxOTpcXHRcXHQgIGFuZCBwcm92aWRlcyBhIG1lZGl1bSB0byBvdGhlciBQRi9WRnMgdG8gY29uZmlndXJlIEhXLiBTaG91bGQgYmVcXG4gIDIwOlxcdFxcdCAgZW5hYmxlZCBmb3Igb3RoZXIgUlZVIGRldmljZSBkcml2ZXJzIHRvIHdvcmsuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xcbiAgMjM6XFx0XFx0Ym9vbCBcXFwiRGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcXFwiXFxuICAyNDpcXHRcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxcbiAgMjU6XFx0XFx0ZGVmYXVsdCBuXFxuICAyNjpcXHRcXHRoZWxwXFxuICAyNzpcXHRcXHQgIFRoaXMgY29uZmlnIG9wdGlvbiBkaXNhYmxlcyBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBzdWNoIGFzIE5JWCBTUUVzXFxuICAyODpcXHRcXHQgICwgTlBBIHN0YWNrIHBhZ2VzIGV0YyBpbiBOREMuIEFsc28gbG9ja3MgZG93biBOSVggU1EvQ1EvUlEvUlNTIGFuZFxcbiAgMjk6XFx0XFx0ICBOUEEgQXVyYS9Qb29sIGNvbnRleHRzLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgT0NURU9OVFgyX1BGXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbiAgMzQ6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAzNTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAzNjpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uICg2NEJJVCBcXHUwMDI2XFx1MDAyNiBDT01QSUxFX1RFU1QpIHx8IEFSTTY0XFxuICAzODpcXHRcXHRzZWxlY3QgRElNTElCXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBNQUNTRUMgfHwgIU1BQ1NFQ1xcbiAgNDI6XFx0XFx0aGVscFxcbiAgNDM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBNYXJ2ZWxsJ3MgT2N0ZW9uVFgyIE5JQyBwaHlzaWNhbCBmdW5jdGlvbi5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0Y29uZmlnIE9DVEVPTlRYMl9WRlxcbiAgNDY6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gT0NURU9OVFgyX1BGXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBPY3Rlb25UWDIgTklDIHZpcnR1YWwgZnVuY3Rpb24uXFxuICA1MDpcXHRcXG4gIDUxOlxcdGNvbmZpZyBSVlVfRVNXSVRDSFxcbiAgNTI6XFx0XFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgUlZVIEUtU3dpdGNoIHN1cHBvcnRcXFwiXFxuICA1MzpcXHRcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxcbiAgNTQ6XFx0XFx0ZGVmYXVsdCBtXFxuICA1NTpcXHRcXHRoZWxwXFxuICA1NjpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1hcnZlbGwncyBSVlUgRS1Td2l0Y2ggdGhhdFxcbiAgNTc6XFx0XFx0ICBwcm92aWRlcyBpbnRlcm5hbCBTUklPViBwYWNrZXQgc3RlZXJpbmcgYW5kIHN3aXRjaGluZy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MDguNjgwNzAwNDQ3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5NjExMDYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgRHJpdmVyKipcblxuT2theSwgc28gdGhlIHRleHQgZXhwbGljaXRseSBpZGVudGlmaWVzIHRoaXMgYXMgdGhlIFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlci5cIiBSaWdodCBhd2F5LCB0aGF0IGtleSBwaHJhc2UgdGVsbHMgbWUgZXhhY3RseSB3aGF0IEkgbmVlZCB0byBrbm93LiBUaGlzIGlzbid0IHNvbWUgc29mdHdhcmUtZGVmaW5lZCBuZXR3b3JrIGludGVyZmFjZSBvciBhbiBlbXVsYXRlZCBkZXZpY2Ugd2l0aGluIFFFTVUuIFRoaXMgaXMgYSAqcGh5c2ljYWwqIE5JQy4gSXQncyB0aWVkIHRvIGFuIGFjdHVhbCBQQ0llIGhhcmR3YXJlIGNhcmQsIHdoaWNoIGlzIGEgY3J1Y2lhbCBkaXN0aW5jdGlvbi5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBmdXp6aW5nIGFuZCB0aGUgbGltaXRhdGlvbnMsIHRyeWluZyB0byBmdXp6IGEgcGh5c2ljYWwgZGV2aWNlIGRyaXZlciB3aXRob3V0IHRoZSBoYXJkd2FyZSBwcmVzZW50IGlzIGEgY29tcGxldGUgZGVhZCBlbmQuIEl0J3Mgc2ltcGx5IG5vdCBmZWFzaWJsZSB0byBlZmZlY3RpdmVseSB0ZXN0IHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LiBUaGUgdGVzdGluZyBJJ2QgbmVlZCB0byBkbyBzaW1wbHkgd291bGRuJ3QgYmUgYWJsZSB0byBoYXBwZW4uXG5cblRoZXJlZm9yZSwgYWZ0ZXIgY29uc2lkZXJpbmcgYWxsIHRoaXMsIEknbSBjb25maWRlbnQgaW4gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBwb2ludCB3YXN0aW5nIHZhbHVhYmxlIHRpbWUgYW5kIHJlc291cmNlcyBvbiBhbiBhcHByb2FjaCB0aGF0J3MgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgdGFyZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzk4LCJPdXRwdXRUb2tlbnMiOjEwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MTMuMTc2ODEzNzExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgTklDIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIpLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIG5ldHdvcmsgY2FyZCB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBvciBleGVjdXRlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MikuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgbmV0d29yayBjYXJkIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMDg6Mzc6MTMuMTc2ODU5ODQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowbwb9q[1] Phase: Running StartedAt: 2026-08-21 08:38:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbwb9q[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-21 08:38:08 +0000 UTC FinishedAt: 2026-08-21 08:38:12 +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,}