Name: series-workflowq5xn6 Phase: Failed StartedAt: 2026-08-19 05:42:09 +0000 UTC FinishedAt: 2026-08-19 06:23:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5xn6[0] Phase: Succeeded StartedAt: 2026-08-19 05:42:09 +0000 UTC FinishedAt: 2026-08-19 06:23:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5xn6[0].run-triage Phase: Succeeded StartedAt: 2026-08-19 05:42:09 +0000 UTC FinishedAt: 2026-08-19 06:23:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA2OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBhZGRpbmcgZGVidWdmcyBlbnRyaWVzLCB1cGRhdGluZyBzdGF0aXN0aWNzLCBhbmQgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIHN0YXRpc3RpY3MgYXJyYXkgYWNjZXNzZXMsIHdoaWNoIGRvIG5vdCBhbHRlciB0aGUgY29yZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGlzIG1lYW5pbmdmdWwgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA2OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDNiZGU2YTczYzZmZWMwNmZhYWU1YmUzY2MzYzA4YjkyMjc5ZGNjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDA2OjIzOjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbmluZGV4IGQ1NDk5NWI3YWRiMjcuLjEyNzkxZTI2N2QxYTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbkBAIC0xMDcxLDYgJiM0MzsxMDcxLDIwIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9QTl9FUlJfRkxBR19TRVRdID0gXCYjMzQ7UE4gZXJyXCYjMzQ7LFxuIFx0XHRbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9ERVNDX0JMT0NLRURdID0gXCYjMzQ7RGVzYyBibG9ja2VkXCYjMzQ7fTtcbiBcbiYjNDM7XHRzdGF0aWMgY29uc3QgY2hhciAqd2JtX3J4X2Ryb3BbV0JNX0VSUl9EUk9QX01BWF0gPSB7XG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX0dFVF9TV19ERVNDXSA9IFwmIzM0O1NXIGRlc2MgZXJyb3JcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX0RFU0NfUEFSU0VdID0gXCYjMzQ7RGVzYyBwYXJzZSBlcnJvclwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfSU5WX0hXX0lEXSA9IFwmIzM0O0ludmFsaWQgaHcgaWRcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFBdID0gXCYjMzQ7TnVsbCBQYXJ0bmVyIGRwXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFBdID0gXCYjMzQ7UHJvY2VzcyBOdWxsIFBhcnRuZXIgZHBcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX05VTExfUERFVl0gPSBcJiMzNDtOdWxsIFBkZXZcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX05VTExfQVJdID0gXCYjMzQ7TnVsbCBhclwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkddID0gXCYjMzQ7Q0FDIFJ1bm5pbmdcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX1NHXSA9IFwmIzM0O1NjYXR0ZXIgR2F0aGVyXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSXSA9IFwmIzM0O0ludmFsaWQgTldpZmkgSGRyIGxlblwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUNdID0gXCYjMzQ7UkVPIEdlbmVyaWNcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUNdID0gXCYjMzQ7UlhETUEgR2VuZXJpY1wmIzM0O307XG4mIzQzO1xuIFx0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHtcbiBcdFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9IFwmIzM0O1RRTVwmIzM0OyxcbiBcdFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfUlhETUFdID0gXCYjMzQ7UnhkbWFcJiMzNDssXG5AQCAtMTA5NSwxMyAmIzQzOzExMDksMzIgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVg7IGkmIzQzOyYjNDM7KVxuIFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDslczogJXVcXG5cJiMzNDssXG4tXHRcdFx0XHQgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNlcnhkbWFfZXJyb3JbaV0pO1xuJiM0MztcdFx0XHRcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLnJ4ZG1hX2Vycm9yW2ldKTtcbiBcbiBcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblJFTyBlcnJvcnM6XFxuXCYjMzQ7KTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpJiM0MzsmIzQzOylcbiBcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7JXM6ICV1XFxuXCYjMzQ7LFxuLVx0XHRcdFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2VyZW9fZXJyb3JbaV0pO1xuJiM0MztcdFx0XHRcdCByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5yZW9fZXJyb3JbaV0pO1xuJiM0MztcbiYjNDM7XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5XQk0gUnggRHJvcCBDb3VudDpcXG5cJiMzNDspO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdCTV9FUlJfRFJPUF9NQVg7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7JXM6ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCB3Ym1fcnhfZHJvcFtpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIuZHJvcFtpXSk7XG4mIzQzO1xuJiM0MztcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblJFTyBzZW50IHRvIHN0YWNrOlxcblwmIzM0Oyk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O3JpbmclZDpcJiMzNDssIGkpO1xuJiM0MztcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgYWItXHUwMDNlYWctXHUwMDNlbnVtX2RldmljZXM7IGomIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLFxuJiM0MztcdFx0XHRcdFx0IFwmIzM0O1xcdCVkOiV1XCYjMzQ7LCBqLFxuJiM0MztcdFx0XHRcdFx0IGRldmljZV9zdGF0cy1cdTAwM2VzZW50X3RvX3N0YWNrW2ldW2pdKTtcbiYjNDM7XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLFxuJiM0MztcdFx0XHQgXCYjMzQ7XFxuV0JNIFNXIGRlc2MgZmFsbGJhY2sgKEhXIENDIG5vdCBkb25lKTogJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKTtcbiBcbiBcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcbkhBTCBSRU8gZXJyb3JzOlxcblwmIzM0Oyk7XG4gXG5AQCAtMTExNyw2ICYjNDM7MTE1MCwxMSBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7cmluZyVkOiAldVxcblwmIzM0OyxcbiBcdFx0XHRcdCBpLCBkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLmRlc2NfbmFbaV0pO1xuIFxuJiM0MztcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblRYIERlc2NyaXB0b3IgUG9vbCBBbGxvYyBGYWlsdXJlczpcXG5cJiMzNDspO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19IV19NQVhfUVVFVUVTOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O3Bvb2wlZDogJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IGksIGRldmljZV9zdGF0cy1cdTAwM2V0eF9lcnIudHhidWZfbmFbaV0pO1xuJiM0MztcbiBcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sXG4gXHRcdFx0IFwmIzM0O1xcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCBhdG9taWNfcmVhZChcdTAwMjZkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLm1pc2NfZmFpbCkpO1xuQEAgLTExODEsNyAmIzQzOzEyMTksNyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblJFTyBSeCBSZWNlaXZlZDpcXG5cJiMzNDspO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7UmluZyVkOlwmIzM0OywgaSAmIzQzOyAxKTtcbiYjNDM7XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O3JpbmclZDpcJiMzNDssIGkpO1xuIFxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaiYjNDM7JiM0MzspIHtcbiBcdFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLFxuQEAgLTEyMTUsOCAmIzQzOzEyNTMsNDAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHNzaXplX3RcbiYjNDM7YXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuJiM0MztcdFx0XHRcdCAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuJiM0MztcdFx0XHRcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG4mIzQzO1x0c3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzICpkZXZpY2Vfc3RhdHMgPSBcdTAwMjZkcC1cdTAwM2VkZXZpY2Vfc3RhdHM7XG4mIzQzO1x0Y2hhciBidWZbMjBdID0ge307XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0LyogZmlsdGVyIHBhcnRpYWwgd3JpdGVzIGFuZCBpbnZhbGlkIGNvbW1hbmRzICovXG4mIzQzO1x0aWYgKCpwcG9zICE9IDAgfHwgY291bnQgXHUwMDNlPSBzaXplb2YoYnVmKSB8fCBjb3VudCA9PSAwKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJldCA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdC8qIGRyb3AgdGhlIHBvc3NpYmxlICYjMzk7XFxuJiMzOTsgZnJvbSB0aGUgZW5kICovXG4mIzQzO1x0aWYgKGJ1ZlsqcHBvcyAtIDFdID09ICYjMzk7XFxuJiMzOTspXG4mIzQzO1x0XHRidWZbKnBwb3MgLSAxXSA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO1xuJiM0MztcdGlmICghc3RyY21wKGJ1ZiwgXCYjMzQ7cmVzZXRcJiMzNDspKSB7XG4mIzQzO1x0XHRtZW1zZXQoZGV2aWNlX3N0YXRzLCAwLCBzaXplb2YoKmRldmljZV9zdGF0cykpO1xuJiM0MztcdFx0cmV0dXJuIGNvdW50O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19kZXZpY2VfZHBfc3RhdHMgPSB7XG4gXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxuJiM0MztcdC53cml0ZSA9IGF0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyxcbiBcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4gXHQub3duZXIgPSBUSElTX01PRFVMRSxcbiBcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbkBAIC0xMjI3LDcgJiM0MzsxMjk3LDcgQEAgdm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzaW11bGF0ZV9md19jcmFzaFwmIzM0OywgMDYwMCwgYWItXHUwMDNlZGVidWdmc19zb2MsIGFiLFxuIFx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcbiBcbi1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7ZGV2aWNlX2RwX3N0YXRzXCYjMzQ7LCAwNDAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4mIzQzO1x0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZXZpY2VfZHBfc3RhdHNcJiMzNDssIDA2MDAsIGFiLVx1MDAzZWRlYnVnZnNfc29jLCBhYixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19kZXZpY2VfZHBfc3RhdHMpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTcsNiAmIzQzOzcsNyBAQFxuICNpZm5kZWYgQVRIMTJLX0RQX0hcbiAjZGVmaW5lIEFUSDEyS19EUF9IXG4gXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2RwX3N0YXRzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtody5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZHBfaHR0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkcF9jbW4uaFwmIzM0O1xuQEAgLTQyOSwxOSAmIzQzOzQzMCwyNyBAQCBzdHJ1Y3QgYXRoMTJrX2RwX2FyY2hfb3BzIHtcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMge1xuIFx0LyogVENMIFJpbmcgRGVzY3JpcHRvciB1bmF2YWlsYWJsZSAqL1xuIFx0dTMyIGRlc2NfbmFbRFBfVENMX05VTV9SSU5HX01BWF07XG4mIzQzO1x0LyogVFggZGVzY3JpcHRvciBwb29sIGV4aGF1c3RlZCAocGVyIHBvb2xfaWQgLyB0cmFmZmljIGNsYXNzKSAqL1xuJiM0MztcdHUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107XG4gXHQvKiBPdGhlciBmYWlsdXJlcyBkdXJpbmcgZHBfdHggZHVlIHRvIG1lbSBhbGxvY2F0aW9uIGZhaWx1cmVcbiBcdCAqIGlkciB1bmF2YWlsYWJsZSBldGMuXG4gXHQgKi9cbiBcdGF0b21pY190IG1pc2NfZmFpbDtcbiB9O1xuIFxuJiM0MztzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHtcbiYjNDM7XHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbiYjNDM7XHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcbiYjNDM7XHR1MzIgZHJvcFtXQk1fRVJSX0RST1BfTUFYXTtcbiYjNDM7XHR1MzIgc3dfZGVzY19mYWxsYmFjaztcbiYjNDM7fTtcbiYjNDM7XG4gc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMge1xuIFx0dTMyIGVycl9yaW5nX3BrdHM7XG4gXHR1MzIgaW52YWxpZF9yYm07XG4tXHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbi1cdHUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdO1xuIFx0dTMyIGhhbF9yZW9fZXJyb3JbRFBfUkVPX0RTVF9SSU5HX01BWF07XG4gXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMgdHhfZXJyO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjtcbiBcdHUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiByeF93Ym1fcmVsX3NvdXJjZVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTtcbkBAIC00NTAsNiAmIzQzOzQ1OSw3IEBAIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcbiBcdHUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbiBcdHUzMiB0eF9jb21wbGV0ZWRbRFBfVENMX05VTV9SSU5HX01BWF07XG4gXHR1MzIgcmVvX2V4Y2VwX21zZHVfYnVmX3R5cGU7XG4mIzQzO1x0dTMyIHNlbnRfdG9fc3RhY2tbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiB9O1xuIFxuIHN0cnVjdCBhdGgxMmtfZHAge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjFhMDUyNTZkYmY3NDBcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxuQEAgLTAsMCAmIzQzOzEsMjUgQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqL1xuJiM0MzsvKlxuJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19IXG4mIzQzOyNkZWZpbmUgQVRIMTJLX0RQX1NUQVRTX0hcbiYjNDM7XG4mIzQzO2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24ge1xuJiM0MztcdFdCTV9FUlJfRFJPUF9HRVRfU1dfREVTQyxcbiYjNDM7XHRXQk1fRVJSX0RST1BfREVTQ19QQVJTRSxcbiYjNDM7XHRXQk1fRVJSX0RST1BfSU5WX0hXX0lELFxuJiM0MztcdFdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFAsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX05VTExfUERFVixcbiYjNDM7XHRXQk1fRVJSX0RST1BfTlVMTF9BUixcbiYjNDM7XHRXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX1NHLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9SRU9fR0VORVJJQyxcbiYjNDM7XHRXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQyxcbiYjNDM7XHRXQk1fRVJSX0RST1BfTUFYLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7I2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG5pbmRleCA5NWQ4N2RkNjc4NzJmLi4yNWZkOGJmNzg1OGY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcbkBAIC0xMiw2ICYjNDM7MTIsMTUgQEBcbiAjaW5jbHVkZSBcJiMzNDtoYWxfd2NuNzg1MC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aGFsX3FjYzIwNzIuaFwmIzM0O1xuIFxuJiM0MztzdGF0aWMgdm9pZFxuJiM0MzthdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKm1zZHUsXG4mIzQzO1x0XHRcdFx0ICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pXG4mIzQzO3tcbiYjNDM7XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW2Ryb3BfcmVhc29uXSYjNDM7JiM0Mzs7XG4mIzQzO1x0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHUxNiBhdGgxMmtfd2lmaTdfZHBfcnhfZ2V0X3BlZXJfaWQoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHRcdCAgZW51bSBhdGgxMmtfcGVlcl9tZXRhZGF0YV92ZXJzaW9uIHZlcixcbiBcdFx0XHRcdFx0ICBfX2xlMzIgcGVlcl9tZXRhZGF0YSlcbkBAIC02NDIsNyAmIzQzOzY1MSwxMCBAQCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc19yZWNlaXZlZF9wYWNrZXRzKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4tXG4mIzQzO1x0XHRpZiAobGlrZWx5KHJpbmdfaWQgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVgpKVxuJiM0MztcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMuc2VudF90b19zdGFja1tyaW5nX2lkXVtwYXJ0bmVyX2RwLVx1MDAzZWRldmljZV9pZF0mIzQzOyYjNDM7O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRXQVJOX09OX09OQ0UoMSk7XG4gXHRcdGF0aDEya19kcF9yeF9kZWxpdmVyX21zZHUoZHBfcGRldiwgbmFwaSwgbXNkdSwgXHUwMDI2cnhfaW5mbyk7XG4gXHR9XG4gXG5AQCAtMTYxNCw2ICYjNDM7MTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQmIzM5O3MgbGVuZ3RoICovXG4gXHRcdG1zZHVfbGVuID0gbXNkdV9sZW4gLSAoRFBfUlhfQlVGRkVSX1NJWkUgLSBoYWxfcnhfZGVzY19zeik7XG4gXHRcdGF0aDEya193aWZpN19kcF9yeF9udWxsX3FfZGVzY19zZ19kcm9wKGRwLCBtc2R1X2xlbiwgbXNkdV9saXN0KTtcbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1NHXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuQEAgLTE2NDksOCAmIzQzOzE2NjIsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdHNrYl9wdXQobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogJiM0MzsgbDNwYWRfYnl0ZXMgJiM0MzsgbXNkdV9sZW4pO1xuIFx0XHRza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiAmIzQzOyBsM3BhZF9ieXRlcyk7XG4gXHR9XG4tXHRpZiAodW5saWtlbHkoIWF0aDEya19kcF9yeF9jaGVja19ud2lmaV9oZHJfbGVuX3ZhbGlkKGRwLCBtc2R1LCByeF9pbmZvKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKSB7XG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiBcbiBcdGF0aDEya19kcF9yeF9oX3BwZHUoZHBfcGRldiwgcnhfaW5mbyk7XG4gXHRyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pO1xuQEAgLTE3NjMsNyAmIzQzOzE3NzgsMTAgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcnhkbWFfZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdHN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7XG4gXHRib29sIGRyb3AgPSBmYWxzZTtcbiBcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5yeGRtYV9lcnJvcltyeGNiLVx1MDAzZWVycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0aWYgKGxpa2VseShyeGNiLVx1MDAzZWVycl9jb2RlIFx1MDAzYyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVgpKVxuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucnhkbWFfZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0mIzQzOyYjNDM7O1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdHN3aXRjaCAocnhjYi1cdTAwM2VlcnJfY29kZSkge1xuIFx0Y2FzZSBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9VTkFVVEhfV0RTX0VSUjpcbkBAIC0xNzgwLDYgJiM0MzsxNzk4LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcnhkbWFfZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0LyogVE9ETzogUmV2aWV3IG90aGVyIHJ4ZG1hIGVycm9yIGNvZGUgdG8gY2hlY2sgaWYgYW55dGhpbmcgaXNcbiBcdFx0ICogd29ydGggcmVwb3J0aW5nIHRvIG1hYzgwMjExXG4gXHRcdCAqL1xuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10mIzQzOyYjNDM7O1xuIFx0XHRkcm9wID0gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHR9XG5AQCAtMTc5Niw3ICYjNDM7MTgxNSwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdHN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7XG4gXHRib29sIGRyb3AgPSBmYWxzZTtcbiBcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5yZW9fZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0mIzQzOyYjNDM7O1xuJiM0MztcdGlmIChsaWtlbHkocnhjYi1cdTAwM2VlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdJiM0MzsmIzQzOztcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoMSk7XG4gXG4gXHRzd2l0Y2ggKHJ4Y2ItXHUwMDNlZXJyX2NvZGUpIHtcbiBcdGNhc2UgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9ERVNDX0FERFJfWkVSTzpcbkBAIC0xODEzLDYgJiM0MzsxODM1LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcmVvX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdC8qIFRPRE86IFJldmlldyBvdGhlciBlcnJvcnMgYW5kIHByb2Nlc3MgdGhlbSB0byBtYWM4MDIxMVxuIFx0XHQgKiBhcyBhcHByb3ByaWF0ZS5cbiBcdFx0ICovXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10mIzQzOyYjNDM7O1xuIFx0XHRkcm9wID0gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHR9XG5AQCAtMTkzNSw2ICYjNDM7MTk1OCw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRyZXQgPSBhdGgxMmtfd2lmaTdfaGFsX3dibV9kZXNjX3BhcnNlX2VycihkcCwgcnhfZGVzYyxcbiBcdFx0XHRcdFx0XHRcdCAgXHUwMDI2ZXJyX2luZm8pO1xuIFx0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0RFU0NfUEFSU0VdJiM0MzsmIzQzOztcbiBcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTk0NCw4ICYjNDM7MTk2OCwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcbiBcdFx0LyogcmV0cnkgbWFudWFsIGRlc2MgcmV0cmlldmFsIGlmIGh3IGNjIGlzIG5vdCBkb25lICovXG4gXHRcdGlmICghZGVzY19pbmZvKSB7XG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2smIzQzOyYjNDM7O1xuIFx0XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRpZiAoIWRlc2NfaW5mbykge1xuJiM0MztcdFx0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0dFVF9TV19ERVNDXSYjNDM7JiM0Mzs7XG4gXHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7SW52YWxpZCBjb29raWUgaW4gRFAgV0JNIHJ4IGVycm9yIGRlc2NyaXB0b3IgcmV0cmlldmFsOiAweCV4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0XHQgICAgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE5NjEsNyAmIzQzOzE5ODcsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0ZGV2aWNlX2lkID0gZGVzY19pbmZvLVx1MDAzZWRldmljZV9pZDtcbiBcdFx0cGFydG5lcl9kcCA9IGF0aDEya19kcF9od19ncnBfdG9fZHAoZHBfaHdfZ3JwLCBkZXZpY2VfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoIXBhcnRuZXJfZHApKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjAwNyw3ICYjNDM7MjAzNCw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRod19saW5rX2lkID0gYXRoMTJrX2RwX3J4X2dldF9tc2R1X3NyY19saW5rKHBhcnRuZXJfZHAtXHUwMDNlaGFsLFxuIFx0XHRcdFx0XHRcdFx0ICAgIG1zZHVfZGF0YSk7XG4gXHRcdGlmIChod19saW5rX2lkIFx1MDAzZT0gQVRIMTJLX0dST1VQX01BWF9SQURJTykge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX0lOVl9IV19JRCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjA2OCw3ICYjNDM7MjA5Niw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfREFUQSxcbiBcdFx0XHRcdCAgIFwmIzM0O1VuYWJsZSB0byBwcm9jZXNzIFdCTSBlcnJvciBtc2R1IGR1ZSB0byBpbnZhbGlkIGh3IGxpbmsgaWQgJWQgZGV2aWNlIGlkICVkXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgaHdfbGlua19pZCwgZGV2aWNlX2lkKTtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiYjNDM7XHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFApO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5AQCAtMjA3NywxOCAmIzQzOzIxMDYsMjEgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXG4gXHRcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XG4gXHRcdGlmICghZHBfcGRldikge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX05VTExfUERFVik7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcdFx0YXIgPSBhdGgxMmtfcGRldl9kcF90b19hcihkcF9wZGV2KTtcbiBcbiBcdFx0aWYgKCFhciB8fCAhcmN1X2RlcmVmZXJlbmNlKGFyLVx1MDAzZWFiLVx1MDAzZXBkZXZzX2FjdGl2ZVtwZGV2X2lkeF0pKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9BUik7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NBQ19SVU5OSU5HLCBcdTAwMjZhci1cdTAwM2VkZXZfZmxhZ3MpKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbkBAIC0xNjcsOCAmIzQzOzE2NywxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxuIFx0dHhfcmluZyA9IFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbdGkucmluZ19pZF07XG4gXG4gXHR0eF9kZXNjID0gYXRoMTJrX2RwX3R4X2Fzc2lnbl9idWZmZXIoZHAsIHBvb2xfaWQpO1xuLVx0aWYgKCF0eF9kZXNjKVxuJiM0MztcdGlmICghdHhfZGVzYykge1xuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdH1cbiBcbiBcdGRwX2xpbmtfdmlmID0gYXRoMTJrX2RwX3ZpZl90b19kcF9saW5rX3ZpZihcdTAwMjZhaHZpZi1cdTAwM2VkcF92aWYsIGFydmlmLVx1MDAzZWxpbmtfaWQpO1xuIFxuQEAgLTU3NSwxOCAmIzQzOzU3NywxOSBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXG4ge1xuIFx0c3RydWN0IGh0dF90eF93Ym1fY29tcGxldGlvbiAqc3RhdHVzX2Rlc2M7XG4gXHRzdHJ1Y3QgYXRoMTJrX2RwX2h0dF93Ym1fdHhfc3RhdHVzIHRzID0ge307XG4tXHRlbnVtIGhhbF93Ym1faHR0X3R4X2NvbXBfc3RhdHVzIHdibV9zdGF0dXM7XG4mIzQzO1x0ZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyBodHRfc3RhdHVzO1xuIFx0dTE2IHBlZXJfaWQ7XG4gXG4gXHRzdGF0dXNfZGVzYyA9IGRlc2M7XG4gXG4tXHR3Ym1fc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cdTAwM2VpbmZvMCxcbiYjNDM7XHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSYjNDM7JiM0Mzs7XG4mIzQzO1x0aWYgKGxpa2VseShodHRfc3RhdHVzIFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy5md190eF9zdGF0dXNbaHR0X3N0YXR1c10mIzQzOyYjNDM7O1xuIFxuLVx0c3dpdGNoICh3Ym1fc3RhdHVzKSB7XG4mIzQzO1x0c3dpdGNoIChodHRfc3RhdHVzKSB7XG4gXHRjYXNlIEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSzpcbi1cdFx0dHMuYWNrZWQgPSAod2JtX3N0YXR1cyA9PSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0spO1xuJiM0MztcdFx0dHMuYWNrZWQgPSB0cnVlO1xuIFx0XHR0cy5hY2tfcnNzaSA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzIsXG4gXHRcdFx0XHRcdCAgICBIVFRfVFhfV0JNX0NPTVBfSU5GTzJfQUNLX1JTU0kpO1xuIFxuQEAgLTYwOCw3ICYjNDM7NjExLDcgQEAgYXRoMTJrX2RwX3R4X3Byb2Nlc3NfaHR0X3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCB2b2lkICpkZXNjLFxuIFx0XHQgKi9cbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuLVx0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCYjMzQ7VW5rbm93biBodHQgd2JtIHR4IHN0YXR1cyAlZFxcblwmIzM0Oywgd2JtX3N0YXR1cyk7XG4mIzQzO1x0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCYjMzQ7VW5rbm93biBodHQgdHggc3RhdHVzICVkXFxuXCYjMzQ7LCBodHRfc3RhdHVzKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gfVxuQEAgLTk4NCwxMSAmIzQzOzk4NywxNyBAQCB2b2lkIGF0aDEya193aWZpN19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkKVxuIFx0XHQvKiBGaW5kIHRoZSBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUgdmFsdWUgKi9cbiBcdFx0YnVmX3JlbF9zb3VyY2UgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdFx0ICAgICAgIEhBTF9XQk1fUkVMRUFTRV9JTkZPMF9SRUxfU1JDX01PRFVMRSk7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0mIzQzOyYjNDM7O1xuJiM0MztcdFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcdTAwM2MgSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVgpKVxuJiM0MztcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdJiM0MzsmIzQzOztcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0XHRyZWxfc3RhdHVzID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHRcdCAgIEhBTF9XQk1fQ09NUExfVFhfSU5GTzBfVFFNX1JFTEVBU0VfUkVBU09OKTtcbi1cdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnRxbV9yZWxfcmVhc29uW3JlbF9zdGF0dXNdJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChsaWtlbHkocmVsX3N0YXR1cyBcdTAwM2MgTUFYX1RRTV9SRUxFQVNFX1JFQVNPTikpXG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdFx0LyogUmVsZWFzZSBkZXNjcmlwdG9yIGFzIHNvb24gYXMgZXh0cmFjdGluZyBuZWNlc3NhcnkgaW5mb1xuIFx0XHQgKiB0byByZWR1Y2UgY29udGVudGlvblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG5pbmRleCA0OWM2OTMyODk3MDk0Li42MGU3YTM2MDk3ZjEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xuQEAgLTMyOSw3ICYjNDM7MzI5LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfaGFsX2Rlc2NfcmVvX3BhcnNlX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRcdCAgICBIQUxfUkVPX0RFU1RfUklOR19JTkZPMF9QVVNIX1JFQVNPTik7XG4gXHRlcnJfY29kZSA9IGxlMzJfZ2V0X2JpdHMoZGVzYy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdCBIQUxfUkVPX0RFU1RfUklOR19JTkZPMF9FUlJPUl9DT0RFKTtcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5yZW9fZXJyb3JbZXJyX2NvZGVdJiM0MzsmIzQzOztcbiYjNDM7XHRpZiAobGlrZWx5KGVycl9jb2RlIFx1MDAzYyBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWCkpXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbZXJyX2NvZGVdJiM0MzsmIzQzOztcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoMSk7XG4gXG4gXHRpZiAocHVzaF9yZWFzb24gIT0gSEFMX1JFT19ERVNUX1JJTkdfUFVTSF9SRUFTT05fRVJSX0RFVEVDVEVEIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX1JPVVRJTkdfSU5TVFJVQ1RJT04pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwNjoyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBhZGRpbmcgZGVidWdmcyBlbnRyaWVzLCB1cGRhdGluZyBzdGF0aXN0aWNzLCBhbmQgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIHN0YXRpc3RpY3MgYXJyYXkgYWNjZXNzZXMsIHdoaWNoIGRvIG5vdCBhbHRlciB0aGUgY29yZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGlzIG1lYW5pbmdmdWwgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDNiZGU2YTczYzZmZWMwNmZhYWU1YmUzY2MzYzA4YjkyMjc5ZGNjOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDE5IDA2OjIzOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwppbmRleCBkNTQ5OTViN2FkYjI3Li4xMjc5MWUyNjdkMWE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwpAQCAtMTA3MSw2ICYjNDM7MTA3MSwyMCBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfUE5fRVJSX0ZMQUdfU0VUXSA9ICYjMzQ7UE4gZXJyJiMzNDssCiAJCVtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQkxPQ0tFRF0gPSAmIzM0O0Rlc2MgYmxvY2tlZCYjMzQ7fTsKIAomIzQzOwlzdGF0aWMgY29uc3QgY2hhciAqd2JtX3J4X2Ryb3BbV0JNX0VSUl9EUk9QX01BWF0gPSB7CiYjNDM7CQlbV0JNX0VSUl9EUk9QX0dFVF9TV19ERVNDXSA9ICYjMzQ7U1cgZGVzYyBlcnJvciYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9ERVNDX1BBUlNFXSA9ICYjMzQ7RGVzYyBwYXJzZSBlcnJvciYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9JTlZfSFdfSURdID0gJiMzNDtJbnZhbGlkIGh3IGlkJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFBdID0gJiMzNDtOdWxsIFBhcnRuZXIgZHAmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQXSA9ICYjMzQ7UHJvY2VzcyBOdWxsIFBhcnRuZXIgZHAmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfTlVMTF9QREVWXSA9ICYjMzQ7TnVsbCBQZGV2JiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX05VTExfQVJdID0gJiMzNDtOdWxsIGFyJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HXSA9ICYjMzQ7Q0FDIFJ1bm5pbmcmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfU0ddID0gJiMzNDtTY2F0dGVyIEdhdGhlciYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSXSA9ICYjMzQ7SW52YWxpZCBOV2lmaSBIZHIgbGVuJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSA9ICYjMzQ7UkVPIEdlbmVyaWMmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10gPSAmIzM0O1JYRE1BIEdlbmVyaWMmIzM0O307CiYjNDM7CiAJc3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHsKIAkJW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9ICYjMzQ7VFFNJiMzNDssCiAJCVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1JYRE1BXSA9ICYjMzQ7UnhkbWEmIzM0OywKQEAgLTEwOTUsMTMgJiM0MzsxMTA5LDMyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSYjNDM7JiM0MzspCiAJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7JXM6ICV1XG4mIzM0OywKLQkJCQkgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3J4ZG1hX2Vycm9yW2ldKTsKJiM0MzsJCQkJIHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLnJ4ZG1hX2Vycm9yW2ldKTsKIAogCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5SRU8gZXJyb3JzOlxuJiMzNDspOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpJiM0MzsmIzQzOykKIAkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDslczogJXVcbiYjMzQ7LAotCQkJCSByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3Jlb19lcnJvcltpXSk7CiYjNDM7CQkJCSByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3dibV9lcnIucmVvX2Vycm9yW2ldKTsKJiM0MzsKJiM0MzsJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtcbldCTSBSeCBEcm9wIENvdW50OlxuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgV0JNX0VSUl9EUk9QX01BWDsgaSYjNDM7JiM0MzspCiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0OyVzOiAldVxuJiMzNDssCiYjNDM7CQkJCSB3Ym1fcnhfZHJvcFtpXSwgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLmRyb3BbaV0pOwomIzQzOwomIzQzOwlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuUkVPIHNlbnQgdG8gc3RhY2s6XG4mIzM0Oyk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBEUF9SRU9fRFNUX1JJTkdfTUFYOyBpJiM0MzsmIzQzOykgewomIzQzOwkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtyaW5nJWQ6JiMzNDssIGkpOwomIzQzOwkJZm9yIChqID0gMDsgaiAmbHQ7IGFiLSZndDthZy0mZ3Q7bnVtX2RldmljZXM7IGomIzQzOyYjNDM7KQomIzQzOwkJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sCiYjNDM7CQkJCQkgJiMzNDtcdCVkOiV1JiMzNDssIGosCiYjNDM7CQkJCQkgZGV2aWNlX3N0YXRzLSZndDtzZW50X3RvX3N0YWNrW2ldW2pdKTsKJiM0MzsJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwKJiM0MzsJCQkgJiMzNDtcbldCTSBTVyBkZXNjIGZhbGxiYWNrIChIVyBDQyBub3QgZG9uZSk6ICV1XG4mIzM0OywKJiM0MzsJCQkgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2spOwogCiAJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtcbkhBTCBSRU8gZXJyb3JzOlxuJiMzNDspOwogCkBAIC0xMTE3LDYgJiM0MzsxMTUwLDExIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O3JpbmclZDogJXVcbiYjMzQ7LAogCQkJCSBpLCBkZXZpY2Vfc3RhdHMtJmd0O3R4X2Vyci5kZXNjX25hW2ldKTsKIAomIzQzOwlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuVFggRGVzY3JpcHRvciBQb29sIEFsbG9jIEZhaWx1cmVzOlxuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVRIMTJLX0hXX01BWF9RVUVVRVM7IGkmIzQzOyYjNDM7KQomIzQzOwkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtwb29sJWQ6ICV1XG4mIzM0OywKJiM0MzsJCQkJIGksIGRldmljZV9zdGF0cy0mZ3Q7dHhfZXJyLnR4YnVmX25hW2ldKTsKJiM0MzsKIAlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLAogCQkJICYjMzQ7XG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxuJiMzNDssCiAJCQkgYXRvbWljX3JlYWQoJmFtcDtkZXZpY2Vfc3RhdHMtJmd0O3R4X2Vyci5taXNjX2ZhaWwpKTsKQEAgLTExODEsNyAmIzQzOzEyMTksNyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuUkVPIFJ4IFJlY2VpdmVkOlxuJiMzNDspOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IERQX1JFT19EU1RfUklOR19NQVg7IGkmIzQzOyYjNDM7KSB7Ci0JCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7UmluZyVkOiYjMzQ7LCBpICYjNDM7IDEpOwomIzQzOwkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtyaW5nJWQ6JiMzNDssIGkpOwogCiAJCWZvciAoaiA9IDA7IGogJmx0OyBhYi0mZ3Q7YWctJmd0O251bV9kZXZpY2VzOyBqJiM0MzsmIzQzOykgewogCQkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwKQEAgLTEyMTUsOCAmIzQzOzEyNTMsNDAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzO3N0YXRpYyBzc2l6ZV90CiYjNDM7YXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAomIzQzOwkJCQkgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZiwKJiM0MzsJCQkJICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBmaWxlLSZndDtwcml2YXRlX2RhdGE7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTsKJiM0MzsJc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMgKmRldmljZV9zdGF0cyA9ICZhbXA7ZHAtJmd0O2RldmljZV9zdGF0czsKJiM0MzsJY2hhciBidWZbMjBdID0ge307CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIGZpbHRlciBwYXJ0aWFsIHdyaXRlcyBhbmQgaW52YWxpZCBjb21tYW5kcyAqLwomIzQzOwlpZiAoKnBwb3MgIT0gMCB8fCBjb3VudCAmZ3Q7PSBzaXplb2YoYnVmKSB8fCBjb3VudCA9PSAwKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldCA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJLyogZHJvcCB0aGUgcG9zc2libGUgJiMzOTtcbiYjMzk7IGZyb20gdGhlIGVuZCAqLwomIzQzOwlpZiAoYnVmWypwcG9zIC0gMV0gPT0gJiMzOTtcbiYjMzk7KQomIzQzOwkJYnVmWypwcG9zIC0gMV0gPSAmIzM5O1wwJiMzOTs7CiYjNDM7CiYjNDM7CWlmICghc3RyY21wKGJ1ZiwgJiMzNDtyZXNldCYjMzQ7KSkgewomIzQzOwkJbWVtc2V0KGRldmljZV9zdGF0cywgMCwgc2l6ZW9mKCpkZXZpY2Vfc3RhdHMpKTsKJiM0MzsJCXJldHVybiBjb3VudDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gLUVJTlZBTDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2RldmljZV9kcF9zdGF0cyA9IHsKIAkucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLAomIzQzOwkud3JpdGUgPSBhdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMsCiAJLm9wZW4gPSBzaW1wbGVfb3BlbiwKIAkub3duZXIgPSBUSElTX01PRFVMRSwKIAkubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCkBAIC0xMjI3LDcgJiM0MzsxMjk3LDcgQEAgdm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtzaW11bGF0ZV9md19jcmFzaCYjMzQ7LCAwNjAwLCBhYi0mZ3Q7ZGVidWdmc19zb2MsIGFiLAogCQkJICAgICZhbXA7Zm9wc19zaW11bGF0ZV9md19jcmFzaCk7CiAKLQlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7ZGV2aWNlX2RwX3N0YXRzJiMzNDssIDA0MDAsIGFiLSZndDtkZWJ1Z2ZzX3NvYywgYWIsCiYjNDM7CWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtkZXZpY2VfZHBfc3RhdHMmIzM0OywgMDYwMCwgYWItJmd0O2RlYnVnZnNfc29jLCBhYiwKIAkJCSAgICAmYW1wO2ZvcHNfZGV2aWNlX2RwX3N0YXRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oCmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKQEAgLTcsNiAmIzQzOzcsNyBAQAogI2lmbmRlZiBBVEgxMktfRFBfSAogI2RlZmluZSBBVEgxMktfRFBfSAogCiYjNDM7I2luY2x1ZGUgJiMzNDtkcF9zdGF0cy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aHcuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2RwX2h0dC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZHBfY21uLmgmIzM0OwpAQCAtNDI5LDE5ICYjNDM7NDMwLDI3IEBAIHN0cnVjdCBhdGgxMmtfZHBfYXJjaF9vcHMgewogc3RydWN0IGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzIHsKIAkvKiBUQ0wgUmluZyBEZXNjcmlwdG9yIHVuYXZhaWxhYmxlICovCiAJdTMyIGRlc2NfbmFbRFBfVENMX05VTV9SSU5HX01BWF07CiYjNDM7CS8qIFRYIGRlc2NyaXB0b3IgcG9vbCBleGhhdXN0ZWQgKHBlciBwb29sX2lkIC8gdHJhZmZpYyBjbGFzcykgKi8KJiM0MzsJdTMyIHR4YnVmX25hW0FUSDEyS19IV19NQVhfUVVFVUVTXTsKIAkvKiBPdGhlciBmYWlsdXJlcyBkdXJpbmcgZHBfdHggZHVlIHRvIG1lbSBhbGxvY2F0aW9uIGZhaWx1cmUKIAkgKiBpZHIgdW5hdmFpbGFibGUgZXRjLgogCSAqLwogCWF0b21pY190IG1pc2NfZmFpbDsKIH07CiAKJiM0MztzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHsKJiM0MzsJdTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07CiYjNDM7CXUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdOwomIzQzOwl1MzIgZHJvcFtXQk1fRVJSX0RST1BfTUFYXTsKJiM0MzsJdTMyIHN3X2Rlc2NfZmFsbGJhY2s7CiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHsKIAl1MzIgZXJyX3JpbmdfcGt0czsKIAl1MzIgaW52YWxpZF9yYm07Ci0JdTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07Ci0JdTMyIHJlb19lcnJvcltIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWF07CiAJdTMyIGhhbF9yZW9fZXJyb3JbRFBfUkVPX0RTVF9SSU5HX01BWF07CiAJc3RydWN0IGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzIHR4X2VycjsKJiM0MzsJc3RydWN0IGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0cyB3Ym1fZXJyOwogCXUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTsKIAl1MzIgcnhfd2JtX3JlbF9zb3VyY2VbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVhdW0FUSDEyS19NQVhfREVWSUNFU107CiAJdTMyIHRxbV9yZWxfcmVhc29uW01BWF9UUU1fUkVMRUFTRV9SRUFTT05dOwpAQCAtNDUwLDYgJiM0Mzs0NTksNyBAQCBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7CiAJdTMyIHR4X2VucXVldWVkW0RQX1RDTF9OVU1fUklOR19NQVhdOwogCXUzMiB0eF9jb21wbGV0ZWRbRFBfVENMX05VTV9SSU5HX01BWF07CiAJdTMyIHJlb19leGNlcF9tc2R1X2J1Zl90eXBlOwomIzQzOwl1MzIgc2VudF90b19zdGFja1tEUF9SRU9fRFNUX1JJTkdfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdOwogfTsKIAogc3RydWN0IGF0aDEya19kcCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNTI1NmRiZjc0MAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaApAQCAtMCwwICYjNDM7MSwyNSBAQAomIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi8KJiM0MzsvKgomIzQzOyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLgomIzQzOyAqLwomIzQzOwomIzQzOyNpZm5kZWYgQVRIMTJLX0RQX1NUQVRTX0gKJiM0MzsjZGVmaW5lIEFUSDEyS19EUF9TVEFUU19ICiYjNDM7CiYjNDM7ZW51bSBhdGgxMmtfd2JtX2Vycl9kcm9wX3JlYXNvbiB7CiYjNDM7CVdCTV9FUlJfRFJPUF9HRVRfU1dfREVTQywKJiM0MzsJV0JNX0VSUl9EUk9QX0RFU0NfUEFSU0UsCiYjNDM7CVdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsCiYjNDM7CVdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9QREVWLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9BUiwKJiM0MzsJV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HLAomIzQzOwlXQk1fRVJSX0RST1BfU0csCiYjNDM7CVdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLAomIzQzOwlXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUMsCiYjNDM7CVdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLAomIzQzOwlXQk1fRVJSX0RST1BfTUFYLAomIzQzO307CiYjNDM7CiYjNDM7I2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMKaW5kZXggOTVkODdkZDY3ODcyZi4uMjVmZDhiZjc4NThmNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYwpAQCAtMTIsNiAmIzQzOzEyLDE1IEBACiAjaW5jbHVkZSAmIzM0O2hhbF93Y243ODUwLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtoYWxfcWNjMjA3Mi5oJiMzNDsKIAomIzQzO3N0YXRpYyB2b2lkCiYjNDM7YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2Ioc3RydWN0IGF0aDEya19kcCAqZHAsCiYjNDM7CQkJCSAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSwKJiM0MzsJCQkJICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pCiYjNDM7ewomIzQzOwlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtkcm9wX3JlYXNvbl0mIzQzOyYjNDM7OwomIzQzOwlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCQkJICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLAogCQkJCQkgIF9fbGUzMiBwZWVyX21ldGFkYXRhKQpAQCAtNjQyLDcgJiM0Mzs2NTEsMTAgQEAgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3NfcmVjZWl2ZWRfcGFja2V0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwogCQkJY29udGludWU7CiAJCX0KLQomIzQzOwkJaWYgKGxpa2VseShyaW5nX2lkICZsdDsgRFBfUkVPX0RTVF9SSU5HX01BWCkpCiYjNDM7CQkJZHAtJmd0O2RldmljZV9zdGF0cy5zZW50X3RvX3N0YWNrW3JpbmdfaWRdW3BhcnRuZXJfZHAtJmd0O2RldmljZV9pZF0mIzQzOyYjNDM7OwomIzQzOwkJZWxzZQomIzQzOwkJCVdBUk5fT05fT05DRSgxKTsKIAkJYXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCAmYW1wO3J4X2luZm8pOwogCX0KIApAQCAtMTYxNCw2ICYjNDM7MTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCQkvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQmIzM5O3MgbGVuZ3RoICovCiAJCW1zZHVfbGVuID0gbXNkdV9sZW4gLSAoRFBfUlhfQlVGRkVSX1NJWkUgLSBoYWxfcnhfZGVzY19zeik7CiAJCWF0aDEya193aWZpN19kcF9yeF9udWxsX3FfZGVzY19zZ19kcm9wKGRwLCBtc2R1X2xlbiwgbXNkdV9saXN0KTsKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9TR10mIzQzOyYjNDM7OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE2NDksOCAmIzQzOzE2NjIsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsCiAJCXNrYl9wdXQobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogJiM0MzsgbDNwYWRfYnl0ZXMgJiM0MzsgbXNkdV9sZW4pOwogCQlza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiAmIzQzOyBsM3BhZF9ieXRlcyk7CiAJfQotCWlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKSB7CiYjNDM7CQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0mIzQzOyYjNDM7OwogCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCiAJYXRoMTJrX2RwX3J4X2hfcHBkdShkcF9wZGV2LCByeF9pbmZvKTsKIAlyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pOwpAQCAtMTc2Myw3ICYjNDM7MTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCXN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7CiAJYm9vbCBkcm9wID0gZmFsc2U7CiAKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItJmd0O2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWlmIChsaWtlbHkocnhjYi0mZ3Q7ZXJyX2NvZGUgJmx0OyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVgpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnJ4ZG1hX2Vycm9yW3J4Y2ItJmd0O2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWVsc2UKJiM0MzsJCVdBUk5fT05fT05DRSgxKTsKIAogCXN3aXRjaCAocnhjYi0mZ3Q7ZXJyX2NvZGUpIHsKIAljYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOgpAQCAtMTc4MCw2ICYjNDM7MTc5OCw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3J4ZG1hX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsCiAJCS8qIFRPRE86IFJldmlldyBvdGhlciByeGRtYSBlcnJvciBjb2RlIHRvIGNoZWNrIGlmIGFueXRoaW5nIGlzCiAJCSAqIHdvcnRoIHJlcG9ydGluZyB0byBtYWM4MDIxMQogCQkgKi8KJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSYjNDM7JiM0Mzs7CiAJCWRyb3AgPSB0cnVlOwogCQlicmVhazsKIAl9CkBAIC0xNzk2LDcgJiM0MzsxODE1LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCXN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7CiAJYm9vbCBkcm9wID0gZmFsc2U7CiAKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnJlb19lcnJvcltyeGNiLSZndDtlcnJfY29kZV0mIzQzOyYjNDM7OwomIzQzOwlpZiAobGlrZWx5KHJ4Y2ItJmd0O2Vycl9jb2RlICZsdDsgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnJlb19lcnJvcltyeGNiLSZndDtlcnJfY29kZV0mIzQzOyYjNDM7OwomIzQzOwllbHNlCiYjNDM7CQlXQVJOX09OX09OQ0UoMSk7CiAKIAlzd2l0Y2ggKHJ4Y2ItJmd0O2Vycl9jb2RlKSB7CiAJY2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOgpAQCAtMTgxMyw2ICYjNDM7MTgzNSw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCQkvKiBUT0RPOiBSZXZpZXcgb3RoZXIgZXJyb3JzIGFuZCBwcm9jZXNzIHRoZW0gdG8gbWFjODAyMTEKIAkJICogYXMgYXBwcm9wcmlhdGUuCiAJCSAqLwomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSYjNDM7JiM0Mzs7CiAJCWRyb3AgPSB0cnVlOwogCQlicmVhazsKIAl9CkBAIC0xOTM1LDYgJiM0MzsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCXJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLAogCQkJCQkJCSAgJmFtcDtlcnJfaW5mbyk7CiAJCWlmIChyZXQpIHsKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfREVTQ19QQVJTRV0mIzQzOyYjNDM7OwogCQkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7ZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXG4mIzM0OywKIAkJCQkgICAgcmV0KTsKIAkJCWNvbnRpbnVlOwpAQCAtMTk0NCw4ICYjNDM7MTk2OCwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAogCQkvKiByZXRyeSBtYW51YWwgZGVzYyByZXRyaWV2YWwgaWYgaHcgY2MgaXMgbm90IGRvbmUgKi8KIAkJaWYgKCFkZXNjX2luZm8pIHsKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuc3dfZGVzY19mYWxsYmFjayYjNDM7JiM0Mzs7CiAJCQlkZXNjX2luZm8gPSBhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MoZHAsIGVycl9pbmZvLmNvb2tpZSk7CiAJCQlpZiAoIWRlc2NfaW5mbykgewomIzQzOwkJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfR0VUX1NXX0RFU0NdJiM0MzsmIzQzOzsKIAkJCQlhdGgxMmtfd2FybihhYiwgJiMzNDtJbnZhbGlkIGNvb2tpZSBpbiBEUCBXQk0gcnggZXJyb3IgZGVzY3JpcHRvciByZXRyaWV2YWw6IDB4JXhcbiYjMzQ7LAogCQkJCQkgICAgZXJyX2luZm8uY29va2llKTsKIAkJCQljb250aW51ZTsKQEAgLTE5NjEsNyAmIzQzOzE5ODcsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJZGV2aWNlX2lkID0gZGVzY19pbmZvLSZndDtkZXZpY2VfaWQ7CiAJCXBhcnRuZXJfZHAgPSBhdGgxMmtfZHBfaHdfZ3JwX3RvX2RwKGRwX2h3X2dycCwgZGV2aWNlX2lkKTsKIAkJaWYgKHVubGlrZWx5KCFwYXJ0bmVyX2RwKSkgewotCQkJZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7CiYjNDM7CQkJYXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsCiYjNDM7CQkJCQkJCSAgICBXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCk7CiAKIAkJCS8qIEluIGFueSBjYXNlIGNvbnRpbnVhdGlvbiBiaXQgaXMgc2V0CiAJCQkgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0CkBAIC0yMDA3LDcgJiM0MzsyMDM0LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCWh3X2xpbmtfaWQgPSBhdGgxMmtfZHBfcnhfZ2V0X21zZHVfc3JjX2xpbmsocGFydG5lcl9kcC0mZ3Q7aGFsLAogCQkJCQkJCSAgICBtc2R1X2RhdGEpOwogCQlpZiAoaHdfbGlua19pZCAmZ3Q7PSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQpOwogCiAJCQkvKiBJbiBhbnkgY2FzZSBjb250aW51YXRpb24gYml0IGlzIHNldAogCQkJICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdApAQCAtMjA2OCw3ICYjNDM7MjA5Niw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLAogCQkJYXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLAogCQkJCSAgICYjMzQ7VW5hYmxlIHRvIHByb2Nlc3MgV0JNIGVycm9yIG1zZHUgZHVlIHRvIGludmFsaWQgaHcgbGluayBpZCAlZCBkZXZpY2UgaWQgJWRcbiYjMzQ7LAogCQkJCSAgIGh3X2xpbmtfaWQsIGRldmljZV9pZCk7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFApOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtMjA3NywxOCAmIzQzOzIxMDYsMjEgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAKIAkJZHBfcGRldiA9IGF0aDEya19kcF90b19wZGV2X2RwKHBhcnRuZXJfZHAsIHBkZXZfaWR4KTsKIAkJaWYgKCFkcF9wZGV2KSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BERVYpOwogCQkJY29udGludWU7CiAJCX0KIAkJYXIgPSBhdGgxMmtfcGRldl9kcF90b19hcihkcF9wZGV2KTsKIAogCQlpZiAoIWFyIHx8ICFyY3VfZGVyZWZlcmVuY2UoYXItJmd0O2FiLSZndDtwZGV2c19hY3RpdmVbcGRldl9pZHhdKSkgewotCQkJZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7CiYjNDM7CQkJYXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsCiYjNDM7CQkJCQkJCSAgICBXQk1fRVJSX0RST1BfTlVMTF9BUik7CiAJCQljb250aW51ZTsKIAkJfQogCiAJCWlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgJmFtcDthci0mZ3Q7ZGV2X2ZsYWdzKSkgewotCQkJZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7CiYjNDM7CQkJYXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsCiYjNDM7CQkJCQkJCSAgICBXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcpOwogCQkJY29udGludWU7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jCmluZGV4IDU4N2Q1OGVlY2NmYTUuLjExMDQ4YzU2ODMzMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKQEAgLTE2Nyw4ICYjNDM7MTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphCiAJdHhfcmluZyA9ICZhbXA7ZHAtJmd0O3R4X3JpbmdbdGkucmluZ19pZF07CiAKIAl0eF9kZXNjID0gYXRoMTJrX2RwX3R4X2Fzc2lnbl9idWZmZXIoZHAsIHBvb2xfaWQpOwotCWlmICghdHhfZGVzYykKJiM0MzsJaWYgKCF0eF9kZXNjKSB7CiYjNDM7CQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSYjNDM7JiM0Mzs7CiAJCXJldHVybiAtRU5PTUVNOwomIzQzOwl9CiAKIAlkcF9saW5rX3ZpZiA9IGF0aDEya19kcF92aWZfdG9fZHBfbGlua192aWYoJmFtcDthaHZpZi0mZ3Q7ZHBfdmlmLCBhcnZpZi0mZ3Q7bGlua19pZCk7CiAKQEAgLTU3NSwxOCAmIzQzOzU3NywxOSBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsCiB7CiAJc3RydWN0IGh0dF90eF93Ym1fY29tcGxldGlvbiAqc3RhdHVzX2Rlc2M7CiAJc3RydWN0IGF0aDEya19kcF9odHRfd2JtX3R4X3N0YXR1cyB0cyA9IHt9OwotCWVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgd2JtX3N0YXR1czsKJiM0MzsJZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyBodHRfc3RhdHVzOwogCXUxNiBwZWVyX2lkOwogCiAJc3RhdHVzX2Rlc2MgPSBkZXNjOwogCi0Jd2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtJmd0O2luZm8wLAomIzQzOwlodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy0mZ3Q7aW5mbzAsCiAJCQkJICAgSFRUX1RYX1dCTV9DT01QX0lORk8wX1NUQVRVUyk7Ci0JZHAtJmd0O2RldmljZV9zdGF0cy5md190eF9zdGF0dXNbd2JtX3N0YXR1c10mIzQzOyYjNDM7OwomIzQzOwlpZiAobGlrZWx5KGh0dF9zdGF0dXMgJmx0OyBNQVhfRldfVFhfU1RBVFVTKSkKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMuZndfdHhfc3RhdHVzW2h0dF9zdGF0dXNdJiM0MzsmIzQzOzsKIAotCXN3aXRjaCAod2JtX3N0YXR1cykgewomIzQzOwlzd2l0Y2ggKGh0dF9zdGF0dXMpIHsKIAljYXNlIEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSzoKLQkJdHMuYWNrZWQgPSAod2JtX3N0YXR1cyA9PSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0spOwomIzQzOwkJdHMuYWNrZWQgPSB0cnVlOwogCQl0cy5hY2tfcnNzaSA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtJmd0O2luZm8yLAogCQkJCQkgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTsKIApAQCAtNjA4LDcgJiM0Mzs2MTEsNyBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsCiAJCSAqLwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlhdGgxMmtfd2FybihkcC0mZ3Q7YWIsICYjMzQ7VW5rbm93biBodHQgd2JtIHR4IHN0YXR1cyAlZFxuJiMzNDssIHdibV9zdGF0dXMpOwomIzQzOwkJYXRoMTJrX3dhcm4oZHAtJmd0O2FiLCAmIzM0O1Vua25vd24gaHR0IHR4IHN0YXR1cyAlZFxuJiMzNDssIGh0dF9zdGF0dXMpOwogCQlicmVhazsKIAl9CiB9CkBAIC05ODQsMTEgJiM0Mzs5ODcsMTcgQEAgdm9pZCBhdGgxMmtfd2lmaTdfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBpbnQgcmluZ19pZCkKIAkJLyogRmluZCB0aGUgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFIHZhbHVlICovCiAJCWJ1Zl9yZWxfc291cmNlID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtJmd0O2luZm8wLAogCQkJCQkgICAgICAgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFKTsKLQkJZHAtJmd0O2RldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0mIzQzOyYjNDM7OwomIzQzOwkJaWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSAmbHQ7IEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSkKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnR4X3dibV9yZWxfc291cmNlW2J1Zl9yZWxfc291cmNlXSYjNDM7JiM0Mzs7CiYjNDM7CQllbHNlCiYjNDM7CQkJV0FSTl9PTl9PTkNFKDEpOwogCiAJCXJlbF9zdGF0dXMgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy0mZ3Q7aW5mbzAsCiAJCQkJCSAgIEhBTF9XQk1fQ09NUExfVFhfSU5GTzBfVFFNX1JFTEVBU0VfUkVBU09OKTsKLQkJZHAtJmd0O2RldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSYjNDM7JiM0Mzs7CiYjNDM7CQlpZiAobGlrZWx5KHJlbF9zdGF0dXMgJmx0OyBNQVhfVFFNX1JFTEVBU0VfUkVBU09OKSkKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnRxbV9yZWxfcmVhc29uW3JlbF9zdGF0dXNdJiM0MzsmIzQzOzsKJiM0MzsJCWVsc2UKJiM0MzsJCQlXQVJOX09OX09OQ0UoMSk7CiAKIAkJLyogUmVsZWFzZSBkZXNjcmlwdG9yIGFzIHNvb24gYXMgZXh0cmFjdGluZyBuZWNlc3NhcnkgaW5mbwogCQkgKiB0byByZWR1Y2UgY29udGVudGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMKaW5kZXggNDljNjkzMjg5NzA5NC4uNjBlN2EzNjA5N2YxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jCkBAIC0zMjksNyAmIzQzOzMyOSwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2hhbF9kZXNjX3Jlb19wYXJzZV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCQkJICAgIEhBTF9SRU9fREVTVF9SSU5HX0lORk8wX1BVU0hfUkVBU09OKTsKIAllcnJfY29kZSA9IGxlMzJfZ2V0X2JpdHMoZGVzYy0mZ3Q7aW5mbzAsCiAJCQkJIEhBTF9SRU9fREVTVF9SSU5HX0lORk8wX0VSUk9SX0NPREUpOwotCWRwLSZndDtkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWlmIChsaWtlbHkoZXJyX2NvZGUgJmx0OyBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWCkpCiYjNDM7CQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWVsc2UKJiM0MzsJCVdBUk5fT05fT05DRSgxKTsKIAogCWlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgJmFtcDsmYW1wOwogCSAgICBwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9ST1VUSU5HX0lOU1RSVUNUSU9OKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDkwCgkJCQkJCQlvdXRwdXQ6IDEwNQoJCQkJCQkJdGhvdWdodHM6IDEyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IGF0aDEyayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRvdWNoaW5nIHRoZSBgYXRoMTJrYCBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBkZWJ1Z2ZzIGFuZCBzdGF0aXN0aWNzIHVwZGF0ZXMgd2l0aGluIHRoZSBkYXRhIHBhdGguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBpbnRyb2R1Y2UgYW55IG5ldyBmdXp6aW5nIHRhcmdldHMuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIG1vc3Qgb2YgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGNvbmNlbnRyYXRlZCBpbjoKCiogICBBZGRpbmcgZGVidWdmcyBlbnRyaWVzIGZvciBzdGF0cyAoYGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzYCwgYGF0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0c2ApLgoqICAgSW5jcmVtZW50aW5nIHN0YXRpc3RpY3MgY291bnRlcnMgd2l0aGluIHZhcmlvdXMgZnVuY3Rpb25zIChgZHBfcnguY2AsIGBkcF90eC5jYCwgYGhhbF9yeC5jYCkuCiogICBBZGRpbmcgYm91bmRzIGNoZWNrcyB0byBwcm90ZWN0IHRoZSBzdGF0cyBhcnJheXMgZnJvbSBvdXQtb2YtYm91bmRzIGFjY2Vzcy4KClRoZSBtYWluIGNvbmNlcm4gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIG9wZW4gdXAgYW55IG5ldyBhdHRhY2sgc3VyZmFjZXMgb3IsIG1vcmUgcGVydGluZW50bHksIGlmIHRoZXkgYXJlIHJlYWNoYWJsZSBpbiBhIGZ1enplci1mcmllbmRseSB3YXkuIFRoZSBgYXRoMTJrYCBkcml2ZXIgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUsIGVpdGhlciBQQ0llIG9yIEFIQi4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7Q2FuIHRoaXMgYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7IFRoZSBhbnN3ZXIgaXMgbm87IHRoaXMgZHJpdmVyLCBhcyBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUuCgpDb25zaWRlcmluZyB0aGUgaW5zdHJ1Y3Rpb25zLCAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsJiMzNDsgdGhpcyBmaXRzIHRoZSBkZXNjcmlwdGlvbi4gVGhvdWdoIG5vdCBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIHNwZWNpZmljYWxseSwgdGhlIGF0aDEyayBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciBQQ0llL0FIQiBXaS1GaSBoYXJkd2FyZS4gVGhlIGNoYW5nZXMgdGhlbXNlbHZlcyBhcmUgbW9zdGx5IHN0YXRzIGFuZCBkZWJ1Z2ZzLCBhbmQgdGhleSBkb24mIzM5O3QgaW50cm9kdWNlIHN1YnN0YW50aWFsIG5ldyBjb2RlIHBhdGhzLiBUaGVyZSYjMzk7cyBubyBlbXVsYXRpb24gZm9yIGF0aDEyayBpbiBRRU1VLCBtZWFuaW5nIGl0JiMzOTtzIG5vdCBwb3NzaWJsZSB0byBydW4gdGhpcyBjb2RlIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUuCgpTbywgYWx0aG91Z2ggdGhlIGJvdW5kcyBjaGVja3MgYXJlIGZ1bmN0aW9uYWwsIHRoZXkgYXJlIHByaW1hcmlseSBmb3IgdGhlIHByb3RlY3Rpb24gb2Ygc3RhdHMgYXJyYXlzIGFuZCBhcmUgbm90IGludHJvZHVjaW5nIG5ldyBsb2dpYyBvciB2dWxuZXJhYmlsaXRpZXMuIEkgd29uJiMzOTt0IGV2ZW4gYm90aGVyIGNoZWNraW5nIGZvciBzeXprYWxsZXIgY292ZXJhZ2UsIHNpbmNlIHRoYXQgd291bGQgYmUgYSB3YXN0ZSBvZiB0aW1lIGFuZCBpdCBpcyBoaWdobHkgdW5saWtlbHkgdG8gZXhpc3QuIEJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCBXb3J0aEZ1enppbmcgaXMgZGVmaW5pdGl2ZWx5IGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIFdpLUZpIGRyaXZlciwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMsIHVwZGF0aW5nIHN0YXRpc3RpY3MsIGFuZCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3Igc3RhdGlzdGljcyBhcnJheSBhY2Nlc3Nlcywgd2hpY2ggZG8gbm90IGFsdGVyIHRoZSBjb3JlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgaXMgbWVhbmluZ2Z1bCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgV2ktRmkgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gYWRkaW5nIGRlYnVnZnMgZW50cmllcywgdXBkYXRpbmcgc3RhdGlzdGljcywgYW5kIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBzdGF0aXN0aWNzIGFycmF5IGFjY2Vzc2VzLCB3aGljaCBkbyBub3QgYWx0ZXIgdGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCBpcyBtZWFuaW5nZnVsIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwNjoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDY6MjM6MTAuMjA3MjUxMDk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMjE5NDE1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIFdpLUZpIGRyaXZlciwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMsIHVwZGF0aW5nIHN0YXRpc3RpY3MsIGFuZCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3Igc3RhdGlzdGljcyBhcnJheSBhY2Nlc3Nlcywgd2hpY2ggZG8gbm90IGFsdGVyIHRoZSBjb3JlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgaXMgbWVhbmluZ2Z1bCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA2OjIzOjEwLjIwNzI1Nzk2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxNjcxMDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDAzYmRlNmE3M2M2ZmVjMDZmYWFlNWJlM2NjM2MwOGI5MjI3OWRjYzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTkgMDY6MjM6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbmluZGV4IGQ1NDk5NWI3YWRiMjcuLjEyNzkxZTI2N2QxYTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbkBAIC0xMDcxLDYgKzEwNzEsMjAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdFtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX1BOX0VSUl9GTEFHX1NFVF0gPSBcXFwiUE4gZXJyXFxcIixcXG4gXFx0XFx0W0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfREVTQ19CTE9DS0VEXSA9IFxcXCJEZXNjIGJsb2NrZWRcXFwifTtcXG4gXFxuK1xcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcnhfZHJvcFtXQk1fRVJSX0RST1BfTUFYXSA9IHtcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9HRVRfU1dfREVTQ10gPSBcXFwiU1cgZGVzYyBlcnJvclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfREVTQ19QQVJTRV0gPSBcXFwiRGVzYyBwYXJzZSBlcnJvclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfSU5WX0hXX0lEXSA9IFxcXCJJbnZhbGlkIGh3IGlkXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQXSA9IFxcXCJOdWxsIFBhcnRuZXIgZHBcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUF0gPSBcXFwiUHJvY2VzcyBOdWxsIFBhcnRuZXIgZHBcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX05VTExfUERFVl0gPSBcXFwiTnVsbCBQZGV2XFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9OVUxMX0FSXSA9IFxcXCJOdWxsIGFyXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9DQUNfUlVOTklOR10gPSBcXFwiQ0FDIFJ1bm5pbmdcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX1NHXSA9IFxcXCJTY2F0dGVyIEdhdGhlclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0gPSBcXFwiSW52YWxpZCBOV2lmaSBIZHIgbGVuXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10gPSBcXFwiUkVPIEdlbmVyaWNcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUNdID0gXFxcIlJYRE1BIEdlbmVyaWNcXFwifTtcXG4rXFxuIFxcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcmVsX3NyY1tIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF0gPSB7XFxuIFxcdFxcdFtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1RRTV0gPSBcXFwiVFFNXFxcIixcXG4gXFx0XFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfUlhETUFdID0gXFxcIlJ4ZG1hXFxcIixcXG5AQCAtMTA5NSwxMyArMTEwOSwzMiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVg7IGkrKylcXG4gXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCIlczogJXVcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNlcnhkbWFfZXJyb3JbaV0pO1xcbitcXHRcXHRcXHRcXHQgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtXFx1MDAzZXdibV9lcnIucnhkbWFfZXJyb3JbaV0pO1xcbiBcXG4gXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcblJFTyBlcnJvcnM6XFxcXG5cXFwiKTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWDsgaSsrKVxcbiBcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIiVzOiAldVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNlcmVvX2Vycm9yW2ldKTtcXG4rXFx0XFx0XFx0XFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5yZW9fZXJyb3JbaV0pO1xcbitcXG4rXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcbldCTSBSeCBEcm9wIENvdW50OlxcXFxuXFxcIik7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBXQk1fRVJSX0RST1BfTUFYOyBpKyspXFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiJXM6ICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgd2JtX3J4X2Ryb3BbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5kcm9wW2ldKTtcXG4rXFxuK1xcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5SRU8gc2VudCB0byBzdGFjazpcXFxcblxcXCIpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSsrKSB7XFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwicmluZyVkOlxcXCIsIGkpO1xcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgYWItXFx1MDAzZWFnLVxcdTAwM2VudW1fZGV2aWNlczsgaisrKVxcbitcXHRcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcXG4rXFx0XFx0XFx0XFx0XFx0IFxcXCJcXFxcdCVkOiV1XFxcIiwgaixcXG4rXFx0XFx0XFx0XFx0XFx0IGRldmljZV9zdGF0cy1cXHUwMDNlc2VudF90b19zdGFja1tpXVtqXSk7XFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0fVxcbitcXG4rXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXFxuK1xcdFxcdFxcdCBcXFwiXFxcXG5XQk0gU1cgZGVzYyBmYWxsYmFjayAoSFcgQ0Mgbm90IGRvbmUpOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKTtcXG4gXFxuIFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5IQUwgUkVPIGVycm9yczpcXFxcblxcXCIpO1xcbiBcXG5AQCAtMTExNyw2ICsxMTUwLDExIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcInJpbmclZDogJXVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCBpLCBkZXZpY2Vfc3RhdHMtXFx1MDAzZXR4X2Vyci5kZXNjX25hW2ldKTtcXG4gXFxuK1xcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5UWCBEZXNjcmlwdG9yIFBvb2wgQWxsb2MgRmFpbHVyZXM6XFxcXG5cXFwiKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19IV19NQVhfUVVFVUVTOyBpKyspXFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwicG9vbCVkOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IGksIGRldmljZV9zdGF0cy1cXHUwMDNldHhfZXJyLnR4YnVmX25hW2ldKTtcXG4rXFxuIFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxcbiBcXHRcXHRcXHQgXFxcIlxcXFxuTWlzYyBUcmFuc21pdCBGYWlsdXJlczogJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCBhdG9taWNfcmVhZChcXHUwMDI2ZGV2aWNlX3N0YXRzLVxcdTAwM2V0eF9lcnIubWlzY19mYWlsKSk7XFxuQEAgLTExODEsNyArMTIxOSw3IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuUkVPIFJ4IFJlY2VpdmVkOlxcXFxuXFxcIik7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSsrKSB7XFxuLVxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiUmluZyVkOlxcXCIsIGkgKyAxKTtcXG4rXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJyaW5nJWQ6XFxcIiwgaSk7XFxuIFxcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgYWItXFx1MDAzZWFnLVxcdTAwM2VudW1fZGV2aWNlczsgaisrKSB7XFxuIFxcdFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxcbkBAIC0xMjE1LDggKzEyNTMsNDAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuK3N0YXRpYyBzc2l6ZV90XFxuK2F0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4rXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuK1xcdFxcdFxcdFxcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuK3tcXG4rXFx0c3RydWN0IGF0aDEya19iYXNlICphYiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4rXFx0c3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyAqZGV2aWNlX3N0YXRzID0gXFx1MDAyNmRwLVxcdTAwM2VkZXZpY2Vfc3RhdHM7XFxuK1xcdGNoYXIgYnVmWzIwXSA9IHt9O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0LyogZmlsdGVyIHBhcnRpYWwgd3JpdGVzIGFuZCBpbnZhbGlkIGNvbW1hbmRzICovXFxuK1xcdGlmICgqcHBvcyAhPSAwIHx8IGNvdW50IFxcdTAwM2U9IHNpemVvZihidWYpIHx8IGNvdW50ID09IDApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cmV0ID0gc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBvcywgdXNlcl9idWYsIGNvdW50KTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHQvKiBkcm9wIHRoZSBwb3NzaWJsZSAnXFxcXG4nIGZyb20gdGhlIGVuZCAqL1xcbitcXHRpZiAoYnVmWypwcG9zIC0gMV0gPT0gJ1xcXFxuJylcXG4rXFx0XFx0YnVmWypwcG9zIC0gMV0gPSAnXFxcXDAnO1xcbitcXG4rXFx0aWYgKCFzdHJjbXAoYnVmLCBcXFwicmVzZXRcXFwiKSkge1xcbitcXHRcXHRtZW1zZXQoZGV2aWNlX3N0YXRzLCAwLCBzaXplb2YoKmRldmljZV9zdGF0cykpO1xcbitcXHRcXHRyZXR1cm4gY291bnQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAtRUlOVkFMO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2RldmljZV9kcF9zdGF0cyA9IHtcXG4gXFx0LnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyxcXG4rXFx0LndyaXRlID0gYXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzLFxcbiBcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbiBcXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4gXFx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxcbkBAIC0xMjI3LDcgKzEyOTcsNyBAQCB2b2lkIGF0aDEya19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNpbXVsYXRlX2Z3X2NyYXNoXFxcIiwgMDYwMCwgYWItXFx1MDAzZWRlYnVnZnNfc29jLCBhYixcXG4gXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcXG4gXFxuLVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImRldmljZV9kcF9zdGF0c1xcXCIsIDA0MDAsIGFiLVxcdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXFxuK1xcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImRldmljZV9kcF9zdGF0c1xcXCIsIDA2MDAsIGFiLVxcdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXFxuIFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19kZXZpY2VfZHBfc3RhdHMpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcXG5pbmRleCBiZWYwZjJiYTA1NjBmLi4yODlhZWRlNmRhYmI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbkBAIC03LDYgKzcsNyBAQFxcbiAjaWZuZGVmIEFUSDEyS19EUF9IXFxuICNkZWZpbmUgQVRIMTJLX0RQX0hcXG4gXFxuKyNpbmNsdWRlIFxcXCJkcF9zdGF0cy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaHcuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImRwX2h0dC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZHBfY21uLmhcXFwiXFxuQEAgLTQyOSwxOSArNDMwLDI3IEBAIHN0cnVjdCBhdGgxMmtfZHBfYXJjaF9vcHMge1xcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMge1xcbiBcXHQvKiBUQ0wgUmluZyBEZXNjcmlwdG9yIHVuYXZhaWxhYmxlICovXFxuIFxcdHUzMiBkZXNjX25hW0RQX1RDTF9OVU1fUklOR19NQVhdO1xcbitcXHQvKiBUWCBkZXNjcmlwdG9yIHBvb2wgZXhoYXVzdGVkIChwZXIgcG9vbF9pZCAvIHRyYWZmaWMgY2xhc3MpICovXFxuK1xcdHUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107XFxuIFxcdC8qIE90aGVyIGZhaWx1cmVzIGR1cmluZyBkcF90eCBkdWUgdG8gbWVtIGFsbG9jYXRpb24gZmFpbHVyZVxcbiBcXHQgKiBpZHIgdW5hdmFpbGFibGUgZXRjLlxcbiBcXHQgKi9cXG4gXFx0YXRvbWljX3QgbWlzY19mYWlsO1xcbiB9O1xcbiBcXG4rc3RydWN0IGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0cyB7XFxuK1xcdHUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdO1xcbitcXHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcXG4rXFx0dTMyIGRyb3BbV0JNX0VSUl9EUk9QX01BWF07XFxuK1xcdHUzMiBzd19kZXNjX2ZhbGxiYWNrO1xcbit9O1xcbitcXG4gc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMge1xcbiBcXHR1MzIgZXJyX3JpbmdfcGt0cztcXG4gXFx0dTMyIGludmFsaWRfcmJtO1xcbi1cXHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcXG4tXFx0dTMyIHJlb19lcnJvcltIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWF07XFxuIFxcdHUzMiBoYWxfcmVvX2Vycm9yW0RQX1JFT19EU1RfUklOR19NQVhdO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMgdHhfZXJyO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHdibV9lcnI7XFxuIFxcdHUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcXG4gXFx0dTMyIHJ4X3dibV9yZWxfc291cmNlW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdO1xcbiBcXHR1MzIgdHFtX3JlbF9yZWFzb25bTUFYX1RRTV9SRUxFQVNFX1JFQVNPTl07XFxuQEAgLTQ1MCw2ICs0NTksNyBAQCBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7XFxuIFxcdHUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcXG4gXFx0dTMyIHR4X2NvbXBsZXRlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcXG4gXFx0dTMyIHJlb19leGNlcF9tc2R1X2J1Zl90eXBlO1xcbitcXHR1MzIgc2VudF90b19zdGFja1tEUF9SRU9fRFNUX1JJTkdfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdO1xcbiB9O1xcbiBcXG4gc3RydWN0IGF0aDEya19kcCB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNTI1NmRiZjc0MFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmhcXG5AQCAtMCwwICsxLDI1IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cXG4rLypcXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXFxuKyAqL1xcbitcXG4rI2lmbmRlZiBBVEgxMktfRFBfU1RBVFNfSFxcbisjZGVmaW5lIEFUSDEyS19EUF9TVEFUU19IXFxuK1xcbitlbnVtIGF0aDEya193Ym1fZXJyX2Ryb3BfcmVhc29uIHtcXG4rXFx0V0JNX0VSUl9EUk9QX0dFVF9TV19ERVNDLFxcbitcXHRXQk1fRVJSX0RST1BfREVTQ19QQVJTRSxcXG4rXFx0V0JNX0VSUl9EUk9QX0lOVl9IV19JRCxcXG4rXFx0V0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFAsXFxuK1xcdFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFAsXFxuK1xcdFdCTV9FUlJfRFJPUF9OVUxMX1BERVYsXFxuK1xcdFdCTV9FUlJfRFJPUF9OVUxMX0FSLFxcbitcXHRXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcsXFxuK1xcdFdCTV9FUlJfRFJPUF9TRyxcXG4rXFx0V0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFIsXFxuK1xcdFdCTV9FUlJfRFJPUF9SRU9fR0VORVJJQyxcXG4rXFx0V0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUMsXFxuK1xcdFdCTV9FUlJfRFJPUF9NQVgsXFxuK307XFxuK1xcbisjZW5kaWYgLyogQVRIMTJLX0RQX1NUQVRTX0ggKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXFxuaW5kZXggOTVkODdkZDY3ODcyZi4uMjVmZDhiZjc4NThmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcXG5AQCAtMTIsNiArMTIsMTUgQEBcXG4gI2luY2x1ZGUgXFxcImhhbF93Y243ODUwLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJoYWxfcWNjMjA3Mi5oXFxcIlxcbiBcXG4rc3RhdGljIHZvaWRcXG4rYXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2Ioc3RydWN0IGF0aDEya19kcCAqZHAsXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSxcXG4rXFx0XFx0XFx0XFx0ICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pXFxuK3tcXG4rXFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbZHJvcF9yZWFzb25dKys7XFxuK1xcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbit9XFxuK1xcbiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0XFx0XFx0ICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLFxcbiBcXHRcXHRcXHRcXHRcXHQgIF9fbGUzMiBwZWVyX21ldGFkYXRhKVxcbkBAIC02NDIsNyArNjUxLDEwIEBAIGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3JlY2VpdmVkX3BhY2tldHMoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbi1cXG4rXFx0XFx0aWYgKGxpa2VseShyaW5nX2lkIFxcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWCkpXFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMuc2VudF90b19zdGFja1tyaW5nX2lkXVtwYXJ0bmVyX2RwLVxcdTAwM2VkZXZpY2VfaWRdKys7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0V0FSTl9PTl9PTkNFKDEpO1xcbiBcXHRcXHRhdGgxMmtfZHBfcnhfZGVsaXZlcl9tc2R1KGRwX3BkZXYsIG5hcGksIG1zZHUsIFxcdTAwMjZyeF9pbmZvKTtcXG4gXFx0fVxcbiBcXG5AQCAtMTYxNCw2ICsxNjI2LDcgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXFxuIFxcdFxcdC8qIEZpcnN0IGJ1ZmZlciB3aWxsIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIsIHNvIGRlZHVjdCBpdCdzIGxlbmd0aCAqL1xcbiBcXHRcXHRtc2R1X2xlbiA9IG1zZHVfbGVuIC0gKERQX1JYX0JVRkZFUl9TSVpFIC0gaGFsX3J4X2Rlc2Nfc3opO1xcbiBcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfbnVsbF9xX2Rlc2Nfc2dfZHJvcChkcCwgbXNkdV9sZW4sIG1zZHVfbGlzdCk7XFxuK1xcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9TR10rKztcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuQEAgLTE2NDksOCArMTY2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDEya193aWZpN19kcF9yeF9oX251bGxfcV9kZXNjKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0XFx0c2tiX3B1dChtc2R1LCBoYWxfcnhfZGVzY19zeiArIGwzcGFkX2J5dGVzICsgbXNkdV9sZW4pO1xcbiBcXHRcXHRza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiArIGwzcGFkX2J5dGVzKTtcXG4gXFx0fVxcbi1cXHRpZiAodW5saWtlbHkoIWF0aDEya19kcF9yeF9jaGVja19ud2lmaV9oZHJfbGVuX3ZhbGlkKGRwLCBtc2R1LCByeF9pbmZvKSkpXFxuK1xcdGlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSkge1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0rKztcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4gXFxuIFxcdGF0aDEya19kcF9yeF9oX3BwZHUoZHBfcGRldiwgcnhfaW5mbyk7XFxuIFxcdHJldCA9IGF0aDEya193aWZpN19kcF9yeF9oX21wZHUoZHBfcGRldiwgbXNkdSwgcnhfaW5mbyk7XFxuQEAgLTE3NjMsNyArMTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxcbiBcXHRzdHJ1Y3QgYXRoMTJrX3NrYl9yeGNiICpyeGNiID0gQVRIMTJLX1NLQl9SWENCKG1zZHUpO1xcbiBcXHRib29sIGRyb3AgPSBmYWxzZTtcXG4gXFxuLVxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMucnhkbWFfZXJyb3JbcnhjYi1cXHUwMDNlZXJyX2NvZGVdKys7XFxuK1xcdGlmIChsaWtlbHkocnhjYi1cXHUwMDNlZXJyX2NvZGUgXFx1MDAzYyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVgpKVxcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucnhkbWFfZXJyb3JbcnhjYi1cXHUwMDNlZXJyX2NvZGVdKys7XFxuK1xcdGVsc2VcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKDEpO1xcbiBcXG4gXFx0c3dpdGNoIChyeGNiLVxcdTAwM2VlcnJfY29kZSkge1xcbiBcXHRjYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOlxcbkBAIC0xNzgwLDYgKzE3OTgsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxcbiBcXHRcXHQvKiBUT0RPOiBSZXZpZXcgb3RoZXIgcnhkbWEgZXJyb3IgY29kZSB0byBjaGVjayBpZiBhbnl0aGluZyBpc1xcbiBcXHRcXHQgKiB3b3J0aCByZXBvcnRpbmcgdG8gbWFjODAyMTFcXG4gXFx0XFx0ICovXFxuK1xcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSsrO1xcbiBcXHRcXHRkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG5AQCAtMTc5Niw3ICsxODE1LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxcbiBcXHRzdHJ1Y3QgYXRoMTJrX3NrYl9yeGNiICpyeGNiID0gQVRIMTJLX1NLQl9SWENCKG1zZHUpO1xcbiBcXHRib29sIGRyb3AgPSBmYWxzZTtcXG4gXFxuLVxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW3J4Y2ItXFx1MDAzZWVycl9jb2RlXSsrO1xcbitcXHRpZiAobGlrZWx5KHJ4Y2ItXFx1MDAzZWVycl9jb2RlIFxcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW3J4Y2ItXFx1MDAzZWVycl9jb2RlXSsrO1xcbitcXHRlbHNlXFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFxuIFxcdHN3aXRjaCAocnhjYi1cXHUwMDNlZXJyX2NvZGUpIHtcXG4gXFx0Y2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOlxcbkBAIC0xODEzLDYgKzE4MzUsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0XFx0LyogVE9ETzogUmV2aWV3IG90aGVyIGVycm9ycyBhbmQgcHJvY2VzcyB0aGVtIHRvIG1hYzgwMjExXFxuIFxcdFxcdCAqIGFzIGFwcHJvcHJpYXRlLlxcbiBcXHRcXHQgKi9cXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSsrO1xcbiBcXHRcXHRkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG5AQCAtMTkzNSw2ICsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdHJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZlcnJfaW5mbyk7XFxuIFxcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0RFU0NfUEFSU0VdKys7XFxuIFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgcmV0KTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuQEAgLTE5NDQsOCArMTk2OCwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFxuIFxcdFxcdC8qIHJldHJ5IG1hbnVhbCBkZXNjIHJldHJpZXZhbCBpZiBodyBjYyBpcyBub3QgZG9uZSAqL1xcbiBcXHRcXHRpZiAoIWRlc2NfaW5mbykge1xcbitcXHRcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuc3dfZGVzY19mYWxsYmFjaysrO1xcbiBcXHRcXHRcXHRkZXNjX2luZm8gPSBhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MoZHAsIGVycl9pbmZvLmNvb2tpZSk7XFxuIFxcdFxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuK1xcdFxcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9HRVRfU1dfREVTQ10rKztcXG4gXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJJbnZhbGlkIGNvb2tpZSBpbiBEUCBXQk0gcnggZXJyb3IgZGVzY3JpcHRvciByZXRyaWV2YWw6IDB4JXhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBlcnJfaW5mby5jb29raWUpO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMTk2MSw3ICsxOTg3LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdGRldmljZV9pZCA9IGRlc2NfaW5mby1cXHUwMDNlZGV2aWNlX2lkO1xcbiBcXHRcXHRwYXJ0bmVyX2RwID0gYXRoMTJrX2RwX2h3X2dycF90b19kcChkcF9od19ncnAsIGRldmljZV9pZCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseSghcGFydG5lcl9kcCkpIHtcXG4tXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XFxuK1xcdFxcdFxcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFApO1xcbiBcXG4gXFx0XFx0XFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcXG4gXFx0XFx0XFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxcbkBAIC0yMDA3LDcgKzIwMzQsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0aHdfbGlua19pZCA9IGF0aDEya19kcF9yeF9nZXRfbXNkdV9zcmNfbGluayhwYXJ0bmVyX2RwLVxcdTAwM2VoYWwsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBtc2R1X2RhdGEpO1xcbiBcXHRcXHRpZiAoaHdfbGlua19pZCBcXHUwMDNlPSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQpO1xcbiBcXG4gXFx0XFx0XFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcXG4gXFx0XFx0XFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxcbkBAIC0yMDY4LDcgKzIwOTYsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLFxcbiBcXHRcXHRcXHRcXHQgICBcXFwiVW5hYmxlIHRvIHByb2Nlc3MgV0JNIGVycm9yIG1zZHUgZHVlIHRvIGludmFsaWQgaHcgbGluayBpZCAlZCBkZXZpY2UgaWQgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgIGh3X2xpbmtfaWQsIGRldmljZV9pZCk7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFApO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtMjA3NywxOCArMjEwNiwyMSBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFxuIFxcdFxcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XFxuIFxcdFxcdGlmICghZHBfcGRldikge1xcbi1cXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4rXFx0XFx0XFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QREVWKTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YXIgPSBhdGgxMmtfcGRldl9kcF90b19hcihkcF9wZGV2KTtcXG4gXFxuIFxcdFxcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cXHUwMDNlYWItXFx1MDAzZXBkZXZzX2FjdGl2ZVtwZGV2X2lkeF0pKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXFx1MDAyNmFyLVxcdTAwM2VkZXZfZmxhZ3MpKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyk7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbkBAIC0xNjcsOCArMTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXFxuIFxcdHR4X3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbdGkucmluZ19pZF07XFxuIFxcbiBcXHR0eF9kZXNjID0gYXRoMTJrX2RwX3R4X2Fzc2lnbl9idWZmZXIoZHAsIHBvb2xfaWQpO1xcbi1cXHRpZiAoIXR4X2Rlc2MpXFxuK1xcdGlmICghdHhfZGVzYykge1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSsrO1xcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXG4gXFx0ZHBfbGlua192aWYgPSBhdGgxMmtfZHBfdmlmX3RvX2RwX2xpbmtfdmlmKFxcdTAwMjZhaHZpZi1cXHUwMDNlZHBfdmlmLCBhcnZpZi1cXHUwMDNlbGlua19pZCk7XFxuIFxcbkBAIC01NzUsMTggKzU3NywxOSBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXFxuIHtcXG4gXFx0c3RydWN0IGh0dF90eF93Ym1fY29tcGxldGlvbiAqc3RhdHVzX2Rlc2M7XFxuIFxcdHN0cnVjdCBhdGgxMmtfZHBfaHR0X3dibV90eF9zdGF0dXMgdHMgPSB7fTtcXG4tXFx0ZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyB3Ym1fc3RhdHVzO1xcbitcXHRlbnVtIGhhbF93Ym1faHR0X3R4X2NvbXBfc3RhdHVzIGh0dF9zdGF0dXM7XFxuIFxcdHUxNiBwZWVyX2lkO1xcbiBcXG4gXFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xcbiBcXG4tXFx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXFx1MDAzZWluZm8wLFxcbitcXHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cXHUwMDNlaW5mbzAsXFxuIFxcdFxcdFxcdFxcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xcbi1cXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSsrO1xcbitcXHRpZiAobGlrZWx5KGh0dF9zdGF0dXMgXFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy5md190eF9zdGF0dXNbaHR0X3N0YXR1c10rKztcXG4gXFxuLVxcdHN3aXRjaCAod2JtX3N0YXR1cykge1xcbitcXHRzd2l0Y2ggKGh0dF9zdGF0dXMpIHtcXG4gXFx0Y2FzZSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0s6XFxuLVxcdFxcdHRzLmFja2VkID0gKHdibV9zdGF0dXMgPT0gSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LKTtcXG4rXFx0XFx0dHMuYWNrZWQgPSB0cnVlO1xcbiBcXHRcXHR0cy5hY2tfcnNzaSA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXFx1MDAzZWluZm8yLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcXG4gXFxuQEAgLTYwOCw3ICs2MTEsNyBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4tXFx0XFx0YXRoMTJrX3dhcm4oZHAtXFx1MDAzZWFiLCBcXFwiVW5rbm93biBodHQgd2JtIHR4IHN0YXR1cyAlZFxcXFxuXFxcIiwgd2JtX3N0YXR1cyk7XFxuK1xcdFxcdGF0aDEya193YXJuKGRwLVxcdTAwM2VhYiwgXFxcIlVua25vd24gaHR0IHR4IHN0YXR1cyAlZFxcXFxuXFxcIiwgaHR0X3N0YXR1cyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIH1cXG5AQCAtOTg0LDExICs5ODcsMTcgQEAgdm9pZCBhdGgxMmtfd2lmaTdfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBpbnQgcmluZ19pZClcXG4gXFx0XFx0LyogRmluZCB0aGUgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFIHZhbHVlICovXFxuIFxcdFxcdGJ1Zl9yZWxfc291cmNlID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFKTtcXG4tXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcXG4rXFx0XFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcXHUwMDNjIEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSlcXG4rXFx0XFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRcXHRyZWxfc3RhdHVzID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XFxuLVxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10rKztcXG4rXFx0XFx0aWYgKGxpa2VseShyZWxfc3RhdHVzIFxcdTAwM2MgTUFYX1RRTV9SRUxFQVNFX1JFQVNPTikpXFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10rKztcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRcXHQvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvXFxuIFxcdFxcdCAqIHRvIHJlZHVjZSBjb250ZW50aW9uXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXFxuaW5kZXggNDljNjkzMjg5NzA5NC4uNjBlN2EzNjA5N2YxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xcbkBAIC0zMjksNyArMzI5LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfaGFsX2Rlc2NfcmVvX3BhcnNlX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0XFx0ICAgIEhBTF9SRU9fREVTVF9SSU5HX0lORk8wX1BVU0hfUkVBU09OKTtcXG4gXFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XFxuLVxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xcbitcXHRpZiAobGlrZWx5KGVycl9jb2RlIFxcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xcbitcXHRlbHNlXFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFxuIFxcdGlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX1JPVVRJTkdfSU5TVFJVQ1RJT04pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDY6MjM6MTEuNjI0OTA0NTU1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTY2MDQyNzA3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgV2ktRmkgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gYWRkaW5nIGRlYnVnZnMgZW50cmllcywgdXBkYXRpbmcgc3RhdGlzdGljcywgYW5kIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBzdGF0aXN0aWNzIGFycmF5IGFjY2Vzc2VzLCB3aGljaCBkbyBub3QgYWx0ZXIgdGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCBpcyBtZWFuaW5nZnVsIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDNiZGU2YTczYzZmZWMwNmZhYWU1YmUzY2MzYzA4YjkyMjc5ZGNjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDA2OjIzOjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuaW5kZXggZDU0OTk1YjdhZGIyNy4uMTI3OTFlMjY3ZDFhOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuQEAgLTEwNzEsNiArMTA3MSwyMCBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdFx0W0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfUE5fRVJSX0ZMQUdfU0VUXSA9IFwiUE4gZXJyXCIsXG4gXHRcdFtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQkxPQ0tFRF0gPSBcIkRlc2MgYmxvY2tlZFwifTtcbiBcbitcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcnhfZHJvcFtXQk1fRVJSX0RST1BfTUFYXSA9IHtcbitcdFx0W1dCTV9FUlJfRFJPUF9HRVRfU1dfREVTQ10gPSBcIlNXIGRlc2MgZXJyb3JcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9ERVNDX1BBUlNFXSA9IFwiRGVzYyBwYXJzZSBlcnJvclwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX0lOVl9IV19JRF0gPSBcIkludmFsaWQgaHcgaWRcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQXSA9IFwiTnVsbCBQYXJ0bmVyIGRwXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQXSA9IFwiUHJvY2VzcyBOdWxsIFBhcnRuZXIgZHBcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BERVZdID0gXCJOdWxsIFBkZXZcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX0FSXSA9IFwiTnVsbCBhclwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HXSA9IFwiQ0FDIFJ1bm5pbmdcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9TR10gPSBcIlNjYXR0ZXIgR2F0aGVyXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0gPSBcIkludmFsaWQgTldpZmkgSGRyIGxlblwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSA9IFwiUkVPIEdlbmVyaWNcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSA9IFwiUlhETUEgR2VuZXJpY1wifTtcbitcbiBcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcmVsX3NyY1tIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF0gPSB7XG4gXHRcdFtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1RRTV0gPSBcIlRRTVwiLFxuIFx0XHRbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9SWERNQV0gPSBcIlJ4ZG1hXCIsXG5AQCAtMTA5NSwxMyArMTEwOSwzMiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSsrKVxuIFx0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCIlczogJXVcXG5cIixcbi1cdFx0XHRcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2VyeGRtYV9lcnJvcltpXSk7XG4rXHRcdFx0XHQgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5yeGRtYV9lcnJvcltpXSk7XG4gXG4gXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5SRU8gZXJyb3JzOlxcblwiKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpKyspXG4gXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIiVzOiAldVxcblwiLFxuLVx0XHRcdFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2VyZW9fZXJyb3JbaV0pO1xuK1x0XHRcdFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLnJlb19lcnJvcltpXSk7XG4rXG4rXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5XQk0gUnggRHJvcCBDb3VudDpcXG5cIik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXQk1fRVJSX0RST1BfTUFYOyBpKyspXG4rXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIiVzOiAldVxcblwiLFxuK1x0XHRcdFx0IHdibV9yeF9kcm9wW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5kcm9wW2ldKTtcbitcbitcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcblJFTyBzZW50IHRvIHN0YWNrOlxcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJyaW5nJWQ6XCIsIGkpO1xuK1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaisrKVxuK1x0XHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxuK1x0XHRcdFx0XHQgXCJcXHQlZDoldVwiLCBqLFxuK1x0XHRcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXNlbnRfdG9fc3RhY2tbaV1bal0pO1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5cIik7XG4rXHR9XG4rXG4rXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcbitcdFx0XHQgXCJcXG5XQk0gU1cgZGVzYyBmYWxsYmFjayAoSFcgQ0Mgbm90IGRvbmUpOiAldVxcblwiLFxuK1x0XHRcdCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKTtcbiBcbiBcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcbkhBTCBSRU8gZXJyb3JzOlxcblwiKTtcbiBcbkBAIC0xMTE3LDYgKzExNTAsMTEgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcInJpbmclZDogJXVcXG5cIixcbiBcdFx0XHRcdCBpLCBkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLmRlc2NfbmFbaV0pO1xuIFxuK1x0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwiXFxuVFggRGVzY3JpcHRvciBQb29sIEFsbG9jIEZhaWx1cmVzOlxcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19IV19NQVhfUVVFVUVTOyBpKyspXG4rXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcInBvb2wlZDogJXVcXG5cIixcbitcdFx0XHRcdCBpLCBkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLnR4YnVmX25hW2ldKTtcbitcbiBcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxuIFx0XHRcdCBcIlxcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxuXCIsXG4gXHRcdFx0IGF0b21pY19yZWFkKFx1MDAyNmRldmljZV9zdGF0cy1cdTAwM2V0eF9lcnIubWlzY19mYWlsKSk7XG5AQCAtMTE4MSw3ICsxMjE5LDcgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5SRU8gUnggUmVjZWl2ZWQ6XFxuXCIpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSsrKSB7XG4tXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlJpbmclZDpcIiwgaSArIDEpO1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJyaW5nJWQ6XCIsIGkpO1xuIFxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaisrKSB7XG4gXHRcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXG5AQCAtMTIxNSw4ICsxMjUzLDQwIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHNzaXplX3RcbithdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4rXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcbitcdFx0XHRcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4re1xuK1x0c3RydWN0IGF0aDEya19iYXNlICphYiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuK1x0c3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpO1xuK1x0c3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMgKmRldmljZV9zdGF0cyA9IFx1MDAyNmRwLVx1MDAzZWRldmljZV9zdGF0cztcbitcdGNoYXIgYnVmWzIwXSA9IHt9O1xuK1x0aW50IHJldDtcbitcbitcdC8qIGZpbHRlciBwYXJ0aWFsIHdyaXRlcyBhbmQgaW52YWxpZCBjb21tYW5kcyAqL1xuK1x0aWYgKCpwcG9zICE9IDAgfHwgY291bnQgXHUwMDNlPSBzaXplb2YoYnVmKSB8fCBjb3VudCA9PSAwKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJldCA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0LyogZHJvcCB0aGUgcG9zc2libGUgJ1xcbicgZnJvbSB0aGUgZW5kICovXG4rXHRpZiAoYnVmWypwcG9zIC0gMV0gPT0gJ1xcbicpXG4rXHRcdGJ1ZlsqcHBvcyAtIDFdID0gJ1xcMCc7XG4rXG4rXHRpZiAoIXN0cmNtcChidWYsIFwicmVzZXRcIikpIHtcbitcdFx0bWVtc2V0KGRldmljZV9zdGF0cywgMCwgc2l6ZW9mKCpkZXZpY2Vfc3RhdHMpKTtcbitcdFx0cmV0dXJuIGNvdW50O1xuK1x0fVxuK1xuK1x0cmV0dXJuIC1FSU5WQUw7XG4rfVxuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xuIFx0LnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyxcbitcdC53cml0ZSA9IGF0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyxcbiBcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4gXHQub3duZXIgPSBUSElTX01PRFVMRSxcbiBcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbkBAIC0xMjI3LDcgKzEyOTcsNyBAQCB2b2lkIGF0aDEya19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwic2ltdWxhdGVfZndfY3Jhc2hcIiwgMDYwMCwgYWItXHUwMDNlZGVidWdmc19zb2MsIGFiLFxuIFx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcbiBcbi1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJkZXZpY2VfZHBfc3RhdHNcIiwgMDQwMCwgYWItXHUwMDNlZGVidWdmc19zb2MsIGFiLFxuK1x0ZGVidWdmc19jcmVhdGVfZmlsZShcImRldmljZV9kcF9zdGF0c1wiLCAwNjAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4gXHRcdFx0ICAgIFx1MDAyNmZvcHNfZGV2aWNlX2RwX3N0YXRzKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5pbmRleCBiZWYwZjJiYTA1NjBmLi4yODlhZWRlNmRhYmI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbkBAIC03LDYgKzcsNyBAQFxuICNpZm5kZWYgQVRIMTJLX0RQX0hcbiAjZGVmaW5lIEFUSDEyS19EUF9IXG4gXG4rI2luY2x1ZGUgXCJkcF9zdGF0cy5oXCJcbiAjaW5jbHVkZSBcImh3LmhcIlxuICNpbmNsdWRlIFwiZHBfaHR0LmhcIlxuICNpbmNsdWRlIFwiZHBfY21uLmhcIlxuQEAgLTQyOSwxOSArNDMwLDI3IEBAIHN0cnVjdCBhdGgxMmtfZHBfYXJjaF9vcHMge1xuIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB7XG4gXHQvKiBUQ0wgUmluZyBEZXNjcmlwdG9yIHVuYXZhaWxhYmxlICovXG4gXHR1MzIgZGVzY19uYVtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbitcdC8qIFRYIGRlc2NyaXB0b3IgcG9vbCBleGhhdXN0ZWQgKHBlciBwb29sX2lkIC8gdHJhZmZpYyBjbGFzcykgKi9cbitcdHUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107XG4gXHQvKiBPdGhlciBmYWlsdXJlcyBkdXJpbmcgZHBfdHggZHVlIHRvIG1lbSBhbGxvY2F0aW9uIGZhaWx1cmVcbiBcdCAqIGlkciB1bmF2YWlsYWJsZSBldGMuXG4gXHQgKi9cbiBcdGF0b21pY190IG1pc2NfZmFpbDtcbiB9O1xuIFxuK3N0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMge1xuK1x0dTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07XG4rXHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcbitcdHUzMiBkcm9wW1dCTV9FUlJfRFJPUF9NQVhdO1xuK1x0dTMyIHN3X2Rlc2NfZmFsbGJhY2s7XG4rfTtcbitcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7XG4gXHR1MzIgZXJyX3JpbmdfcGt0cztcbiBcdHUzMiBpbnZhbGlkX3JibTtcbi1cdHUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdO1xuLVx0dTMyIHJlb19lcnJvcltIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWF07XG4gXHR1MzIgaGFsX3Jlb19lcnJvcltEUF9SRU9fRFNUX1JJTkdfTUFYXTtcbiBcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB0eF9lcnI7XG4rXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHdibV9lcnI7XG4gXHR1MzIgcmVvX3J4W0RQX1JFT19EU1RfUklOR19NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XG4gXHR1MzIgcnhfd2JtX3JlbF9zb3VyY2VbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XG4gXHR1MzIgdHFtX3JlbF9yZWFzb25bTUFYX1RRTV9SRUxFQVNFX1JFQVNPTl07XG5AQCAtNDUwLDYgKzQ1OSw3IEBAIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcbiBcdHUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbiBcdHUzMiB0eF9jb21wbGV0ZWRbRFBfVENMX05VTV9SSU5HX01BWF07XG4gXHR1MzIgcmVvX2V4Y2VwX21zZHVfYnVmX3R5cGU7XG4rXHR1MzIgc2VudF90b19zdGFja1tEUF9SRU9fRFNUX1JJTkdfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdO1xuIH07XG4gXG4gc3RydWN0IGF0aDEya19kcCB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNTI1NmRiZjc0MFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oXG5AQCAtMCwwICsxLDI1IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqL1xuKy8qXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4rICovXG4rXG4rI2lmbmRlZiBBVEgxMktfRFBfU1RBVFNfSFxuKyNkZWZpbmUgQVRIMTJLX0RQX1NUQVRTX0hcbitcbitlbnVtIGF0aDEya193Ym1fZXJyX2Ryb3BfcmVhc29uIHtcbitcdFdCTV9FUlJfRFJPUF9HRVRfU1dfREVTQyxcbitcdFdCTV9FUlJfRFJPUF9ERVNDX1BBUlNFLFxuK1x0V0JNX0VSUl9EUk9QX0lOVl9IV19JRCxcbitcdFdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLFxuK1x0V0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUCxcbitcdFdCTV9FUlJfRFJPUF9OVUxMX1BERVYsXG4rXHRXQk1fRVJSX0RST1BfTlVMTF9BUixcbitcdFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyxcbitcdFdCTV9FUlJfRFJPUF9TRyxcbitcdFdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLFxuK1x0V0JNX0VSUl9EUk9QX1JFT19HRU5FUklDLFxuK1x0V0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUMsXG4rXHRXQk1fRVJSX0RST1BfTUFYLFxuK307XG4rXG4rI2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG5pbmRleCA5NWQ4N2RkNjc4NzJmLi4yNWZkOGJmNzg1OGY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcbkBAIC0xMiw2ICsxMiwxNSBAQFxuICNpbmNsdWRlIFwiaGFsX3djbjc4NTAuaFwiXG4gI2luY2x1ZGUgXCJoYWxfcWNjMjA3Mi5oXCJcbiBcbitzdGF0aWMgdm9pZFxuK2F0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuK1x0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICptc2R1LFxuK1x0XHRcdFx0ICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pXG4re1xuK1x0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtkcm9wX3JlYXNvbl0rKztcbitcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK31cbitcbiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRcdFx0ICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLFxuIFx0XHRcdFx0XHQgIF9fbGUzMiBwZWVyX21ldGFkYXRhKVxuQEAgLTY0Miw3ICs2NTEsMTAgQEAgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3NfcmVjZWl2ZWRfcGFja2V0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuLVxuK1x0XHRpZiAobGlrZWx5KHJpbmdfaWQgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVgpKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy5zZW50X3RvX3N0YWNrW3JpbmdfaWRdW3BhcnRuZXJfZHAtXHUwMDNlZGV2aWNlX2lkXSsrO1xuK1x0XHRlbHNlXG4rXHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFx0XHRhdGgxMmtfZHBfcnhfZGVsaXZlcl9tc2R1KGRwX3BkZXYsIG5hcGksIG1zZHUsIFx1MDAyNnJ4X2luZm8pO1xuIFx0fVxuIFxuQEAgLTE2MTQsNiArMTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQncyBsZW5ndGggKi9cbiBcdFx0bXNkdV9sZW4gPSBtc2R1X2xlbiAtIChEUF9SWF9CVUZGRVJfU0laRSAtIGhhbF9yeF9kZXNjX3N6KTtcbiBcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X251bGxfcV9kZXNjX3NnX2Ryb3AoZHAsIG1zZHVfbGVuLCBtc2R1X2xpc3QpO1xuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9TR10rKztcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG5AQCAtMTY0OSw4ICsxNjYyLDEwIEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHRza2JfcHV0KG1zZHUsIGhhbF9yeF9kZXNjX3N6ICsgbDNwYWRfYnl0ZXMgKyBtc2R1X2xlbik7XG4gXHRcdHNrYl9wdWxsKG1zZHUsIGhhbF9yeF9kZXNjX3N6ICsgbDNwYWRfYnl0ZXMpO1xuIFx0fVxuLVx0aWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKVxuK1x0aWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKSB7XG4rXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdKys7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFxuIFx0YXRoMTJrX2RwX3J4X2hfcHBkdShkcF9wZGV2LCByeF9pbmZvKTtcbiBcdHJldCA9IGF0aDEya193aWZpN19kcF9yeF9oX21wZHUoZHBfcGRldiwgbXNkdSwgcnhfaW5mbyk7XG5AQCAtMTc2Myw3ICsxNzc4LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3J4ZG1hX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRzdHJ1Y3QgYXRoMTJrX3NrYl9yeGNiICpyeGNiID0gQVRIMTJLX1NLQl9SWENCKG1zZHUpO1xuIFx0Ym9vbCBkcm9wID0gZmFsc2U7XG4gXG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucnhkbWFfZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0rKztcbitcdGlmIChsaWtlbHkocnhjYi1cdTAwM2VlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYKSlcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucnhkbWFfZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0rKztcbitcdGVsc2VcbitcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0c3dpdGNoIChyeGNiLVx1MDAzZWVycl9jb2RlKSB7XG4gXHRjYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOlxuQEAgLTE3ODAsNiArMTc5OCw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3J4ZG1hX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdC8qIFRPRE86IFJldmlldyBvdGhlciByeGRtYSBlcnJvciBjb2RlIHRvIGNoZWNrIGlmIGFueXRoaW5nIGlzXG4gXHRcdCAqIHdvcnRoIHJlcG9ydGluZyB0byBtYWM4MDIxMVxuIFx0XHQgKi9cbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10rKztcbiBcdFx0ZHJvcCA9IHRydWU7XG4gXHRcdGJyZWFrO1xuIFx0fVxuQEAgLTE3OTYsNyArMTgxNSwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdHN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7XG4gXHRib29sIGRyb3AgPSBmYWxzZTtcbiBcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5yZW9fZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0rKztcbitcdGlmIChsaWtlbHkocnhjYi1cdTAwM2VlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0rKztcbitcdGVsc2VcbitcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0c3dpdGNoIChyeGNiLVx1MDAzZWVycl9jb2RlKSB7XG4gXHRjYXNlIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfREVTQ19BRERSX1pFUk86XG5AQCAtMTgxMyw2ICsxODM1LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcmVvX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdC8qIFRPRE86IFJldmlldyBvdGhlciBlcnJvcnMgYW5kIHByb2Nlc3MgdGhlbSB0byBtYWM4MDIxMVxuIFx0XHQgKiBhcyBhcHByb3ByaWF0ZS5cbiBcdFx0ICovXG4rXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSsrO1xuIFx0XHRkcm9wID0gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHR9XG5AQCAtMTkzNSw2ICsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdHJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLFxuIFx0XHRcdFx0XHRcdFx0ICBcdTAwMjZlcnJfaW5mbyk7XG4gXHRcdGlmIChyZXQpIHtcbitcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9ERVNDX1BBUlNFXSsrO1xuIFx0XHRcdGF0aDEya193YXJuKGFiLCBcImZhaWxlZCB0byBwYXJzZSByeCBlcnJvciBpbiB3Ym1fcmVsIHJpbmcgZGVzYyAlZFxcblwiLFxuIFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTk0NCw4ICsxOTY4LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFxuIFx0XHQvKiByZXRyeSBtYW51YWwgZGVzYyByZXRyaWV2YWwgaWYgaHcgY2MgaXMgbm90IGRvbmUgKi9cbiBcdFx0aWYgKCFkZXNjX2luZm8pIHtcbitcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKys7XG4gXHRcdFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBlcnJfaW5mby5jb29raWUpO1xuIFx0XHRcdGlmICghZGVzY19pbmZvKSB7XG4rXHRcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9HRVRfU1dfREVTQ10rKztcbiBcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcIkludmFsaWQgY29va2llIGluIERQIFdCTSByeCBlcnJvciBkZXNjcmlwdG9yIHJldHJpZXZhbDogMHgleFxcblwiLFxuIFx0XHRcdFx0XHQgICAgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE5NjEsNyArMTk4Nyw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRkZXZpY2VfaWQgPSBkZXNjX2luZm8tXHUwMDNlZGV2aWNlX2lkO1xuIFx0XHRwYXJ0bmVyX2RwID0gYXRoMTJrX2RwX2h3X2dycF90b19kcChkcF9od19ncnAsIGRldmljZV9pZCk7XG4gXHRcdGlmICh1bmxpa2VseSghcGFydG5lcl9kcCkpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjAwNyw3ICsyMDM0LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdGh3X2xpbmtfaWQgPSBhdGgxMmtfZHBfcnhfZ2V0X21zZHVfc3JjX2xpbmsocGFydG5lcl9kcC1cdTAwM2VoYWwsXG4gXHRcdFx0XHRcdFx0XHQgICAgbXNkdV9kYXRhKTtcbiBcdFx0aWYgKGh3X2xpbmtfaWQgXHUwMDNlPSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4rXHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4rXHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX0lOVl9IV19JRCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjA2OCw3ICsyMDk2LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLFxuIFx0XHRcdFx0ICAgXCJVbmFibGUgdG8gcHJvY2VzcyBXQk0gZXJyb3IgbXNkdSBkdWUgdG8gaW52YWxpZCBodyBsaW5rIGlkICVkIGRldmljZSBpZCAlZFxcblwiLFxuIFx0XHRcdFx0ICAgaHdfbGlua19pZCwgZGV2aWNlX2lkKTtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTIwNzcsMTggKzIxMDYsMjEgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXG4gXHRcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XG4gXHRcdGlmICghZHBfcGRldikge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuK1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BERVYpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXHRcdGFyID0gYXRoMTJrX3BkZXZfZHBfdG9fYXIoZHBfcGRldik7XG4gXG4gXHRcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cdTAwM2VhYi1cdTAwM2VwZGV2c19hY3RpdmVbcGRldl9pZHhdKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuK1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ0FDX1JVTk5JTkcsIFx1MDAyNmFyLVx1MDAzZWRldl9mbGFncykpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbkBAIC0xNjcsOCArMTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXG4gXHR0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1t0aS5yaW5nX2lkXTtcbiBcbiBcdHR4X2Rlc2MgPSBhdGgxMmtfZHBfdHhfYXNzaWduX2J1ZmZlcihkcCwgcG9vbF9pZCk7XG4tXHRpZiAoIXR4X2Rlc2MpXG4rXHRpZiAoIXR4X2Rlc2MpIHtcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSsrO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbiBcbiBcdGRwX2xpbmtfdmlmID0gYXRoMTJrX2RwX3ZpZl90b19kcF9saW5rX3ZpZihcdTAwMjZhaHZpZi1cdTAwM2VkcF92aWYsIGFydmlmLVx1MDAzZWxpbmtfaWQpO1xuIFxuQEAgLTU3NSwxOCArNTc3LDE5IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYyxcbiB7XG4gXHRzdHJ1Y3QgaHR0X3R4X3dibV9jb21wbGV0aW9uICpzdGF0dXNfZGVzYztcbiBcdHN0cnVjdCBhdGgxMmtfZHBfaHR0X3dibV90eF9zdGF0dXMgdHMgPSB7fTtcbi1cdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgd2JtX3N0YXR1cztcbitcdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgaHR0X3N0YXR1cztcbiBcdHUxNiBwZWVyX2lkO1xuIFxuIFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xuIFxuLVx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzAsXG4rXHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSsrO1xuK1x0aWYgKGxpa2VseShodHRfc3RhdHVzIFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1todHRfc3RhdHVzXSsrO1xuIFxuLVx0c3dpdGNoICh3Ym1fc3RhdHVzKSB7XG4rXHRzd2l0Y2ggKGh0dF9zdGF0dXMpIHtcbiBcdGNhc2UgSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LOlxuLVx0XHR0cy5hY2tlZCA9ICh3Ym1fc3RhdHVzID09IEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSyk7XG4rXHRcdHRzLmFja2VkID0gdHJ1ZTtcbiBcdFx0dHMuYWNrX3Jzc2kgPSBsZTMyX2dldF9iaXRzKHN0YXR1c19kZXNjLVx1MDAzZWluZm8yLFxuIFx0XHRcdFx0XHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcbiBcbkBAIC02MDgsNyArNjExLDcgQEAgYXRoMTJrX2RwX3R4X3Byb2Nlc3NfaHR0X3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCB2b2lkICpkZXNjLFxuIFx0XHQgKi9cbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuLVx0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCJVbmtub3duIGh0dCB3Ym0gdHggc3RhdHVzICVkXFxuXCIsIHdibV9zdGF0dXMpO1xuK1x0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCJVbmtub3duIGh0dCB0eCBzdGF0dXMgJWRcXG5cIiwgaHR0X3N0YXR1cyk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIH1cbkBAIC05ODQsMTEgKzk4NywxNyBAQCB2b2lkIGF0aDEya193aWZpN19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkKVxuIFx0XHQvKiBGaW5kIHRoZSBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUgdmFsdWUgKi9cbiBcdFx0YnVmX3JlbF9zb3VyY2UgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdFx0ICAgICAgIEhBTF9XQk1fUkVMRUFTRV9JTkZPMF9SRUxfU1JDX01PRFVMRSk7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcbitcdFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcdTAwM2MgSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVgpKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcbitcdFx0ZWxzZVxuK1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdFx0cmVsX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHModHhfc3RhdHVzLVx1MDAzZWluZm8wLFxuIFx0XHRcdFx0XHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSsrO1xuK1x0XHRpZiAobGlrZWx5KHJlbF9zdGF0dXMgXHUwMDNjIE1BWF9UUU1fUkVMRUFTRV9SRUFTT04pKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSsrO1xuK1x0XHRlbHNlXG4rXHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0XHQvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvXG4gXHRcdCAqIHRvIHJlZHVjZSBjb250ZW50aW9uXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmNcbmluZGV4IDQ5YzY5MzI4OTcwOTQuLjYwZTdhMzYwOTdmMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG5AQCAtMzI5LDcgKzMyOSwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2hhbF9kZXNjX3Jlb19wYXJzZV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHQgICAgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfUFVTSF9SRUFTT04pO1xuIFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xuK1x0aWYgKGxpa2VseShlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbZXJyX2NvZGVdKys7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdGlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgXHUwMDI2XHUwMDI2XG4gXHQgICAgcHVzaF9yZWFzb24gIT0gSEFMX1JFT19ERVNUX1JJTkdfUFVTSF9SRUFTT05fUk9VVElOR19JTlNUUlVDVElPTikge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDY6MjM6MTEuNjI0OTA2OTU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY2MDQyMjE5NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IGF0aDEyayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3ZlIGdvdCBhIHBhdGNoIHRvdWNoaW5nIHRoZSBgYXRoMTJrYCBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBkZWJ1Z2ZzIGFuZCBzdGF0aXN0aWNzIHVwZGF0ZXMgd2l0aGluIHRoZSBkYXRhIHBhdGguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBpbnRyb2R1Y2UgYW55IG5ldyBmdXp6aW5nIHRhcmdldHMuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgbW9zdCBvZiB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY29uY2VudHJhdGVkIGluOlxuXG4qICAgQWRkaW5nIGRlYnVnZnMgZW50cmllcyBmb3Igc3RhdHMgKGBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0c2AsIGBhdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHNgKS5cbiogICBJbmNyZW1lbnRpbmcgc3RhdGlzdGljcyBjb3VudGVycyB3aXRoaW4gdmFyaW91cyBmdW5jdGlvbnMgKGBkcF9yeC5jYCwgYGRwX3R4LmNgLCBgaGFsX3J4LmNgKS5cbiogICBBZGRpbmcgYm91bmRzIGNoZWNrcyB0byBwcm90ZWN0IHRoZSBzdGF0cyBhcnJheXMgZnJvbSBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cblxuVGhlIG1haW4gY29uY2VybiBpcyB3aGV0aGVyIHRoZXNlIGNoYW5nZXMgb3BlbiB1cCBhbnkgbmV3IGF0dGFjayBzdXJmYWNlcyBvciwgbW9yZSBwZXJ0aW5lbnRseSwgaWYgdGhleSBhcmUgcmVhY2hhYmxlIGluIGEgZnV6emVyLWZyaWVuZGx5IHdheS4gVGhlIGBhdGgxMmtgIGRyaXZlciBpcyBmb3IgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSwgZWl0aGVyIFBDSWUgb3IgQUhCLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nLCBcIkNhbiB0aGlzIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD9cIiBUaGUgYW5zd2VyIGlzIG5vOyB0aGlzIGRyaXZlciwgYXMgaXQncyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUuXG5cbkNvbnNpZGVyaW5nIHRoZSBpbnN0cnVjdGlvbnMsIFwiQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSxcIiB0aGlzIGZpdHMgdGhlIGRlc2NyaXB0aW9uLiBUaG91Z2ggbm90IGEgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgc3BlY2lmaWNhbGx5LCB0aGUgYXRoMTJrIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZm9yIFBDSWUvQUhCIFdpLUZpIGhhcmR3YXJlLiBUaGUgY2hhbmdlcyB0aGVtc2VsdmVzIGFyZSBtb3N0bHkgc3RhdHMgYW5kIGRlYnVnZnMsIGFuZCB0aGV5IGRvbid0IGludHJvZHVjZSBzdWJzdGFudGlhbCBuZXcgY29kZSBwYXRocy4gVGhlcmUncyBubyBlbXVsYXRpb24gZm9yIGF0aDEyayBpbiBRRU1VLCBtZWFuaW5nIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHJ1biB0aGlzIGNvZGUgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuU28sIGFsdGhvdWdoIHRoZSBib3VuZHMgY2hlY2tzIGFyZSBmdW5jdGlvbmFsLCB0aGV5IGFyZSBwcmltYXJpbHkgZm9yIHRoZSBwcm90ZWN0aW9uIG9mIHN0YXRzIGFycmF5cyBhbmQgYXJlIG5vdCBpbnRyb2R1Y2luZyBuZXcgbG9naWMgb3IgdnVsbmVyYWJpbGl0aWVzLiBJIHdvbid0IGV2ZW4gYm90aGVyIGNoZWNraW5nIGZvciBzeXprYWxsZXIgY292ZXJhZ2UsIHNpbmNlIHRoYXQgd291bGQgYmUgYSB3YXN0ZSBvZiB0aW1lIGFuZCBpdCBpcyBoaWdobHkgdW5saWtlbHkgdG8gZXhpc3QuIEJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCBXb3J0aEZ1enppbmcgaXMgZGVmaW5pdGl2ZWx5IGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDkwLCJPdXRwdXRUb2tlbnMiOjEwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwNjoyMzoyOC4yMjkxMzE5NDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgV2ktRmkgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gYWRkaW5nIGRlYnVnZnMgZW50cmllcywgdXBkYXRpbmcgc3RhdGlzdGljcywgYW5kIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBzdGF0aXN0aWNzIGFycmF5IGFjY2Vzc2VzLCB3aGljaCBkbyBub3QgYWx0ZXIgdGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCBpcyBtZWFuaW5nZnVsIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBhZGRpbmcgZGVidWdmcyBlbnRyaWVzLCB1cGRhdGluZyBzdGF0aXN0aWNzLCBhbmQgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIHN0YXRpc3RpY3MgYXJyYXkgYWNjZXNzZXMsIHdoaWNoIGRvIG5vdCBhbHRlciB0aGUgY29yZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGlzIG1lYW5pbmdmdWwgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwNjoyMzoyOC4yMjkxNzgyNjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5xn6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-19 05:42:09 +0000 UTC FinishedAt: 2026-08-19 06:23:29 +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+CgkJCTx0ZD4yMDI2LzA4LzE5IDA2OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBhZGRpbmcgZGVidWdmcyBlbnRyaWVzLCB1cGRhdGluZyBzdGF0aXN0aWNzLCBhbmQgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIHN0YXRpc3RpY3MgYXJyYXkgYWNjZXNzZXMsIHdoaWNoIGRvIG5vdCBhbHRlciB0aGUgY29yZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGlzIG1lYW5pbmdmdWwgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA2OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDNiZGU2YTczYzZmZWMwNmZhYWU1YmUzY2MzYzA4YjkyMjc5ZGNjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDA2OjIzOjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbmluZGV4IGQ1NDk5NWI3YWRiMjcuLjEyNzkxZTI2N2QxYTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcbkBAIC0xMDcxLDYgJiM0MzsxMDcxLDIwIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9QTl9FUlJfRkxBR19TRVRdID0gXCYjMzQ7UE4gZXJyXCYjMzQ7LFxuIFx0XHRbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9ERVNDX0JMT0NLRURdID0gXCYjMzQ7RGVzYyBibG9ja2VkXCYjMzQ7fTtcbiBcbiYjNDM7XHRzdGF0aWMgY29uc3QgY2hhciAqd2JtX3J4X2Ryb3BbV0JNX0VSUl9EUk9QX01BWF0gPSB7XG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX0dFVF9TV19ERVNDXSA9IFwmIzM0O1NXIGRlc2MgZXJyb3JcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX0RFU0NfUEFSU0VdID0gXCYjMzQ7RGVzYyBwYXJzZSBlcnJvclwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfSU5WX0hXX0lEXSA9IFwmIzM0O0ludmFsaWQgaHcgaWRcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFBdID0gXCYjMzQ7TnVsbCBQYXJ0bmVyIGRwXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFBdID0gXCYjMzQ7UHJvY2VzcyBOdWxsIFBhcnRuZXIgZHBcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX05VTExfUERFVl0gPSBcJiMzNDtOdWxsIFBkZXZcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX05VTExfQVJdID0gXCYjMzQ7TnVsbCBhclwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkddID0gXCYjMzQ7Q0FDIFJ1bm5pbmdcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX1NHXSA9IFwmIzM0O1NjYXR0ZXIgR2F0aGVyXCYjMzQ7LFxuJiM0MztcdFx0W1dCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSXSA9IFwmIzM0O0ludmFsaWQgTldpZmkgSGRyIGxlblwmIzM0OyxcbiYjNDM7XHRcdFtXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUNdID0gXCYjMzQ7UkVPIEdlbmVyaWNcJiMzNDssXG4mIzQzO1x0XHRbV0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUNdID0gXCYjMzQ7UlhETUEgR2VuZXJpY1wmIzM0O307XG4mIzQzO1xuIFx0c3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHtcbiBcdFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9IFwmIzM0O1RRTVwmIzM0OyxcbiBcdFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfUlhETUFdID0gXCYjMzQ7UnhkbWFcJiMzNDssXG5AQCAtMTA5NSwxMyAmIzQzOzExMDksMzIgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVg7IGkmIzQzOyYjNDM7KVxuIFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDslczogJXVcXG5cJiMzNDssXG4tXHRcdFx0XHQgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNlcnhkbWFfZXJyb3JbaV0pO1xuJiM0MztcdFx0XHRcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLnJ4ZG1hX2Vycm9yW2ldKTtcbiBcbiBcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblJFTyBlcnJvcnM6XFxuXCYjMzQ7KTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpJiM0MzsmIzQzOylcbiBcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7JXM6ICV1XFxuXCYjMzQ7LFxuLVx0XHRcdFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2VyZW9fZXJyb3JbaV0pO1xuJiM0MztcdFx0XHRcdCByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5yZW9fZXJyb3JbaV0pO1xuJiM0MztcbiYjNDM7XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5XQk0gUnggRHJvcCBDb3VudDpcXG5cJiMzNDspO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFdCTV9FUlJfRFJPUF9NQVg7IGkmIzQzOyYjNDM7KVxuJiM0MztcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7JXM6ICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCB3Ym1fcnhfZHJvcFtpXSwgZGV2aWNlX3N0YXRzLVx1MDAzZXdibV9lcnIuZHJvcFtpXSk7XG4mIzQzO1xuJiM0MztcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblJFTyBzZW50IHRvIHN0YWNrOlxcblwmIzM0Oyk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O3JpbmclZDpcJiMzNDssIGkpO1xuJiM0MztcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgYWItXHUwMDNlYWctXHUwMDNlbnVtX2RldmljZXM7IGomIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLFxuJiM0MztcdFx0XHRcdFx0IFwmIzM0O1xcdCVkOiV1XCYjMzQ7LCBqLFxuJiM0MztcdFx0XHRcdFx0IGRldmljZV9zdGF0cy1cdTAwM2VzZW50X3RvX3N0YWNrW2ldW2pdKTtcbiYjNDM7XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblwmIzM0Oyk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLFxuJiM0MztcdFx0XHQgXCYjMzQ7XFxuV0JNIFNXIGRlc2MgZmFsbGJhY2sgKEhXIENDIG5vdCBkb25lKTogJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKTtcbiBcbiBcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcbkhBTCBSRU8gZXJyb3JzOlxcblwmIzM0Oyk7XG4gXG5AQCAtMTExNyw2ICYjNDM7MTE1MCwxMSBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7cmluZyVkOiAldVxcblwmIzM0OyxcbiBcdFx0XHRcdCBpLCBkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLmRlc2NfbmFbaV0pO1xuIFxuJiM0MztcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblRYIERlc2NyaXB0b3IgUG9vbCBBbGxvYyBGYWlsdXJlczpcXG5cJiMzNDspO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19IV19NQVhfUVVFVUVTOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O3Bvb2wlZDogJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0IGksIGRldmljZV9zdGF0cy1cdTAwM2V0eF9lcnIudHhidWZfbmFbaV0pO1xuJiM0MztcbiBcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sXG4gXHRcdFx0IFwmIzM0O1xcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCBhdG9taWNfcmVhZChcdTAwMjZkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLm1pc2NfZmFpbCkpO1xuQEAgLTExODEsNyAmIzQzOzEyMTksNyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O1xcblJFTyBSeCBSZWNlaXZlZDpcXG5cJiMzNDspO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgXCYjMzQ7UmluZyVkOlwmIzM0OywgaSAmIzQzOyAxKTtcbiYjNDM7XHRcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sIFwmIzM0O3JpbmclZDpcJiMzNDssIGkpO1xuIFxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaiYjNDM7JiM0MzspIHtcbiBcdFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLFxuQEAgLTEyMTUsOCAmIzQzOzEyNTMsNDAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiYjNDM7c3RhdGljIHNzaXplX3RcbiYjNDM7YXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuJiM0MztcdFx0XHRcdCAgICAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuJiM0MztcdFx0XHRcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiID0gZmlsZS1cdTAwM2Vwcml2YXRlX2RhdGE7XG4mIzQzO1x0c3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzICpkZXZpY2Vfc3RhdHMgPSBcdTAwMjZkcC1cdTAwM2VkZXZpY2Vfc3RhdHM7XG4mIzQzO1x0Y2hhciBidWZbMjBdID0ge307XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0LyogZmlsdGVyIHBhcnRpYWwgd3JpdGVzIGFuZCBpbnZhbGlkIGNvbW1hbmRzICovXG4mIzQzO1x0aWYgKCpwcG9zICE9IDAgfHwgY291bnQgXHUwMDNlPSBzaXplb2YoYnVmKSB8fCBjb3VudCA9PSAwKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJldCA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdC8qIGRyb3AgdGhlIHBvc3NpYmxlICYjMzk7XFxuJiMzOTsgZnJvbSB0aGUgZW5kICovXG4mIzQzO1x0aWYgKGJ1ZlsqcHBvcyAtIDFdID09ICYjMzk7XFxuJiMzOTspXG4mIzQzO1x0XHRidWZbKnBwb3MgLSAxXSA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO1xuJiM0MztcdGlmICghc3RyY21wKGJ1ZiwgXCYjMzQ7cmVzZXRcJiMzNDspKSB7XG4mIzQzO1x0XHRtZW1zZXQoZGV2aWNlX3N0YXRzLCAwLCBzaXplb2YoKmRldmljZV9zdGF0cykpO1xuJiM0MztcdFx0cmV0dXJuIGNvdW50O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19kZXZpY2VfZHBfc3RhdHMgPSB7XG4gXHQucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLFxuJiM0MztcdC53cml0ZSA9IGF0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyxcbiBcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4gXHQub3duZXIgPSBUSElTX01PRFVMRSxcbiBcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbkBAIC0xMjI3LDcgJiM0MzsxMjk3LDcgQEAgdm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtzaW11bGF0ZV9md19jcmFzaFwmIzM0OywgMDYwMCwgYWItXHUwMDNlZGVidWdmc19zb2MsIGFiLFxuIFx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcbiBcbi1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCYjMzQ7ZGV2aWNlX2RwX3N0YXRzXCYjMzQ7LCAwNDAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4mIzQzO1x0ZGVidWdmc19jcmVhdGVfZmlsZShcJiMzNDtkZXZpY2VfZHBfc3RhdHNcJiMzNDssIDA2MDAsIGFiLVx1MDAzZWRlYnVnZnNfc29jLCBhYixcbiBcdFx0XHQgICAgXHUwMDI2Zm9wc19kZXZpY2VfZHBfc3RhdHMpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxuQEAgLTcsNiAmIzQzOzcsNyBAQFxuICNpZm5kZWYgQVRIMTJLX0RQX0hcbiAjZGVmaW5lIEFUSDEyS19EUF9IXG4gXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2RwX3N0YXRzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtody5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZHBfaHR0LmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDtkcF9jbW4uaFwmIzM0O1xuQEAgLTQyOSwxOSAmIzQzOzQzMCwyNyBAQCBzdHJ1Y3QgYXRoMTJrX2RwX2FyY2hfb3BzIHtcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMge1xuIFx0LyogVENMIFJpbmcgRGVzY3JpcHRvciB1bmF2YWlsYWJsZSAqL1xuIFx0dTMyIGRlc2NfbmFbRFBfVENMX05VTV9SSU5HX01BWF07XG4mIzQzO1x0LyogVFggZGVzY3JpcHRvciBwb29sIGV4aGF1c3RlZCAocGVyIHBvb2xfaWQgLyB0cmFmZmljIGNsYXNzKSAqL1xuJiM0MztcdHUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107XG4gXHQvKiBPdGhlciBmYWlsdXJlcyBkdXJpbmcgZHBfdHggZHVlIHRvIG1lbSBhbGxvY2F0aW9uIGZhaWx1cmVcbiBcdCAqIGlkciB1bmF2YWlsYWJsZSBldGMuXG4gXHQgKi9cbiBcdGF0b21pY190IG1pc2NfZmFpbDtcbiB9O1xuIFxuJiM0MztzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHtcbiYjNDM7XHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbiYjNDM7XHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcbiYjNDM7XHR1MzIgZHJvcFtXQk1fRVJSX0RST1BfTUFYXTtcbiYjNDM7XHR1MzIgc3dfZGVzY19mYWxsYmFjaztcbiYjNDM7fTtcbiYjNDM7XG4gc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMge1xuIFx0dTMyIGVycl9yaW5nX3BrdHM7XG4gXHR1MzIgaW52YWxpZF9yYm07XG4tXHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcbi1cdHUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdO1xuIFx0dTMyIGhhbF9yZW9fZXJyb3JbRFBfUkVPX0RTVF9SSU5HX01BWF07XG4gXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMgdHhfZXJyO1xuJiM0MztcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMgd2JtX2VycjtcbiBcdHUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiByeF93Ym1fcmVsX3NvdXJjZVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiBcdHUzMiB0cW1fcmVsX3JlYXNvbltNQVhfVFFNX1JFTEVBU0VfUkVBU09OXTtcbkBAIC00NTAsNiAmIzQzOzQ1OSw3IEBAIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcbiBcdHUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbiBcdHUzMiB0eF9jb21wbGV0ZWRbRFBfVENMX05VTV9SSU5HX01BWF07XG4gXHR1MzIgcmVvX2V4Y2VwX21zZHVfYnVmX3R5cGU7XG4mIzQzO1x0dTMyIHNlbnRfdG9fc3RhY2tbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcbiB9O1xuIFxuIHN0cnVjdCBhdGgxMmtfZHAge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjFhMDUyNTZkYmY3NDBcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxuQEAgLTAsMCAmIzQzOzEsMjUgQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqL1xuJiM0MzsvKlxuJiM0MzsgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaWZuZGVmIEFUSDEyS19EUF9TVEFUU19IXG4mIzQzOyNkZWZpbmUgQVRIMTJLX0RQX1NUQVRTX0hcbiYjNDM7XG4mIzQzO2VudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24ge1xuJiM0MztcdFdCTV9FUlJfRFJPUF9HRVRfU1dfREVTQyxcbiYjNDM7XHRXQk1fRVJSX0RST1BfREVTQ19QQVJTRSxcbiYjNDM7XHRXQk1fRVJSX0RST1BfSU5WX0hXX0lELFxuJiM0MztcdFdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFAsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX05VTExfUERFVixcbiYjNDM7XHRXQk1fRVJSX0RST1BfTlVMTF9BUixcbiYjNDM7XHRXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcsXG4mIzQzO1x0V0JNX0VSUl9EUk9QX1NHLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLFxuJiM0MztcdFdCTV9FUlJfRFJPUF9SRU9fR0VORVJJQyxcbiYjNDM7XHRXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQyxcbiYjNDM7XHRXQk1fRVJSX0RST1BfTUFYLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7I2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG5pbmRleCA5NWQ4N2RkNjc4NzJmLi4yNWZkOGJmNzg1OGY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcbkBAIC0xMiw2ICYjNDM7MTIsMTUgQEBcbiAjaW5jbHVkZSBcJiMzNDtoYWxfd2NuNzg1MC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7aGFsX3FjYzIwNzIuaFwmIzM0O1xuIFxuJiM0MztzdGF0aWMgdm9pZFxuJiM0MzthdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiYjNDM7XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKm1zZHUsXG4mIzQzO1x0XHRcdFx0ICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pXG4mIzQzO3tcbiYjNDM7XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW2Ryb3BfcmVhc29uXSYjNDM7JiM0Mzs7XG4mIzQzO1x0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHUxNiBhdGgxMmtfd2lmaTdfZHBfcnhfZ2V0X3BlZXJfaWQoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHRcdCAgZW51bSBhdGgxMmtfcGVlcl9tZXRhZGF0YV92ZXJzaW9uIHZlcixcbiBcdFx0XHRcdFx0ICBfX2xlMzIgcGVlcl9tZXRhZGF0YSlcbkBAIC02NDIsNyAmIzQzOzY1MSwxMCBAQCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc19yZWNlaXZlZF9wYWNrZXRzKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4tXG4mIzQzO1x0XHRpZiAobGlrZWx5KHJpbmdfaWQgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVgpKVxuJiM0MztcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMuc2VudF90b19zdGFja1tyaW5nX2lkXVtwYXJ0bmVyX2RwLVx1MDAzZWRldmljZV9pZF0mIzQzOyYjNDM7O1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRXQVJOX09OX09OQ0UoMSk7XG4gXHRcdGF0aDEya19kcF9yeF9kZWxpdmVyX21zZHUoZHBfcGRldiwgbmFwaSwgbXNkdSwgXHUwMDI2cnhfaW5mbyk7XG4gXHR9XG4gXG5AQCAtMTYxNCw2ICYjNDM7MTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQmIzM5O3MgbGVuZ3RoICovXG4gXHRcdG1zZHVfbGVuID0gbXNkdV9sZW4gLSAoRFBfUlhfQlVGRkVSX1NJWkUgLSBoYWxfcnhfZGVzY19zeik7XG4gXHRcdGF0aDEya193aWZpN19kcF9yeF9udWxsX3FfZGVzY19zZ19kcm9wKGRwLCBtc2R1X2xlbiwgbXNkdV9saXN0KTtcbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1NHXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuQEAgLTE2NDksOCAmIzQzOzE2NjIsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdHNrYl9wdXQobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogJiM0MzsgbDNwYWRfYnl0ZXMgJiM0MzsgbXNkdV9sZW4pO1xuIFx0XHRza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiAmIzQzOyBsM3BhZF9ieXRlcyk7XG4gXHR9XG4tXHRpZiAodW5saWtlbHkoIWF0aDEya19kcF9yeF9jaGVja19ud2lmaV9oZHJfbGVuX3ZhbGlkKGRwLCBtc2R1LCByeF9pbmZvKSkpXG4mIzQzO1x0aWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKSB7XG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiBcbiBcdGF0aDEya19kcF9yeF9oX3BwZHUoZHBfcGRldiwgcnhfaW5mbyk7XG4gXHRyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pO1xuQEAgLTE3NjMsNyAmIzQzOzE3NzgsMTAgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcnhkbWFfZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdHN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7XG4gXHRib29sIGRyb3AgPSBmYWxzZTtcbiBcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5yeGRtYV9lcnJvcltyeGNiLVx1MDAzZWVycl9jb2RlXSYjNDM7JiM0Mzs7XG4mIzQzO1x0aWYgKGxpa2VseShyeGNiLVx1MDAzZWVycl9jb2RlIFx1MDAzYyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVgpKVxuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucnhkbWFfZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0mIzQzOyYjNDM7O1xuJiM0MztcdGVsc2VcbiYjNDM7XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdHN3aXRjaCAocnhjYi1cdTAwM2VlcnJfY29kZSkge1xuIFx0Y2FzZSBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9VTkFVVEhfV0RTX0VSUjpcbkBAIC0xNzgwLDYgJiM0MzsxNzk4LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcnhkbWFfZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdFx0LyogVE9ETzogUmV2aWV3IG90aGVyIHJ4ZG1hIGVycm9yIGNvZGUgdG8gY2hlY2sgaWYgYW55dGhpbmcgaXNcbiBcdFx0ICogd29ydGggcmVwb3J0aW5nIHRvIG1hYzgwMjExXG4gXHRcdCAqL1xuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10mIzQzOyYjNDM7O1xuIFx0XHRkcm9wID0gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHR9XG5AQCAtMTc5Niw3ICYjNDM7MTgxNSwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdHN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7XG4gXHRib29sIGRyb3AgPSBmYWxzZTtcbiBcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5yZW9fZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0mIzQzOyYjNDM7O1xuJiM0MztcdGlmIChsaWtlbHkocnhjYi1cdTAwM2VlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW3J4Y2ItXHUwMDNlZXJyX2NvZGVdJiM0MzsmIzQzOztcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoMSk7XG4gXG4gXHRzd2l0Y2ggKHJ4Y2ItXHUwMDNlZXJyX2NvZGUpIHtcbiBcdGNhc2UgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9ERVNDX0FERFJfWkVSTzpcbkBAIC0xODEzLDYgJiM0MzsxODM1LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcmVvX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdC8qIFRPRE86IFJldmlldyBvdGhlciBlcnJvcnMgYW5kIHByb2Nlc3MgdGhlbSB0byBtYWM4MDIxMVxuIFx0XHQgKiBhcyBhcHByb3ByaWF0ZS5cbiBcdFx0ICovXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10mIzQzOyYjNDM7O1xuIFx0XHRkcm9wID0gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHR9XG5AQCAtMTkzNSw2ICYjNDM7MTk1OCw3IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRyZXQgPSBhdGgxMmtfd2lmaTdfaGFsX3dibV9kZXNjX3BhcnNlX2VycihkcCwgcnhfZGVzYyxcbiBcdFx0XHRcdFx0XHRcdCAgXHUwMDI2ZXJyX2luZm8pO1xuIFx0XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0RFU0NfUEFSU0VdJiM0MzsmIzQzOztcbiBcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTk0NCw4ICYjNDM7MTk2OCwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcbiBcdFx0LyogcmV0cnkgbWFudWFsIGRlc2MgcmV0cmlldmFsIGlmIGh3IGNjIGlzIG5vdCBkb25lICovXG4gXHRcdGlmICghZGVzY19pbmZvKSB7XG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2smIzQzOyYjNDM7O1xuIFx0XHRcdGRlc2NfaW5mbyA9IGF0aDEya19kcF9nZXRfcnhfZGVzYyhkcCwgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRpZiAoIWRlc2NfaW5mbykge1xuJiM0MztcdFx0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0dFVF9TV19ERVNDXSYjNDM7JiM0Mzs7XG4gXHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7SW52YWxpZCBjb29raWUgaW4gRFAgV0JNIHJ4IGVycm9yIGRlc2NyaXB0b3IgcmV0cmlldmFsOiAweCV4XFxuXCYjMzQ7LFxuIFx0XHRcdFx0XHQgICAgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE5NjEsNyAmIzQzOzE5ODcsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0ZGV2aWNlX2lkID0gZGVzY19pbmZvLVx1MDAzZWRldmljZV9pZDtcbiBcdFx0cGFydG5lcl9kcCA9IGF0aDEya19kcF9od19ncnBfdG9fZHAoZHBfaHdfZ3JwLCBkZXZpY2VfaWQpO1xuIFx0XHRpZiAodW5saWtlbHkoIXBhcnRuZXJfZHApKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjAwNyw3ICYjNDM7MjAzNCw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRod19saW5rX2lkID0gYXRoMTJrX2RwX3J4X2dldF9tc2R1X3NyY19saW5rKHBhcnRuZXJfZHAtXHUwMDNlaGFsLFxuIFx0XHRcdFx0XHRcdFx0ICAgIG1zZHVfZGF0YSk7XG4gXHRcdGlmIChod19saW5rX2lkIFx1MDAzZT0gQVRIMTJLX0dST1VQX01BWF9SQURJTykge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX0lOVl9IV19JRCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjA2OCw3ICYjNDM7MjA5Niw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfREFUQSxcbiBcdFx0XHRcdCAgIFwmIzM0O1VuYWJsZSB0byBwcm9jZXNzIFdCTSBlcnJvciBtc2R1IGR1ZSB0byBpbnZhbGlkIGh3IGxpbmsgaWQgJWQgZGV2aWNlIGlkICVkXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgaHdfbGlua19pZCwgZGV2aWNlX2lkKTtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiYjNDM7XHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFApO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5AQCAtMjA3NywxOCAmIzQzOzIxMDYsMjEgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXG4gXHRcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XG4gXHRcdGlmICghZHBfcGRldikge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuJiM0MztcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX05VTExfUERFVik7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcdFx0YXIgPSBhdGgxMmtfcGRldl9kcF90b19hcihkcF9wZGV2KTtcbiBcbiBcdFx0aWYgKCFhciB8fCAhcmN1X2RlcmVmZXJlbmNlKGFyLVx1MDAzZWFiLVx1MDAzZXBkZXZzX2FjdGl2ZVtwZGV2X2lkeF0pKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9BUik7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NBQ19SVU5OSU5HLCBcdTAwMjZhci1cdTAwM2VkZXZfZmxhZ3MpKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4mIzQzO1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbkBAIC0xNjcsOCAmIzQzOzE2NywxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3R4KHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldiwgc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYVxuIFx0dHhfcmluZyA9IFx1MDAyNmRwLVx1MDAzZXR4X3JpbmdbdGkucmluZ19pZF07XG4gXG4gXHR0eF9kZXNjID0gYXRoMTJrX2RwX3R4X2Fzc2lnbl9idWZmZXIoZHAsIHBvb2xfaWQpO1xuLVx0aWYgKCF0eF9kZXNjKVxuJiM0MztcdGlmICghdHhfZGVzYykge1xuJiM0MztcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSYjNDM7JiM0Mzs7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdH1cbiBcbiBcdGRwX2xpbmtfdmlmID0gYXRoMTJrX2RwX3ZpZl90b19kcF9saW5rX3ZpZihcdTAwMjZhaHZpZi1cdTAwM2VkcF92aWYsIGFydmlmLVx1MDAzZWxpbmtfaWQpO1xuIFxuQEAgLTU3NSwxOCAmIzQzOzU3NywxOSBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXG4ge1xuIFx0c3RydWN0IGh0dF90eF93Ym1fY29tcGxldGlvbiAqc3RhdHVzX2Rlc2M7XG4gXHRzdHJ1Y3QgYXRoMTJrX2RwX2h0dF93Ym1fdHhfc3RhdHVzIHRzID0ge307XG4tXHRlbnVtIGhhbF93Ym1faHR0X3R4X2NvbXBfc3RhdHVzIHdibV9zdGF0dXM7XG4mIzQzO1x0ZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyBodHRfc3RhdHVzO1xuIFx0dTE2IHBlZXJfaWQ7XG4gXG4gXHRzdGF0dXNfZGVzYyA9IGRlc2M7XG4gXG4tXHR3Ym1fc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cdTAwM2VpbmZvMCxcbiYjNDM7XHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSYjNDM7JiM0Mzs7XG4mIzQzO1x0aWYgKGxpa2VseShodHRfc3RhdHVzIFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcbiYjNDM7XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy5md190eF9zdGF0dXNbaHR0X3N0YXR1c10mIzQzOyYjNDM7O1xuIFxuLVx0c3dpdGNoICh3Ym1fc3RhdHVzKSB7XG4mIzQzO1x0c3dpdGNoIChodHRfc3RhdHVzKSB7XG4gXHRjYXNlIEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSzpcbi1cdFx0dHMuYWNrZWQgPSAod2JtX3N0YXR1cyA9PSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0spO1xuJiM0MztcdFx0dHMuYWNrZWQgPSB0cnVlO1xuIFx0XHR0cy5hY2tfcnNzaSA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzIsXG4gXHRcdFx0XHRcdCAgICBIVFRfVFhfV0JNX0NPTVBfSU5GTzJfQUNLX1JTU0kpO1xuIFxuQEAgLTYwOCw3ICYjNDM7NjExLDcgQEAgYXRoMTJrX2RwX3R4X3Byb2Nlc3NfaHR0X3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCB2b2lkICpkZXNjLFxuIFx0XHQgKi9cbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuLVx0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCYjMzQ7VW5rbm93biBodHQgd2JtIHR4IHN0YXR1cyAlZFxcblwmIzM0Oywgd2JtX3N0YXR1cyk7XG4mIzQzO1x0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCYjMzQ7VW5rbm93biBodHQgdHggc3RhdHVzICVkXFxuXCYjMzQ7LCBodHRfc3RhdHVzKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gfVxuQEAgLTk4NCwxMSAmIzQzOzk4NywxNyBAQCB2b2lkIGF0aDEya193aWZpN19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkKVxuIFx0XHQvKiBGaW5kIHRoZSBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUgdmFsdWUgKi9cbiBcdFx0YnVmX3JlbF9zb3VyY2UgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdFx0ICAgICAgIEhBTF9XQk1fUkVMRUFTRV9JTkZPMF9SRUxfU1JDX01PRFVMRSk7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0mIzQzOyYjNDM7O1xuJiM0MztcdFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcdTAwM2MgSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVgpKVxuJiM0MztcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMudHhfd2JtX3JlbF9zb3VyY2VbYnVmX3JlbF9zb3VyY2VdJiM0MzsmIzQzOztcbiYjNDM7XHRcdGVsc2VcbiYjNDM7XHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0XHRyZWxfc3RhdHVzID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHRcdCAgIEhBTF9XQk1fQ09NUExfVFhfSU5GTzBfVFFNX1JFTEVBU0VfUkVBU09OKTtcbi1cdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnRxbV9yZWxfcmVhc29uW3JlbF9zdGF0dXNdJiM0MzsmIzQzOztcbiYjNDM7XHRcdGlmIChsaWtlbHkocmVsX3N0YXR1cyBcdTAwM2MgTUFYX1RRTV9SRUxFQVNFX1JFQVNPTikpXG4mIzQzO1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdFx0LyogUmVsZWFzZSBkZXNjcmlwdG9yIGFzIHNvb24gYXMgZXh0cmFjdGluZyBuZWNlc3NhcnkgaW5mb1xuIFx0XHQgKiB0byByZWR1Y2UgY29udGVudGlvblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG5pbmRleCA0OWM2OTMyODk3MDk0Li42MGU3YTM2MDk3ZjEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xuQEAgLTMyOSw3ICYjNDM7MzI5LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfaGFsX2Rlc2NfcmVvX3BhcnNlX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRcdCAgICBIQUxfUkVPX0RFU1RfUklOR19JTkZPMF9QVVNIX1JFQVNPTik7XG4gXHRlcnJfY29kZSA9IGxlMzJfZ2V0X2JpdHMoZGVzYy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdCBIQUxfUkVPX0RFU1RfUklOR19JTkZPMF9FUlJPUl9DT0RFKTtcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5yZW9fZXJyb3JbZXJyX2NvZGVdJiM0MzsmIzQzOztcbiYjNDM7XHRpZiAobGlrZWx5KGVycl9jb2RlIFx1MDAzYyBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWCkpXG4mIzQzO1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbZXJyX2NvZGVdJiM0MzsmIzQzOztcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoMSk7XG4gXG4gXHRpZiAocHVzaF9yZWFzb24gIT0gSEFMX1JFT19ERVNUX1JJTkdfUFVTSF9SRUFTT05fRVJSX0RFVEVDVEVEIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX1JPVVRJTkdfSU5TVFJVQ1RJT04pIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwNjoyMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBhZGRpbmcgZGVidWdmcyBlbnRyaWVzLCB1cGRhdGluZyBzdGF0aXN0aWNzLCBhbmQgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIHN0YXRpc3RpY3MgYXJyYXkgYWNjZXNzZXMsIHdoaWNoIGRvIG5vdCBhbHRlciB0aGUgY29yZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGlzIG1lYW5pbmdmdWwgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDNiZGU2YTczYzZmZWMwNmZhYWU1YmUzY2MzYzA4YjkyMjc5ZGNjOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDE5IDA2OjIzOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwppbmRleCBkNTQ5OTViN2FkYjI3Li4xMjc5MWUyNjdkMWE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuYwpAQCAtMTA3MSw2ICYjNDM7MTA3MSwyMCBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfUE5fRVJSX0ZMQUdfU0VUXSA9ICYjMzQ7UE4gZXJyJiMzNDssCiAJCVtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQkxPQ0tFRF0gPSAmIzM0O0Rlc2MgYmxvY2tlZCYjMzQ7fTsKIAomIzQzOwlzdGF0aWMgY29uc3QgY2hhciAqd2JtX3J4X2Ryb3BbV0JNX0VSUl9EUk9QX01BWF0gPSB7CiYjNDM7CQlbV0JNX0VSUl9EUk9QX0dFVF9TV19ERVNDXSA9ICYjMzQ7U1cgZGVzYyBlcnJvciYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9ERVNDX1BBUlNFXSA9ICYjMzQ7RGVzYyBwYXJzZSBlcnJvciYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9JTlZfSFdfSURdID0gJiMzNDtJbnZhbGlkIGh3IGlkJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFBdID0gJiMzNDtOdWxsIFBhcnRuZXIgZHAmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQXSA9ICYjMzQ7UHJvY2VzcyBOdWxsIFBhcnRuZXIgZHAmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfTlVMTF9QREVWXSA9ICYjMzQ7TnVsbCBQZGV2JiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX05VTExfQVJdID0gJiMzNDtOdWxsIGFyJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HXSA9ICYjMzQ7Q0FDIFJ1bm5pbmcmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfU0ddID0gJiMzNDtTY2F0dGVyIEdhdGhlciYjMzQ7LAomIzQzOwkJW1dCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSXSA9ICYjMzQ7SW52YWxpZCBOV2lmaSBIZHIgbGVuJiMzNDssCiYjNDM7CQlbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSA9ICYjMzQ7UkVPIEdlbmVyaWMmIzM0OywKJiM0MzsJCVtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10gPSAmIzM0O1JYRE1BIEdlbmVyaWMmIzM0O307CiYjNDM7CiAJc3RhdGljIGNvbnN0IGNoYXIgKndibV9yZWxfc3JjW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXSA9IHsKIAkJW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfVFFNXSA9ICYjMzQ7VFFNJiMzNDssCiAJCVtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1JYRE1BXSA9ICYjMzQ7UnhkbWEmIzM0OywKQEAgLTEwOTUsMTMgJiM0MzsxMTA5LDMyIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSYjNDM7JiM0MzspCiAJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7JXM6ICV1XG4mIzM0OywKLQkJCQkgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3J4ZG1hX2Vycm9yW2ldKTsKJiM0MzsJCQkJIHJ4ZG1hX2VycltpXSwgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLnJ4ZG1hX2Vycm9yW2ldKTsKIAogCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5SRU8gZXJyb3JzOlxuJiMzNDspOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpJiM0MzsmIzQzOykKIAkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDslczogJXVcbiYjMzQ7LAotCQkJCSByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3Jlb19lcnJvcltpXSk7CiYjNDM7CQkJCSByZW9fZXJyW2ldLCBkZXZpY2Vfc3RhdHMtJmd0O3dibV9lcnIucmVvX2Vycm9yW2ldKTsKJiM0MzsKJiM0MzsJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtcbldCTSBSeCBEcm9wIENvdW50OlxuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgV0JNX0VSUl9EUk9QX01BWDsgaSYjNDM7JiM0MzspCiYjNDM7CQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0OyVzOiAldVxuJiMzNDssCiYjNDM7CQkJCSB3Ym1fcnhfZHJvcFtpXSwgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLmRyb3BbaV0pOwomIzQzOwomIzQzOwlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuUkVPIHNlbnQgdG8gc3RhY2s6XG4mIzM0Oyk7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBEUF9SRU9fRFNUX1JJTkdfTUFYOyBpJiM0MzsmIzQzOykgewomIzQzOwkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtyaW5nJWQ6JiMzNDssIGkpOwomIzQzOwkJZm9yIChqID0gMDsgaiAmbHQ7IGFiLSZndDthZy0mZ3Q7bnVtX2RldmljZXM7IGomIzQzOyYjNDM7KQomIzQzOwkJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sCiYjNDM7CQkJCQkgJiMzNDtcdCVkOiV1JiMzNDssIGosCiYjNDM7CQkJCQkgZGV2aWNlX3N0YXRzLSZndDtzZW50X3RvX3N0YWNrW2ldW2pdKTsKJiM0MzsJCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG4mIzM0Oyk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwKJiM0MzsJCQkgJiMzNDtcbldCTSBTVyBkZXNjIGZhbGxiYWNrIChIVyBDQyBub3QgZG9uZSk6ICV1XG4mIzM0OywKJiM0MzsJCQkgZGV2aWNlX3N0YXRzLSZndDt3Ym1fZXJyLnN3X2Rlc2NfZmFsbGJhY2spOwogCiAJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtcbkhBTCBSRU8gZXJyb3JzOlxuJiMzNDspOwogCkBAIC0xMTE3LDYgJiM0MzsxMTUwLDExIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O3JpbmclZDogJXVcbiYjMzQ7LAogCQkJCSBpLCBkZXZpY2Vfc3RhdHMtJmd0O3R4X2Vyci5kZXNjX25hW2ldKTsKIAomIzQzOwlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuVFggRGVzY3JpcHRvciBQb29sIEFsbG9jIEZhaWx1cmVzOlxuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgQVRIMTJLX0hXX01BWF9RVUVVRVM7IGkmIzQzOyYjNDM7KQomIzQzOwkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtwb29sJWQ6ICV1XG4mIzM0OywKJiM0MzsJCQkJIGksIGRldmljZV9zdGF0cy0mZ3Q7dHhfZXJyLnR4YnVmX25hW2ldKTsKJiM0MzsKIAlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLAogCQkJICYjMzQ7XG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxuJiMzNDssCiAJCQkgYXRvbWljX3JlYWQoJmFtcDtkZXZpY2Vfc3RhdHMtJmd0O3R4X2Vyci5taXNjX2ZhaWwpKTsKQEAgLTExODEsNyAmIzQzOzEyMTksNyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O1xuUkVPIFJ4IFJlY2VpdmVkOlxuJiMzNDspOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IERQX1JFT19EU1RfUklOR19NQVg7IGkmIzQzOyYjNDM7KSB7Ci0JCWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7UmluZyVkOiYjMzQ7LCBpICYjNDM7IDEpOwomIzQzOwkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwgJiMzNDtyaW5nJWQ6JiMzNDssIGkpOwogCiAJCWZvciAoaiA9IDA7IGogJmx0OyBhYi0mZ3Q7YWctJmd0O251bV9kZXZpY2VzOyBqJiM0MzsmIzQzOykgewogCQkJbGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgc2l6ZSAtIGxlbiwKQEAgLTEyMTUsOCAmIzQzOzEyNTMsNDAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsCiAJcmV0dXJuIHJldDsKIH0KIAomIzQzO3N0YXRpYyBzc2l6ZV90CiYjNDM7YXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAomIzQzOwkJCQkgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZiwKJiM0MzsJCQkJICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBhdGgxMmtfYmFzZSAqYWIgPSBmaWxlLSZndDtwcml2YXRlX2RhdGE7CiYjNDM7CXN0cnVjdCBhdGgxMmtfZHAgKmRwID0gYXRoMTJrX2FiX3RvX2RwKGFiKTsKJiM0MzsJc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMgKmRldmljZV9zdGF0cyA9ICZhbXA7ZHAtJmd0O2RldmljZV9zdGF0czsKJiM0MzsJY2hhciBidWZbMjBdID0ge307CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIGZpbHRlciBwYXJ0aWFsIHdyaXRlcyBhbmQgaW52YWxpZCBjb21tYW5kcyAqLwomIzQzOwlpZiAoKnBwb3MgIT0gMCB8fCBjb3VudCAmZ3Q7PSBzaXplb2YoYnVmKSB8fCBjb3VudCA9PSAwKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldCA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJLyogZHJvcCB0aGUgcG9zc2libGUgJiMzOTtcbiYjMzk7IGZyb20gdGhlIGVuZCAqLwomIzQzOwlpZiAoYnVmWypwcG9zIC0gMV0gPT0gJiMzOTtcbiYjMzk7KQomIzQzOwkJYnVmWypwcG9zIC0gMV0gPSAmIzM5O1wwJiMzOTs7CiYjNDM7CiYjNDM7CWlmICghc3RyY21wKGJ1ZiwgJiMzNDtyZXNldCYjMzQ7KSkgewomIzQzOwkJbWVtc2V0KGRldmljZV9zdGF0cywgMCwgc2l6ZW9mKCpkZXZpY2Vfc3RhdHMpKTsKJiM0MzsJCXJldHVybiBjb3VudDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gLUVJTlZBTDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2RldmljZV9kcF9zdGF0cyA9IHsKIAkucmVhZCA9IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzLAomIzQzOwkud3JpdGUgPSBhdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMsCiAJLm9wZW4gPSBzaW1wbGVfb3BlbiwKIAkub3duZXIgPSBUSElTX01PRFVMRSwKIAkubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCkBAIC0xMjI3LDcgJiM0MzsxMjk3LDcgQEAgdm9pZCBhdGgxMmtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKQogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtzaW11bGF0ZV9md19jcmFzaCYjMzQ7LCAwNjAwLCBhYi0mZ3Q7ZGVidWdmc19zb2MsIGFiLAogCQkJICAgICZhbXA7Zm9wc19zaW11bGF0ZV9md19jcmFzaCk7CiAKLQlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCYjMzQ7ZGV2aWNlX2RwX3N0YXRzJiMzNDssIDA0MDAsIGFiLSZndDtkZWJ1Z2ZzX3NvYywgYWIsCiYjNDM7CWRlYnVnZnNfY3JlYXRlX2ZpbGUoJiMzNDtkZXZpY2VfZHBfc3RhdHMmIzM0OywgMDYwMCwgYWItJmd0O2RlYnVnZnNfc29jLCBhYiwKIAkJCSAgICAmYW1wO2ZvcHNfZGV2aWNlX2RwX3N0YXRzKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oCmluZGV4IGJlZjBmMmJhMDU2MGYuLjI4OWFlZGU2ZGFiYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmgKQEAgLTcsNiAmIzQzOzcsNyBAQAogI2lmbmRlZiBBVEgxMktfRFBfSAogI2RlZmluZSBBVEgxMktfRFBfSAogCiYjNDM7I2luY2x1ZGUgJiMzNDtkcF9zdGF0cy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7aHcuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2RwX2h0dC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7ZHBfY21uLmgmIzM0OwpAQCAtNDI5LDE5ICYjNDM7NDMwLDI3IEBAIHN0cnVjdCBhdGgxMmtfZHBfYXJjaF9vcHMgewogc3RydWN0IGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzIHsKIAkvKiBUQ0wgUmluZyBEZXNjcmlwdG9yIHVuYXZhaWxhYmxlICovCiAJdTMyIGRlc2NfbmFbRFBfVENMX05VTV9SSU5HX01BWF07CiYjNDM7CS8qIFRYIGRlc2NyaXB0b3IgcG9vbCBleGhhdXN0ZWQgKHBlciBwb29sX2lkIC8gdHJhZmZpYyBjbGFzcykgKi8KJiM0MzsJdTMyIHR4YnVmX25hW0FUSDEyS19IV19NQVhfUVVFVUVTXTsKIAkvKiBPdGhlciBmYWlsdXJlcyBkdXJpbmcgZHBfdHggZHVlIHRvIG1lbSBhbGxvY2F0aW9uIGZhaWx1cmUKIAkgKiBpZHIgdW5hdmFpbGFibGUgZXRjLgogCSAqLwogCWF0b21pY190IG1pc2NfZmFpbDsKIH07CiAKJiM0MztzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHsKJiM0MzsJdTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07CiYjNDM7CXUzMiByZW9fZXJyb3JbSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVhdOwomIzQzOwl1MzIgZHJvcFtXQk1fRVJSX0RST1BfTUFYXTsKJiM0MzsJdTMyIHN3X2Rlc2NfZmFsbGJhY2s7CiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHsKIAl1MzIgZXJyX3JpbmdfcGt0czsKIAl1MzIgaW52YWxpZF9yYm07Ci0JdTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07Ci0JdTMyIHJlb19lcnJvcltIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWF07CiAJdTMyIGhhbF9yZW9fZXJyb3JbRFBfUkVPX0RTVF9SSU5HX01BWF07CiAJc3RydWN0IGF0aDEya19kZXZpY2VfZHBfdHhfZXJyX3N0YXRzIHR4X2VycjsKJiM0MzsJc3RydWN0IGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0cyB3Ym1fZXJyOwogCXUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTsKIAl1MzIgcnhfd2JtX3JlbF9zb3VyY2VbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVhdW0FUSDEyS19NQVhfREVWSUNFU107CiAJdTMyIHRxbV9yZWxfcmVhc29uW01BWF9UUU1fUkVMRUFTRV9SRUFTT05dOwpAQCAtNDUwLDYgJiM0Mzs0NTksNyBAQCBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7CiAJdTMyIHR4X2VucXVldWVkW0RQX1RDTF9OVU1fUklOR19NQVhdOwogCXUzMiB0eF9jb21wbGV0ZWRbRFBfVENMX05VTV9SSU5HX01BWF07CiAJdTMyIHJlb19leGNlcF9tc2R1X2J1Zl90eXBlOwomIzQzOwl1MzIgc2VudF90b19zdGFja1tEUF9SRU9fRFNUX1JJTkdfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdOwogfTsKIAogc3RydWN0IGF0aDEya19kcCB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNTI1NmRiZjc0MAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaApAQCAtMCwwICYjNDM7MSwyNSBAQAomIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi8KJiM0MzsvKgomIzQzOyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLgomIzQzOyAqLwomIzQzOwomIzQzOyNpZm5kZWYgQVRIMTJLX0RQX1NUQVRTX0gKJiM0MzsjZGVmaW5lIEFUSDEyS19EUF9TVEFUU19ICiYjNDM7CiYjNDM7ZW51bSBhdGgxMmtfd2JtX2Vycl9kcm9wX3JlYXNvbiB7CiYjNDM7CVdCTV9FUlJfRFJPUF9HRVRfU1dfREVTQywKJiM0MzsJV0JNX0VSUl9EUk9QX0RFU0NfUEFSU0UsCiYjNDM7CVdCTV9FUlJfRFJPUF9JTlZfSFdfSUQsCiYjNDM7CVdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9QREVWLAomIzQzOwlXQk1fRVJSX0RST1BfTlVMTF9BUiwKJiM0MzsJV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HLAomIzQzOwlXQk1fRVJSX0RST1BfU0csCiYjNDM7CVdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLAomIzQzOwlXQk1fRVJSX0RST1BfUkVPX0dFTkVSSUMsCiYjNDM7CVdCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDLAomIzQzOwlXQk1fRVJSX0RST1BfTUFYLAomIzQzO307CiYjNDM7CiYjNDM7I2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmMKaW5kZXggOTVkODdkZDY3ODcyZi4uMjVmZDhiZjc4NThmNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfcnguYwpAQCAtMTIsNiAmIzQzOzEyLDE1IEBACiAjaW5jbHVkZSAmIzM0O2hhbF93Y243ODUwLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtoYWxfcWNjMjA3Mi5oJiMzNDsKIAomIzQzO3N0YXRpYyB2b2lkCiYjNDM7YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2Ioc3RydWN0IGF0aDEya19kcCAqZHAsCiYjNDM7CQkJCSAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSwKJiM0MzsJCQkJICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pCiYjNDM7ewomIzQzOwlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtkcm9wX3JlYXNvbl0mIzQzOyYjNDM7OwomIzQzOwlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCQkJICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLAogCQkJCQkgIF9fbGUzMiBwZWVyX21ldGFkYXRhKQpAQCAtNjQyLDcgJiM0Mzs2NTEsMTAgQEAgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3NfcmVjZWl2ZWRfcGFja2V0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwogCQkJY29udGludWU7CiAJCX0KLQomIzQzOwkJaWYgKGxpa2VseShyaW5nX2lkICZsdDsgRFBfUkVPX0RTVF9SSU5HX01BWCkpCiYjNDM7CQkJZHAtJmd0O2RldmljZV9zdGF0cy5zZW50X3RvX3N0YWNrW3JpbmdfaWRdW3BhcnRuZXJfZHAtJmd0O2RldmljZV9pZF0mIzQzOyYjNDM7OwomIzQzOwkJZWxzZQomIzQzOwkJCVdBUk5fT05fT05DRSgxKTsKIAkJYXRoMTJrX2RwX3J4X2RlbGl2ZXJfbXNkdShkcF9wZGV2LCBuYXBpLCBtc2R1LCAmYW1wO3J4X2luZm8pOwogCX0KIApAQCAtMTYxNCw2ICYjNDM7MTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCQkvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQmIzM5O3MgbGVuZ3RoICovCiAJCW1zZHVfbGVuID0gbXNkdV9sZW4gLSAoRFBfUlhfQlVGRkVSX1NJWkUgLSBoYWxfcnhfZGVzY19zeik7CiAJCWF0aDEya193aWZpN19kcF9yeF9udWxsX3FfZGVzY19zZ19kcm9wKGRwLCBtc2R1X2xlbiwgbXNkdV9saXN0KTsKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9TR10mIzQzOyYjNDM7OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE2NDksOCAmIzQzOzE2NjIsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsCiAJCXNrYl9wdXQobXNkdSwgaGFsX3J4X2Rlc2Nfc3ogJiM0MzsgbDNwYWRfYnl0ZXMgJiM0MzsgbXNkdV9sZW4pOwogCQlza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiAmIzQzOyBsM3BhZF9ieXRlcyk7CiAJfQotCWlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSkKJiM0MzsJaWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKSB7CiYjNDM7CQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0mIzQzOyYjNDM7OwogCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQogCiAJYXRoMTJrX2RwX3J4X2hfcHBkdShkcF9wZGV2LCByeF9pbmZvKTsKIAlyZXQgPSBhdGgxMmtfd2lmaTdfZHBfcnhfaF9tcGR1KGRwX3BkZXYsIG1zZHUsIHJ4X2luZm8pOwpAQCAtMTc2Myw3ICYjNDM7MTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCXN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7CiAJYm9vbCBkcm9wID0gZmFsc2U7CiAKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnJ4ZG1hX2Vycm9yW3J4Y2ItJmd0O2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWlmIChsaWtlbHkocnhjYi0mZ3Q7ZXJyX2NvZGUgJmx0OyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVgpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnJ4ZG1hX2Vycm9yW3J4Y2ItJmd0O2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWVsc2UKJiM0MzsJCVdBUk5fT05fT05DRSgxKTsKIAogCXN3aXRjaCAocnhjYi0mZ3Q7ZXJyX2NvZGUpIHsKIAljYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOgpAQCAtMTc4MCw2ICYjNDM7MTc5OCw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3J4ZG1hX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsCiAJCS8qIFRPRE86IFJldmlldyBvdGhlciByeGRtYSBlcnJvciBjb2RlIHRvIGNoZWNrIGlmIGFueXRoaW5nIGlzCiAJCSAqIHdvcnRoIHJlcG9ydGluZyB0byBtYWM4MDIxMQogCQkgKi8KJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSYjNDM7JiM0Mzs7CiAJCWRyb3AgPSB0cnVlOwogCQlicmVhazsKIAl9CkBAIC0xNzk2LDcgJiM0MzsxODE1LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCXN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7CiAJYm9vbCBkcm9wID0gZmFsc2U7CiAKLQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnJlb19lcnJvcltyeGNiLSZndDtlcnJfY29kZV0mIzQzOyYjNDM7OwomIzQzOwlpZiAobGlrZWx5KHJ4Y2ItJmd0O2Vycl9jb2RlICZsdDsgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKQomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLnJlb19lcnJvcltyeGNiLSZndDtlcnJfY29kZV0mIzQzOyYjNDM7OwomIzQzOwllbHNlCiYjNDM7CQlXQVJOX09OX09OQ0UoMSk7CiAKIAlzd2l0Y2ggKHJ4Y2ItJmd0O2Vycl9jb2RlKSB7CiAJY2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOgpAQCAtMTgxMyw2ICYjNDM7MTgzNSw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LAogCQkvKiBUT0RPOiBSZXZpZXcgb3RoZXIgZXJyb3JzIGFuZCBwcm9jZXNzIHRoZW0gdG8gbWFjODAyMTEKIAkJICogYXMgYXBwcm9wcmlhdGUuCiAJCSAqLwomIzQzOwkJZHAtJmd0O2RldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSYjNDM7JiM0Mzs7CiAJCWRyb3AgPSB0cnVlOwogCQlicmVhazsKIAl9CkBAIC0xOTM1LDYgJiM0MzsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCXJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLAogCQkJCQkJCSAgJmFtcDtlcnJfaW5mbyk7CiAJCWlmIChyZXQpIHsKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfREVTQ19QQVJTRV0mIzQzOyYjNDM7OwogCQkJYXRoMTJrX3dhcm4oYWIsICYjMzQ7ZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXG4mIzM0OywKIAkJCQkgICAgcmV0KTsKIAkJCWNvbnRpbnVlOwpAQCAtMTk0NCw4ICYjNDM7MTk2OCwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAogCQkvKiByZXRyeSBtYW51YWwgZGVzYyByZXRyaWV2YWwgaWYgaHcgY2MgaXMgbm90IGRvbmUgKi8KIAkJaWYgKCFkZXNjX2luZm8pIHsKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuc3dfZGVzY19mYWxsYmFjayYjNDM7JiM0Mzs7CiAJCQlkZXNjX2luZm8gPSBhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MoZHAsIGVycl9pbmZvLmNvb2tpZSk7CiAJCQlpZiAoIWRlc2NfaW5mbykgewomIzQzOwkJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfR0VUX1NXX0RFU0NdJiM0MzsmIzQzOzsKIAkJCQlhdGgxMmtfd2FybihhYiwgJiMzNDtJbnZhbGlkIGNvb2tpZSBpbiBEUCBXQk0gcnggZXJyb3IgZGVzY3JpcHRvciByZXRyaWV2YWw6IDB4JXhcbiYjMzQ7LAogCQkJCQkgICAgZXJyX2luZm8uY29va2llKTsKIAkJCQljb250aW51ZTsKQEAgLTE5NjEsNyAmIzQzOzE5ODcsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCwKIAkJZGV2aWNlX2lkID0gZGVzY19pbmZvLSZndDtkZXZpY2VfaWQ7CiAJCXBhcnRuZXJfZHAgPSBhdGgxMmtfZHBfaHdfZ3JwX3RvX2RwKGRwX2h3X2dycCwgZGV2aWNlX2lkKTsKIAkJaWYgKHVubGlrZWx5KCFwYXJ0bmVyX2RwKSkgewotCQkJZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7CiYjNDM7CQkJYXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsCiYjNDM7CQkJCQkJCSAgICBXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCk7CiAKIAkJCS8qIEluIGFueSBjYXNlIGNvbnRpbnVhdGlvbiBiaXQgaXMgc2V0CiAJCQkgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0CkBAIC0yMDA3LDcgJiM0MzsyMDM0LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCWh3X2xpbmtfaWQgPSBhdGgxMmtfZHBfcnhfZ2V0X21zZHVfc3JjX2xpbmsocGFydG5lcl9kcC0mZ3Q7aGFsLAogCQkJCQkJCSAgICBtc2R1X2RhdGEpOwogCQlpZiAoaHdfbGlua19pZCAmZ3Q7PSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQpOwogCiAJCQkvKiBJbiBhbnkgY2FzZSBjb250aW51YXRpb24gYml0IGlzIHNldAogCQkJICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdApAQCAtMjA2OCw3ICYjNDM7MjA5Niw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLAogCQkJYXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLAogCQkJCSAgICYjMzQ7VW5hYmxlIHRvIHByb2Nlc3MgV0JNIGVycm9yIG1zZHUgZHVlIHRvIGludmFsaWQgaHcgbGluayBpZCAlZCBkZXZpY2UgaWQgJWRcbiYjMzQ7LAogCQkJCSAgIGh3X2xpbmtfaWQsIGRldmljZV9pZCk7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFApOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtMjA3NywxOCAmIzQzOzIxMDYsMjEgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAKIAkJZHBfcGRldiA9IGF0aDEya19kcF90b19wZGV2X2RwKHBhcnRuZXJfZHAsIHBkZXZfaWR4KTsKIAkJaWYgKCFkcF9wZGV2KSB7Ci0JCQlkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTsKJiM0MzsJCQlhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSwKJiM0MzsJCQkJCQkJICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BERVYpOwogCQkJY29udGludWU7CiAJCX0KIAkJYXIgPSBhdGgxMmtfcGRldl9kcF90b19hcihkcF9wZGV2KTsKIAogCQlpZiAoIWFyIHx8ICFyY3VfZGVyZWZlcmVuY2UoYXItJmd0O2FiLSZndDtwZGV2c19hY3RpdmVbcGRldl9pZHhdKSkgewotCQkJZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7CiYjNDM7CQkJYXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsCiYjNDM7CQkJCQkJCSAgICBXQk1fRVJSX0RST1BfTlVMTF9BUik7CiAJCQljb250aW51ZTsKIAkJfQogCiAJCWlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgJmFtcDthci0mZ3Q7ZGV2X2ZsYWdzKSkgewotCQkJZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7CiYjNDM7CQkJYXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsCiYjNDM7CQkJCQkJCSAgICBXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcpOwogCQkJY29udGludWU7CiAJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jCmluZGV4IDU4N2Q1OGVlY2NmYTUuLjExMDQ4YzU2ODMzMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMKQEAgLTE2Nyw4ICYjNDM7MTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphCiAJdHhfcmluZyA9ICZhbXA7ZHAtJmd0O3R4X3JpbmdbdGkucmluZ19pZF07CiAKIAl0eF9kZXNjID0gYXRoMTJrX2RwX3R4X2Fzc2lnbl9idWZmZXIoZHAsIHBvb2xfaWQpOwotCWlmICghdHhfZGVzYykKJiM0MzsJaWYgKCF0eF9kZXNjKSB7CiYjNDM7CQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSYjNDM7JiM0Mzs7CiAJCXJldHVybiAtRU5PTUVNOwomIzQzOwl9CiAKIAlkcF9saW5rX3ZpZiA9IGF0aDEya19kcF92aWZfdG9fZHBfbGlua192aWYoJmFtcDthaHZpZi0mZ3Q7ZHBfdmlmLCBhcnZpZi0mZ3Q7bGlua19pZCk7CiAKQEAgLTU3NSwxOCAmIzQzOzU3NywxOSBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsCiB7CiAJc3RydWN0IGh0dF90eF93Ym1fY29tcGxldGlvbiAqc3RhdHVzX2Rlc2M7CiAJc3RydWN0IGF0aDEya19kcF9odHRfd2JtX3R4X3N0YXR1cyB0cyA9IHt9OwotCWVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgd2JtX3N0YXR1czsKJiM0MzsJZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyBodHRfc3RhdHVzOwogCXUxNiBwZWVyX2lkOwogCiAJc3RhdHVzX2Rlc2MgPSBkZXNjOwogCi0Jd2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtJmd0O2luZm8wLAomIzQzOwlodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy0mZ3Q7aW5mbzAsCiAJCQkJICAgSFRUX1RYX1dCTV9DT01QX0lORk8wX1NUQVRVUyk7Ci0JZHAtJmd0O2RldmljZV9zdGF0cy5md190eF9zdGF0dXNbd2JtX3N0YXR1c10mIzQzOyYjNDM7OwomIzQzOwlpZiAobGlrZWx5KGh0dF9zdGF0dXMgJmx0OyBNQVhfRldfVFhfU1RBVFVTKSkKJiM0MzsJCWRwLSZndDtkZXZpY2Vfc3RhdHMuZndfdHhfc3RhdHVzW2h0dF9zdGF0dXNdJiM0MzsmIzQzOzsKIAotCXN3aXRjaCAod2JtX3N0YXR1cykgewomIzQzOwlzd2l0Y2ggKGh0dF9zdGF0dXMpIHsKIAljYXNlIEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSzoKLQkJdHMuYWNrZWQgPSAod2JtX3N0YXR1cyA9PSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0spOwomIzQzOwkJdHMuYWNrZWQgPSB0cnVlOwogCQl0cy5hY2tfcnNzaSA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtJmd0O2luZm8yLAogCQkJCQkgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTsKIApAQCAtNjA4LDcgJiM0Mzs2MTEsNyBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsCiAJCSAqLwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlhdGgxMmtfd2FybihkcC0mZ3Q7YWIsICYjMzQ7VW5rbm93biBodHQgd2JtIHR4IHN0YXR1cyAlZFxuJiMzNDssIHdibV9zdGF0dXMpOwomIzQzOwkJYXRoMTJrX3dhcm4oZHAtJmd0O2FiLCAmIzM0O1Vua25vd24gaHR0IHR4IHN0YXR1cyAlZFxuJiMzNDssIGh0dF9zdGF0dXMpOwogCQlicmVhazsKIAl9CiB9CkBAIC05ODQsMTEgJiM0Mzs5ODcsMTcgQEAgdm9pZCBhdGgxMmtfd2lmaTdfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBpbnQgcmluZ19pZCkKIAkJLyogRmluZCB0aGUgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFIHZhbHVlICovCiAJCWJ1Zl9yZWxfc291cmNlID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtJmd0O2luZm8wLAogCQkJCQkgICAgICAgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFKTsKLQkJZHAtJmd0O2RldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0mIzQzOyYjNDM7OwomIzQzOwkJaWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSAmbHQ7IEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSkKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnR4X3dibV9yZWxfc291cmNlW2J1Zl9yZWxfc291cmNlXSYjNDM7JiM0Mzs7CiYjNDM7CQllbHNlCiYjNDM7CQkJV0FSTl9PTl9PTkNFKDEpOwogCiAJCXJlbF9zdGF0dXMgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy0mZ3Q7aW5mbzAsCiAJCQkJCSAgIEhBTF9XQk1fQ09NUExfVFhfSU5GTzBfVFFNX1JFTEVBU0VfUkVBU09OKTsKLQkJZHAtJmd0O2RldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSYjNDM7JiM0Mzs7CiYjNDM7CQlpZiAobGlrZWx5KHJlbF9zdGF0dXMgJmx0OyBNQVhfVFFNX1JFTEVBU0VfUkVBU09OKSkKJiM0MzsJCQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLnRxbV9yZWxfcmVhc29uW3JlbF9zdGF0dXNdJiM0MzsmIzQzOzsKJiM0MzsJCWVsc2UKJiM0MzsJCQlXQVJOX09OX09OQ0UoMSk7CiAKIAkJLyogUmVsZWFzZSBkZXNjcmlwdG9yIGFzIHNvb24gYXMgZXh0cmFjdGluZyBuZWNlc3NhcnkgaW5mbwogCQkgKiB0byByZWR1Y2UgY29udGVudGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMKaW5kZXggNDljNjkzMjg5NzA5NC4uNjBlN2EzNjA5N2YxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jCkBAIC0zMjksNyAmIzQzOzMyOSwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2hhbF9kZXNjX3Jlb19wYXJzZV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsCiAJCQkJICAgIEhBTF9SRU9fREVTVF9SSU5HX0lORk8wX1BVU0hfUkVBU09OKTsKIAllcnJfY29kZSA9IGxlMzJfZ2V0X2JpdHMoZGVzYy0mZ3Q7aW5mbzAsCiAJCQkJIEhBTF9SRU9fREVTVF9SSU5HX0lORk8wX0VSUk9SX0NPREUpOwotCWRwLSZndDtkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWlmIChsaWtlbHkoZXJyX2NvZGUgJmx0OyBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWCkpCiYjNDM7CQlkcC0mZ3Q7ZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW2Vycl9jb2RlXSYjNDM7JiM0Mzs7CiYjNDM7CWVsc2UKJiM0MzsJCVdBUk5fT05fT05DRSgxKTsKIAogCWlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgJmFtcDsmYW1wOwogCSAgICBwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9ST1VUSU5HX0lOU1RSVUNUSU9OKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA2OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDkwCgkJCQkJCQlvdXRwdXQ6IDEwNQoJCQkJCQkJdGhvdWdodHM6IDEyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IGF0aDEyayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRvdWNoaW5nIHRoZSBgYXRoMTJrYCBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBkZWJ1Z2ZzIGFuZCBzdGF0aXN0aWNzIHVwZGF0ZXMgd2l0aGluIHRoZSBkYXRhIHBhdGguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBpbnRyb2R1Y2UgYW55IG5ldyBmdXp6aW5nIHRhcmdldHMuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIG1vc3Qgb2YgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGNvbmNlbnRyYXRlZCBpbjoKCiogICBBZGRpbmcgZGVidWdmcyBlbnRyaWVzIGZvciBzdGF0cyAoYGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzYCwgYGF0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0c2ApLgoqICAgSW5jcmVtZW50aW5nIHN0YXRpc3RpY3MgY291bnRlcnMgd2l0aGluIHZhcmlvdXMgZnVuY3Rpb25zIChgZHBfcnguY2AsIGBkcF90eC5jYCwgYGhhbF9yeC5jYCkuCiogICBBZGRpbmcgYm91bmRzIGNoZWNrcyB0byBwcm90ZWN0IHRoZSBzdGF0cyBhcnJheXMgZnJvbSBvdXQtb2YtYm91bmRzIGFjY2Vzcy4KClRoZSBtYWluIGNvbmNlcm4gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIG9wZW4gdXAgYW55IG5ldyBhdHRhY2sgc3VyZmFjZXMgb3IsIG1vcmUgcGVydGluZW50bHksIGlmIHRoZXkgYXJlIHJlYWNoYWJsZSBpbiBhIGZ1enplci1mcmllbmRseSB3YXkuIFRoZSBgYXRoMTJrYCBkcml2ZXIgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUsIGVpdGhlciBQQ0llIG9yIEFIQi4gSW1tZWRpYXRlbHksIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7Q2FuIHRoaXMgYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyYjMzQ7IFRoZSBhbnN3ZXIgaXMgbm87IHRoaXMgZHJpdmVyLCBhcyBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUuCgpDb25zaWRlcmluZyB0aGUgaW5zdHJ1Y3Rpb25zLCAmIzM0O0NvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsJiMzNDsgdGhpcyBmaXRzIHRoZSBkZXNjcmlwdGlvbi4gVGhvdWdoIG5vdCBhIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIHNwZWNpZmljYWxseSwgdGhlIGF0aDEyayBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciBQQ0llL0FIQiBXaS1GaSBoYXJkd2FyZS4gVGhlIGNoYW5nZXMgdGhlbXNlbHZlcyBhcmUgbW9zdGx5IHN0YXRzIGFuZCBkZWJ1Z2ZzLCBhbmQgdGhleSBkb24mIzM5O3QgaW50cm9kdWNlIHN1YnN0YW50aWFsIG5ldyBjb2RlIHBhdGhzLiBUaGVyZSYjMzk7cyBubyBlbXVsYXRpb24gZm9yIGF0aDEyayBpbiBRRU1VLCBtZWFuaW5nIGl0JiMzOTtzIG5vdCBwb3NzaWJsZSB0byBydW4gdGhpcyBjb2RlIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUuCgpTbywgYWx0aG91Z2ggdGhlIGJvdW5kcyBjaGVja3MgYXJlIGZ1bmN0aW9uYWwsIHRoZXkgYXJlIHByaW1hcmlseSBmb3IgdGhlIHByb3RlY3Rpb24gb2Ygc3RhdHMgYXJyYXlzIGFuZCBhcmUgbm90IGludHJvZHVjaW5nIG5ldyBsb2dpYyBvciB2dWxuZXJhYmlsaXRpZXMuIEkgd29uJiMzOTt0IGV2ZW4gYm90aGVyIGNoZWNraW5nIGZvciBzeXprYWxsZXIgY292ZXJhZ2UsIHNpbmNlIHRoYXQgd291bGQgYmUgYSB3YXN0ZSBvZiB0aW1lIGFuZCBpdCBpcyBoaWdobHkgdW5saWtlbHkgdG8gZXhpc3QuIEJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCBXb3J0aEZ1enppbmcgaXMgZGVmaW5pdGl2ZWx5IGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDY6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIFdpLUZpIGRyaXZlciwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMsIHVwZGF0aW5nIHN0YXRpc3RpY3MsIGFuZCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3Igc3RhdGlzdGljcyBhcnJheSBhY2Nlc3Nlcywgd2hpY2ggZG8gbm90IGFsdGVyIHRoZSBjb3JlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgaXMgbWVhbmluZ2Z1bCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgV2ktRmkgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gYWRkaW5nIGRlYnVnZnMgZW50cmllcywgdXBkYXRpbmcgc3RhdGlzdGljcywgYW5kIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBzdGF0aXN0aWNzIGFycmF5IGFjY2Vzc2VzLCB3aGljaCBkbyBub3QgYWx0ZXIgdGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCBpcyBtZWFuaW5nZnVsIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwNjoyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDY6MjM6MTAuMjA3MjUxMDk1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMjE5NDE1NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIFdpLUZpIGRyaXZlciwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIGFkZGluZyBkZWJ1Z2ZzIGVudHJpZXMsIHVwZGF0aW5nIHN0YXRpc3RpY3MsIGFuZCBhZGRpbmcgYm91bmRzIGNoZWNrcyBmb3Igc3RhdGlzdGljcyBhcnJheSBhY2Nlc3Nlcywgd2hpY2ggZG8gbm90IGFsdGVyIHRoZSBjb3JlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgaXMgbWVhbmluZ2Z1bCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA2OjIzOjEwLjIwNzI1Nzk2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxNjcxMDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDAzYmRlNmE3M2M2ZmVjMDZmYWFlNWJlM2NjM2MwOGI5MjI3OWRjYzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTkgMDY6MjM6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbmluZGV4IGQ1NDk5NWI3YWRiMjcuLjEyNzkxZTI2N2QxYTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xcbkBAIC0xMDcxLDYgKzEwNzEsMjAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdFtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX1BOX0VSUl9GTEFHX1NFVF0gPSBcXFwiUE4gZXJyXFxcIixcXG4gXFx0XFx0W0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfREVTQ19CTE9DS0VEXSA9IFxcXCJEZXNjIGJsb2NrZWRcXFwifTtcXG4gXFxuK1xcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcnhfZHJvcFtXQk1fRVJSX0RST1BfTUFYXSA9IHtcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9HRVRfU1dfREVTQ10gPSBcXFwiU1cgZGVzYyBlcnJvclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfREVTQ19QQVJTRV0gPSBcXFwiRGVzYyBwYXJzZSBlcnJvclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfSU5WX0hXX0lEXSA9IFxcXCJJbnZhbGlkIGh3IGlkXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQXSA9IFxcXCJOdWxsIFBhcnRuZXIgZHBcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUF0gPSBcXFwiUHJvY2VzcyBOdWxsIFBhcnRuZXIgZHBcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX05VTExfUERFVl0gPSBcXFwiTnVsbCBQZGV2XFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9OVUxMX0FSXSA9IFxcXCJOdWxsIGFyXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9DQUNfUlVOTklOR10gPSBcXFwiQ0FDIFJ1bm5pbmdcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX1NHXSA9IFxcXCJTY2F0dGVyIEdhdGhlclxcXCIsXFxuK1xcdFxcdFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0gPSBcXFwiSW52YWxpZCBOV2lmaSBIZHIgbGVuXFxcIixcXG4rXFx0XFx0W1dCTV9FUlJfRFJPUF9SRU9fR0VORVJJQ10gPSBcXFwiUkVPIEdlbmVyaWNcXFwiLFxcbitcXHRcXHRbV0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUNdID0gXFxcIlJYRE1BIEdlbmVyaWNcXFwifTtcXG4rXFxuIFxcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcmVsX3NyY1tIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF0gPSB7XFxuIFxcdFxcdFtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1RRTV0gPSBcXFwiVFFNXFxcIixcXG4gXFx0XFx0W0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfUlhETUFdID0gXFxcIlJ4ZG1hXFxcIixcXG5AQCAtMTA5NSwxMyArMTEwOSwzMiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVg7IGkrKylcXG4gXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCIlczogJXVcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNlcnhkbWFfZXJyb3JbaV0pO1xcbitcXHRcXHRcXHRcXHQgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtXFx1MDAzZXdibV9lcnIucnhkbWFfZXJyb3JbaV0pO1xcbiBcXG4gXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcblJFTyBlcnJvcnM6XFxcXG5cXFwiKTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWDsgaSsrKVxcbiBcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIiVzOiAldVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNlcmVvX2Vycm9yW2ldKTtcXG4rXFx0XFx0XFx0XFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5yZW9fZXJyb3JbaV0pO1xcbitcXG4rXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcbldCTSBSeCBEcm9wIENvdW50OlxcXFxuXFxcIik7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBXQk1fRVJSX0RST1BfTUFYOyBpKyspXFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiJXM6ICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgd2JtX3J4X2Ryb3BbaV0sIGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5kcm9wW2ldKTtcXG4rXFxuK1xcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5SRU8gc2VudCB0byBzdGFjazpcXFxcblxcXCIpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSsrKSB7XFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwicmluZyVkOlxcXCIsIGkpO1xcbitcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgYWItXFx1MDAzZWFnLVxcdTAwM2VudW1fZGV2aWNlczsgaisrKVxcbitcXHRcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcXG4rXFx0XFx0XFx0XFx0XFx0IFxcXCJcXFxcdCVkOiV1XFxcIiwgaixcXG4rXFx0XFx0XFx0XFx0XFx0IGRldmljZV9zdGF0cy1cXHUwMDNlc2VudF90b19zdGFja1tpXVtqXSk7XFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5cXFwiKTtcXG4rXFx0fVxcbitcXG4rXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXFxuK1xcdFxcdFxcdCBcXFwiXFxcXG5XQk0gU1cgZGVzYyBmYWxsYmFjayAoSFcgQ0Mgbm90IGRvbmUpOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGRldmljZV9zdGF0cy1cXHUwMDNld2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKTtcXG4gXFxuIFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5IQUwgUkVPIGVycm9yczpcXFxcblxcXCIpO1xcbiBcXG5AQCAtMTExNyw2ICsxMTUwLDExIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcInJpbmclZDogJXVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCBpLCBkZXZpY2Vfc3RhdHMtXFx1MDAzZXR4X2Vyci5kZXNjX25hW2ldKTtcXG4gXFxuK1xcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiXFxcXG5UWCBEZXNjcmlwdG9yIFBvb2wgQWxsb2MgRmFpbHVyZXM6XFxcXG5cXFwiKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19IV19NQVhfUVVFVUVTOyBpKyspXFxuK1xcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwicG9vbCVkOiAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0IGksIGRldmljZV9zdGF0cy1cXHUwMDNldHhfZXJyLnR4YnVmX25hW2ldKTtcXG4rXFxuIFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxcbiBcXHRcXHRcXHQgXFxcIlxcXFxuTWlzYyBUcmFuc21pdCBGYWlsdXJlczogJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCBhdG9taWNfcmVhZChcXHUwMDI2ZGV2aWNlX3N0YXRzLVxcdTAwM2V0eF9lcnIubWlzY19mYWlsKSk7XFxuQEAgLTExODEsNyArMTIxOSw3IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXFxcIlxcXFxuUkVPIFJ4IFJlY2VpdmVkOlxcXFxuXFxcIik7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSsrKSB7XFxuLVxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwiUmluZyVkOlxcXCIsIGkgKyAxKTtcXG4rXFx0XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJyaW5nJWQ6XFxcIiwgaSk7XFxuIFxcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgYWItXFx1MDAzZWFnLVxcdTAwM2VudW1fZGV2aWNlczsgaisrKSB7XFxuIFxcdFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxcbkBAIC0xMjE1LDggKzEyNTMsNDAgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuK3N0YXRpYyBzc2l6ZV90XFxuK2F0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4rXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuK1xcdFxcdFxcdFxcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuK3tcXG4rXFx0c3RydWN0IGF0aDEya19iYXNlICphYiA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4rXFx0c3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyAqZGV2aWNlX3N0YXRzID0gXFx1MDAyNmRwLVxcdTAwM2VkZXZpY2Vfc3RhdHM7XFxuK1xcdGNoYXIgYnVmWzIwXSA9IHt9O1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0LyogZmlsdGVyIHBhcnRpYWwgd3JpdGVzIGFuZCBpbnZhbGlkIGNvbW1hbmRzICovXFxuK1xcdGlmICgqcHBvcyAhPSAwIHx8IGNvdW50IFxcdTAwM2U9IHNpemVvZihidWYpIHx8IGNvdW50ID09IDApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cmV0ID0gc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcihidWYsIHNpemVvZihidWYpIC0gMSwgcHBvcywgdXNlcl9idWYsIGNvdW50KTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHQvKiBkcm9wIHRoZSBwb3NzaWJsZSAnXFxcXG4nIGZyb20gdGhlIGVuZCAqL1xcbitcXHRpZiAoYnVmWypwcG9zIC0gMV0gPT0gJ1xcXFxuJylcXG4rXFx0XFx0YnVmWypwcG9zIC0gMV0gPSAnXFxcXDAnO1xcbitcXG4rXFx0aWYgKCFzdHJjbXAoYnVmLCBcXFwicmVzZXRcXFwiKSkge1xcbitcXHRcXHRtZW1zZXQoZGV2aWNlX3N0YXRzLCAwLCBzaXplb2YoKmRldmljZV9zdGF0cykpO1xcbitcXHRcXHRyZXR1cm4gY291bnQ7XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAtRUlOVkFMO1xcbit9XFxuK1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX2RldmljZV9kcF9zdGF0cyA9IHtcXG4gXFx0LnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyxcXG4rXFx0LndyaXRlID0gYXRoMTJrX2RlYnVnZnNfd3JpdGVfZGV2aWNlX2RwX3N0YXRzLFxcbiBcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbiBcXHQub3duZXIgPSBUSElTX01PRFVMRSxcXG4gXFx0Lmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLFxcbkBAIC0xMjI3LDcgKzEyOTcsNyBAQCB2b2lkIGF0aDEya19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuIFxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInNpbXVsYXRlX2Z3X2NyYXNoXFxcIiwgMDYwMCwgYWItXFx1MDAzZWRlYnVnZnNfc29jLCBhYixcXG4gXFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcXG4gXFxuLVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImRldmljZV9kcF9zdGF0c1xcXCIsIDA0MDAsIGFiLVxcdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXFxuK1xcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcImRldmljZV9kcF9zdGF0c1xcXCIsIDA2MDAsIGFiLVxcdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXFxuIFxcdFxcdFxcdCAgICBcXHUwMDI2Zm9wc19kZXZpY2VfZHBfc3RhdHMpO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcXG5pbmRleCBiZWYwZjJiYTA1NjBmLi4yODlhZWRlNmRhYmI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHAuaFxcbkBAIC03LDYgKzcsNyBAQFxcbiAjaWZuZGVmIEFUSDEyS19EUF9IXFxuICNkZWZpbmUgQVRIMTJLX0RQX0hcXG4gXFxuKyNpbmNsdWRlIFxcXCJkcF9zdGF0cy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiaHcuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImRwX2h0dC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiZHBfY21uLmhcXFwiXFxuQEAgLTQyOSwxOSArNDMwLDI3IEBAIHN0cnVjdCBhdGgxMmtfZHBfYXJjaF9vcHMge1xcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMge1xcbiBcXHQvKiBUQ0wgUmluZyBEZXNjcmlwdG9yIHVuYXZhaWxhYmxlICovXFxuIFxcdHUzMiBkZXNjX25hW0RQX1RDTF9OVU1fUklOR19NQVhdO1xcbitcXHQvKiBUWCBkZXNjcmlwdG9yIHBvb2wgZXhoYXVzdGVkIChwZXIgcG9vbF9pZCAvIHRyYWZmaWMgY2xhc3MpICovXFxuK1xcdHUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107XFxuIFxcdC8qIE90aGVyIGZhaWx1cmVzIGR1cmluZyBkcF90eCBkdWUgdG8gbWVtIGFsbG9jYXRpb24gZmFpbHVyZVxcbiBcXHQgKiBpZHIgdW5hdmFpbGFibGUgZXRjLlxcbiBcXHQgKi9cXG4gXFx0YXRvbWljX3QgbWlzY19mYWlsO1xcbiB9O1xcbiBcXG4rc3RydWN0IGF0aDEya19kZXZpY2VfZHBfcnhfd2JtX2Vycl9zdGF0cyB7XFxuK1xcdHUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdO1xcbitcXHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcXG4rXFx0dTMyIGRyb3BbV0JNX0VSUl9EUk9QX01BWF07XFxuK1xcdHUzMiBzd19kZXNjX2ZhbGxiYWNrO1xcbit9O1xcbitcXG4gc3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMge1xcbiBcXHR1MzIgZXJyX3JpbmdfcGt0cztcXG4gXFx0dTMyIGludmFsaWRfcmJtO1xcbi1cXHR1MzIgcnhkbWFfZXJyb3JbSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYXTtcXG4tXFx0dTMyIHJlb19lcnJvcltIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWF07XFxuIFxcdHUzMiBoYWxfcmVvX2Vycm9yW0RQX1JFT19EU1RfUklOR19NQVhdO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF90eF9lcnJfc3RhdHMgdHhfZXJyO1xcbitcXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHdibV9lcnI7XFxuIFxcdHUzMiByZW9fcnhbRFBfUkVPX0RTVF9SSU5HX01BWF1bQVRIMTJLX01BWF9ERVZJQ0VTXTtcXG4gXFx0dTMyIHJ4X3dibV9yZWxfc291cmNlW0hBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdO1xcbiBcXHR1MzIgdHFtX3JlbF9yZWFzb25bTUFYX1RRTV9SRUxFQVNFX1JFQVNPTl07XFxuQEAgLTQ1MCw2ICs0NTksNyBAQCBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7XFxuIFxcdHUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcXG4gXFx0dTMyIHR4X2NvbXBsZXRlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcXG4gXFx0dTMyIHJlb19leGNlcF9tc2R1X2J1Zl90eXBlO1xcbitcXHR1MzIgc2VudF90b19zdGFja1tEUF9SRU9fRFNUX1JJTkdfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdO1xcbiB9O1xcbiBcXG4gc3RydWN0IGF0aDEya19kcCB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfc3RhdHMuaFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNTI1NmRiZjc0MFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3N0YXRzLmhcXG5AQCAtMCwwICsxLDI1IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXIgKi9cXG4rLypcXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXFxuKyAqL1xcbitcXG4rI2lmbmRlZiBBVEgxMktfRFBfU1RBVFNfSFxcbisjZGVmaW5lIEFUSDEyS19EUF9TVEFUU19IXFxuK1xcbitlbnVtIGF0aDEya193Ym1fZXJyX2Ryb3BfcmVhc29uIHtcXG4rXFx0V0JNX0VSUl9EUk9QX0dFVF9TV19ERVNDLFxcbitcXHRXQk1fRVJSX0RST1BfREVTQ19QQVJTRSxcXG4rXFx0V0JNX0VSUl9EUk9QX0lOVl9IV19JRCxcXG4rXFx0V0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFAsXFxuK1xcdFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFAsXFxuK1xcdFdCTV9FUlJfRFJPUF9OVUxMX1BERVYsXFxuK1xcdFdCTV9FUlJfRFJPUF9OVUxMX0FSLFxcbitcXHRXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcsXFxuK1xcdFdCTV9FUlJfRFJPUF9TRyxcXG4rXFx0V0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFIsXFxuK1xcdFdCTV9FUlJfRFJPUF9SRU9fR0VORVJJQyxcXG4rXFx0V0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUMsXFxuK1xcdFdCTV9FUlJfRFJPUF9NQVgsXFxuK307XFxuK1xcbisjZW5kaWYgLyogQVRIMTJLX0RQX1NUQVRTX0ggKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXFxuaW5kZXggOTVkODdkZDY3ODcyZi4uMjVmZDhiZjc4NThmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcXG5AQCAtMTIsNiArMTIsMTUgQEBcXG4gI2luY2x1ZGUgXFxcImhhbF93Y243ODUwLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJoYWxfcWNjMjA3Mi5oXFxcIlxcbiBcXG4rc3RhdGljIHZvaWRcXG4rYXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2Ioc3RydWN0IGF0aDEya19kcCAqZHAsXFxuK1xcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqbXNkdSxcXG4rXFx0XFx0XFx0XFx0ICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pXFxuK3tcXG4rXFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbZHJvcF9yZWFzb25dKys7XFxuK1xcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbit9XFxuK1xcbiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0XFx0XFx0ICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLFxcbiBcXHRcXHRcXHRcXHRcXHQgIF9fbGUzMiBwZWVyX21ldGFkYXRhKVxcbkBAIC02NDIsNyArNjUxLDEwIEBAIGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3JlY2VpdmVkX3BhY2tldHMoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbi1cXG4rXFx0XFx0aWYgKGxpa2VseShyaW5nX2lkIFxcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWCkpXFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMuc2VudF90b19zdGFja1tyaW5nX2lkXVtwYXJ0bmVyX2RwLVxcdTAwM2VkZXZpY2VfaWRdKys7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0V0FSTl9PTl9PTkNFKDEpO1xcbiBcXHRcXHRhdGgxMmtfZHBfcnhfZGVsaXZlcl9tc2R1KGRwX3BkZXYsIG5hcGksIG1zZHUsIFxcdTAwMjZyeF9pbmZvKTtcXG4gXFx0fVxcbiBcXG5AQCAtMTYxNCw2ICsxNjI2LDcgQEAgc3RhdGljIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9udWxsX3FfZGVzYyhzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXFxuIFxcdFxcdC8qIEZpcnN0IGJ1ZmZlciB3aWxsIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIsIHNvIGRlZHVjdCBpdCdzIGxlbmd0aCAqL1xcbiBcXHRcXHRtc2R1X2xlbiA9IG1zZHVfbGVuIC0gKERQX1JYX0JVRkZFUl9TSVpFIC0gaGFsX3J4X2Rlc2Nfc3opO1xcbiBcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfbnVsbF9xX2Rlc2Nfc2dfZHJvcChkcCwgbXNkdV9sZW4sIG1zZHVfbGlzdCk7XFxuK1xcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9TR10rKztcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuQEAgLTE2NDksOCArMTY2MiwxMCBAQCBzdGF0aWMgaW50IGF0aDEya193aWZpN19kcF9yeF9oX251bGxfcV9kZXNjKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0XFx0c2tiX3B1dChtc2R1LCBoYWxfcnhfZGVzY19zeiArIGwzcGFkX2J5dGVzICsgbXNkdV9sZW4pO1xcbiBcXHRcXHRza2JfcHVsbChtc2R1LCBoYWxfcnhfZGVzY19zeiArIGwzcGFkX2J5dGVzKTtcXG4gXFx0fVxcbi1cXHRpZiAodW5saWtlbHkoIWF0aDEya19kcF9yeF9jaGVja19ud2lmaV9oZHJfbGVuX3ZhbGlkKGRwLCBtc2R1LCByeF9pbmZvKSkpXFxuK1xcdGlmICh1bmxpa2VseSghYXRoMTJrX2RwX3J4X2NoZWNrX253aWZpX2hkcl9sZW5fdmFsaWQoZHAsIG1zZHUsIHJ4X2luZm8pKSkge1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0rKztcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4gXFxuIFxcdGF0aDEya19kcF9yeF9oX3BwZHUoZHBfcGRldiwgcnhfaW5mbyk7XFxuIFxcdHJldCA9IGF0aDEya193aWZpN19kcF9yeF9oX21wZHUoZHBfcGRldiwgbXNkdSwgcnhfaW5mbyk7XFxuQEAgLTE3NjMsNyArMTc3OCwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxcbiBcXHRzdHJ1Y3QgYXRoMTJrX3NrYl9yeGNiICpyeGNiID0gQVRIMTJLX1NLQl9SWENCKG1zZHUpO1xcbiBcXHRib29sIGRyb3AgPSBmYWxzZTtcXG4gXFxuLVxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMucnhkbWFfZXJyb3JbcnhjYi1cXHUwMDNlZXJyX2NvZGVdKys7XFxuK1xcdGlmIChsaWtlbHkocnhjYi1cXHUwMDNlZXJyX2NvZGUgXFx1MDAzYyBIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVgpKVxcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucnhkbWFfZXJyb3JbcnhjYi1cXHUwMDNlZXJyX2NvZGVdKys7XFxuK1xcdGVsc2VcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKDEpO1xcbiBcXG4gXFx0c3dpdGNoIChyeGNiLVxcdTAwM2VlcnJfY29kZSkge1xcbiBcXHRjYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOlxcbkBAIC0xNzgwLDYgKzE3OTgsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yeGRtYV9lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxcbiBcXHRcXHQvKiBUT0RPOiBSZXZpZXcgb3RoZXIgcnhkbWEgZXJyb3IgY29kZSB0byBjaGVjayBpZiBhbnl0aGluZyBpc1xcbiBcXHRcXHQgKiB3b3J0aCByZXBvcnRpbmcgdG8gbWFjODAyMTFcXG4gXFx0XFx0ICovXFxuK1xcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSsrO1xcbiBcXHRcXHRkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG5AQCAtMTc5Niw3ICsxODE1LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3Jlb19lcnIoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxcbiBcXHRzdHJ1Y3QgYXRoMTJrX3NrYl9yeGNiICpyeGNiID0gQVRIMTJLX1NLQl9SWENCKG1zZHUpO1xcbiBcXHRib29sIGRyb3AgPSBmYWxzZTtcXG4gXFxuLVxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW3J4Y2ItXFx1MDAzZWVycl9jb2RlXSsrO1xcbitcXHRpZiAobGlrZWx5KHJ4Y2ItXFx1MDAzZWVycl9jb2RlIFxcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW3J4Y2ItXFx1MDAzZWVycl9jb2RlXSsrO1xcbitcXHRlbHNlXFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFxuIFxcdHN3aXRjaCAocnhjYi1cXHUwMDNlZXJyX2NvZGUpIHtcXG4gXFx0Y2FzZSBIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQUREUl9aRVJPOlxcbkBAIC0xODEzLDYgKzE4MzUsNyBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcXG4gXFx0XFx0LyogVE9ETzogUmV2aWV3IG90aGVyIGVycm9ycyBhbmQgcHJvY2VzcyB0aGVtIHRvIG1hYzgwMjExXFxuIFxcdFxcdCAqIGFzIGFwcHJvcHJpYXRlLlxcbiBcXHRcXHQgKi9cXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSsrO1xcbiBcXHRcXHRkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG5AQCAtMTkzNSw2ICsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdHJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZlcnJfaW5mbyk7XFxuIFxcdFxcdGlmIChyZXQpIHtcXG4rXFx0XFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0RFU0NfUEFSU0VdKys7XFxuIFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHBhcnNlIHJ4IGVycm9yIGluIHdibV9yZWwgcmluZyBkZXNjICVkXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgcmV0KTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuQEAgLTE5NDQsOCArMTk2OCwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFxuIFxcdFxcdC8qIHJldHJ5IG1hbnVhbCBkZXNjIHJldHJpZXZhbCBpZiBodyBjYyBpcyBub3QgZG9uZSAqL1xcbiBcXHRcXHRpZiAoIWRlc2NfaW5mbykge1xcbitcXHRcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuc3dfZGVzY19mYWxsYmFjaysrO1xcbiBcXHRcXHRcXHRkZXNjX2luZm8gPSBhdGgxMmtfZHBfZ2V0X3J4X2Rlc2MoZHAsIGVycl9pbmZvLmNvb2tpZSk7XFxuIFxcdFxcdFxcdGlmICghZGVzY19pbmZvKSB7XFxuK1xcdFxcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9HRVRfU1dfREVTQ10rKztcXG4gXFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJJbnZhbGlkIGNvb2tpZSBpbiBEUCBXQk0gcnggZXJyb3IgZGVzY3JpcHRvciByZXRyaWV2YWw6IDB4JXhcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBlcnJfaW5mby5jb29raWUpO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5AQCAtMTk2MSw3ICsxOTg3LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXFxuIFxcdFxcdGRldmljZV9pZCA9IGRlc2NfaW5mby1cXHUwMDNlZGV2aWNlX2lkO1xcbiBcXHRcXHRwYXJ0bmVyX2RwID0gYXRoMTJrX2RwX2h3X2dycF90b19kcChkcF9od19ncnAsIGRldmljZV9pZCk7XFxuIFxcdFxcdGlmICh1bmxpa2VseSghcGFydG5lcl9kcCkpIHtcXG4tXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XFxuK1xcdFxcdFxcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgV0JNX0VSUl9EUk9QX05VTExfUFJUTlJfRFApO1xcbiBcXG4gXFx0XFx0XFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcXG4gXFx0XFx0XFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxcbkBAIC0yMDA3LDcgKzIwMzQsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0aHdfbGlua19pZCA9IGF0aDEya19kcF9yeF9nZXRfbXNkdV9zcmNfbGluayhwYXJ0bmVyX2RwLVxcdTAwM2VoYWwsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBtc2R1X2RhdGEpO1xcbiBcXHRcXHRpZiAoaHdfbGlua19pZCBcXHUwMDNlPSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9JTlZfSFdfSUQpO1xcbiBcXG4gXFx0XFx0XFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcXG4gXFx0XFx0XFx0ICogaW4gdGhlIHByZXZpb3VzIHJlY29yZCwgY2xlYW51cCBzY2F0dGVyX21zZHVfbGlzdFxcbkBAIC0yMDY4LDcgKzIwOTYsOCBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLFxcbiBcXHRcXHRcXHRcXHQgICBcXFwiVW5hYmxlIHRvIHByb2Nlc3MgV0JNIGVycm9yIG1zZHUgZHVlIHRvIGludmFsaWQgaHcgbGluayBpZCAlZCBkZXZpY2UgaWQgJWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCAgIGh3X2xpbmtfaWQsIGRldmljZV9pZCk7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BST0NfRFApO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtMjA3NywxOCArMjEwNiwyMSBAQCBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3Nfd2JtX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFxuIFxcdFxcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XFxuIFxcdFxcdGlmICghZHBfcGRldikge1xcbi1cXHRcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4rXFx0XFx0XFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QREVWKTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YXIgPSBhdGgxMmtfcGRldl9kcF90b19hcihkcF9wZGV2KTtcXG4gXFxuIFxcdFxcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cXHUwMDNlYWItXFx1MDAzZXBkZXZzX2FjdGl2ZVtwZGV2X2lkeF0pKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXFx1MDAyNmFyLVxcdTAwM2VkZXZfZmxhZ3MpKSB7XFxuLVxcdFxcdFxcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xcbitcXHRcXHRcXHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyk7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvZHBfdHguY1xcbkBAIC0xNjcsOCArMTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXFxuIFxcdHR4X3JpbmcgPSBcXHUwMDI2ZHAtXFx1MDAzZXR4X3JpbmdbdGkucmluZ19pZF07XFxuIFxcbiBcXHR0eF9kZXNjID0gYXRoMTJrX2RwX3R4X2Fzc2lnbl9idWZmZXIoZHAsIHBvb2xfaWQpO1xcbi1cXHRpZiAoIXR4X2Rlc2MpXFxuK1xcdGlmICghdHhfZGVzYykge1xcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSsrO1xcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXG4gXFx0ZHBfbGlua192aWYgPSBhdGgxMmtfZHBfdmlmX3RvX2RwX2xpbmtfdmlmKFxcdTAwMjZhaHZpZi1cXHUwMDNlZHBfdmlmLCBhcnZpZi1cXHUwMDNlbGlua19pZCk7XFxuIFxcbkBAIC01NzUsMTggKzU3NywxOSBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXFxuIHtcXG4gXFx0c3RydWN0IGh0dF90eF93Ym1fY29tcGxldGlvbiAqc3RhdHVzX2Rlc2M7XFxuIFxcdHN0cnVjdCBhdGgxMmtfZHBfaHR0X3dibV90eF9zdGF0dXMgdHMgPSB7fTtcXG4tXFx0ZW51bSBoYWxfd2JtX2h0dF90eF9jb21wX3N0YXR1cyB3Ym1fc3RhdHVzO1xcbitcXHRlbnVtIGhhbF93Ym1faHR0X3R4X2NvbXBfc3RhdHVzIGh0dF9zdGF0dXM7XFxuIFxcdHUxNiBwZWVyX2lkO1xcbiBcXG4gXFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xcbiBcXG4tXFx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXFx1MDAzZWluZm8wLFxcbitcXHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cXHUwMDNlaW5mbzAsXFxuIFxcdFxcdFxcdFxcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xcbi1cXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSsrO1xcbitcXHRpZiAobGlrZWx5KGh0dF9zdGF0dXMgXFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcXG4rXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy5md190eF9zdGF0dXNbaHR0X3N0YXR1c10rKztcXG4gXFxuLVxcdHN3aXRjaCAod2JtX3N0YXR1cykge1xcbitcXHRzd2l0Y2ggKGh0dF9zdGF0dXMpIHtcXG4gXFx0Y2FzZSBIQUxfV0JNX1JFTF9IVFRfVFhfQ09NUF9TVEFUVVNfT0s6XFxuLVxcdFxcdHRzLmFja2VkID0gKHdibV9zdGF0dXMgPT0gSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LKTtcXG4rXFx0XFx0dHMuYWNrZWQgPSB0cnVlO1xcbiBcXHRcXHR0cy5hY2tfcnNzaSA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXFx1MDAzZWluZm8yLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcXG4gXFxuQEAgLTYwOCw3ICs2MTEsNyBAQCBhdGgxMmtfZHBfdHhfcHJvY2Vzc19odHRfdHhfY29tcGxldGUoc3RydWN0IGF0aDEya19kcCAqZHAsIHZvaWQgKmRlc2MsXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRicmVhaztcXG4gXFx0ZGVmYXVsdDpcXG4tXFx0XFx0YXRoMTJrX3dhcm4oZHAtXFx1MDAzZWFiLCBcXFwiVW5rbm93biBodHQgd2JtIHR4IHN0YXR1cyAlZFxcXFxuXFxcIiwgd2JtX3N0YXR1cyk7XFxuK1xcdFxcdGF0aDEya193YXJuKGRwLVxcdTAwM2VhYiwgXFxcIlVua25vd24gaHR0IHR4IHN0YXR1cyAlZFxcXFxuXFxcIiwgaHR0X3N0YXR1cyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHR9XFxuIH1cXG5AQCAtOTg0LDExICs5ODcsMTcgQEAgdm9pZCBhdGgxMmtfd2lmaTdfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCBpbnQgcmluZ19pZClcXG4gXFx0XFx0LyogRmluZCB0aGUgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFIHZhbHVlICovXFxuIFxcdFxcdGJ1Zl9yZWxfc291cmNlID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgSEFMX1dCTV9SRUxFQVNFX0lORk8wX1JFTF9TUkNfTU9EVUxFKTtcXG4tXFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcXG4rXFx0XFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcXHUwMDNjIEhBTF9XQk1fUkVMX1NSQ19NT0RVTEVfTUFYKSlcXG4rXFx0XFx0XFx0ZHAtXFx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRcXHRyZWxfc3RhdHVzID0gbGUzMl9nZXRfYml0cyh0eF9zdGF0dXMtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHRcXHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XFxuLVxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10rKztcXG4rXFx0XFx0aWYgKGxpa2VseShyZWxfc3RhdHVzIFxcdTAwM2MgTUFYX1RRTV9SRUxFQVNFX1JFQVNPTikpXFxuK1xcdFxcdFxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMudHFtX3JlbF9yZWFzb25bcmVsX3N0YXR1c10rKztcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuIFxcbiBcXHRcXHQvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvXFxuIFxcdFxcdCAqIHRvIHJlZHVjZSBjb250ZW50aW9uXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXFxuaW5kZXggNDljNjkzMjg5NzA5NC4uNjBlN2EzNjA5N2YxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguY1xcbkBAIC0zMjksNyArMzI5LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfaGFsX2Rlc2NfcmVvX3BhcnNlX2VycihzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcXG4gXFx0XFx0XFx0XFx0ICAgIEhBTF9SRU9fREVTVF9SSU5HX0lORk8wX1BVU0hfUkVBU09OKTtcXG4gXFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXFx1MDAzZWluZm8wLFxcbiBcXHRcXHRcXHRcXHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XFxuLVxcdGRwLVxcdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xcbitcXHRpZiAobGlrZWx5KGVycl9jb2RlIFxcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxcbitcXHRcXHRkcC1cXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xcbitcXHRlbHNlXFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFxuIFxcdGlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0ICAgIHB1c2hfcmVhc29uICE9IEhBTF9SRU9fREVTVF9SSU5HX1BVU0hfUkVBU09OX1JPVVRJTkdfSU5TVFJVQ1RJT04pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDY6MjM6MTEuNjI0OTA0NTU1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTY2MDQyNzA3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgV2ktRmkgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gYWRkaW5nIGRlYnVnZnMgZW50cmllcywgdXBkYXRpbmcgc3RhdGlzdGljcywgYW5kIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBzdGF0aXN0aWNzIGFycmF5IGFjY2Vzc2VzLCB3aGljaCBkbyBub3QgYWx0ZXIgdGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCBpcyBtZWFuaW5nZnVsIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDNiZGU2YTczYzZmZWMwNmZhYWU1YmUzY2MzYzA4YjkyMjc5ZGNjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDA2OjIzOjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuaW5kZXggZDU0OTk1YjdhZGIyNy4uMTI3OTFlMjY3ZDFhOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZGVidWdmcy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RlYnVnZnMuY1xuQEAgLTEwNzEsNiArMTA3MSwyMCBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdFx0W0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfUE5fRVJSX0ZMQUdfU0VUXSA9IFwiUE4gZXJyXCIsXG4gXHRcdFtIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX0RFU0NfQkxPQ0tFRF0gPSBcIkRlc2MgYmxvY2tlZFwifTtcbiBcbitcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcnhfZHJvcFtXQk1fRVJSX0RST1BfTUFYXSA9IHtcbitcdFx0W1dCTV9FUlJfRFJPUF9HRVRfU1dfREVTQ10gPSBcIlNXIGRlc2MgZXJyb3JcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9ERVNDX1BBUlNFXSA9IFwiRGVzYyBwYXJzZSBlcnJvclwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX0lOVl9IV19JRF0gPSBcIkludmFsaWQgaHcgaWRcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQXSA9IFwiTnVsbCBQYXJ0bmVyIGRwXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQXSA9IFwiUHJvY2VzcyBOdWxsIFBhcnRuZXIgZHBcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX1BERVZdID0gXCJOdWxsIFBkZXZcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9OVUxMX0FSXSA9IFwiTnVsbCBhclwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX0NBQ19SVU5OSU5HXSA9IFwiQ0FDIFJ1bm5pbmdcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9TR10gPSBcIlNjYXR0ZXIgR2F0aGVyXCIsXG4rXHRcdFtXQk1fRVJSX0RST1BfSU5WX05XSUZJX0hEUl0gPSBcIkludmFsaWQgTldpZmkgSGRyIGxlblwiLFxuK1x0XHRbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSA9IFwiUkVPIEdlbmVyaWNcIixcbitcdFx0W1dCTV9FUlJfRFJPUF9SWERNQV9HRU5FUklDXSA9IFwiUlhETUEgR2VuZXJpY1wifTtcbitcbiBcdHN0YXRpYyBjb25zdCBjaGFyICp3Ym1fcmVsX3NyY1tIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX01BWF0gPSB7XG4gXHRcdFtIQUxfV0JNX1JFTF9TUkNfTU9EVUxFX1RRTV0gPSBcIlRRTVwiLFxuIFx0XHRbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9SWERNQV0gPSBcIlJ4ZG1hXCIsXG5AQCAtMTA5NSwxMyArMTEwOSwzMiBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWDsgaSsrKVxuIFx0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCIlczogJXVcXG5cIixcbi1cdFx0XHRcdCByeGRtYV9lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2VyeGRtYV9lcnJvcltpXSk7XG4rXHRcdFx0XHQgcnhkbWFfZXJyW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5yeGRtYV9lcnJvcltpXSk7XG4gXG4gXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5SRU8gZXJyb3JzOlxcblwiKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYOyBpKyspXG4gXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIiVzOiAldVxcblwiLFxuLVx0XHRcdFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2VyZW9fZXJyb3JbaV0pO1xuK1x0XHRcdFx0IHJlb19lcnJbaV0sIGRldmljZV9zdGF0cy1cdTAwM2V3Ym1fZXJyLnJlb19lcnJvcltpXSk7XG4rXG4rXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5XQk0gUnggRHJvcCBDb3VudDpcXG5cIik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBXQk1fRVJSX0RST1BfTUFYOyBpKyspXG4rXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIiVzOiAldVxcblwiLFxuK1x0XHRcdFx0IHdibV9yeF9kcm9wW2ldLCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5kcm9wW2ldKTtcbitcbitcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcblJFTyBzZW50IHRvIHN0YWNrOlxcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVg7IGkrKykge1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJyaW5nJWQ6XCIsIGkpO1xuK1x0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaisrKVxuK1x0XHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxuK1x0XHRcdFx0XHQgXCJcXHQlZDoldVwiLCBqLFxuK1x0XHRcdFx0XHQgZGV2aWNlX3N0YXRzLVx1MDAzZXNlbnRfdG9fc3RhY2tbaV1bal0pO1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5cIik7XG4rXHR9XG4rXG4rXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbixcbitcdFx0XHQgXCJcXG5XQk0gU1cgZGVzYyBmYWxsYmFjayAoSFcgQ0Mgbm90IGRvbmUpOiAldVxcblwiLFxuK1x0XHRcdCBkZXZpY2Vfc3RhdHMtXHUwMDNld2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKTtcbiBcbiBcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlxcbkhBTCBSRU8gZXJyb3JzOlxcblwiKTtcbiBcbkBAIC0xMTE3LDYgKzExNTAsMTEgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcInJpbmclZDogJXVcXG5cIixcbiBcdFx0XHRcdCBpLCBkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLmRlc2NfbmFbaV0pO1xuIFxuK1x0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwiXFxuVFggRGVzY3JpcHRvciBQb29sIEFsbG9jIEZhaWx1cmVzOlxcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19IV19NQVhfUVVFVUVTOyBpKyspXG4rXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcInBvb2wlZDogJXVcXG5cIixcbitcdFx0XHRcdCBpLCBkZXZpY2Vfc3RhdHMtXHUwMDNldHhfZXJyLnR4YnVmX25hW2ldKTtcbitcbiBcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLFxuIFx0XHRcdCBcIlxcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxuXCIsXG4gXHRcdFx0IGF0b21pY19yZWFkKFx1MDAyNmRldmljZV9zdGF0cy1cdTAwM2V0eF9lcnIubWlzY19mYWlsKSk7XG5AQCAtMTE4MSw3ICsxMjE5LDcgQEAgc3RhdGljIHNzaXplX3QgYXRoMTJrX2RlYnVnZnNfZHVtcF9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5SRU8gUnggUmVjZWl2ZWQ6XFxuXCIpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRFBfUkVPX0RTVF9SSU5HX01BWDsgaSsrKSB7XG4tXHRcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcIlJpbmclZDpcIiwgaSArIDEpO1xuK1x0XHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJyaW5nJWQ6XCIsIGkpO1xuIFxuIFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBhYi1cdTAwM2VhZy1cdTAwM2VudW1fZGV2aWNlczsgaisrKSB7XG4gXHRcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sXG5AQCAtMTIxNSw4ICsxMjUzLDQwIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEya19kZWJ1Z2ZzX2R1bXBfZGV2aWNlX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIHNzaXplX3RcbithdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4rXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1ZixcbitcdFx0XHRcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4re1xuK1x0c3RydWN0IGF0aDEya19iYXNlICphYiA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuK1x0c3RydWN0IGF0aDEya19kcCAqZHAgPSBhdGgxMmtfYWJfdG9fZHAoYWIpO1xuK1x0c3RydWN0IGF0aDEya19kZXZpY2VfZHBfc3RhdHMgKmRldmljZV9zdGF0cyA9IFx1MDAyNmRwLVx1MDAzZWRldmljZV9zdGF0cztcbitcdGNoYXIgYnVmWzIwXSA9IHt9O1xuK1x0aW50IHJldDtcbitcbitcdC8qIGZpbHRlciBwYXJ0aWFsIHdyaXRlcyBhbmQgaW52YWxpZCBjb21tYW5kcyAqL1xuK1x0aWYgKCpwcG9zICE9IDAgfHwgY291bnQgXHUwMDNlPSBzaXplb2YoYnVmKSB8fCBjb3VudCA9PSAwKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJldCA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsIHBwb3MsIHVzZXJfYnVmLCBjb3VudCk7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0LyogZHJvcCB0aGUgcG9zc2libGUgJ1xcbicgZnJvbSB0aGUgZW5kICovXG4rXHRpZiAoYnVmWypwcG9zIC0gMV0gPT0gJ1xcbicpXG4rXHRcdGJ1ZlsqcHBvcyAtIDFdID0gJ1xcMCc7XG4rXG4rXHRpZiAoIXN0cmNtcChidWYsIFwicmVzZXRcIikpIHtcbitcdFx0bWVtc2V0KGRldmljZV9zdGF0cywgMCwgc2l6ZW9mKCpkZXZpY2Vfc3RhdHMpKTtcbitcdFx0cmV0dXJuIGNvdW50O1xuK1x0fVxuK1xuK1x0cmV0dXJuIC1FSU5WQUw7XG4rfVxuK1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfZGV2aWNlX2RwX3N0YXRzID0ge1xuIFx0LnJlYWQgPSBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0cyxcbitcdC53cml0ZSA9IGF0aDEya19kZWJ1Z2ZzX3dyaXRlX2RldmljZV9kcF9zdGF0cyxcbiBcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4gXHQub3duZXIgPSBUSElTX01PRFVMRSxcbiBcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbkBAIC0xMjI3LDcgKzEyOTcsNyBAQCB2b2lkIGF0aDEya19kZWJ1Z2ZzX3BkZXZfY3JlYXRlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4gXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwic2ltdWxhdGVfZndfY3Jhc2hcIiwgMDYwMCwgYWItXHUwMDNlZGVidWdmc19zb2MsIGFiLFxuIFx0XHRcdCAgICBcdTAwMjZmb3BzX3NpbXVsYXRlX2Z3X2NyYXNoKTtcbiBcbi1cdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXCJkZXZpY2VfZHBfc3RhdHNcIiwgMDQwMCwgYWItXHUwMDNlZGVidWdmc19zb2MsIGFiLFxuK1x0ZGVidWdmc19jcmVhdGVfZmlsZShcImRldmljZV9kcF9zdGF0c1wiLCAwNjAwLCBhYi1cdTAwM2VkZWJ1Z2ZzX3NvYywgYWIsXG4gXHRcdFx0ICAgIFx1MDAyNmZvcHNfZGV2aWNlX2RwX3N0YXRzKTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG5pbmRleCBiZWYwZjJiYTA1NjBmLi4yODlhZWRlNmRhYmI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcC5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwLmhcbkBAIC03LDYgKzcsNyBAQFxuICNpZm5kZWYgQVRIMTJLX0RQX0hcbiAjZGVmaW5lIEFUSDEyS19EUF9IXG4gXG4rI2luY2x1ZGUgXCJkcF9zdGF0cy5oXCJcbiAjaW5jbHVkZSBcImh3LmhcIlxuICNpbmNsdWRlIFwiZHBfaHR0LmhcIlxuICNpbmNsdWRlIFwiZHBfY21uLmhcIlxuQEAgLTQyOSwxOSArNDMwLDI3IEBAIHN0cnVjdCBhdGgxMmtfZHBfYXJjaF9vcHMge1xuIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB7XG4gXHQvKiBUQ0wgUmluZyBEZXNjcmlwdG9yIHVuYXZhaWxhYmxlICovXG4gXHR1MzIgZGVzY19uYVtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbitcdC8qIFRYIGRlc2NyaXB0b3IgcG9vbCBleGhhdXN0ZWQgKHBlciBwb29sX2lkIC8gdHJhZmZpYyBjbGFzcykgKi9cbitcdHUzMiB0eGJ1Zl9uYVtBVEgxMktfSFdfTUFYX1FVRVVFU107XG4gXHQvKiBPdGhlciBmYWlsdXJlcyBkdXJpbmcgZHBfdHggZHVlIHRvIG1lbSBhbGxvY2F0aW9uIGZhaWx1cmVcbiBcdCAqIGlkciB1bmF2YWlsYWJsZSBldGMuXG4gXHQgKi9cbiBcdGF0b21pY190IG1pc2NfZmFpbDtcbiB9O1xuIFxuK3N0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3J4X3dibV9lcnJfc3RhdHMge1xuK1x0dTMyIHJ4ZG1hX2Vycm9yW0hBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX01BWF07XG4rXHR1MzIgcmVvX2Vycm9yW0hBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfTUFYXTtcbitcdHUzMiBkcm9wW1dCTV9FUlJfRFJPUF9NQVhdO1xuK1x0dTMyIHN3X2Rlc2NfZmFsbGJhY2s7XG4rfTtcbitcbiBzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9zdGF0cyB7XG4gXHR1MzIgZXJyX3JpbmdfcGt0cztcbiBcdHUzMiBpbnZhbGlkX3JibTtcbi1cdHUzMiByeGRtYV9lcnJvcltIQUxfUkVPX0VOVFJfUklOR19SWERNQV9FQ09ERV9NQVhdO1xuLVx0dTMyIHJlb19lcnJvcltIQUxfUkVPX0RFU1RfUklOR19FUlJPUl9DT0RFX01BWF07XG4gXHR1MzIgaGFsX3Jlb19lcnJvcltEUF9SRU9fRFNUX1JJTkdfTUFYXTtcbiBcdHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3R4X2Vycl9zdGF0cyB0eF9lcnI7XG4rXHRzdHJ1Y3QgYXRoMTJrX2RldmljZV9kcF9yeF93Ym1fZXJyX3N0YXRzIHdibV9lcnI7XG4gXHR1MzIgcmVvX3J4W0RQX1JFT19EU1RfUklOR19NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XG4gXHR1MzIgcnhfd2JtX3JlbF9zb3VyY2VbSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVhdW0FUSDEyS19NQVhfREVWSUNFU107XG4gXHR1MzIgdHFtX3JlbF9yZWFzb25bTUFYX1RRTV9SRUxFQVNFX1JFQVNPTl07XG5AQCAtNDUwLDYgKzQ1OSw3IEBAIHN0cnVjdCBhdGgxMmtfZGV2aWNlX2RwX3N0YXRzIHtcbiBcdHUzMiB0eF9lbnF1ZXVlZFtEUF9UQ0xfTlVNX1JJTkdfTUFYXTtcbiBcdHUzMiB0eF9jb21wbGV0ZWRbRFBfVENMX05VTV9SSU5HX01BWF07XG4gXHR1MzIgcmVvX2V4Y2VwX21zZHVfYnVmX3R5cGU7XG4rXHR1MzIgc2VudF90b19zdGFja1tEUF9SRU9fRFNUX1JJTkdfTUFYXVtBVEgxMktfTUFYX0RFVklDRVNdO1xuIH07XG4gXG4gc3RydWN0IGF0aDEya19kcCB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMWEwNTI1NmRiZjc0MFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9zdGF0cy5oXG5AQCAtMCwwICsxLDI1IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhciAqL1xuKy8qXG4rICogQ29weXJpZ2h0IChjKSBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4rICovXG4rXG4rI2lmbmRlZiBBVEgxMktfRFBfU1RBVFNfSFxuKyNkZWZpbmUgQVRIMTJLX0RQX1NUQVRTX0hcbitcbitlbnVtIGF0aDEya193Ym1fZXJyX2Ryb3BfcmVhc29uIHtcbitcdFdCTV9FUlJfRFJPUF9HRVRfU1dfREVTQyxcbitcdFdCTV9FUlJfRFJPUF9ERVNDX1BBUlNFLFxuK1x0V0JNX0VSUl9EUk9QX0lOVl9IV19JRCxcbitcdFdCTV9FUlJfRFJPUF9OVUxMX1BSVE5SX0RQLFxuK1x0V0JNX0VSUl9EUk9QX05VTExfUFJPQ19EUCxcbitcdFdCTV9FUlJfRFJPUF9OVUxMX1BERVYsXG4rXHRXQk1fRVJSX0RST1BfTlVMTF9BUixcbitcdFdCTV9FUlJfRFJPUF9DQUNfUlVOTklORyxcbitcdFdCTV9FUlJfRFJPUF9TRyxcbitcdFdCTV9FUlJfRFJPUF9JTlZfTldJRklfSERSLFxuK1x0V0JNX0VSUl9EUk9QX1JFT19HRU5FUklDLFxuK1x0V0JNX0VSUl9EUk9QX1JYRE1BX0dFTkVSSUMsXG4rXHRXQk1fRVJSX0RST1BfTUFYLFxuK307XG4rXG4rI2VuZGlmIC8qIEFUSDEyS19EUF9TVEFUU19IICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG5pbmRleCA5NWQ4N2RkNjc4NzJmLi4yNWZkOGJmNzg1OGY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF9yeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3J4LmNcbkBAIC0xMiw2ICsxMiwxNSBAQFxuICNpbmNsdWRlIFwiaGFsX3djbjc4NTAuaFwiXG4gI2luY2x1ZGUgXCJoYWxfcWNjMjA3Mi5oXCJcbiBcbitzdGF0aWMgdm9pZFxuK2F0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuK1x0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICptc2R1LFxuK1x0XHRcdFx0ICAgIGVudW0gYXRoMTJrX3dibV9lcnJfZHJvcF9yZWFzb24gZHJvcF9yZWFzb24pXG4re1xuK1x0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtkcm9wX3JlYXNvbl0rKztcbitcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK31cbitcbiBzdGF0aWMgdTE2IGF0aDEya193aWZpN19kcF9yeF9nZXRfcGVlcl9pZChzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRcdFx0ICBlbnVtIGF0aDEya19wZWVyX21ldGFkYXRhX3ZlcnNpb24gdmVyLFxuIFx0XHRcdFx0XHQgIF9fbGUzMiBwZWVyX21ldGFkYXRhKVxuQEAgLTY0Miw3ICs2NTEsMTAgQEAgYXRoMTJrX3dpZmk3X2RwX3J4X3Byb2Nlc3NfcmVjZWl2ZWRfcGFja2V0cyhzdHJ1Y3QgYXRoMTJrX2RwICpkcCxcbiBcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuLVxuK1x0XHRpZiAobGlrZWx5KHJpbmdfaWQgXHUwMDNjIERQX1JFT19EU1RfUklOR19NQVgpKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy5zZW50X3RvX3N0YWNrW3JpbmdfaWRdW3BhcnRuZXJfZHAtXHUwMDNlZGV2aWNlX2lkXSsrO1xuK1x0XHRlbHNlXG4rXHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFx0XHRhdGgxMmtfZHBfcnhfZGVsaXZlcl9tc2R1KGRwX3BkZXYsIG5hcGksIG1zZHUsIFx1MDAyNnJ4X2luZm8pO1xuIFx0fVxuIFxuQEAgLTE2MTQsNiArMTYyNiw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHQvKiBGaXJzdCBidWZmZXIgd2lsbCBiZSBmcmVlZCBieSB0aGUgY2FsbGVyLCBzbyBkZWR1Y3QgaXQncyBsZW5ndGggKi9cbiBcdFx0bXNkdV9sZW4gPSBtc2R1X2xlbiAtIChEUF9SWF9CVUZGRVJfU0laRSAtIGhhbF9yeF9kZXNjX3N6KTtcbiBcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X251bGxfcV9kZXNjX3NnX2Ryb3AoZHAsIG1zZHVfbGVuLCBtc2R1X2xpc3QpO1xuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9TR10rKztcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG5AQCAtMTY0OSw4ICsxNjYyLDEwIEBAIHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2RwX3J4X2hfbnVsbF9xX2Rlc2Moc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LFxuIFx0XHRza2JfcHV0KG1zZHUsIGhhbF9yeF9kZXNjX3N6ICsgbDNwYWRfYnl0ZXMgKyBtc2R1X2xlbik7XG4gXHRcdHNrYl9wdWxsKG1zZHUsIGhhbF9yeF9kZXNjX3N6ICsgbDNwYWRfYnl0ZXMpO1xuIFx0fVxuLVx0aWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKVxuK1x0aWYgKHVubGlrZWx5KCFhdGgxMmtfZHBfcnhfY2hlY2tfbndpZmlfaGRyX2xlbl92YWxpZChkcCwgbXNkdSwgcnhfaW5mbykpKSB7XG4rXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX0lOVl9OV0lGSV9IRFJdKys7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuIFxuIFx0YXRoMTJrX2RwX3J4X2hfcHBkdShkcF9wZGV2LCByeF9pbmZvKTtcbiBcdHJldCA9IGF0aDEya193aWZpN19kcF9yeF9oX21wZHUoZHBfcGRldiwgbXNkdSwgcnhfaW5mbyk7XG5AQCAtMTc2Myw3ICsxNzc4LDEwIEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3J4ZG1hX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRzdHJ1Y3QgYXRoMTJrX3NrYl9yeGNiICpyeGNiID0gQVRIMTJLX1NLQl9SWENCKG1zZHUpO1xuIFx0Ym9vbCBkcm9wID0gZmFsc2U7XG4gXG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucnhkbWFfZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0rKztcbitcdGlmIChsaWtlbHkocnhjYi1cdTAwM2VlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19FTlRSX1JJTkdfUlhETUFfRUNPREVfTUFYKSlcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIucnhkbWFfZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0rKztcbitcdGVsc2VcbitcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0c3dpdGNoIChyeGNiLVx1MDAzZWVycl9jb2RlKSB7XG4gXHRjYXNlIEhBTF9SRU9fRU5UUl9SSU5HX1JYRE1BX0VDT0RFX1VOQVVUSF9XRFNfRVJSOlxuQEAgLTE3ODAsNiArMTc5OCw3IEBAIHN0YXRpYyBib29sIGF0aDEya193aWZpN19kcF9yeF9oX3J4ZG1hX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdC8qIFRPRE86IFJldmlldyBvdGhlciByeGRtYSBlcnJvciBjb2RlIHRvIGNoZWNrIGlmIGFueXRoaW5nIGlzXG4gXHRcdCAqIHdvcnRoIHJlcG9ydGluZyB0byBtYWM4MDIxMVxuIFx0XHQgKi9cbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLndibV9lcnIuZHJvcFtXQk1fRVJSX0RST1BfUlhETUFfR0VORVJJQ10rKztcbiBcdFx0ZHJvcCA9IHRydWU7XG4gXHRcdGJyZWFrO1xuIFx0fVxuQEAgLTE3OTYsNyArMTgxNSwxMCBAQCBzdGF0aWMgYm9vbCBhdGgxMmtfd2lmaTdfZHBfcnhfaF9yZW9fZXJyKHN0cnVjdCBhdGgxMmtfcGRldl9kcCAqZHBfcGRldixcbiBcdHN0cnVjdCBhdGgxMmtfc2tiX3J4Y2IgKnJ4Y2IgPSBBVEgxMktfU0tCX1JYQ0IobXNkdSk7XG4gXHRib29sIGRyb3AgPSBmYWxzZTtcbiBcbi1cdGRwLVx1MDAzZWRldmljZV9zdGF0cy5yZW9fZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0rKztcbitcdGlmIChsaWtlbHkocnhjYi1cdTAwM2VlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbcnhjYi1cdTAwM2VlcnJfY29kZV0rKztcbitcdGVsc2VcbitcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0c3dpdGNoIChyeGNiLVx1MDAzZWVycl9jb2RlKSB7XG4gXHRjYXNlIEhBTF9SRU9fREVTVF9SSU5HX0VSUk9SX0NPREVfREVTQ19BRERSX1pFUk86XG5AQCAtMTgxMyw2ICsxODM1LDcgQEAgc3RhdGljIGJvb2wgYXRoMTJrX3dpZmk3X2RwX3J4X2hfcmVvX2VycihzdHJ1Y3QgYXRoMTJrX3BkZXZfZHAgKmRwX3BkZXYsXG4gXHRcdC8qIFRPRE86IFJldmlldyBvdGhlciBlcnJvcnMgYW5kIHByb2Nlc3MgdGhlbSB0byBtYWM4MDIxMVxuIFx0XHQgKiBhcyBhcHByb3ByaWF0ZS5cbiBcdFx0ICovXG4rXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy53Ym1fZXJyLmRyb3BbV0JNX0VSUl9EUk9QX1JFT19HRU5FUklDXSsrO1xuIFx0XHRkcm9wID0gdHJ1ZTtcbiBcdFx0YnJlYWs7XG4gXHR9XG5AQCAtMTkzNSw2ICsxOTU4LDcgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdHJldCA9IGF0aDEya193aWZpN19oYWxfd2JtX2Rlc2NfcGFyc2VfZXJyKGRwLCByeF9kZXNjLFxuIFx0XHRcdFx0XHRcdFx0ICBcdTAwMjZlcnJfaW5mbyk7XG4gXHRcdGlmIChyZXQpIHtcbitcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9ERVNDX1BBUlNFXSsrO1xuIFx0XHRcdGF0aDEya193YXJuKGFiLCBcImZhaWxlZCB0byBwYXJzZSByeCBlcnJvciBpbiB3Ym1fcmVsIHJpbmcgZGVzYyAlZFxcblwiLFxuIFx0XHRcdFx0ICAgIHJldCk7XG4gXHRcdFx0Y29udGludWU7XG5AQCAtMTk0NCw4ICsxOTY4LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFxuIFx0XHQvKiByZXRyeSBtYW51YWwgZGVzYyByZXRyaWV2YWwgaWYgaHcgY2MgaXMgbm90IGRvbmUgKi9cbiBcdFx0aWYgKCFkZXNjX2luZm8pIHtcbitcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5zd19kZXNjX2ZhbGxiYWNrKys7XG4gXHRcdFx0ZGVzY19pbmZvID0gYXRoMTJrX2RwX2dldF9yeF9kZXNjKGRwLCBlcnJfaW5mby5jb29raWUpO1xuIFx0XHRcdGlmICghZGVzY19pbmZvKSB7XG4rXHRcdFx0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5kcm9wW1dCTV9FUlJfRFJPUF9HRVRfU1dfREVTQ10rKztcbiBcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcIkludmFsaWQgY29va2llIGluIERQIFdCTSByeCBlcnJvciBkZXNjcmlwdG9yIHJldHJpZXZhbDogMHgleFxcblwiLFxuIFx0XHRcdFx0XHQgICAgZXJyX2luZm8uY29va2llKTtcbiBcdFx0XHRcdGNvbnRpbnVlO1xuQEAgLTE5NjEsNyArMTk4Nyw4IEBAIGludCBhdGgxMmtfd2lmaTdfZHBfcnhfcHJvY2Vzc193Ym1fZXJyKHN0cnVjdCBhdGgxMmtfZHAgKmRwLFxuIFx0XHRkZXZpY2VfaWQgPSBkZXNjX2luZm8tXHUwMDNlZGV2aWNlX2lkO1xuIFx0XHRwYXJ0bmVyX2RwID0gYXRoMTJrX2RwX2h3X2dycF90b19kcChkcF9od19ncnAsIGRldmljZV9pZCk7XG4gXHRcdGlmICh1bmxpa2VseSghcGFydG5lcl9kcCkpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUlROUl9EUCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjAwNyw3ICsyMDM0LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdGh3X2xpbmtfaWQgPSBhdGgxMmtfZHBfcnhfZ2V0X21zZHVfc3JjX2xpbmsocGFydG5lcl9kcC1cdTAwM2VoYWwsXG4gXHRcdFx0XHRcdFx0XHQgICAgbXNkdV9kYXRhKTtcbiBcdFx0aWYgKGh3X2xpbmtfaWQgXHUwMDNlPSBBVEgxMktfR1JPVVBfTUFYX1JBRElPKSB7XG4tXHRcdFx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4rXHRcdFx0YXRoMTJrX3dpZmk3X2RwX3J4X3dibV9lcnJfZnJlZV9za2IoZHAsIG1zZHUsXG4rXHRcdFx0XHRcdFx0XHQgICAgV0JNX0VSUl9EUk9QX0lOVl9IV19JRCk7XG4gXG4gXHRcdFx0LyogSW4gYW55IGNhc2UgY29udGludWF0aW9uIGJpdCBpcyBzZXRcbiBcdFx0XHQgKiBpbiB0aGUgcHJldmlvdXMgcmVjb3JkLCBjbGVhbnVwIHNjYXR0ZXJfbXNkdV9saXN0XG5AQCAtMjA2OCw3ICsyMDk2LDggQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19EQVRBLFxuIFx0XHRcdFx0ICAgXCJVbmFibGUgdG8gcHJvY2VzcyBXQk0gZXJyb3IgbXNkdSBkdWUgdG8gaW52YWxpZCBodyBsaW5rIGlkICVkIGRldmljZSBpZCAlZFxcblwiLFxuIFx0XHRcdFx0ICAgaHdfbGlua19pZCwgZGV2aWNlX2lkKTtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfTlVMTF9QUk9DX0RQKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuQEAgLTIwNzcsMTggKzIxMDYsMjEgQEAgaW50IGF0aDEya193aWZpN19kcF9yeF9wcm9jZXNzX3dibV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXG4gXHRcdGRwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcChwYXJ0bmVyX2RwLCBwZGV2X2lkeCk7XG4gXHRcdGlmICghZHBfcGRldikge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuK1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX1BERVYpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXHRcdGFyID0gYXRoMTJrX3BkZXZfZHBfdG9fYXIoZHBfcGRldik7XG4gXG4gXHRcdGlmICghYXIgfHwgIXJjdV9kZXJlZmVyZW5jZShhci1cdTAwM2VhYi1cdTAwM2VwZGV2c19hY3RpdmVbcGRldl9pZHhdKSkge1xuLVx0XHRcdGRldl9rZnJlZV9za2JfYW55KG1zZHUpO1xuK1x0XHRcdGF0aDEya193aWZpN19kcF9yeF93Ym1fZXJyX2ZyZWVfc2tiKGRwLCBtc2R1LFxuK1x0XHRcdFx0XHRcdFx0ICAgIFdCTV9FUlJfRFJPUF9OVUxMX0FSKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ0FDX1JVTk5JTkcsIFx1MDAyNmFyLVx1MDAzZWRldl9mbGFncykpIHtcbi1cdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcbitcdFx0XHRhdGgxMmtfd2lmaTdfZHBfcnhfd2JtX2Vycl9mcmVlX3NrYihkcCwgbXNkdSxcbitcdFx0XHRcdFx0XHRcdCAgICBXQk1fRVJSX0RST1BfQ0FDX1JVTk5JTkcpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG5pbmRleCA1ODdkNThlZWNjZmE1Li4xMTA0OGM1NjgzMzEwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9kcF90eC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2RwX3R4LmNcbkBAIC0xNjcsOCArMTY3LDEwIEBAIGludCBhdGgxMmtfd2lmaTdfZHBfdHgoc3RydWN0IGF0aDEya19wZGV2X2RwICpkcF9wZGV2LCBzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphXG4gXHR0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1t0aS5yaW5nX2lkXTtcbiBcbiBcdHR4X2Rlc2MgPSBhdGgxMmtfZHBfdHhfYXNzaWduX2J1ZmZlcihkcCwgcG9vbF9pZCk7XG4tXHRpZiAoIXR4X2Rlc2MpXG4rXHRpZiAoIXR4X2Rlc2MpIHtcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLnR4X2Vyci50eGJ1Zl9uYVtwb29sX2lkXSsrO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbiBcbiBcdGRwX2xpbmtfdmlmID0gYXRoMTJrX2RwX3ZpZl90b19kcF9saW5rX3ZpZihcdTAwMjZhaHZpZi1cdTAwM2VkcF92aWYsIGFydmlmLVx1MDAzZWxpbmtfaWQpO1xuIFxuQEAgLTU3NSwxOCArNTc3LDE5IEBAIGF0aDEya19kcF90eF9wcm9jZXNzX2h0dF90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrX2RwICpkcCwgdm9pZCAqZGVzYyxcbiB7XG4gXHRzdHJ1Y3QgaHR0X3R4X3dibV9jb21wbGV0aW9uICpzdGF0dXNfZGVzYztcbiBcdHN0cnVjdCBhdGgxMmtfZHBfaHR0X3dibV90eF9zdGF0dXMgdHMgPSB7fTtcbi1cdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgd2JtX3N0YXR1cztcbitcdGVudW0gaGFsX3dibV9odHRfdHhfY29tcF9zdGF0dXMgaHR0X3N0YXR1cztcbiBcdHUxNiBwZWVyX2lkO1xuIFxuIFx0c3RhdHVzX2Rlc2MgPSBkZXNjO1xuIFxuLVx0d2JtX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHMoc3RhdHVzX2Rlc2MtXHUwMDNlaW5mbzAsXG4rXHRodHRfc3RhdHVzID0gbGUzMl9nZXRfYml0cyhzdGF0dXNfZGVzYy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdCAgIEhUVF9UWF9XQk1fQ09NUF9JTkZPMF9TVEFUVVMpO1xuLVx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1t3Ym1fc3RhdHVzXSsrO1xuK1x0aWYgKGxpa2VseShodHRfc3RhdHVzIFx1MDAzYyBNQVhfRldfVFhfU1RBVFVTKSlcbitcdFx0ZHAtXHUwMDNlZGV2aWNlX3N0YXRzLmZ3X3R4X3N0YXR1c1todHRfc3RhdHVzXSsrO1xuIFxuLVx0c3dpdGNoICh3Ym1fc3RhdHVzKSB7XG4rXHRzd2l0Y2ggKGh0dF9zdGF0dXMpIHtcbiBcdGNhc2UgSEFMX1dCTV9SRUxfSFRUX1RYX0NPTVBfU1RBVFVTX09LOlxuLVx0XHR0cy5hY2tlZCA9ICh3Ym1fc3RhdHVzID09IEhBTF9XQk1fUkVMX0hUVF9UWF9DT01QX1NUQVRVU19PSyk7XG4rXHRcdHRzLmFja2VkID0gdHJ1ZTtcbiBcdFx0dHMuYWNrX3Jzc2kgPSBsZTMyX2dldF9iaXRzKHN0YXR1c19kZXNjLVx1MDAzZWluZm8yLFxuIFx0XHRcdFx0XHQgICAgSFRUX1RYX1dCTV9DT01QX0lORk8yX0FDS19SU1NJKTtcbiBcbkBAIC02MDgsNyArNjExLDcgQEAgYXRoMTJrX2RwX3R4X3Byb2Nlc3NfaHR0X3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMmtfZHAgKmRwLCB2b2lkICpkZXNjLFxuIFx0XHQgKi9cbiBcdFx0YnJlYWs7XG4gXHRkZWZhdWx0OlxuLVx0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCJVbmtub3duIGh0dCB3Ym0gdHggc3RhdHVzICVkXFxuXCIsIHdibV9zdGF0dXMpO1xuK1x0XHRhdGgxMmtfd2FybihkcC1cdTAwM2VhYiwgXCJVbmtub3duIGh0dCB0eCBzdGF0dXMgJWRcXG5cIiwgaHR0X3N0YXR1cyk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIH1cbkBAIC05ODQsMTEgKzk4NywxNyBAQCB2b2lkIGF0aDEya193aWZpN19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDEya19kcCAqZHAsIGludCByaW5nX2lkKVxuIFx0XHQvKiBGaW5kIHRoZSBIQUxfV0JNX1JFTEVBU0VfSU5GTzBfUkVMX1NSQ19NT0RVTEUgdmFsdWUgKi9cbiBcdFx0YnVmX3JlbF9zb3VyY2UgPSBsZTMyX2dldF9iaXRzKHR4X3N0YXR1cy1cdTAwM2VpbmZvMCxcbiBcdFx0XHRcdFx0ICAgICAgIEhBTF9XQk1fUkVMRUFTRV9JTkZPMF9SRUxfU1JDX01PRFVMRSk7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcbitcdFx0aWYgKGxpa2VseShidWZfcmVsX3NvdXJjZSBcdTAwM2MgSEFMX1dCTV9SRUxfU1JDX01PRFVMRV9NQVgpKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50eF93Ym1fcmVsX3NvdXJjZVtidWZfcmVsX3NvdXJjZV0rKztcbitcdFx0ZWxzZVxuK1x0XHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdFx0cmVsX3N0YXR1cyA9IGxlMzJfZ2V0X2JpdHModHhfc3RhdHVzLVx1MDAzZWluZm8wLFxuIFx0XHRcdFx0XHQgICBIQUxfV0JNX0NPTVBMX1RYX0lORk8wX1RRTV9SRUxFQVNFX1JFQVNPTik7XG4tXHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSsrO1xuK1x0XHRpZiAobGlrZWx5KHJlbF9zdGF0dXMgXHUwMDNjIE1BWF9UUU1fUkVMRUFTRV9SRUFTT04pKVxuK1x0XHRcdGRwLVx1MDAzZWRldmljZV9zdGF0cy50cW1fcmVsX3JlYXNvbltyZWxfc3RhdHVzXSsrO1xuK1x0XHRlbHNlXG4rXHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuIFxuIFx0XHQvKiBSZWxlYXNlIGRlc2NyaXB0b3IgYXMgc29vbiBhcyBleHRyYWN0aW5nIG5lY2Vzc2FyeSBpbmZvXG4gXHRcdCAqIHRvIHJlZHVjZSBjb250ZW50aW9uXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9oYWxfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaGFsX3J4LmNcbmluZGV4IDQ5YzY5MzI4OTcwOTQuLjYwZTdhMzYwOTdmMTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2hhbF9yeC5jXG5AQCAtMzI5LDcgKzMyOSwxMCBAQCBpbnQgYXRoMTJrX3dpZmk3X2hhbF9kZXNjX3Jlb19wYXJzZV9lcnIoc3RydWN0IGF0aDEya19kcCAqZHAsXG4gXHRcdFx0XHQgICAgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfUFVTSF9SRUFTT04pO1xuIFx0ZXJyX2NvZGUgPSBsZTMyX2dldF9iaXRzKGRlc2MtXHUwMDNlaW5mbzAsXG4gXHRcdFx0XHQgSEFMX1JFT19ERVNUX1JJTkdfSU5GTzBfRVJST1JfQ09ERSk7XG4tXHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMucmVvX2Vycm9yW2Vycl9jb2RlXSsrO1xuK1x0aWYgKGxpa2VseShlcnJfY29kZSBcdTAwM2MgSEFMX1JFT19ERVNUX1JJTkdfRVJST1JfQ09ERV9NQVgpKVxuK1x0XHRkcC1cdTAwM2VkZXZpY2Vfc3RhdHMud2JtX2Vyci5yZW9fZXJyb3JbZXJyX2NvZGVdKys7XG4rXHRlbHNlXG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcbiBcdGlmIChwdXNoX3JlYXNvbiAhPSBIQUxfUkVPX0RFU1RfUklOR19QVVNIX1JFQVNPTl9FUlJfREVURUNURUQgXHUwMDI2XHUwMDI2XG4gXHQgICAgcHVzaF9yZWFzb24gIT0gSEFMX1JFT19ERVNUX1JJTkdfUFVTSF9SRUFTT05fUk9VVElOR19JTlNUUlVDVElPTikge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDY6MjM6MTEuNjI0OTA2OTU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY2MDQyMjE5NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEV2YWx1YXRpb246IGF0aDEyayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3ZlIGdvdCBhIHBhdGNoIHRvdWNoaW5nIHRoZSBgYXRoMTJrYCBXaS1GaSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBkZWJ1Z2ZzIGFuZCBzdGF0aXN0aWNzIHVwZGF0ZXMgd2l0aGluIHRoZSBkYXRhIHBhdGguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBpbnRyb2R1Y2UgYW55IG5ldyBmdXp6aW5nIHRhcmdldHMuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IGxvb2tzIGxpa2UgbW9zdCBvZiB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY29uY2VudHJhdGVkIGluOlxuXG4qICAgQWRkaW5nIGRlYnVnZnMgZW50cmllcyBmb3Igc3RhdHMgKGBhdGgxMmtfZGVidWdmc19kdW1wX2RldmljZV9kcF9zdGF0c2AsIGBhdGgxMmtfZGVidWdmc193cml0ZV9kZXZpY2VfZHBfc3RhdHNgKS5cbiogICBJbmNyZW1lbnRpbmcgc3RhdGlzdGljcyBjb3VudGVycyB3aXRoaW4gdmFyaW91cyBmdW5jdGlvbnMgKGBkcF9yeC5jYCwgYGRwX3R4LmNgLCBgaGFsX3J4LmNgKS5cbiogICBBZGRpbmcgYm91bmRzIGNoZWNrcyB0byBwcm90ZWN0IHRoZSBzdGF0cyBhcnJheXMgZnJvbSBvdXQtb2YtYm91bmRzIGFjY2Vzcy5cblxuVGhlIG1haW4gY29uY2VybiBpcyB3aGV0aGVyIHRoZXNlIGNoYW5nZXMgb3BlbiB1cCBhbnkgbmV3IGF0dGFjayBzdXJmYWNlcyBvciwgbW9yZSBwZXJ0aW5lbnRseSwgaWYgdGhleSBhcmUgcmVhY2hhYmxlIGluIGEgZnV6emVyLWZyaWVuZGx5IHdheS4gVGhlIGBhdGgxMmtgIGRyaXZlciBpcyBmb3IgUXVhbGNvbW0gV2ktRmkgNyBoYXJkd2FyZSwgZWl0aGVyIFBDSWUgb3IgQUhCLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nLCBcIkNhbiB0aGlzIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD9cIiBUaGUgYW5zd2VyIGlzIG5vOyB0aGlzIGRyaXZlciwgYXMgaXQncyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIsIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgaXMgbm90IGVtdWxhdGVkIGluIFFFTVUuXG5cbkNvbnNpZGVyaW5nIHRoZSBpbnN0cnVjdGlvbnMsIFwiQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSxcIiB0aGlzIGZpdHMgdGhlIGRlc2NyaXB0aW9uLiBUaG91Z2ggbm90IGEgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgc3BlY2lmaWNhbGx5LCB0aGUgYXRoMTJrIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZm9yIFBDSWUvQUhCIFdpLUZpIGhhcmR3YXJlLiBUaGUgY2hhbmdlcyB0aGVtc2VsdmVzIGFyZSBtb3N0bHkgc3RhdHMgYW5kIGRlYnVnZnMsIGFuZCB0aGV5IGRvbid0IGludHJvZHVjZSBzdWJzdGFudGlhbCBuZXcgY29kZSBwYXRocy4gVGhlcmUncyBubyBlbXVsYXRpb24gZm9yIGF0aDEyayBpbiBRRU1VLCBtZWFuaW5nIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHJ1biB0aGlzIGNvZGUgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuU28sIGFsdGhvdWdoIHRoZSBib3VuZHMgY2hlY2tzIGFyZSBmdW5jdGlvbmFsLCB0aGV5IGFyZSBwcmltYXJpbHkgZm9yIHRoZSBwcm90ZWN0aW9uIG9mIHN0YXRzIGFycmF5cyBhbmQgYXJlIG5vdCBpbnRyb2R1Y2luZyBuZXcgbG9naWMgb3IgdnVsbmVyYWJpbGl0aWVzLiBJIHdvbid0IGV2ZW4gYm90aGVyIGNoZWNraW5nIGZvciBzeXprYWxsZXIgY292ZXJhZ2UsIHNpbmNlIHRoYXQgd291bGQgYmUgYSB3YXN0ZSBvZiB0aW1lIGFuZCBpdCBpcyBoaWdobHkgdW5saWtlbHkgdG8gZXhpc3QuIEJhc2VkIG9uIHRoZSByZXF1aXJlbWVudHMgZm9yIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzLCBXb3J0aEZ1enppbmcgaXMgZGVmaW5pdGl2ZWx5IGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDkwLCJPdXRwdXRUb2tlbnMiOjEwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwNjoyMzoyOC4yMjkxMzE5NDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgV2ktRmkgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gYWRkaW5nIGRlYnVnZnMgZW50cmllcywgdXBkYXRpbmcgc3RhdGlzdGljcywgYW5kIGFkZGluZyBib3VuZHMgY2hlY2tzIGZvciBzdGF0aXN0aWNzIGFycmF5IGFjY2Vzc2VzLCB3aGljaCBkbyBub3QgYWx0ZXIgdGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCBpcyBtZWFuaW5nZnVsIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBXaS1GaSBkcml2ZXIsIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgbGltaXRlZCB0byBhZGRpbmcgZGVidWdmcyBlbnRyaWVzLCB1cGRhdGluZyBzdGF0aXN0aWNzLCBhbmQgYWRkaW5nIGJvdW5kcyBjaGVja3MgZm9yIHN0YXRpc3RpY3MgYXJyYXkgYWNjZXNzZXMsIHdoaWNoIGRvIG5vdCBhbHRlciB0aGUgY29yZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IGlzIG1lYW5pbmdmdWwgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwNjoyMzoyOC4yMjkxNzgyNjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq5xn6[1] Phase: Running StartedAt: 2026-08-19 06:23:39 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq5xn6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-19 06:23:39 +0000 UTC FinishedAt: 2026-08-19 06:23:45 +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,}