Name: series-workflowr87r5 Phase: Failed StartedAt: 2026-06-22 03:57:54 +0000 UTC FinishedAt: 2026-06-22 04:28:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr87r5[0] Phase: Succeeded StartedAt: 2026-06-22 03:57:54 +0000 UTC FinishedAt: 2026-06-22 04:28:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr87r5[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 03:57:54 +0000 UTC FinishedAt: 2026-06-22 04:28:03 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRlYnVnZnMgY29kZSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UgKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTllYWVjNTk5NjRiOWIyMThjNDM4MTU3ZWZhZjRmZDJkNjEzOTZhMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA0OjI3OjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jXG5pbmRleCBjYTI3MDRiMTg4YTVjZi4uNWY0Njc5NjA0YTUzZjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jXG5AQCAtMjgxMCw2ICYjNDM7MjgxMCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcdFx0XHQgICAgXHUwMDI2cnZ1X2RiZ19ucGFfbmRjX2hpdHNfbWlzc19mb3BzKTtcbiB9XG4gXG4mIzQzOy8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLVx1MDAzZWlfcHJpdmF0ZVxuJiM0MzsgKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHgge1xuJiM0MztcdHN0cnVjdCBydnVcdCpydnU7XG4mIzQzO1x0dm9pZFx0XHQqY2d4ZDtcbiYjNDM7fTtcbiYjNDM7XG4gI2RlZmluZSBQUklOVF9DR1hfQ1VNTF9OSVhSWF9TVEFUVVMoaWR4LCBuYW1lKVx0XHRcdFx0XFxcbiBcdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHU2NCBjbnQ7XHRcdFx0XHRcdFx0XFxcbkBAIC0yODMyLDE4ICYjNDM7Mjg0MCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcbiBzdGF0aWMgaW50IGNneF9wcmludF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqZGN0eCA9IHMtXHUwMDNlcHJpdmF0ZTtcbiBcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGluZm87XG4mIzQzO1x0c3RydWN0IHJ2dSAqcnZ1ID0gZGN0eC1cdTAwM2VydnU7XG4gXHRzdHJ1Y3QgbWFjX29wcyAqbWFjX29wcztcbi1cdHZvaWQgKmNneGQgPSBzLVx1MDAzZXByaXZhdGU7XG4mIzQzO1x0dm9pZCAqY2d4ZCA9IGRjdHgtXHUwMDNlY2d4ZDtcbiBcdHU2NCB1Y2FzdCwgbWNhc3QsIGJjYXN0O1xuIFx0aW50IHN0YXQgPSAwLCBlcnIgPSAwO1xuIFx0dTY0IHR4X3N0YXQsIHJ4X3N0YXQ7XG4tXHRzdHJ1Y3QgcnZ1ICpydnU7XG4tXG4tXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tXHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbi1cdGlmICghcnZ1KVxuLVx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiBcdG1hY19vcHMgPSBnZXRfbWFjX29wcyhjZ3hkKTtcbiBcdC8qIFRoZXJlIGNhbiBiZSBubyBDR1ggZGV2aWNlcyBhdCBhbGwgKi9cbkBAIC0yOTUwLDIwICYjNDM7Mjk1NCwxNiBAQCBSVlVfREVCVUdfU0VRX0ZPUFMoY2d4X3N0YXQsIGNneF9zdGF0X2Rpc3BsYXksIE5VTEwpO1xuIFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X2RtYWNfZmx0KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXG4ge1xuJiM0MztcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cdTAwM2Vwcml2YXRlO1xuJiM0MztcdHN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtXHUwMDNlcnZ1O1xuIFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBOVUxMO1xuLVx0dm9pZCAqY2d4ZCA9IHMtXHUwMDNlcHJpdmF0ZTtcbiYjNDM7XHR2b2lkICpjZ3hkID0gZGN0eC1cdTAwM2VjZ3hkO1xuIFx0Y2hhciAqYmNhc3QsICptY2FzdDtcbiBcdHUxNiBpbmRleCwgZG9tYWluO1xuIFx0dTggZG1hY1tFVEhfQUxFTl07XG4tXHRzdHJ1Y3QgcnZ1ICpydnU7XG4gXHR1NjQgY2ZnLCBtYWM7XG4gXHRpbnQgcGY7XG4gXG4tXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tXHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbi1cdGlmICghcnZ1KVxuLVx0XHRyZXR1cm4gLUVOT0RFVjtcbi1cbiBcdHBmID0gY2d4bG1hY190b19wZihydnUsIGNneF9nZXRfY2d4aWQoY2d4ZCksIGxtYWNfaWQpO1xuIFx0ZG9tYWluID0gMjtcbiBcbkBAIC0zMDEwLDE3ICYjNDM7MzAxMCwxMyBAQCBSVlVfREVCVUdfU0VRX0ZPUFMoY2d4X2RtYWNfZmx0LCBjZ3hfZG1hY19mbHRfZGlzcGxheSwgTlVMTCk7XG4gXG4gc3RhdGljIGludCBjZ3hfcHJpbnRfZndkYXRhKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXG4ge1xuJiM0MztcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cdTAwM2Vwcml2YXRlO1xuIFx0c3RydWN0IGNneF9sbWFjX2Z3ZGF0YV9zICpmd2RhdGE7XG4tXHR2b2lkICpjZ3hkID0gcy1cdTAwM2Vwcml2YXRlO1xuJiM0MztcdHN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtXHUwMDNlcnZ1O1xuJiM0MztcdHZvaWQgKmNneGQgPSBkY3R4LVx1MDAzZWNneGQ7XG4gXHRzdHJ1Y3QgcGh5X3MgKnBoeTtcbi1cdHN0cnVjdCBydnUgKnJ2dTtcbiBcdGludCBjZ3hfaWQsIGk7XG4gXG4tXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tXHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbi1cdGlmICghcnZ1KVxuLVx0XHRyZXR1cm4gLUVOT0RFVjtcbi1cbiBcdGlmICghcnZ1LVx1MDAzZWZ3ZGF0YSlcbiBcdFx0cmV0dXJuIC1FQUdBSU47XG4gXG5AQCAtMzEwMSw2ICYjNDM7MzA5Nyw3IEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfZndkYXRhLCBjZ3hfZndkYXRhX2Rpc3BsYXksIE5VTEwpO1xuIFxuIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuIHtcbiYjNDM7XHRzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqY3R4O1xuIFx0c3RydWN0IG1hY19vcHMgKm1hY19vcHM7XG4gXHR1bnNpZ25lZCBsb25nIGxtYWNfYm1hcDtcbiBcdGludCBpLCBsbWFjX2lkO1xuQEAgLTMxMjcsMjAgJiM0MzszMTI0LDI5IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuIFx0XHRydnUtXHUwMDNlcnZ1X2RiZy5jZ3ggPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZG5hbWUsXG4gXHRcdFx0XHRcdFx0ICAgICAgcnZ1LVx1MDAzZXJ2dV9kYmcuY2d4X3Jvb3QpO1xuIFxuLVx0XHRmb3JfZWFjaF9zZXRfYml0KGxtYWNfaWQsIFx1MDAyNmxtYWNfYm1hcCwgcnZ1LVx1MDAzZWh3LVx1MDAzZWxtYWNfcGVyX2NneCkge1xuLVx0XHRcdC8qIGxtYWMgZGVidWdmcyBkaXIgKi9cbi1cdFx0XHRzcHJpbnRmKGRuYW1lLCBcJiMzNDtsbWFjJWRcJiMzNDssIGxtYWNfaWQpO1xuLVx0XHRcdHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMgPVxuLVx0XHRcdFx0ZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLCBydnUtXHUwMDNlcnZ1X2RiZy5jZ3gpO1xuLVxuLVx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcJiMzNDtzdGF0c1wmIzM0OywgMDYwMCwgcnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyxcbi1cdFx0XHRcdFx0ICAgIGNneCwgbG1hY19pZCwgXHUwMDI2cnZ1X2RiZ19jZ3hfc3RhdF9mb3BzKTtcbi1cdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlX2F1eF9udW0oXCYjMzQ7bWFjX2ZpbHRlclwmIzM0OywgMDYwMCxcbi1cdFx0XHRcdFx0ICAgIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsIGNneCwgbG1hY19pZCxcbi1cdFx0XHRcdFx0ICAgIFx1MDAyNnJ2dV9kYmdfY2d4X2RtYWNfZmx0X2ZvcHMpO1xuLVx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7ZndkYXRhXCYjMzQ7LCAwNjAwLFxuLVx0XHRcdFx0XHQgICAgcnZ1LVx1MDAzZXJ2dV9kYmcubG1hYywgY2d4LFxuLVx0XHRcdFx0XHQgICAgXHUwMDI2cnZ1X2RiZ19jZ3hfZndkYXRhX2ZvcHMpO1xuJiM0MztcdFx0e1xuJiM0MztcdFx0XHRjdHggPSBkZXZtX2t6YWxsb2MocnZ1LVx1MDAzZWRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdFx0aWYgKCFjdHgpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0XHRjdHgtXHUwMDNlcnZ1ID0gcnZ1O1xuJiM0MztcdFx0XHRjdHgtXHUwMDNlY2d4ZCA9IGNneDtcbiYjNDM7XG4mIzQzO1x0XHRcdGZvcl9lYWNoX3NldF9iaXQobG1hY19pZCwgXHUwMDI2bG1hY19ibWFwLCBydnUtXHUwMDNlaHctXHUwMDNlbG1hY19wZXJfY2d4KSB7XG4mIzQzO1x0XHRcdFx0LyogbG1hYyBkZWJ1Z2ZzIGRpciAqL1xuJiM0MztcdFx0XHRcdHNwcmludGYoZG5hbWUsIFwmIzM0O2xtYWMlZFwmIzM0OywgbG1hY19pZCk7XG4mIzQzO1x0XHRcdFx0cnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyA9XG4mIzQzO1x0XHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZG5hbWUsIHJ2dS1cdTAwM2VydnVfZGJnLmNneCk7XG4mIzQzO1xuJiM0MztcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcJiMzNDtzdGF0c1wmIzM0OywgMDYwMCwgcnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgY3R4LCBsbWFjX2lkLCBcdTAwMjZydnVfZGJnX2NneF9zdGF0X2ZvcHMpO1xuJiM0MztcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcJiMzNDttYWNfZmlsdGVyXCYjMzQ7LCAwNjAwLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBydnUtXHUwMDNlcnZ1X2RiZy5sbWFjLCBjdHgsIGxtYWNfaWQsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNnJ2dV9kYmdfY2d4X2RtYWNfZmx0X2ZvcHMpO1xuJiM0MztcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcJiMzNDtmd2RhdGFcJiMzNDssIDA2MDAsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsIGN0eCxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgbG1hY19pZCwgXHUwMDI2cnZ1X2RiZ19jZ3hfZndkYXRhX2ZvcHMpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGVidWdmcyBjb2RlIGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIGRldmljZSAoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGRlYnVnZnMgZmlsZSBvcGVyYXRpb25zLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE5ZWFlYzU5OTY0YjliMjE4YzQzODE1N2VmYWY0ZmQyZDYxMzk2YTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyMiAwNDoyNzozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jCmluZGV4IGNhMjcwNGIxODhhNWNmLi41ZjQ2Nzk2MDRhNTNmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jCkBAIC0yODEwLDYgJiM0MzsyODEwLDE0IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfbnBhX2luaXQoc3RydWN0IHJ2dSAqcnZ1KQogCQkJICAgICZhbXA7cnZ1X2RiZ19ucGFfbmRjX2hpdHNfbWlzc19mb3BzKTsKIH0KIAomIzQzOy8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLSZndDtpX3ByaXZhdGUKJiM0MzsgKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLgomIzQzOyAqLwomIzQzO3N0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4IHsKJiM0MzsJc3RydWN0IHJ2dQkqcnZ1OwomIzQzOwl2b2lkCQkqY2d4ZDsKJiM0Mzt9OwomIzQzOwogI2RlZmluZSBQUklOVF9DR1hfQ1VNTF9OSVhSWF9TVEFUVVMoaWR4LCBuYW1lKQkJCQlcCiAJKHsJCQkJCQkJCVwKIAkJdTY0IGNudDsJCQkJCQlcCkBAIC0yODMyLDE4ICYjNDM7Mjg0MCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSkKIAogc3RhdGljIGludCBjZ3hfcHJpbnRfc3RhdHMoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZCkKIHsKJiM0MzsJc3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHggKmRjdHggPSBzLSZndDtwcml2YXRlOwogCXN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGluZm87CiYjNDM7CXN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtJmd0O3J2dTsKIAlzdHJ1Y3QgbWFjX29wcyAqbWFjX29wczsKLQl2b2lkICpjZ3hkID0gcy0mZ3Q7cHJpdmF0ZTsKJiM0MzsJdm9pZCAqY2d4ZCA9IGRjdHgtJmd0O2NneGQ7CiAJdTY0IHVjYXN0LCBtY2FzdCwgYmNhc3Q7CiAJaW50IHN0YXQgPSAwLCBlcnIgPSAwOwogCXU2NCB0eF9zdGF0LCByeF9zdGF0OwotCXN0cnVjdCBydnUgKnJ2dTsKLQotCXJ2dSA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwKLQkJCQkJICAgICBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiwgTlVMTCkpOwotCWlmICghcnZ1KQotCQlyZXR1cm4gLUVOT0RFVjsKIAogCW1hY19vcHMgPSBnZXRfbWFjX29wcyhjZ3hkKTsKIAkvKiBUaGVyZSBjYW4gYmUgbm8gQ0dYIGRldmljZXMgYXQgYWxsICovCkBAIC0yOTUwLDIwICYjNDM7Mjk1NCwxNiBAQCBSVlVfREVCVUdfU0VRX0ZPUFMoY2d4X3N0YXQsIGNneF9zdGF0X2Rpc3BsYXksIE5VTEwpOwogCiBzdGF0aWMgaW50IGNneF9wcmludF9kbWFjX2ZsdChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKQogewomIzQzOwlzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqZGN0eCA9IHMtJmd0O3ByaXZhdGU7CiYjNDM7CXN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtJmd0O3J2dTsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IE5VTEw7Ci0Jdm9pZCAqY2d4ZCA9IHMtJmd0O3ByaXZhdGU7CiYjNDM7CXZvaWQgKmNneGQgPSBkY3R4LSZndDtjZ3hkOwogCWNoYXIgKmJjYXN0LCAqbWNhc3Q7CiAJdTE2IGluZGV4LCBkb21haW47CiAJdTggZG1hY1tFVEhfQUxFTl07Ci0Jc3RydWN0IHJ2dSAqcnZ1OwogCXU2NCBjZmcsIG1hYzsKIAlpbnQgcGY7CiAKLQlydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sCi0JCQkJCSAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTsKLQlpZiAoIXJ2dSkKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KIAlwZiA9IGNneGxtYWNfdG9fcGYocnZ1LCBjZ3hfZ2V0X2NneGlkKGNneGQpLCBsbWFjX2lkKTsKIAlkb21haW4gPSAyOwogCkBAIC0zMDEwLDE3ICYjNDM7MzAxMCwxMyBAQCBSVlVfREVCVUdfU0VRX0ZPUFMoY2d4X2RtYWNfZmx0LCBjZ3hfZG1hY19mbHRfZGlzcGxheSwgTlVMTCk7CiAKIHN0YXRpYyBpbnQgY2d4X3ByaW50X2Z3ZGF0YShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKQogewomIzQzOwlzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqZGN0eCA9IHMtJmd0O3ByaXZhdGU7CiAJc3RydWN0IGNneF9sbWFjX2Z3ZGF0YV9zICpmd2RhdGE7Ci0Jdm9pZCAqY2d4ZCA9IHMtJmd0O3ByaXZhdGU7CiYjNDM7CXN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtJmd0O3J2dTsKJiM0MzsJdm9pZCAqY2d4ZCA9IGRjdHgtJmd0O2NneGQ7CiAJc3RydWN0IHBoeV9zICpwaHk7Ci0Jc3RydWN0IHJ2dSAqcnZ1OwogCWludCBjZ3hfaWQsIGk7CiAKLQlydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sCi0JCQkJCSAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTsKLQlpZiAoIXJ2dSkKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KIAlpZiAoIXJ2dS0mZ3Q7ZndkYXRhKQogCQlyZXR1cm4gLUVBR0FJTjsKIApAQCAtMzEwMSw2ICYjNDM7MzA5Nyw3IEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfZndkYXRhLCBjZ3hfZndkYXRhX2Rpc3BsYXksIE5VTEwpOwogCiBzdGF0aWMgdm9pZCBydnVfZGJnX2NneF9pbml0KHN0cnVjdCBydnUgKnJ2dSkKIHsKJiM0MzsJc3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHggKmN0eDsKIAlzdHJ1Y3QgbWFjX29wcyAqbWFjX29wczsKIAl1bnNpZ25lZCBsb25nIGxtYWNfYm1hcDsKIAlpbnQgaSwgbG1hY19pZDsKQEAgLTMxMjcsMjAgJiM0MzszMTI0LDI5IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KQogCQlydnUtJmd0O3J2dV9kYmcuY2d4ID0gZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLAogCQkJCQkJICAgICAgcnZ1LSZndDtydnVfZGJnLmNneF9yb290KTsKIAotCQlmb3JfZWFjaF9zZXRfYml0KGxtYWNfaWQsICZhbXA7bG1hY19ibWFwLCBydnUtJmd0O2h3LSZndDtsbWFjX3Blcl9jZ3gpIHsKLQkJCS8qIGxtYWMgZGVidWdmcyBkaXIgKi8KLQkJCXNwcmludGYoZG5hbWUsICYjMzQ7bG1hYyVkJiMzNDssIGxtYWNfaWQpOwotCQkJcnZ1LSZndDtydnVfZGJnLmxtYWMgPQotCQkJCWRlYnVnZnNfY3JlYXRlX2RpcihkbmFtZSwgcnZ1LSZndDtydnVfZGJnLmNneCk7Ci0KLQkJCWRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bSgmIzM0O3N0YXRzJiMzNDssIDA2MDAsIHJ2dS0mZ3Q7cnZ1X2RiZy5sbWFjLAotCQkJCQkgICAgY2d4LCBsbWFjX2lkLCAmYW1wO3J2dV9kYmdfY2d4X3N0YXRfZm9wcyk7Ci0JCQlkZWJ1Z2ZzX2NyZWF0ZV9maWxlX2F1eF9udW0oJiMzNDttYWNfZmlsdGVyJiMzNDssIDA2MDAsCi0JCQkJCSAgICBydnUtJmd0O3J2dV9kYmcubG1hYywgY2d4LCBsbWFjX2lkLAotCQkJCQkgICAgJmFtcDtydnVfZGJnX2NneF9kbWFjX2ZsdF9mb3BzKTsKLQkJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtmd2RhdGEmIzM0OywgMDYwMCwKLQkJCQkJICAgIHJ2dS0mZ3Q7cnZ1X2RiZy5sbWFjLCBjZ3gsCi0JCQkJCSAgICAmYW1wO3J2dV9kYmdfY2d4X2Z3ZGF0YV9mb3BzKTsKJiM0MzsJCXsKJiM0MzsJCQljdHggPSBkZXZtX2t6YWxsb2MocnZ1LSZndDtkZXYsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7CiYjNDM7CQkJaWYgKCFjdHgpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJCWN0eC0mZ3Q7cnZ1ID0gcnZ1OwomIzQzOwkJCWN0eC0mZ3Q7Y2d4ZCA9IGNneDsKJiM0MzsKJiM0MzsJCQlmb3JfZWFjaF9zZXRfYml0KGxtYWNfaWQsICZhbXA7bG1hY19ibWFwLCBydnUtJmd0O2h3LSZndDtsbWFjX3Blcl9jZ3gpIHsKJiM0MzsJCQkJLyogbG1hYyBkZWJ1Z2ZzIGRpciAqLwomIzQzOwkJCQlzcHJpbnRmKGRuYW1lLCAmIzM0O2xtYWMlZCYjMzQ7LCBsbWFjX2lkKTsKJiM0MzsJCQkJcnZ1LSZndDtydnVfZGJnLmxtYWMgPQomIzQzOwkJCQkJZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLCBydnUtJmd0O3J2dV9kYmcuY2d4KTsKJiM0MzsKJiM0MzsJCQkJZGVidWdmc19jcmVhdGVfZmlsZV9hdXhfbnVtKCYjMzQ7c3RhdHMmIzM0OywgMDYwMCwgcnZ1LSZndDtydnVfZGJnLmxtYWMsCiYjNDM7CQkJCQkJCSAgICBjdHgsIGxtYWNfaWQsICZhbXA7cnZ1X2RiZ19jZ3hfc3RhdF9mb3BzKTsKJiM0MzsJCQkJZGVidWdmc19jcmVhdGVfZmlsZV9hdXhfbnVtKCYjMzQ7bWFjX2ZpbHRlciYjMzQ7LCAwNjAwLAomIzQzOwkJCQkJCQkgICAgcnZ1LSZndDtydnVfZGJnLmxtYWMsIGN0eCwgbG1hY19pZCwKJiM0MzsJCQkJCQkJICAgICZhbXA7cnZ1X2RiZ19jZ3hfZG1hY19mbHRfZm9wcyk7CiYjNDM7CQkJCWRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bSgmIzM0O2Z3ZGF0YSYjMzQ7LCAwNjAwLAomIzQzOwkJCQkJCQkgICAgcnZ1LSZndDtydnVfZGJnLmxtYWMsIGN0eCwKJiM0MzsJCQkJCQkJICAgIGxtYWNfaWQsICZhbXA7cnZ1X2RiZ19jZ3hfZndkYXRhX2ZvcHMpOwomIzQzOwkJCX0KIAkJfQogCX0KIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBXb3J0aEZ1enppbmcgRGV0ZXJtaW5hdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgcnZ1X2RlYnVnZnMuY2Agd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvbnR4MiBldGhlcm5ldCBkcml2ZXIuIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBkaXJlY3QgYHBjaV9nZXRfZGV2aWNlYCBjYWxsIGFuZCBpbnN0ZWFkIHBhc3NpbmcgYSBgc3RydWN0IHJ2dWAgdGhyb3VnaCBhIGNvbnRleHQgc3RydWN0IHdpdGhpbiB0aGUgZGVidWdmcyBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIGEgcmVmYWN0b3IsIG1vdmluZyB0aGUgZGF0YSBhcm91bmQuIEl0JiMzOTtzIGNvbmZpbmVkIHRvIGRlYnVnZnMgZmlsZXM6IGBzdGF0c2AsIGBtYWNfZmlsdGVyYCwgYGZ3ZGF0YWAgd2l0aGluIHRoZSBgbG1hY1hgIGRpcmVjdG9yaWVzLiBDbGVhcmx5LCBpdCYjMzk7cyBkZWJ1Z2ZzLCBhbmQgKmRlYnVnZnMgY2hhbmdlcyBhcmUgdXN1YWxseSBub3Qgd29ydGggZnV6emluZyouCgpOb3csIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaXM6IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0ICpkb24mIzM5O3QqIGZ1bmN0aW9uYWxseSBjaGFuZ2UgZXhlY3V0aW9uLCBvciB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoaXMgKnNlZW1zKiBsaWtlIGl0IG1pZ2h0IGZhbGwgaW50byB0aGF0IGNhdGVnb3J5IG9mICYjMzQ7bm90IHdvcnRoIGZ1enppbmcsJiMzNDsgYnV0IHRoaXMgaXMgYSAqaGFyZHdhcmUqIHNwZWNpZmljIGRyaXZlciBmb3IgYSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24uIEl0IG5lZWRzIGEgc3BlY2lmaWMgUENJIGRldmljZSAoYFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmApLiBDYW4gdGhpcyBldmVuIGJlIGVtdWxhdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVT8gQWxtb3N0IGNlcnRhaW5seSBub3QuIEl0IGlzICpoaWdobHkqIHVubGlrZWx5IHRoYXQgdGhpcyBkcml2ZXIsIHdpdGggdGhhdCB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50LCBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU3RpbGwsICpJIHdpbGwgY2hlY2sgaWYgdGhlcmUmIzM5O3MgYW55IGVtdWxhdGlvbiBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZXMqIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgbWVudGlvbiBvZiBlbXVsYXRpb24gZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2UuIElmIHRoZXJlIGlzbiYjMzk7dCwgdGhlIHBhdGNoIGlzIGxpa2VseSBub3Qgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz00ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo0NTpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00Ni1cdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI0OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXHRcdDB4QTA2NVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjUtI2RlZmluZVx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcdFx0XHQweEEwNjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI3OTQ9c3RhdGljIHZvaWQgcnZ1X2RiZ19ucGFfaW5pdChzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODEzLS8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLVx1MDAzZWlfcHJpdmF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODE0OiAqIHBvaW50cyBoZXJlIHNvIHNlcV9maWxlIG9wcyBhdm9pZCBwY2lfZ2V0X2RldmljZShQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4MTUtICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDQtI2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRlx0XHQweEEwNjRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjQ1OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRlx0XHQweEEwRjhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1OTk6XHRyZXR1cm4gKHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MDAtXHRcdChwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfUlZVX1JFUCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzoyMzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjQtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDgKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBmb2N1c2VkIG9uIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlci4gVGhhdCBtZWFucyBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgdG8gYSAqc3BlY2lmaWMqIFBDSSBkZXZpY2UuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAgaGVyZS4gTm8gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIG5vIG1hdHRlciBob3cgY2xldmVyLCBpcyBnb2luZyB0byBsZXQgbWUgc2ltdWxhdGUgdGhhdC4gRm9yZ2V0IGFib3V0IFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIOKAkyBubyBlbXVsYXRlZCBkZXZpY2Ugb3Igc2ltdWxhdGVkIG5ldHdvcmsgc2V0dXAgaXMgZ29pbmcgdG8gZG8gdGhlIHRyaWNrLiBGb3JnZXQgYWJvdXQgc29tZXRoaW5nIGxpa2UgbmV0ZGV2c2ltIG9yIG1hYzgwMjExX2h3c2ltIOKAkyB0aG9zZSBhcmUgdXNlbGVzcyBoZXJlLgoKT24gdG9wIG9mIHRoYXQsIHRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSB3aXRoaW4gYHJ2dV9kZWJ1Z2ZzLmNgLCBhbmQgdGhhdCYjMzk7cyAqZGVidWdmcyogY29kZS4gSXQmIzM5O3MgaGFuZGxpbmcgZGVidWcgZmlsZSBvcGVyYXRpb25zLiBJdOKAmXMgbm90IHRvdWNoaW5nIGFueSBvZiB0aGUgY29yZSBmdW5jdGlvbmFsIGxvZ2ljIG9mIHRoZSBkcml2ZXIuIFNvLCBhZnRlciBldmFsdWF0aW5nIGFsbCBvZiB0aGVzZSBjb25zaWRlcmF0aW9ucywgdGhlcmUmIzM5O3MganVzdCBubyBwb2ludCBpbiB0cnlpbmcgdG8gZnV6eiB0aGlzLiBUaGUgcHJvYmFiaWxpdHkgb2YgZmluZGluZyBhbnl0aGluZyB1c2VmdWwgaXMgZWZmZWN0aXZlbHkgemVyby4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogVGhpcyBwYXRjaCBpcyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGVidWdmcyBjb2RlIGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIGRldmljZSAoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGRlYnVnZnMgZmlsZSBvcGVyYXRpb25zLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRlYnVnZnMgY29kZSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UgKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6Mjc6MzUuNzQ0ODYzODAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMjA0NTU4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRlYnVnZnMgY29kZSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UgKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDoyNzozNS43NDQ4OTIzOTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTQ3ODA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE5ZWFlYzU5OTY0YjliMjE4YzQzODE1N2VmYWY0ZmQyZDYxMzk2YTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDQ6Mjc6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmNcXG5pbmRleCBjYTI3MDRiMTg4YTVjZi4uNWY0Njc5NjA0YTUzZjQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmNcXG5AQCAtMjgxMCw2ICsyODEwLDE0IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfbnBhX2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxcbiBcXHRcXHRcXHQgICAgXFx1MDAyNnJ2dV9kYmdfbnBhX25kY19oaXRzX21pc3NfZm9wcyk7XFxuIH1cXG4gXFxuKy8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLVxcdTAwM2VpX3ByaXZhdGVcXG4rICogcG9pbnRzIGhlcmUgc28gc2VxX2ZpbGUgb3BzIGF2b2lkIHBjaV9nZXRfZGV2aWNlKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKS5cXG4rICovXFxuK3N0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4IHtcXG4rXFx0c3RydWN0IHJ2dVxcdCpydnU7XFxuK1xcdHZvaWRcXHRcXHQqY2d4ZDtcXG4rfTtcXG4rXFxuICNkZWZpbmUgUFJJTlRfQ0dYX0NVTUxfTklYUlhfU1RBVFVTKGlkeCwgbmFtZSlcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdCh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHR1NjQgY250O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjgzMiwxOCArMjg0MCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcXG4gXFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXFxuIHtcXG4rXFx0c3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHggKmRjdHggPSBzLVxcdTAwM2Vwcml2YXRlO1xcbiBcXHRzdHJ1Y3QgY2d4X2xpbmtfdXNlcl9pbmZvIGxpbmZvO1xcbitcXHRzdHJ1Y3QgcnZ1ICpydnUgPSBkY3R4LVxcdTAwM2VydnU7XFxuIFxcdHN0cnVjdCBtYWNfb3BzICptYWNfb3BzO1xcbi1cXHR2b2lkICpjZ3hkID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG4rXFx0dm9pZCAqY2d4ZCA9IGRjdHgtXFx1MDAzZWNneGQ7XFxuIFxcdHU2NCB1Y2FzdCwgbWNhc3QsIGJjYXN0O1xcbiBcXHRpbnQgc3RhdCA9IDAsIGVyciA9IDA7XFxuIFxcdHU2NCB0eF9zdGF0LCByeF9zdGF0O1xcbi1cXHRzdHJ1Y3QgcnZ1ICpydnU7XFxuLVxcbi1cXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcXG4tXFx0aWYgKCFydnUpXFxuLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXG4gXFx0bWFjX29wcyA9IGdldF9tYWNfb3BzKGNneGQpO1xcbiBcXHQvKiBUaGVyZSBjYW4gYmUgbm8gQ0dYIGRldmljZXMgYXQgYWxsICovXFxuQEAgLTI5NTAsMjAgKzI5NTQsMTYgQEAgUlZVX0RFQlVHX1NFUV9GT1BTKGNneF9zdGF0LCBjZ3hfc3RhdF9kaXNwbGF5LCBOVUxMKTtcXG4gXFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X2RtYWNfZmx0KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXFxuIHtcXG4rXFx0c3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHggKmRjdHggPSBzLVxcdTAwM2Vwcml2YXRlO1xcbitcXHRzdHJ1Y3QgcnZ1ICpydnUgPSBkY3R4LVxcdTAwM2VydnU7XFxuIFxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gTlVMTDtcXG4tXFx0dm9pZCAqY2d4ZCA9IHMtXFx1MDAzZXByaXZhdGU7XFxuK1xcdHZvaWQgKmNneGQgPSBkY3R4LVxcdTAwM2VjZ3hkO1xcbiBcXHRjaGFyICpiY2FzdCwgKm1jYXN0O1xcbiBcXHR1MTYgaW5kZXgsIGRvbWFpbjtcXG4gXFx0dTggZG1hY1tFVEhfQUxFTl07XFxuLVxcdHN0cnVjdCBydnUgKnJ2dTtcXG4gXFx0dTY0IGNmZywgbWFjO1xcbiBcXHRpbnQgcGY7XFxuIFxcbi1cXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcXG4tXFx0aWYgKCFydnUpXFxuLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi1cXG4gXFx0cGYgPSBjZ3hsbWFjX3RvX3BmKHJ2dSwgY2d4X2dldF9jZ3hpZChjZ3hkKSwgbG1hY19pZCk7XFxuIFxcdGRvbWFpbiA9IDI7XFxuIFxcbkBAIC0zMDEwLDE3ICszMDEwLDEzIEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfZG1hY19mbHQsIGNneF9kbWFjX2ZsdF9kaXNwbGF5LCBOVUxMKTtcXG4gXFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X2Z3ZGF0YShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxcbiB7XFxuK1xcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG4gXFx0c3RydWN0IGNneF9sbWFjX2Z3ZGF0YV9zICpmd2RhdGE7XFxuLVxcdHZvaWQgKmNneGQgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbitcXHRzdHJ1Y3QgcnZ1ICpydnUgPSBkY3R4LVxcdTAwM2VydnU7XFxuK1xcdHZvaWQgKmNneGQgPSBkY3R4LVxcdTAwM2VjZ3hkO1xcbiBcXHRzdHJ1Y3QgcGh5X3MgKnBoeTtcXG4tXFx0c3RydWN0IHJ2dSAqcnZ1O1xcbiBcXHRpbnQgY2d4X2lkLCBpO1xcbiBcXG4tXFx0cnZ1ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGLCBOVUxMKSk7XFxuLVxcdGlmICghcnZ1KVxcbi1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tXFxuIFxcdGlmICghcnZ1LVxcdTAwM2Vmd2RhdGEpXFxuIFxcdFxcdHJldHVybiAtRUFHQUlOO1xcbiBcXG5AQCAtMzEwMSw2ICszMDk3LDcgQEAgUlZVX0RFQlVHX1NFUV9GT1BTKGNneF9md2RhdGEsIGNneF9md2RhdGFfZGlzcGxheSwgTlVMTCk7XFxuIFxcbiBzdGF0aWMgdm9pZCBydnVfZGJnX2NneF9pbml0KHN0cnVjdCBydnUgKnJ2dSlcXG4ge1xcbitcXHRzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqY3R4O1xcbiBcXHRzdHJ1Y3QgbWFjX29wcyAqbWFjX29wcztcXG4gXFx0dW5zaWduZWQgbG9uZyBsbWFjX2JtYXA7XFxuIFxcdGludCBpLCBsbWFjX2lkO1xcbkBAIC0zMTI3LDIwICszMTI0LDI5IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxcbiBcXHRcXHRydnUtXFx1MDAzZXJ2dV9kYmcuY2d4ID0gZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBydnUtXFx1MDAzZXJ2dV9kYmcuY2d4X3Jvb3QpO1xcbiBcXG4tXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdChsbWFjX2lkLCBcXHUwMDI2bG1hY19ibWFwLCBydnUtXFx1MDAzZWh3LVxcdTAwM2VsbWFjX3Blcl9jZ3gpIHtcXG4tXFx0XFx0XFx0LyogbG1hYyBkZWJ1Z2ZzIGRpciAqL1xcbi1cXHRcXHRcXHRzcHJpbnRmKGRuYW1lLCBcXFwibG1hYyVkXFxcIiwgbG1hY19pZCk7XFxuLVxcdFxcdFxcdHJ2dS1cXHUwMDNlcnZ1X2RiZy5sbWFjID1cXG4tXFx0XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLCBydnUtXFx1MDAzZXJ2dV9kYmcuY2d4KTtcXG4tXFxuLVxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcXFwic3RhdHNcXFwiLCAwNjAwLCBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGNneCwgbG1hY19pZCwgXFx1MDAyNnJ2dV9kYmdfY2d4X3N0YXRfZm9wcyk7XFxuLVxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcXFwibWFjX2ZpbHRlclxcXCIsIDA2MDAsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYywgY2d4LCBsbWFjX2lkLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnJ2dV9kYmdfY2d4X2RtYWNfZmx0X2ZvcHMpO1xcbi1cXHRcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJmd2RhdGFcXFwiLCAwNjAwLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgcnZ1LVxcdTAwM2VydnVfZGJnLmxtYWMsIGNneCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZydnVfZGJnX2NneF9md2RhdGFfZm9wcyk7XFxuK1xcdFxcdHtcXG4rXFx0XFx0XFx0Y3R4ID0gZGV2bV9remFsbG9jKHJ2dS1cXHUwMDNlZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpO1xcbitcXHRcXHRcXHRpZiAoIWN0eClcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRcXHRjdHgtXFx1MDAzZXJ2dSA9IHJ2dTtcXG4rXFx0XFx0XFx0Y3R4LVxcdTAwM2VjZ3hkID0gY2d4O1xcbitcXG4rXFx0XFx0XFx0Zm9yX2VhY2hfc2V0X2JpdChsbWFjX2lkLCBcXHUwMDI2bG1hY19ibWFwLCBydnUtXFx1MDAzZWh3LVxcdTAwM2VsbWFjX3Blcl9jZ3gpIHtcXG4rXFx0XFx0XFx0XFx0LyogbG1hYyBkZWJ1Z2ZzIGRpciAqL1xcbitcXHRcXHRcXHRcXHRzcHJpbnRmKGRuYW1lLCBcXFwibG1hYyVkXFxcIiwgbG1hY19pZCk7XFxuK1xcdFxcdFxcdFxcdHJ2dS1cXHUwMDNlcnZ1X2RiZy5sbWFjID1cXG4rXFx0XFx0XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLCBydnUtXFx1MDAzZXJ2dV9kYmcuY2d4KTtcXG4rXFxuK1xcdFxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcXFwic3RhdHNcXFwiLCAwNjAwLCBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGN0eCwgbG1hY19pZCwgXFx1MDAyNnJ2dV9kYmdfY2d4X3N0YXRfZm9wcyk7XFxuK1xcdFxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcXFwibWFjX2ZpbHRlclxcXCIsIDA2MDAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYywgY3R4LCBsbWFjX2lkLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnJ2dV9kYmdfY2d4X2RtYWNfZmx0X2ZvcHMpO1xcbitcXHRcXHRcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlX2F1eF9udW0oXFxcImZ3ZGF0YVxcXCIsIDA2MDAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYywgY3R4LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgbG1hY19pZCwgXFx1MDAyNnJ2dV9kYmdfY2d4X2Z3ZGF0YV9mb3BzKTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDoyNzozNi4zMjU1NDg1ODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NjM5NzUwODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkZWJ1Z2ZzIGNvZGUgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlIChQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gZGVidWdmcyBmaWxlIG9wZXJhdGlvbnMsIHdoaWNoIGFyZSBub3QgY29yZSBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxOWVhZWM1OTk2NGI5YjIxOGM0MzgxNTdlZmFmNGZkMmQ2MTM5NmEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDQ6Mjc6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuY1xuaW5kZXggY2EyNzA0YjE4OGE1Y2YuLjVmNDY3OTYwNGE1M2Y0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuY1xuQEAgLTI4MTAsNiArMjgxMCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcdFx0XHQgICAgXHUwMDI2cnZ1X2RiZ19ucGFfbmRjX2hpdHNfbWlzc19mb3BzKTtcbiB9XG4gXG4rLyogUGVyLWxtYWMgQ0dYIGRlYnVnZnMgZmlsZXMgbmVlZCBib3RoIFJWVSBhbmQgQ0dYIGhhbmRsZTsgaW5vZGUtXHUwMDNlaV9wcml2YXRlXG4rICogcG9pbnRzIGhlcmUgc28gc2VxX2ZpbGUgb3BzIGF2b2lkIHBjaV9nZXRfZGV2aWNlKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKS5cbisgKi9cbitzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCB7XG4rXHRzdHJ1Y3QgcnZ1XHQqcnZ1O1xuK1x0dm9pZFx0XHQqY2d4ZDtcbit9O1xuK1xuICNkZWZpbmUgUFJJTlRfQ0dYX0NVTUxfTklYUlhfU1RBVFVTKGlkeCwgbmFtZSlcdFx0XHRcdFxcXG4gXHQoe1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHR1NjQgY250O1x0XHRcdFx0XHRcdFxcXG5AQCAtMjgzMiwxOCArMjg0MCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcbiBzdGF0aWMgaW50IGNneF9wcmludF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuIHtcbitcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cdTAwM2Vwcml2YXRlO1xuIFx0c3RydWN0IGNneF9saW5rX3VzZXJfaW5mbyBsaW5mbztcbitcdHN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtXHUwMDNlcnZ1O1xuIFx0c3RydWN0IG1hY19vcHMgKm1hY19vcHM7XG4tXHR2b2lkICpjZ3hkID0gcy1cdTAwM2Vwcml2YXRlO1xuK1x0dm9pZCAqY2d4ZCA9IGRjdHgtXHUwMDNlY2d4ZDtcbiBcdHU2NCB1Y2FzdCwgbWNhc3QsIGJjYXN0O1xuIFx0aW50IHN0YXQgPSAwLCBlcnIgPSAwO1xuIFx0dTY0IHR4X3N0YXQsIHJ4X3N0YXQ7XG4tXHRzdHJ1Y3QgcnZ1ICpydnU7XG4tXG4tXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tXHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbi1cdGlmICghcnZ1KVxuLVx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiBcdG1hY19vcHMgPSBnZXRfbWFjX29wcyhjZ3hkKTtcbiBcdC8qIFRoZXJlIGNhbiBiZSBubyBDR1ggZGV2aWNlcyBhdCBhbGwgKi9cbkBAIC0yOTUwLDIwICsyOTU0LDE2IEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfc3RhdCwgY2d4X3N0YXRfZGlzcGxheSwgTlVMTCk7XG4gXG4gc3RhdGljIGludCBjZ3hfcHJpbnRfZG1hY19mbHQoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZClcbiB7XG4rXHRzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqZGN0eCA9IHMtXHUwMDNlcHJpdmF0ZTtcbitcdHN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtXHUwMDNlcnZ1O1xuIFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBOVUxMO1xuLVx0dm9pZCAqY2d4ZCA9IHMtXHUwMDNlcHJpdmF0ZTtcbitcdHZvaWQgKmNneGQgPSBkY3R4LVx1MDAzZWNneGQ7XG4gXHRjaGFyICpiY2FzdCwgKm1jYXN0O1xuIFx0dTE2IGluZGV4LCBkb21haW47XG4gXHR1OCBkbWFjW0VUSF9BTEVOXTtcbi1cdHN0cnVjdCBydnUgKnJ2dTtcbiBcdHU2NCBjZmcsIG1hYztcbiBcdGludCBwZjtcbiBcbi1cdHJ2dSA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSxcbi1cdFx0XHRcdFx0ICAgICBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiwgTlVMTCkpO1xuLVx0aWYgKCFydnUpXG4tXHRcdHJldHVybiAtRU5PREVWO1xuLVxuIFx0cGYgPSBjZ3hsbWFjX3RvX3BmKHJ2dSwgY2d4X2dldF9jZ3hpZChjZ3hkKSwgbG1hY19pZCk7XG4gXHRkb21haW4gPSAyO1xuIFxuQEAgLTMwMTAsMTcgKzMwMTAsMTMgQEAgUlZVX0RFQlVHX1NFUV9GT1BTKGNneF9kbWFjX2ZsdCwgY2d4X2RtYWNfZmx0X2Rpc3BsYXksIE5VTEwpO1xuIFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X2Z3ZGF0YShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuIHtcbitcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cdTAwM2Vwcml2YXRlO1xuIFx0c3RydWN0IGNneF9sbWFjX2Z3ZGF0YV9zICpmd2RhdGE7XG4tXHR2b2lkICpjZ3hkID0gcy1cdTAwM2Vwcml2YXRlO1xuK1x0c3RydWN0IHJ2dSAqcnZ1ID0gZGN0eC1cdTAwM2VydnU7XG4rXHR2b2lkICpjZ3hkID0gZGN0eC1cdTAwM2VjZ3hkO1xuIFx0c3RydWN0IHBoeV9zICpwaHk7XG4tXHRzdHJ1Y3QgcnZ1ICpydnU7XG4gXHRpbnQgY2d4X2lkLCBpO1xuIFxuLVx0cnZ1ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuLVx0XHRcdFx0XHQgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGLCBOVUxMKSk7XG4tXHRpZiAoIXJ2dSlcbi1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tXG4gXHRpZiAoIXJ2dS1cdTAwM2Vmd2RhdGEpXG4gXHRcdHJldHVybiAtRUFHQUlOO1xuIFxuQEAgLTMxMDEsNiArMzA5Nyw3IEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfZndkYXRhLCBjZ3hfZndkYXRhX2Rpc3BsYXksIE5VTEwpO1xuIFxuIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuIHtcbitcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpjdHg7XG4gXHRzdHJ1Y3QgbWFjX29wcyAqbWFjX29wcztcbiBcdHVuc2lnbmVkIGxvbmcgbG1hY19ibWFwO1xuIFx0aW50IGksIGxtYWNfaWQ7XG5AQCAtMzEyNywyMCArMzEyNCwyOSBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX2NneF9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcdFx0cnZ1LVx1MDAzZXJ2dV9kYmcuY2d4ID0gZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLFxuIFx0XHRcdFx0XHRcdCAgICAgIHJ2dS1cdTAwM2VydnVfZGJnLmNneF9yb290KTtcbiBcbi1cdFx0Zm9yX2VhY2hfc2V0X2JpdChsbWFjX2lkLCBcdTAwMjZsbWFjX2JtYXAsIHJ2dS1cdTAwM2Vody1cdTAwM2VsbWFjX3Blcl9jZ3gpIHtcbi1cdFx0XHQvKiBsbWFjIGRlYnVnZnMgZGlyICovXG4tXHRcdFx0c3ByaW50ZihkbmFtZSwgXCJsbWFjJWRcIiwgbG1hY19pZCk7XG4tXHRcdFx0cnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyA9XG4tXHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZG5hbWUsIHJ2dS1cdTAwM2VydnVfZGJnLmNneCk7XG4tXG4tXHRcdFx0ZGVidWdmc19jcmVhdGVfZmlsZV9hdXhfbnVtKFwic3RhdHNcIiwgMDYwMCwgcnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyxcbi1cdFx0XHRcdFx0ICAgIGNneCwgbG1hY19pZCwgXHUwMDI2cnZ1X2RiZ19jZ3hfc3RhdF9mb3BzKTtcbi1cdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlX2F1eF9udW0oXCJtYWNfZmlsdGVyXCIsIDA2MDAsXG4tXHRcdFx0XHRcdCAgICBydnUtXHUwMDNlcnZ1X2RiZy5sbWFjLCBjZ3gsIGxtYWNfaWQsXG4tXHRcdFx0XHRcdCAgICBcdTAwMjZydnVfZGJnX2NneF9kbWFjX2ZsdF9mb3BzKTtcbi1cdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwiZndkYXRhXCIsIDA2MDAsXG4tXHRcdFx0XHRcdCAgICBydnUtXHUwMDNlcnZ1X2RiZy5sbWFjLCBjZ3gsXG4tXHRcdFx0XHRcdCAgICBcdTAwMjZydnVfZGJnX2NneF9md2RhdGFfZm9wcyk7XG4rXHRcdHtcbitcdFx0XHRjdHggPSBkZXZtX2t6YWxsb2MocnZ1LVx1MDAzZWRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTtcbitcdFx0XHRpZiAoIWN0eClcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRcdGN0eC1cdTAwM2VydnUgPSBydnU7XG4rXHRcdFx0Y3R4LVx1MDAzZWNneGQgPSBjZ3g7XG4rXG4rXHRcdFx0Zm9yX2VhY2hfc2V0X2JpdChsbWFjX2lkLCBcdTAwMjZsbWFjX2JtYXAsIHJ2dS1cdTAwM2Vody1cdTAwM2VsbWFjX3Blcl9jZ3gpIHtcbitcdFx0XHRcdC8qIGxtYWMgZGVidWdmcyBkaXIgKi9cbitcdFx0XHRcdHNwcmludGYoZG5hbWUsIFwibG1hYyVkXCIsIGxtYWNfaWQpO1xuK1x0XHRcdFx0cnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyA9XG4rXHRcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2RpcihkbmFtZSwgcnZ1LVx1MDAzZXJ2dV9kYmcuY2d4KTtcbitcbitcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcInN0YXRzXCIsIDA2MDAsIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsXG4rXHRcdFx0XHRcdFx0XHQgICAgY3R4LCBsbWFjX2lkLCBcdTAwMjZydnVfZGJnX2NneF9zdGF0X2ZvcHMpO1xuK1x0XHRcdFx0ZGVidWdmc19jcmVhdGVfZmlsZV9hdXhfbnVtKFwibWFjX2ZpbHRlclwiLCAwNjAwLFxuK1x0XHRcdFx0XHRcdFx0ICAgIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsIGN0eCwgbG1hY19pZCxcbitcdFx0XHRcdFx0XHRcdCAgICBcdTAwMjZydnVfZGJnX2NneF9kbWFjX2ZsdF9mb3BzKTtcbitcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcImZ3ZGF0YVwiLCAwNjAwLFxuK1x0XHRcdFx0XHRcdFx0ICAgIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsIGN0eCxcbitcdFx0XHRcdFx0XHRcdCAgICBsbWFjX2lkLCBcdTAwMjZydnVfZGJnX2NneF9md2RhdGFfZm9wcyk7XG4rXHRcdFx0fVxuIFx0XHR9XG4gXHR9XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6Mjc6MzYuMzI1NTUxNjQ2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzNDkxMTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBXb3J0aEZ1enppbmcgRGV0ZXJtaW5hdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYHJ2dV9kZWJ1Z2ZzLmNgIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb250eDIgZXRoZXJuZXQgZHJpdmVyLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgcmVtb3ZhbCBvZiB0aGUgZGlyZWN0IGBwY2lfZ2V0X2RldmljZWAgY2FsbCBhbmQgaW5zdGVhZCBwYXNzaW5nIGEgYHN0cnVjdCBydnVgIHRocm91Z2ggYSBjb250ZXh0IHN0cnVjdCB3aXRoaW4gdGhlIGRlYnVnZnMgb3BlcmF0aW9ucy4gVGhhdCdzIGEgcmVmYWN0b3IsIG1vdmluZyB0aGUgZGF0YSBhcm91bmQuIEl0J3MgY29uZmluZWQgdG8gZGVidWdmcyBmaWxlczogYHN0YXRzYCwgYG1hY19maWx0ZXJgLCBgZndkYXRhYCB3aXRoaW4gdGhlIGBsbWFjWGAgZGlyZWN0b3JpZXMuIENsZWFybHksIGl0J3MgZGVidWdmcywgYW5kICpkZWJ1Z2ZzIGNoYW5nZXMgYXJlIHVzdWFsbHkgbm90IHdvcnRoIGZ1enppbmcqLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaXM6IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0ICpkb24ndCogZnVuY3Rpb25hbGx5IGNoYW5nZSBleGVjdXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGlzICpzZWVtcyogbGlrZSBpdCBtaWdodCBmYWxsIGludG8gdGhhdCBjYXRlZ29yeSBvZiBcIm5vdCB3b3J0aCBmdXp6aW5nLFwiIGJ1dCB0aGlzIGlzIGEgKmhhcmR3YXJlKiBzcGVjaWZpYyBkcml2ZXIgZm9yIGEgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uLiBJdCBuZWVkcyBhIHNwZWNpZmljIFBDSSBkZXZpY2UgKGBQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgKS4gQ2FuIHRoaXMgZXZlbiBiZSBlbXVsYXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVU/IEFsbW9zdCBjZXJ0YWlubHkgbm90LiBJdCBpcyAqaGlnaGx5KiB1bmxpa2VseSB0aGF0IHRoaXMgZHJpdmVyLCB3aXRoIHRoYXQgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudCwgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFN0aWxsLCAqSSB3aWxsIGNoZWNrIGlmIHRoZXJlJ3MgYW55IGVtdWxhdGlvbiBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZXMqIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgbWVudGlvbiBvZiBlbXVsYXRpb24gZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2UuIElmIHRoZXJlIGlzbid0LCB0aGUgcGF0Y2ggaXMgbGlrZWx5IG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzkxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6Mjc6NDMuMTYwNDY2NTA0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NTA2MzIzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtNDYtXFx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjQ6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXFx0XFx0MHhBMDY1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjUtI2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXFx0XFx0XFx0MHhBMDYxXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI3OTQ9c3RhdGljIHZvaWQgcnZ1X2RiZ19ucGFfaW5pdChzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4MTMtLyogUGVyLWxtYWMgQ0dYIGRlYnVnZnMgZmlsZXMgbmVlZCBib3RoIFJWVSBhbmQgQ0dYIGhhbmRsZTsgaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MjgxNDogKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgxNS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQ0LSNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkZcXHRcXHQweEEwNjRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkZcXHRcXHQweEEwRjhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01OTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjU5OTpcXHRyZXR1cm4gKHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYwMC1cXHRcXHQocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9SVlVfUkVQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM9MjI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfdmZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjIzOlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTI0LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkYpIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjI3OjQ2LjcxMTE3MTQ1NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTQwODQ4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoLiBJdCdzIGZvY3VzZWQgb24gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBUaGF0IG1lYW5zIGl0J3MgdGlnaHRseSBjb3VwbGVkIHRvIGEgKnNwZWNpZmljKiBQQ0kgZGV2aWNlLiBXZSdyZSB0YWxraW5nIGFib3V0IGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAgaGVyZS4gTm8gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIG5vIG1hdHRlciBob3cgY2xldmVyLCBpcyBnb2luZyB0byBsZXQgbWUgc2ltdWxhdGUgdGhhdC4gRm9yZ2V0IGFib3V0IFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIOKAkyBubyBlbXVsYXRlZCBkZXZpY2Ugb3Igc2ltdWxhdGVkIG5ldHdvcmsgc2V0dXAgaXMgZ29pbmcgdG8gZG8gdGhlIHRyaWNrLiBGb3JnZXQgYWJvdXQgc29tZXRoaW5nIGxpa2UgbmV0ZGV2c2ltIG9yIG1hYzgwMjExX2h3c2ltIOKAkyB0aG9zZSBhcmUgdXNlbGVzcyBoZXJlLlxuXG5PbiB0b3Agb2YgdGhhdCwgdGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiBgcnZ1X2RlYnVnZnMuY2AsIGFuZCB0aGF0J3MgKmRlYnVnZnMqIGNvZGUuIEl0J3MgaGFuZGxpbmcgZGVidWcgZmlsZSBvcGVyYXRpb25zLiBJdOKAmXMgbm90IHRvdWNoaW5nIGFueSBvZiB0aGUgY29yZSBmdW5jdGlvbmFsIGxvZ2ljIG9mIHRoZSBkcml2ZXIuIFNvLCBhZnRlciBldmFsdWF0aW5nIGFsbCBvZiB0aGVzZSBjb25zaWRlcmF0aW9ucywgdGhlcmUncyBqdXN0IG5vIHBvaW50IGluIHRyeWluZyB0byBmdXp6IHRoaXMuIFRoZSBwcm9iYWJpbGl0eSBvZiBmaW5kaW5nIGFueXRoaW5nIHVzZWZ1bCBpcyBlZmZlY3RpdmVseSB6ZXJvLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgY2xlYXI6IFRoaXMgcGF0Y2ggaXMgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjQ4LCJPdXRwdXRUb2tlbnMiOjExNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDoyNzo1MS45NjUyNTkzMjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRlYnVnZnMgY29kZSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UgKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkZWJ1Z2ZzIGNvZGUgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlIChQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gZGVidWdmcyBmaWxlIG9wZXJhdGlvbnMsIHdoaWNoIGFyZSBub3QgY29yZSBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowr87r5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 03:57:54 +0000 UTC FinishedAt: 2026-06-22 04:27:53 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRlYnVnZnMgY29kZSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UgKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTllYWVjNTk5NjRiOWIyMThjNDM4MTU3ZWZhZjRmZDJkNjEzOTZhMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA0OjI3OjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jXG5pbmRleCBjYTI3MDRiMTg4YTVjZi4uNWY0Njc5NjA0YTUzZjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jXG5AQCAtMjgxMCw2ICYjNDM7MjgxMCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcdFx0XHQgICAgXHUwMDI2cnZ1X2RiZ19ucGFfbmRjX2hpdHNfbWlzc19mb3BzKTtcbiB9XG4gXG4mIzQzOy8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLVx1MDAzZWlfcHJpdmF0ZVxuJiM0MzsgKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxuJiM0MzsgKi9cbiYjNDM7c3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHgge1xuJiM0MztcdHN0cnVjdCBydnVcdCpydnU7XG4mIzQzO1x0dm9pZFx0XHQqY2d4ZDtcbiYjNDM7fTtcbiYjNDM7XG4gI2RlZmluZSBQUklOVF9DR1hfQ1VNTF9OSVhSWF9TVEFUVVMoaWR4LCBuYW1lKVx0XHRcdFx0XFxcbiBcdCh7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHU2NCBjbnQ7XHRcdFx0XHRcdFx0XFxcbkBAIC0yODMyLDE4ICYjNDM7Mjg0MCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcbiBzdGF0aWMgaW50IGNneF9wcmludF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqZGN0eCA9IHMtXHUwMDNlcHJpdmF0ZTtcbiBcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGluZm87XG4mIzQzO1x0c3RydWN0IHJ2dSAqcnZ1ID0gZGN0eC1cdTAwM2VydnU7XG4gXHRzdHJ1Y3QgbWFjX29wcyAqbWFjX29wcztcbi1cdHZvaWQgKmNneGQgPSBzLVx1MDAzZXByaXZhdGU7XG4mIzQzO1x0dm9pZCAqY2d4ZCA9IGRjdHgtXHUwMDNlY2d4ZDtcbiBcdHU2NCB1Y2FzdCwgbWNhc3QsIGJjYXN0O1xuIFx0aW50IHN0YXQgPSAwLCBlcnIgPSAwO1xuIFx0dTY0IHR4X3N0YXQsIHJ4X3N0YXQ7XG4tXHRzdHJ1Y3QgcnZ1ICpydnU7XG4tXG4tXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tXHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbi1cdGlmICghcnZ1KVxuLVx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiBcdG1hY19vcHMgPSBnZXRfbWFjX29wcyhjZ3hkKTtcbiBcdC8qIFRoZXJlIGNhbiBiZSBubyBDR1ggZGV2aWNlcyBhdCBhbGwgKi9cbkBAIC0yOTUwLDIwICYjNDM7Mjk1NCwxNiBAQCBSVlVfREVCVUdfU0VRX0ZPUFMoY2d4X3N0YXQsIGNneF9zdGF0X2Rpc3BsYXksIE5VTEwpO1xuIFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X2RtYWNfZmx0KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXG4ge1xuJiM0MztcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cdTAwM2Vwcml2YXRlO1xuJiM0MztcdHN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtXHUwMDNlcnZ1O1xuIFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBOVUxMO1xuLVx0dm9pZCAqY2d4ZCA9IHMtXHUwMDNlcHJpdmF0ZTtcbiYjNDM7XHR2b2lkICpjZ3hkID0gZGN0eC1cdTAwM2VjZ3hkO1xuIFx0Y2hhciAqYmNhc3QsICptY2FzdDtcbiBcdHUxNiBpbmRleCwgZG9tYWluO1xuIFx0dTggZG1hY1tFVEhfQUxFTl07XG4tXHRzdHJ1Y3QgcnZ1ICpydnU7XG4gXHR1NjQgY2ZnLCBtYWM7XG4gXHRpbnQgcGY7XG4gXG4tXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tXHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbi1cdGlmICghcnZ1KVxuLVx0XHRyZXR1cm4gLUVOT0RFVjtcbi1cbiBcdHBmID0gY2d4bG1hY190b19wZihydnUsIGNneF9nZXRfY2d4aWQoY2d4ZCksIGxtYWNfaWQpO1xuIFx0ZG9tYWluID0gMjtcbiBcbkBAIC0zMDEwLDE3ICYjNDM7MzAxMCwxMyBAQCBSVlVfREVCVUdfU0VRX0ZPUFMoY2d4X2RtYWNfZmx0LCBjZ3hfZG1hY19mbHRfZGlzcGxheSwgTlVMTCk7XG4gXG4gc3RhdGljIGludCBjZ3hfcHJpbnRfZndkYXRhKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXG4ge1xuJiM0MztcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cdTAwM2Vwcml2YXRlO1xuIFx0c3RydWN0IGNneF9sbWFjX2Z3ZGF0YV9zICpmd2RhdGE7XG4tXHR2b2lkICpjZ3hkID0gcy1cdTAwM2Vwcml2YXRlO1xuJiM0MztcdHN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtXHUwMDNlcnZ1O1xuJiM0MztcdHZvaWQgKmNneGQgPSBkY3R4LVx1MDAzZWNneGQ7XG4gXHRzdHJ1Y3QgcGh5X3MgKnBoeTtcbi1cdHN0cnVjdCBydnUgKnJ2dTtcbiBcdGludCBjZ3hfaWQsIGk7XG4gXG4tXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tXHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbi1cdGlmICghcnZ1KVxuLVx0XHRyZXR1cm4gLUVOT0RFVjtcbi1cbiBcdGlmICghcnZ1LVx1MDAzZWZ3ZGF0YSlcbiBcdFx0cmV0dXJuIC1FQUdBSU47XG4gXG5AQCAtMzEwMSw2ICYjNDM7MzA5Nyw3IEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfZndkYXRhLCBjZ3hfZndkYXRhX2Rpc3BsYXksIE5VTEwpO1xuIFxuIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuIHtcbiYjNDM7XHRzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqY3R4O1xuIFx0c3RydWN0IG1hY19vcHMgKm1hY19vcHM7XG4gXHR1bnNpZ25lZCBsb25nIGxtYWNfYm1hcDtcbiBcdGludCBpLCBsbWFjX2lkO1xuQEAgLTMxMjcsMjAgJiM0MzszMTI0LDI5IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuIFx0XHRydnUtXHUwMDNlcnZ1X2RiZy5jZ3ggPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZG5hbWUsXG4gXHRcdFx0XHRcdFx0ICAgICAgcnZ1LVx1MDAzZXJ2dV9kYmcuY2d4X3Jvb3QpO1xuIFxuLVx0XHRmb3JfZWFjaF9zZXRfYml0KGxtYWNfaWQsIFx1MDAyNmxtYWNfYm1hcCwgcnZ1LVx1MDAzZWh3LVx1MDAzZWxtYWNfcGVyX2NneCkge1xuLVx0XHRcdC8qIGxtYWMgZGVidWdmcyBkaXIgKi9cbi1cdFx0XHRzcHJpbnRmKGRuYW1lLCBcJiMzNDtsbWFjJWRcJiMzNDssIGxtYWNfaWQpO1xuLVx0XHRcdHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMgPVxuLVx0XHRcdFx0ZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLCBydnUtXHUwMDNlcnZ1X2RiZy5jZ3gpO1xuLVxuLVx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcJiMzNDtzdGF0c1wmIzM0OywgMDYwMCwgcnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyxcbi1cdFx0XHRcdFx0ICAgIGNneCwgbG1hY19pZCwgXHUwMDI2cnZ1X2RiZ19jZ3hfc3RhdF9mb3BzKTtcbi1cdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlX2F1eF9udW0oXCYjMzQ7bWFjX2ZpbHRlclwmIzM0OywgMDYwMCxcbi1cdFx0XHRcdFx0ICAgIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsIGNneCwgbG1hY19pZCxcbi1cdFx0XHRcdFx0ICAgIFx1MDAyNnJ2dV9kYmdfY2d4X2RtYWNfZmx0X2ZvcHMpO1xuLVx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7ZndkYXRhXCYjMzQ7LCAwNjAwLFxuLVx0XHRcdFx0XHQgICAgcnZ1LVx1MDAzZXJ2dV9kYmcubG1hYywgY2d4LFxuLVx0XHRcdFx0XHQgICAgXHUwMDI2cnZ1X2RiZ19jZ3hfZndkYXRhX2ZvcHMpO1xuJiM0MztcdFx0e1xuJiM0MztcdFx0XHRjdHggPSBkZXZtX2t6YWxsb2MocnZ1LVx1MDAzZWRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdFx0aWYgKCFjdHgpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0XHRjdHgtXHUwMDNlcnZ1ID0gcnZ1O1xuJiM0MztcdFx0XHRjdHgtXHUwMDNlY2d4ZCA9IGNneDtcbiYjNDM7XG4mIzQzO1x0XHRcdGZvcl9lYWNoX3NldF9iaXQobG1hY19pZCwgXHUwMDI2bG1hY19ibWFwLCBydnUtXHUwMDNlaHctXHUwMDNlbG1hY19wZXJfY2d4KSB7XG4mIzQzO1x0XHRcdFx0LyogbG1hYyBkZWJ1Z2ZzIGRpciAqL1xuJiM0MztcdFx0XHRcdHNwcmludGYoZG5hbWUsIFwmIzM0O2xtYWMlZFwmIzM0OywgbG1hY19pZCk7XG4mIzQzO1x0XHRcdFx0cnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyA9XG4mIzQzO1x0XHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZG5hbWUsIHJ2dS1cdTAwM2VydnVfZGJnLmNneCk7XG4mIzQzO1xuJiM0MztcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcJiMzNDtzdGF0c1wmIzM0OywgMDYwMCwgcnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgY3R4LCBsbWFjX2lkLCBcdTAwMjZydnVfZGJnX2NneF9zdGF0X2ZvcHMpO1xuJiM0MztcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcJiMzNDttYWNfZmlsdGVyXCYjMzQ7LCAwNjAwLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBydnUtXHUwMDNlcnZ1X2RiZy5sbWFjLCBjdHgsIGxtYWNfaWQsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNnJ2dV9kYmdfY2d4X2RtYWNfZmx0X2ZvcHMpO1xuJiM0MztcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcJiMzNDtmd2RhdGFcJiMzNDssIDA2MDAsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsIGN0eCxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgbG1hY19pZCwgXHUwMDI2cnZ1X2RiZ19jZ3hfZndkYXRhX2ZvcHMpO1xuJiM0MztcdFx0XHR9XG4gXHRcdH1cbiBcdH1cbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGVidWdmcyBjb2RlIGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIGRldmljZSAoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGRlYnVnZnMgZmlsZSBvcGVyYXRpb25zLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE5ZWFlYzU5OTY0YjliMjE4YzQzODE1N2VmYWY0ZmQyZDYxMzk2YTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyMiAwNDoyNzozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jCmluZGV4IGNhMjcwNGIxODhhNWNmLi41ZjQ2Nzk2MDRhNTNmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jCkBAIC0yODEwLDYgJiM0MzsyODEwLDE0IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfbnBhX2luaXQoc3RydWN0IHJ2dSAqcnZ1KQogCQkJICAgICZhbXA7cnZ1X2RiZ19ucGFfbmRjX2hpdHNfbWlzc19mb3BzKTsKIH0KIAomIzQzOy8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLSZndDtpX3ByaXZhdGUKJiM0MzsgKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLgomIzQzOyAqLwomIzQzO3N0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4IHsKJiM0MzsJc3RydWN0IHJ2dQkqcnZ1OwomIzQzOwl2b2lkCQkqY2d4ZDsKJiM0Mzt9OwomIzQzOwogI2RlZmluZSBQUklOVF9DR1hfQ1VNTF9OSVhSWF9TVEFUVVMoaWR4LCBuYW1lKQkJCQlcCiAJKHsJCQkJCQkJCVwKIAkJdTY0IGNudDsJCQkJCQlcCkBAIC0yODMyLDE4ICYjNDM7Mjg0MCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSkKIAogc3RhdGljIGludCBjZ3hfcHJpbnRfc3RhdHMoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZCkKIHsKJiM0MzsJc3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHggKmRjdHggPSBzLSZndDtwcml2YXRlOwogCXN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGluZm87CiYjNDM7CXN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtJmd0O3J2dTsKIAlzdHJ1Y3QgbWFjX29wcyAqbWFjX29wczsKLQl2b2lkICpjZ3hkID0gcy0mZ3Q7cHJpdmF0ZTsKJiM0MzsJdm9pZCAqY2d4ZCA9IGRjdHgtJmd0O2NneGQ7CiAJdTY0IHVjYXN0LCBtY2FzdCwgYmNhc3Q7CiAJaW50IHN0YXQgPSAwLCBlcnIgPSAwOwogCXU2NCB0eF9zdGF0LCByeF9zdGF0OwotCXN0cnVjdCBydnUgKnJ2dTsKLQotCXJ2dSA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwKLQkJCQkJICAgICBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiwgTlVMTCkpOwotCWlmICghcnZ1KQotCQlyZXR1cm4gLUVOT0RFVjsKIAogCW1hY19vcHMgPSBnZXRfbWFjX29wcyhjZ3hkKTsKIAkvKiBUaGVyZSBjYW4gYmUgbm8gQ0dYIGRldmljZXMgYXQgYWxsICovCkBAIC0yOTUwLDIwICYjNDM7Mjk1NCwxNiBAQCBSVlVfREVCVUdfU0VRX0ZPUFMoY2d4X3N0YXQsIGNneF9zdGF0X2Rpc3BsYXksIE5VTEwpOwogCiBzdGF0aWMgaW50IGNneF9wcmludF9kbWFjX2ZsdChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKQogewomIzQzOwlzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqZGN0eCA9IHMtJmd0O3ByaXZhdGU7CiYjNDM7CXN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtJmd0O3J2dTsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IE5VTEw7Ci0Jdm9pZCAqY2d4ZCA9IHMtJmd0O3ByaXZhdGU7CiYjNDM7CXZvaWQgKmNneGQgPSBkY3R4LSZndDtjZ3hkOwogCWNoYXIgKmJjYXN0LCAqbWNhc3Q7CiAJdTE2IGluZGV4LCBkb21haW47CiAJdTggZG1hY1tFVEhfQUxFTl07Ci0Jc3RydWN0IHJ2dSAqcnZ1OwogCXU2NCBjZmcsIG1hYzsKIAlpbnQgcGY7CiAKLQlydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sCi0JCQkJCSAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTsKLQlpZiAoIXJ2dSkKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KIAlwZiA9IGNneGxtYWNfdG9fcGYocnZ1LCBjZ3hfZ2V0X2NneGlkKGNneGQpLCBsbWFjX2lkKTsKIAlkb21haW4gPSAyOwogCkBAIC0zMDEwLDE3ICYjNDM7MzAxMCwxMyBAQCBSVlVfREVCVUdfU0VRX0ZPUFMoY2d4X2RtYWNfZmx0LCBjZ3hfZG1hY19mbHRfZGlzcGxheSwgTlVMTCk7CiAKIHN0YXRpYyBpbnQgY2d4X3ByaW50X2Z3ZGF0YShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKQogewomIzQzOwlzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqZGN0eCA9IHMtJmd0O3ByaXZhdGU7CiAJc3RydWN0IGNneF9sbWFjX2Z3ZGF0YV9zICpmd2RhdGE7Ci0Jdm9pZCAqY2d4ZCA9IHMtJmd0O3ByaXZhdGU7CiYjNDM7CXN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtJmd0O3J2dTsKJiM0MzsJdm9pZCAqY2d4ZCA9IGRjdHgtJmd0O2NneGQ7CiAJc3RydWN0IHBoeV9zICpwaHk7Ci0Jc3RydWN0IHJ2dSAqcnZ1OwogCWludCBjZ3hfaWQsIGk7CiAKLQlydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sCi0JCQkJCSAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTsKLQlpZiAoIXJ2dSkKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KIAlpZiAoIXJ2dS0mZ3Q7ZndkYXRhKQogCQlyZXR1cm4gLUVBR0FJTjsKIApAQCAtMzEwMSw2ICYjNDM7MzA5Nyw3IEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfZndkYXRhLCBjZ3hfZndkYXRhX2Rpc3BsYXksIE5VTEwpOwogCiBzdGF0aWMgdm9pZCBydnVfZGJnX2NneF9pbml0KHN0cnVjdCBydnUgKnJ2dSkKIHsKJiM0MzsJc3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHggKmN0eDsKIAlzdHJ1Y3QgbWFjX29wcyAqbWFjX29wczsKIAl1bnNpZ25lZCBsb25nIGxtYWNfYm1hcDsKIAlpbnQgaSwgbG1hY19pZDsKQEAgLTMxMjcsMjAgJiM0MzszMTI0LDI5IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KQogCQlydnUtJmd0O3J2dV9kYmcuY2d4ID0gZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLAogCQkJCQkJICAgICAgcnZ1LSZndDtydnVfZGJnLmNneF9yb290KTsKIAotCQlmb3JfZWFjaF9zZXRfYml0KGxtYWNfaWQsICZhbXA7bG1hY19ibWFwLCBydnUtJmd0O2h3LSZndDtsbWFjX3Blcl9jZ3gpIHsKLQkJCS8qIGxtYWMgZGVidWdmcyBkaXIgKi8KLQkJCXNwcmludGYoZG5hbWUsICYjMzQ7bG1hYyVkJiMzNDssIGxtYWNfaWQpOwotCQkJcnZ1LSZndDtydnVfZGJnLmxtYWMgPQotCQkJCWRlYnVnZnNfY3JlYXRlX2RpcihkbmFtZSwgcnZ1LSZndDtydnVfZGJnLmNneCk7Ci0KLQkJCWRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bSgmIzM0O3N0YXRzJiMzNDssIDA2MDAsIHJ2dS0mZ3Q7cnZ1X2RiZy5sbWFjLAotCQkJCQkgICAgY2d4LCBsbWFjX2lkLCAmYW1wO3J2dV9kYmdfY2d4X3N0YXRfZm9wcyk7Ci0JCQlkZWJ1Z2ZzX2NyZWF0ZV9maWxlX2F1eF9udW0oJiMzNDttYWNfZmlsdGVyJiMzNDssIDA2MDAsCi0JCQkJCSAgICBydnUtJmd0O3J2dV9kYmcubG1hYywgY2d4LCBsbWFjX2lkLAotCQkJCQkgICAgJmFtcDtydnVfZGJnX2NneF9kbWFjX2ZsdF9mb3BzKTsKLQkJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtmd2RhdGEmIzM0OywgMDYwMCwKLQkJCQkJICAgIHJ2dS0mZ3Q7cnZ1X2RiZy5sbWFjLCBjZ3gsCi0JCQkJCSAgICAmYW1wO3J2dV9kYmdfY2d4X2Z3ZGF0YV9mb3BzKTsKJiM0MzsJCXsKJiM0MzsJCQljdHggPSBkZXZtX2t6YWxsb2MocnZ1LSZndDtkZXYsIHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7CiYjNDM7CQkJaWYgKCFjdHgpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwomIzQzOwkJCWN0eC0mZ3Q7cnZ1ID0gcnZ1OwomIzQzOwkJCWN0eC0mZ3Q7Y2d4ZCA9IGNneDsKJiM0MzsKJiM0MzsJCQlmb3JfZWFjaF9zZXRfYml0KGxtYWNfaWQsICZhbXA7bG1hY19ibWFwLCBydnUtJmd0O2h3LSZndDtsbWFjX3Blcl9jZ3gpIHsKJiM0MzsJCQkJLyogbG1hYyBkZWJ1Z2ZzIGRpciAqLwomIzQzOwkJCQlzcHJpbnRmKGRuYW1lLCAmIzM0O2xtYWMlZCYjMzQ7LCBsbWFjX2lkKTsKJiM0MzsJCQkJcnZ1LSZndDtydnVfZGJnLmxtYWMgPQomIzQzOwkJCQkJZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLCBydnUtJmd0O3J2dV9kYmcuY2d4KTsKJiM0MzsKJiM0MzsJCQkJZGVidWdmc19jcmVhdGVfZmlsZV9hdXhfbnVtKCYjMzQ7c3RhdHMmIzM0OywgMDYwMCwgcnZ1LSZndDtydnVfZGJnLmxtYWMsCiYjNDM7CQkJCQkJCSAgICBjdHgsIGxtYWNfaWQsICZhbXA7cnZ1X2RiZ19jZ3hfc3RhdF9mb3BzKTsKJiM0MzsJCQkJZGVidWdmc19jcmVhdGVfZmlsZV9hdXhfbnVtKCYjMzQ7bWFjX2ZpbHRlciYjMzQ7LCAwNjAwLAomIzQzOwkJCQkJCQkgICAgcnZ1LSZndDtydnVfZGJnLmxtYWMsIGN0eCwgbG1hY19pZCwKJiM0MzsJCQkJCQkJICAgICZhbXA7cnZ1X2RiZ19jZ3hfZG1hY19mbHRfZm9wcyk7CiYjNDM7CQkJCWRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bSgmIzM0O2Z3ZGF0YSYjMzQ7LCAwNjAwLAomIzQzOwkJCQkJCQkgICAgcnZ1LSZndDtydnVfZGJnLmxtYWMsIGN0eCwKJiM0MzsJCQkJCQkJICAgIGxtYWNfaWQsICZhbXA7cnZ1X2RiZ19jZ3hfZndkYXRhX2ZvcHMpOwomIzQzOwkJCX0KIAkJfQogCX0KIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc5MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDQ1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBXb3J0aEZ1enppbmcgRGV0ZXJtaW5hdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgcnZ1X2RlYnVnZnMuY2Agd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvbnR4MiBldGhlcm5ldCBkcml2ZXIuIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBkaXJlY3QgYHBjaV9nZXRfZGV2aWNlYCBjYWxsIGFuZCBpbnN0ZWFkIHBhc3NpbmcgYSBgc3RydWN0IHJ2dWAgdGhyb3VnaCBhIGNvbnRleHQgc3RydWN0IHdpdGhpbiB0aGUgZGVidWdmcyBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIGEgcmVmYWN0b3IsIG1vdmluZyB0aGUgZGF0YSBhcm91bmQuIEl0JiMzOTtzIGNvbmZpbmVkIHRvIGRlYnVnZnMgZmlsZXM6IGBzdGF0c2AsIGBtYWNfZmlsdGVyYCwgYGZ3ZGF0YWAgd2l0aGluIHRoZSBgbG1hY1hgIGRpcmVjdG9yaWVzLiBDbGVhcmx5LCBpdCYjMzk7cyBkZWJ1Z2ZzLCBhbmQgKmRlYnVnZnMgY2hhbmdlcyBhcmUgdXN1YWxseSBub3Qgd29ydGggZnV6emluZyouCgpOb3csIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaXM6IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0ICpkb24mIzM5O3QqIGZ1bmN0aW9uYWxseSBjaGFuZ2UgZXhlY3V0aW9uLCBvciB1bnJlYWNoYWJsZSBjb2RlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoaXMgKnNlZW1zKiBsaWtlIGl0IG1pZ2h0IGZhbGwgaW50byB0aGF0IGNhdGVnb3J5IG9mICYjMzQ7bm90IHdvcnRoIGZ1enppbmcsJiMzNDsgYnV0IHRoaXMgaXMgYSAqaGFyZHdhcmUqIHNwZWNpZmljIGRyaXZlciBmb3IgYSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24uIEl0IG5lZWRzIGEgc3BlY2lmaWMgUENJIGRldmljZSAoYFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmApLiBDYW4gdGhpcyBldmVuIGJlIGVtdWxhdGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVT8gQWxtb3N0IGNlcnRhaW5seSBub3QuIEl0IGlzICpoaWdobHkqIHVubGlrZWx5IHRoYXQgdGhpcyBkcml2ZXIsIHdpdGggdGhhdCB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50LCBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU3RpbGwsICpJIHdpbGwgY2hlY2sgaWYgdGhlcmUmIzM5O3MgYW55IGVtdWxhdGlvbiBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZXMqIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgbWVudGlvbiBvZiBlbXVsYXRpb24gZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2UuIElmIHRoZXJlIGlzbiYjMzk7dCwgdGhlIHBhdGNoIGlzIGxpa2VseSBub3Qgd29ydGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz00ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcnZ1X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzo0NTpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy00Ni1cdHsgMCwgfSAgLyogZW5kIG9mIHRhYmxlICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI0OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXHRcdDB4QTA2NVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjUtI2RlZmluZVx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcdFx0XHQweEEwNjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI3OTQ9c3RhdGljIHZvaWQgcnZ1X2RiZ19ucGFfaW5pdChzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODEzLS8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLVx1MDAzZWlfcHJpdmF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODE0OiAqIHBvaW50cyBoZXJlIHNvIHNlcV9maWxlIG9wcyBhdm9pZCBwY2lfZ2V0X2RldmljZShQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4MTUtICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDQtI2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRlx0XHQweEEwNjRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjQ1OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRlx0XHQweEEwRjhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1OTk6XHRyZXR1cm4gKHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MDAtXHRcdChwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfUlZVX1JFUCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzoyMzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjQtXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDgKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyBmb2N1c2VkIG9uIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLCBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlci4gVGhhdCBtZWFucyBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgdG8gYSAqc3BlY2lmaWMqIFBDSSBkZXZpY2UuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAgaGVyZS4gTm8gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIG5vIG1hdHRlciBob3cgY2xldmVyLCBpcyBnb2luZyB0byBsZXQgbWUgc2ltdWxhdGUgdGhhdC4gRm9yZ2V0IGFib3V0IFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIOKAkyBubyBlbXVsYXRlZCBkZXZpY2Ugb3Igc2ltdWxhdGVkIG5ldHdvcmsgc2V0dXAgaXMgZ29pbmcgdG8gZG8gdGhlIHRyaWNrLiBGb3JnZXQgYWJvdXQgc29tZXRoaW5nIGxpa2UgbmV0ZGV2c2ltIG9yIG1hYzgwMjExX2h3c2ltIOKAkyB0aG9zZSBhcmUgdXNlbGVzcyBoZXJlLgoKT24gdG9wIG9mIHRoYXQsIHRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSB3aXRoaW4gYHJ2dV9kZWJ1Z2ZzLmNgLCBhbmQgdGhhdCYjMzk7cyAqZGVidWdmcyogY29kZS4gSXQmIzM5O3MgaGFuZGxpbmcgZGVidWcgZmlsZSBvcGVyYXRpb25zLiBJdOKAmXMgbm90IHRvdWNoaW5nIGFueSBvZiB0aGUgY29yZSBmdW5jdGlvbmFsIGxvZ2ljIG9mIHRoZSBkcml2ZXIuIFNvLCBhZnRlciBldmFsdWF0aW5nIGFsbCBvZiB0aGVzZSBjb25zaWRlcmF0aW9ucywgdGhlcmUmIzM5O3MganVzdCBubyBwb2ludCBpbiB0cnlpbmcgdG8gZnV6eiB0aGlzLiBUaGUgcHJvYmFiaWxpdHkgb2YgZmluZGluZyBhbnl0aGluZyB1c2VmdWwgaXMgZWZmZWN0aXZlbHkgemVyby4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogVGhpcyBwYXRjaCBpcyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGVidWdmcyBjb2RlIGZvciB0aGUgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIGEgcGh5c2ljYWwgUENJIGRldmljZSAoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIGFuZCBjYW5ub3QgYmUgcmVhY2hlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGRlYnVnZnMgZmlsZSBvcGVyYXRpb25zLCB3aGljaCBhcmUgbm90IGNvcmUgZnVuY3Rpb25hbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRlYnVnZnMgY29kZSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UgKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6Mjc6MzUuNzQ0ODYzODAxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMjA0NTU4NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRlYnVnZnMgY29kZSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UgKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDoyNzozNS43NDQ4OTIzOTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTQ3ODA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE5ZWFlYzU5OTY0YjliMjE4YzQzODE1N2VmYWY0ZmQyZDYxMzk2YTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDQ6Mjc6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmNcXG5pbmRleCBjYTI3MDRiMTg4YTVjZi4uNWY0Njc5NjA0YTUzZjQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmNcXG5AQCAtMjgxMCw2ICsyODEwLDE0IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfbnBhX2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxcbiBcXHRcXHRcXHQgICAgXFx1MDAyNnJ2dV9kYmdfbnBhX25kY19oaXRzX21pc3NfZm9wcyk7XFxuIH1cXG4gXFxuKy8qIFBlci1sbWFjIENHWCBkZWJ1Z2ZzIGZpbGVzIG5lZWQgYm90aCBSVlUgYW5kIENHWCBoYW5kbGU7IGlub2RlLVxcdTAwM2VpX3ByaXZhdGVcXG4rICogcG9pbnRzIGhlcmUgc28gc2VxX2ZpbGUgb3BzIGF2b2lkIHBjaV9nZXRfZGV2aWNlKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKS5cXG4rICovXFxuK3N0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4IHtcXG4rXFx0c3RydWN0IHJ2dVxcdCpydnU7XFxuK1xcdHZvaWRcXHRcXHQqY2d4ZDtcXG4rfTtcXG4rXFxuICNkZWZpbmUgUFJJTlRfQ0dYX0NVTUxfTklYUlhfU1RBVFVTKGlkeCwgbmFtZSlcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdCh7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHR1NjQgY250O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjgzMiwxOCArMjg0MCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcXG4gXFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXFxuIHtcXG4rXFx0c3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHggKmRjdHggPSBzLVxcdTAwM2Vwcml2YXRlO1xcbiBcXHRzdHJ1Y3QgY2d4X2xpbmtfdXNlcl9pbmZvIGxpbmZvO1xcbitcXHRzdHJ1Y3QgcnZ1ICpydnUgPSBkY3R4LVxcdTAwM2VydnU7XFxuIFxcdHN0cnVjdCBtYWNfb3BzICptYWNfb3BzO1xcbi1cXHR2b2lkICpjZ3hkID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG4rXFx0dm9pZCAqY2d4ZCA9IGRjdHgtXFx1MDAzZWNneGQ7XFxuIFxcdHU2NCB1Y2FzdCwgbWNhc3QsIGJjYXN0O1xcbiBcXHRpbnQgc3RhdCA9IDAsIGVyciA9IDA7XFxuIFxcdHU2NCB0eF9zdGF0LCByeF9zdGF0O1xcbi1cXHRzdHJ1Y3QgcnZ1ICpydnU7XFxuLVxcbi1cXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcXG4tXFx0aWYgKCFydnUpXFxuLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbiBcXG4gXFx0bWFjX29wcyA9IGdldF9tYWNfb3BzKGNneGQpO1xcbiBcXHQvKiBUaGVyZSBjYW4gYmUgbm8gQ0dYIGRldmljZXMgYXQgYWxsICovXFxuQEAgLTI5NTAsMjAgKzI5NTQsMTYgQEAgUlZVX0RFQlVHX1NFUV9GT1BTKGNneF9zdGF0LCBjZ3hfc3RhdF9kaXNwbGF5LCBOVUxMKTtcXG4gXFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X2RtYWNfZmx0KHN0cnVjdCBzZXFfZmlsZSAqcywgaW50IGxtYWNfaWQpXFxuIHtcXG4rXFx0c3RydWN0IHJ2dV9jZ3hfbG1hY19kYmdmc19jdHggKmRjdHggPSBzLVxcdTAwM2Vwcml2YXRlO1xcbitcXHRzdHJ1Y3QgcnZ1ICpydnUgPSBkY3R4LVxcdTAwM2VydnU7XFxuIFxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gTlVMTDtcXG4tXFx0dm9pZCAqY2d4ZCA9IHMtXFx1MDAzZXByaXZhdGU7XFxuK1xcdHZvaWQgKmNneGQgPSBkY3R4LVxcdTAwM2VjZ3hkO1xcbiBcXHRjaGFyICpiY2FzdCwgKm1jYXN0O1xcbiBcXHR1MTYgaW5kZXgsIGRvbWFpbjtcXG4gXFx0dTggZG1hY1tFVEhfQUxFTl07XFxuLVxcdHN0cnVjdCBydnUgKnJ2dTtcXG4gXFx0dTY0IGNmZywgbWFjO1xcbiBcXHRpbnQgcGY7XFxuIFxcbi1cXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcXG4tXFx0aWYgKCFydnUpXFxuLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbi1cXG4gXFx0cGYgPSBjZ3hsbWFjX3RvX3BmKHJ2dSwgY2d4X2dldF9jZ3hpZChjZ3hkKSwgbG1hY19pZCk7XFxuIFxcdGRvbWFpbiA9IDI7XFxuIFxcbkBAIC0zMDEwLDE3ICszMDEwLDEzIEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfZG1hY19mbHQsIGNneF9kbWFjX2ZsdF9kaXNwbGF5LCBOVUxMKTtcXG4gXFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X2Z3ZGF0YShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxcbiB7XFxuK1xcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cXHUwMDNlcHJpdmF0ZTtcXG4gXFx0c3RydWN0IGNneF9sbWFjX2Z3ZGF0YV9zICpmd2RhdGE7XFxuLVxcdHZvaWQgKmNneGQgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbitcXHRzdHJ1Y3QgcnZ1ICpydnUgPSBkY3R4LVxcdTAwM2VydnU7XFxuK1xcdHZvaWQgKmNneGQgPSBkY3R4LVxcdTAwM2VjZ3hkO1xcbiBcXHRzdHJ1Y3QgcGh5X3MgKnBoeTtcXG4tXFx0c3RydWN0IHJ2dSAqcnZ1O1xcbiBcXHRpbnQgY2d4X2lkLCBpO1xcbiBcXG4tXFx0cnZ1ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGLCBOVUxMKSk7XFxuLVxcdGlmICghcnZ1KVxcbi1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4tXFxuIFxcdGlmICghcnZ1LVxcdTAwM2Vmd2RhdGEpXFxuIFxcdFxcdHJldHVybiAtRUFHQUlOO1xcbiBcXG5AQCAtMzEwMSw2ICszMDk3LDcgQEAgUlZVX0RFQlVHX1NFUV9GT1BTKGNneF9md2RhdGEsIGNneF9md2RhdGFfZGlzcGxheSwgTlVMTCk7XFxuIFxcbiBzdGF0aWMgdm9pZCBydnVfZGJnX2NneF9pbml0KHN0cnVjdCBydnUgKnJ2dSlcXG4ge1xcbitcXHRzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqY3R4O1xcbiBcXHRzdHJ1Y3QgbWFjX29wcyAqbWFjX29wcztcXG4gXFx0dW5zaWduZWQgbG9uZyBsbWFjX2JtYXA7XFxuIFxcdGludCBpLCBsbWFjX2lkO1xcbkBAIC0zMTI3LDIwICszMTI0LDI5IEBAIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxcbiBcXHRcXHRydnUtXFx1MDAzZXJ2dV9kYmcuY2d4ID0gZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBydnUtXFx1MDAzZXJ2dV9kYmcuY2d4X3Jvb3QpO1xcbiBcXG4tXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdChsbWFjX2lkLCBcXHUwMDI2bG1hY19ibWFwLCBydnUtXFx1MDAzZWh3LVxcdTAwM2VsbWFjX3Blcl9jZ3gpIHtcXG4tXFx0XFx0XFx0LyogbG1hYyBkZWJ1Z2ZzIGRpciAqL1xcbi1cXHRcXHRcXHRzcHJpbnRmKGRuYW1lLCBcXFwibG1hYyVkXFxcIiwgbG1hY19pZCk7XFxuLVxcdFxcdFxcdHJ2dS1cXHUwMDNlcnZ1X2RiZy5sbWFjID1cXG4tXFx0XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLCBydnUtXFx1MDAzZXJ2dV9kYmcuY2d4KTtcXG4tXFxuLVxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcXFwic3RhdHNcXFwiLCAwNjAwLCBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIGNneCwgbG1hY19pZCwgXFx1MDAyNnJ2dV9kYmdfY2d4X3N0YXRfZm9wcyk7XFxuLVxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcXFwibWFjX2ZpbHRlclxcXCIsIDA2MDAsXFxuLVxcdFxcdFxcdFxcdFxcdCAgICBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYywgY2d4LCBsbWFjX2lkLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnJ2dV9kYmdfY2d4X2RtYWNfZmx0X2ZvcHMpO1xcbi1cXHRcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJmd2RhdGFcXFwiLCAwNjAwLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgcnZ1LVxcdTAwM2VydnVfZGJnLmxtYWMsIGNneCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZydnVfZGJnX2NneF9md2RhdGFfZm9wcyk7XFxuK1xcdFxcdHtcXG4rXFx0XFx0XFx0Y3R4ID0gZGV2bV9remFsbG9jKHJ2dS1cXHUwMDNlZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpO1xcbitcXHRcXHRcXHRpZiAoIWN0eClcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHRcXHRjdHgtXFx1MDAzZXJ2dSA9IHJ2dTtcXG4rXFx0XFx0XFx0Y3R4LVxcdTAwM2VjZ3hkID0gY2d4O1xcbitcXG4rXFx0XFx0XFx0Zm9yX2VhY2hfc2V0X2JpdChsbWFjX2lkLCBcXHUwMDI2bG1hY19ibWFwLCBydnUtXFx1MDAzZWh3LVxcdTAwM2VsbWFjX3Blcl9jZ3gpIHtcXG4rXFx0XFx0XFx0XFx0LyogbG1hYyBkZWJ1Z2ZzIGRpciAqL1xcbitcXHRcXHRcXHRcXHRzcHJpbnRmKGRuYW1lLCBcXFwibG1hYyVkXFxcIiwgbG1hY19pZCk7XFxuK1xcdFxcdFxcdFxcdHJ2dS1cXHUwMDNlcnZ1X2RiZy5sbWFjID1cXG4rXFx0XFx0XFx0XFx0XFx0ZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLCBydnUtXFx1MDAzZXJ2dV9kYmcuY2d4KTtcXG4rXFxuK1xcdFxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcXFwic3RhdHNcXFwiLCAwNjAwLCBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGN0eCwgbG1hY19pZCwgXFx1MDAyNnJ2dV9kYmdfY2d4X3N0YXRfZm9wcyk7XFxuK1xcdFxcdFxcdFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcXFwibWFjX2ZpbHRlclxcXCIsIDA2MDAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYywgY3R4LCBsbWFjX2lkLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFx1MDAyNnJ2dV9kYmdfY2d4X2RtYWNfZmx0X2ZvcHMpO1xcbitcXHRcXHRcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlX2F1eF9udW0oXFxcImZ3ZGF0YVxcXCIsIDA2MDAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBydnUtXFx1MDAzZXJ2dV9kYmcubG1hYywgY3R4LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgbG1hY19pZCwgXFx1MDAyNnJ2dV9kYmdfY2d4X2Z3ZGF0YV9mb3BzKTtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDoyNzozNi4zMjU1NDg1ODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NjM5NzUwODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkZWJ1Z2ZzIGNvZGUgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlIChQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gZGVidWdmcyBmaWxlIG9wZXJhdGlvbnMsIHdoaWNoIGFyZSBub3QgY29yZSBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxOWVhZWM1OTk2NGI5YjIxOGM0MzgxNTdlZmFmNGZkMmQ2MTM5NmEwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDQ6Mjc6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuY1xuaW5kZXggY2EyNzA0YjE4OGE1Y2YuLjVmNDY3OTYwNGE1M2Y0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuY1xuQEAgLTI4MTAsNiArMjgxMCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcdFx0XHQgICAgXHUwMDI2cnZ1X2RiZ19ucGFfbmRjX2hpdHNfbWlzc19mb3BzKTtcbiB9XG4gXG4rLyogUGVyLWxtYWMgQ0dYIGRlYnVnZnMgZmlsZXMgbmVlZCBib3RoIFJWVSBhbmQgQ0dYIGhhbmRsZTsgaW5vZGUtXHUwMDNlaV9wcml2YXRlXG4rICogcG9pbnRzIGhlcmUgc28gc2VxX2ZpbGUgb3BzIGF2b2lkIHBjaV9nZXRfZGV2aWNlKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKS5cbisgKi9cbitzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCB7XG4rXHRzdHJ1Y3QgcnZ1XHQqcnZ1O1xuK1x0dm9pZFx0XHQqY2d4ZDtcbit9O1xuK1xuICNkZWZpbmUgUFJJTlRfQ0dYX0NVTUxfTklYUlhfU1RBVFVTKGlkeCwgbmFtZSlcdFx0XHRcdFxcXG4gXHQoe1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHR1NjQgY250O1x0XHRcdFx0XHRcdFxcXG5AQCAtMjgzMiwxOCArMjg0MCwxNCBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcbiBzdGF0aWMgaW50IGNneF9wcmludF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuIHtcbitcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cdTAwM2Vwcml2YXRlO1xuIFx0c3RydWN0IGNneF9saW5rX3VzZXJfaW5mbyBsaW5mbztcbitcdHN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtXHUwMDNlcnZ1O1xuIFx0c3RydWN0IG1hY19vcHMgKm1hY19vcHM7XG4tXHR2b2lkICpjZ3hkID0gcy1cdTAwM2Vwcml2YXRlO1xuK1x0dm9pZCAqY2d4ZCA9IGRjdHgtXHUwMDNlY2d4ZDtcbiBcdHU2NCB1Y2FzdCwgbWNhc3QsIGJjYXN0O1xuIFx0aW50IHN0YXQgPSAwLCBlcnIgPSAwO1xuIFx0dTY0IHR4X3N0YXQsIHJ4X3N0YXQ7XG4tXHRzdHJ1Y3QgcnZ1ICpydnU7XG4tXG4tXHRydnUgPSBwY2lfZ2V0X2RydmRhdGEocGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG4tXHRcdFx0XHRcdCAgICAgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYsIE5VTEwpKTtcbi1cdGlmICghcnZ1KVxuLVx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiBcdG1hY19vcHMgPSBnZXRfbWFjX29wcyhjZ3hkKTtcbiBcdC8qIFRoZXJlIGNhbiBiZSBubyBDR1ggZGV2aWNlcyBhdCBhbGwgKi9cbkBAIC0yOTUwLDIwICsyOTU0LDE2IEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfc3RhdCwgY2d4X3N0YXRfZGlzcGxheSwgTlVMTCk7XG4gXG4gc3RhdGljIGludCBjZ3hfcHJpbnRfZG1hY19mbHQoc3RydWN0IHNlcV9maWxlICpzLCBpbnQgbG1hY19pZClcbiB7XG4rXHRzdHJ1Y3QgcnZ1X2NneF9sbWFjX2RiZ2ZzX2N0eCAqZGN0eCA9IHMtXHUwMDNlcHJpdmF0ZTtcbitcdHN0cnVjdCBydnUgKnJ2dSA9IGRjdHgtXHUwMDNlcnZ1O1xuIFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSBOVUxMO1xuLVx0dm9pZCAqY2d4ZCA9IHMtXHUwMDNlcHJpdmF0ZTtcbitcdHZvaWQgKmNneGQgPSBkY3R4LVx1MDAzZWNneGQ7XG4gXHRjaGFyICpiY2FzdCwgKm1jYXN0O1xuIFx0dTE2IGluZGV4LCBkb21haW47XG4gXHR1OCBkbWFjW0VUSF9BTEVOXTtcbi1cdHN0cnVjdCBydnUgKnJ2dTtcbiBcdHU2NCBjZmcsIG1hYztcbiBcdGludCBwZjtcbiBcbi1cdHJ2dSA9IHBjaV9nZXRfZHJ2ZGF0YShwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSxcbi1cdFx0XHRcdFx0ICAgICBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRiwgTlVMTCkpO1xuLVx0aWYgKCFydnUpXG4tXHRcdHJldHVybiAtRU5PREVWO1xuLVxuIFx0cGYgPSBjZ3hsbWFjX3RvX3BmKHJ2dSwgY2d4X2dldF9jZ3hpZChjZ3hkKSwgbG1hY19pZCk7XG4gXHRkb21haW4gPSAyO1xuIFxuQEAgLTMwMTAsMTcgKzMwMTAsMTMgQEAgUlZVX0RFQlVHX1NFUV9GT1BTKGNneF9kbWFjX2ZsdCwgY2d4X2RtYWNfZmx0X2Rpc3BsYXksIE5VTEwpO1xuIFxuIHN0YXRpYyBpbnQgY2d4X3ByaW50X2Z3ZGF0YShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGludCBsbWFjX2lkKVxuIHtcbitcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpkY3R4ID0gcy1cdTAwM2Vwcml2YXRlO1xuIFx0c3RydWN0IGNneF9sbWFjX2Z3ZGF0YV9zICpmd2RhdGE7XG4tXHR2b2lkICpjZ3hkID0gcy1cdTAwM2Vwcml2YXRlO1xuK1x0c3RydWN0IHJ2dSAqcnZ1ID0gZGN0eC1cdTAwM2VydnU7XG4rXHR2b2lkICpjZ3hkID0gZGN0eC1cdTAwM2VjZ3hkO1xuIFx0c3RydWN0IHBoeV9zICpwaHk7XG4tXHRzdHJ1Y3QgcnZ1ICpydnU7XG4gXHRpbnQgY2d4X2lkLCBpO1xuIFxuLVx0cnZ1ID0gcGNpX2dldF9kcnZkYXRhKHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuLVx0XHRcdFx0XHQgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGLCBOVUxMKSk7XG4tXHRpZiAoIXJ2dSlcbi1cdFx0cmV0dXJuIC1FTk9ERVY7XG4tXG4gXHRpZiAoIXJ2dS1cdTAwM2Vmd2RhdGEpXG4gXHRcdHJldHVybiAtRUFHQUlOO1xuIFxuQEAgLTMxMDEsNiArMzA5Nyw3IEBAIFJWVV9ERUJVR19TRVFfRk9QUyhjZ3hfZndkYXRhLCBjZ3hfZndkYXRhX2Rpc3BsYXksIE5VTEwpO1xuIFxuIHN0YXRpYyB2b2lkIHJ2dV9kYmdfY2d4X2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuIHtcbitcdHN0cnVjdCBydnVfY2d4X2xtYWNfZGJnZnNfY3R4ICpjdHg7XG4gXHRzdHJ1Y3QgbWFjX29wcyAqbWFjX29wcztcbiBcdHVuc2lnbmVkIGxvbmcgbG1hY19ibWFwO1xuIFx0aW50IGksIGxtYWNfaWQ7XG5AQCAtMzEyNywyMCArMzEyNCwyOSBAQCBzdGF0aWMgdm9pZCBydnVfZGJnX2NneF9pbml0KHN0cnVjdCBydnUgKnJ2dSlcbiBcdFx0cnZ1LVx1MDAzZXJ2dV9kYmcuY2d4ID0gZGVidWdmc19jcmVhdGVfZGlyKGRuYW1lLFxuIFx0XHRcdFx0XHRcdCAgICAgIHJ2dS1cdTAwM2VydnVfZGJnLmNneF9yb290KTtcbiBcbi1cdFx0Zm9yX2VhY2hfc2V0X2JpdChsbWFjX2lkLCBcdTAwMjZsbWFjX2JtYXAsIHJ2dS1cdTAwM2Vody1cdTAwM2VsbWFjX3Blcl9jZ3gpIHtcbi1cdFx0XHQvKiBsbWFjIGRlYnVnZnMgZGlyICovXG4tXHRcdFx0c3ByaW50ZihkbmFtZSwgXCJsbWFjJWRcIiwgbG1hY19pZCk7XG4tXHRcdFx0cnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyA9XG4tXHRcdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZG5hbWUsIHJ2dS1cdTAwM2VydnVfZGJnLmNneCk7XG4tXG4tXHRcdFx0ZGVidWdmc19jcmVhdGVfZmlsZV9hdXhfbnVtKFwic3RhdHNcIiwgMDYwMCwgcnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyxcbi1cdFx0XHRcdFx0ICAgIGNneCwgbG1hY19pZCwgXHUwMDI2cnZ1X2RiZ19jZ3hfc3RhdF9mb3BzKTtcbi1cdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlX2F1eF9udW0oXCJtYWNfZmlsdGVyXCIsIDA2MDAsXG4tXHRcdFx0XHRcdCAgICBydnUtXHUwMDNlcnZ1X2RiZy5sbWFjLCBjZ3gsIGxtYWNfaWQsXG4tXHRcdFx0XHRcdCAgICBcdTAwMjZydnVfZGJnX2NneF9kbWFjX2ZsdF9mb3BzKTtcbi1cdFx0XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwiZndkYXRhXCIsIDA2MDAsXG4tXHRcdFx0XHRcdCAgICBydnUtXHUwMDNlcnZ1X2RiZy5sbWFjLCBjZ3gsXG4tXHRcdFx0XHRcdCAgICBcdTAwMjZydnVfZGJnX2NneF9md2RhdGFfZm9wcyk7XG4rXHRcdHtcbitcdFx0XHRjdHggPSBkZXZtX2t6YWxsb2MocnZ1LVx1MDAzZWRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTtcbitcdFx0XHRpZiAoIWN0eClcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHRcdGN0eC1cdTAwM2VydnUgPSBydnU7XG4rXHRcdFx0Y3R4LVx1MDAzZWNneGQgPSBjZ3g7XG4rXG4rXHRcdFx0Zm9yX2VhY2hfc2V0X2JpdChsbWFjX2lkLCBcdTAwMjZsbWFjX2JtYXAsIHJ2dS1cdTAwM2Vody1cdTAwM2VsbWFjX3Blcl9jZ3gpIHtcbitcdFx0XHRcdC8qIGxtYWMgZGVidWdmcyBkaXIgKi9cbitcdFx0XHRcdHNwcmludGYoZG5hbWUsIFwibG1hYyVkXCIsIGxtYWNfaWQpO1xuK1x0XHRcdFx0cnZ1LVx1MDAzZXJ2dV9kYmcubG1hYyA9XG4rXHRcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2RpcihkbmFtZSwgcnZ1LVx1MDAzZXJ2dV9kYmcuY2d4KTtcbitcbitcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcInN0YXRzXCIsIDA2MDAsIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsXG4rXHRcdFx0XHRcdFx0XHQgICAgY3R4LCBsbWFjX2lkLCBcdTAwMjZydnVfZGJnX2NneF9zdGF0X2ZvcHMpO1xuK1x0XHRcdFx0ZGVidWdmc19jcmVhdGVfZmlsZV9hdXhfbnVtKFwibWFjX2ZpbHRlclwiLCAwNjAwLFxuK1x0XHRcdFx0XHRcdFx0ICAgIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsIGN0eCwgbG1hY19pZCxcbitcdFx0XHRcdFx0XHRcdCAgICBcdTAwMjZydnVfZGJnX2NneF9kbWFjX2ZsdF9mb3BzKTtcbitcdFx0XHRcdGRlYnVnZnNfY3JlYXRlX2ZpbGVfYXV4X251bShcImZ3ZGF0YVwiLCAwNjAwLFxuK1x0XHRcdFx0XHRcdFx0ICAgIHJ2dS1cdTAwM2VydnVfZGJnLmxtYWMsIGN0eCxcbitcdFx0XHRcdFx0XHRcdCAgICBsbWFjX2lkLCBcdTAwMjZydnVfZGJnX2NneF9md2RhdGFfZm9wcyk7XG4rXHRcdFx0fVxuIFx0XHR9XG4gXHR9XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6Mjc6MzYuMzI1NTUxNjQ2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzNDkxMTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBXb3J0aEZ1enppbmcgRGV0ZXJtaW5hdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYHJ2dV9kZWJ1Z2ZzLmNgIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb250eDIgZXRoZXJuZXQgZHJpdmVyLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgcmVtb3ZhbCBvZiB0aGUgZGlyZWN0IGBwY2lfZ2V0X2RldmljZWAgY2FsbCBhbmQgaW5zdGVhZCBwYXNzaW5nIGEgYHN0cnVjdCBydnVgIHRocm91Z2ggYSBjb250ZXh0IHN0cnVjdCB3aXRoaW4gdGhlIGRlYnVnZnMgb3BlcmF0aW9ucy4gVGhhdCdzIGEgcmVmYWN0b3IsIG1vdmluZyB0aGUgZGF0YSBhcm91bmQuIEl0J3MgY29uZmluZWQgdG8gZGVidWdmcyBmaWxlczogYHN0YXRzYCwgYG1hY19maWx0ZXJgLCBgZndkYXRhYCB3aXRoaW4gdGhlIGBsbWFjWGAgZGlyZWN0b3JpZXMuIENsZWFybHksIGl0J3MgZGVidWdmcywgYW5kICpkZWJ1Z2ZzIGNoYW5nZXMgYXJlIHVzdWFsbHkgbm90IHdvcnRoIGZ1enppbmcqLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaXM6IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0ICpkb24ndCogZnVuY3Rpb25hbGx5IGNoYW5nZSBleGVjdXRpb24sIG9yIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGlzICpzZWVtcyogbGlrZSBpdCBtaWdodCBmYWxsIGludG8gdGhhdCBjYXRlZ29yeSBvZiBcIm5vdCB3b3J0aCBmdXp6aW5nLFwiIGJ1dCB0aGlzIGlzIGEgKmhhcmR3YXJlKiBzcGVjaWZpYyBkcml2ZXIgZm9yIGEgTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uLiBJdCBuZWVkcyBhIHNwZWNpZmljIFBDSSBkZXZpY2UgKGBQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZgKS4gQ2FuIHRoaXMgZXZlbiBiZSBlbXVsYXRlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVU/IEFsbW9zdCBjZXJ0YWlubHkgbm90LiBJdCBpcyAqaGlnaGx5KiB1bmxpa2VseSB0aGF0IHRoaXMgZHJpdmVyLCB3aXRoIHRoYXQgdmVyeSBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudCwgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFN0aWxsLCAqSSB3aWxsIGNoZWNrIGlmIHRoZXJlJ3MgYW55IGVtdWxhdGlvbiBieSBncmVwcGluZyB0aGUga2VybmVsIHNvdXJjZXMqIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgbWVudGlvbiBvZiBlbXVsYXRpb24gZm9yIHRoaXMgcGFydGljdWxhciBkZXZpY2UuIElmIHRoZXJlIGlzbid0LCB0aGUgcGF0Y2ggaXMgbGlrZWx5IG5vdCB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzkxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6Mjc6NDMuMTYwNDY2NTA0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1NTA2MzIzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtNDYtXFx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1Lmg6MjQ6I2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGXFx0XFx0MHhBMDY1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjUtI2RlZmluZVxcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXFx0XFx0XFx0MHhBMDYxXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jPTI3OTQ9c3RhdGljIHZvaWQgcnZ1X2RiZ19ucGFfaW5pdChzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfZGVidWdmcy5jLTI4MTMtLyogUGVyLWxtYWMgQ0dYIGRlYnVnZnMgZmlsZXMgbmVlZCBib3RoIFJWVSBhbmQgQ0dYIGhhbmRsZTsgaW5vZGUtXFx1MDAzZWlfcHJpdmF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MjgxNDogKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgxNS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTQ0LSNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkZcXHRcXHQweEEwNjRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkZcXHRcXHQweEEwRjhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01OTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oOjU5OTpcXHRyZXR1cm4gKHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYwMC1cXHRcXHQocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9SVlVfUkVQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM9MjI9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfdmZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjIzOlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZWRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTI0LVxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkYpIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjI3OjQ2LjcxMTE3MTQ1NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTQwODQ4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoLiBJdCdzIGZvY3VzZWQgb24gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLiBUaGF0IG1lYW5zIGl0J3MgdGlnaHRseSBjb3VwbGVkIHRvIGEgKnNwZWNpZmljKiBQQ0kgZGV2aWNlLiBXZSdyZSB0YWxraW5nIGFib3V0IGBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRmAgaGVyZS4gTm8gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIG5vIG1hdHRlciBob3cgY2xldmVyLCBpcyBnb2luZyB0byBsZXQgbWUgc2ltdWxhdGUgdGhhdC4gRm9yZ2V0IGFib3V0IFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIOKAkyBubyBlbXVsYXRlZCBkZXZpY2Ugb3Igc2ltdWxhdGVkIG5ldHdvcmsgc2V0dXAgaXMgZ29pbmcgdG8gZG8gdGhlIHRyaWNrLiBGb3JnZXQgYWJvdXQgc29tZXRoaW5nIGxpa2UgbmV0ZGV2c2ltIG9yIG1hYzgwMjExX2h3c2ltIOKAkyB0aG9zZSBhcmUgdXNlbGVzcyBoZXJlLlxuXG5PbiB0b3Agb2YgdGhhdCwgdGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiBgcnZ1X2RlYnVnZnMuY2AsIGFuZCB0aGF0J3MgKmRlYnVnZnMqIGNvZGUuIEl0J3MgaGFuZGxpbmcgZGVidWcgZmlsZSBvcGVyYXRpb25zLiBJdOKAmXMgbm90IHRvdWNoaW5nIGFueSBvZiB0aGUgY29yZSBmdW5jdGlvbmFsIGxvZ2ljIG9mIHRoZSBkcml2ZXIuIFNvLCBhZnRlciBldmFsdWF0aW5nIGFsbCBvZiB0aGVzZSBjb25zaWRlcmF0aW9ucywgdGhlcmUncyBqdXN0IG5vIHBvaW50IGluIHRyeWluZyB0byBmdXp6IHRoaXMuIFRoZSBwcm9iYWJpbGl0eSBvZiBmaW5kaW5nIGFueXRoaW5nIHVzZWZ1bCBpcyBlZmZlY3RpdmVseSB6ZXJvLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgY2xlYXI6IFRoaXMgcGF0Y2ggaXMgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjQ4LCJPdXRwdXRUb2tlbnMiOjExNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDoyNzo1MS45NjUyNTkzMjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRlYnVnZnMgY29kZSBmb3IgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgdGhhdCByZXF1aXJlcyBhIHBoeXNpY2FsIFBDSSBkZXZpY2UgKFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGKSBhbmQgY2Fubm90IGJlIHJlYWNoZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9ucywgd2hpY2ggYXJlIG5vdCBjb3JlIGZ1bmN0aW9uYWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkZWJ1Z2ZzIGNvZGUgZm9yIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBQQ0kgZGV2aWNlIChQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgYW5kIGNhbm5vdCBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gZGVidWdmcyBmaWxlIG9wZXJhdGlvbnMsIHdoaWNoIGFyZSBub3QgY29yZSBmdW5jdGlvbmFsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowr87r5[1] Phase: Running StartedAt: 2026-06-22 04:28:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr87r5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-22 04:28:03 +0000 UTC FinishedAt: 2026-06-22 04:28:10 +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,}