Name: series-workflowgtp9j Phase: Failed StartedAt: 2026-06-24 17:20:08 +0000 UTC FinishedAt: 2026-06-24 17:28:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgtp9j[0] Phase: Succeeded StartedAt: 2026-06-24 17:20:08 +0000 UTC FinishedAt: 2026-06-24 17:27:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgtp9j[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 17:20:08 +0000 UTC FinishedAt: 2026-06-24 17:27:58 +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+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWIyNWZlYzlhZGVjMDUwNzA3OThkM2U1MDEwMzc5MTJhNmFmMDdlNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjI2OjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG5pbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG5AQCAtNDA5LDcgJiM0Mzs0MDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0aW50IG5yX3ZjcHVzID0gcGFyYW1zLVx1MDAzZW5yX3ZjcHVzO1xuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBwYXJhbXMtXHUwMDNldmNwdV9tZW1vcnlfYnl0ZXMsIDEsXG4tXHRcdFx0XHQgcGFyYW1zLVx1MDAzZWJhY2tpbmdfc3JjLCAhb3ZlcmxhcF9tZW1vcnlfYWNjZXNzKTtcbiYjNDM7XHRcdFx0XHQgcGFyYW1zLVx1MDAzZWJhY2tpbmdfc3JjLCAhb3ZlcmxhcF9tZW1vcnlfYWNjZXNzLCAwKTtcbiBcbiBcdC8qXG4gXHQgKiBJZiBndWVzdF9wYWdlX3NpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGhvc3QmIzM5O3MgcGFnZSBzaXplLCB0aGVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcbmluZGV4IDMwMmM0OTIzZDA5MzBmLi45MjI0NmUyN2VmNzQ0NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXG5AQCAtMTYyLDcgJiM0MzsxNjIsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0aW50IGksIG51bV91ZmZkcyA9IDA7XG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwgMSxcbi1cdFx0XHRcdCBwLVx1MDAzZXNyY190eXBlLCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCBwLVx1MDAzZXNyY190eXBlLCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuIFxuIFx0ZGVtYW5kX3BhZ2luZ19zaXplID0gZ2V0X2JhY2tpbmdfc3JjX3BhZ2VzeihwLVx1MDAzZXNyY190eXBlKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuaW5kZXggZWY3NzlmYTkxODI3YzkuLjY1OWVmYTY3OWJjNzQ0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuQEAgLTEzLDYgJiM0MzsxMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjdGltZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjcHRocmVhZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0bWFwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2JhcnJpZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O2t2bV91dGlsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3V0aWwuaFwmIzM0O1xuQEAgLTI5LDkgJiM0MzszMCw0MyBAQCBzdGF0aWMgYm9vbCBydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmc7XG4gXG4gLyogSG9zdCB2YXJpYWJsZXMgKi9cbiBzdGF0aWMgdTY0IGRpcnR5X2xvZ19tYW51YWxfY2FwcztcbiYjNDM7c3RhdGljIHUzMiBkaXJ0eV9yaW5nX3NpemU7XG4gc3RhdGljIGJvb2wgaG9zdF9xdWl0O1xuIHN0YXRpYyBpbnQgaXRlcmF0aW9uO1xuIHN0YXRpYyBpbnQgdmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25bS1ZNX01BWF9WQ1BVU107XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbS1ZNX01BWF9WQ1BVU107XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBkaXJ0eV9yaW5nX2NvbGxlY3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKnJpbmdfaWR4LFxuJiM0MztcdFx0XHRcdHN0cnVjdCB0aW1lc3BlYyAqdHMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGltZXNwZWMgc3RhcnQ7XG4mIzQzO1x0c3RydWN0IGt2bV9kaXJ0eV9nZm4gKmRpcnR5X2dmbnMgPSB2Y3B1X21hcF9kaXJ0eV9yaW5nKHZjcHUpO1xuJiM0MztcdHUzMiByZXQsIGlkeCA9ICpyaW5nX2lkeDtcbiYjNDM7XHR1MzIgcmluZ19zaXplID0gdmNwdS1cdTAwM2V2bS1cdTAwM2VkaXJ0eV9yaW5nX3NpemU7XG4mIzQzO1xuJiM0MztcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICh0cnVlKSB7XG4mIzQzO1x0XHRzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqY3VyO1xuJiM0MztcbiYjNDM7XHRcdGN1ciA9IFx1MDAyNmRpcnR5X2dmbnNbaWR4ICUgcmluZ19zaXplXTtcbiYjNDM7XHRcdGlmIChzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmN1ci1cdTAwM2VmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZjdXItXHUwMDNlZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7XG4mIzQzO1x0XHRpZHgmIzQzOyYjNDM7O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWR4IC09ICpyaW5nX2lkeDtcbiYjNDM7XHQqcmluZ19pZHggJiM0Mzs9IGlkeDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0ga3ZtX3ZtX3Jlc2V0X2RpcnR5X3JpbmcodmNwdS1cdTAwM2V2bSk7XG4mIzQzO1xuJiM0MztcdFRFU1RfQVNTRVJUKHJldCA9PSBpZHgsIFwmIzM0O1Jlc2V0IGRpcnR5IHBhZ2VzICgldSkgbWlzbWF0Y2ggXCYjMzQ7XG4mIzQzO1x0XHQgICAgXCYjMzQ7d2l0aCBjb2xsZWN0ZWQgKCV1KVwmIzM0OywgcmV0LCBpZHgpO1xuJiM0MztcbiYjNDM7XHQqdHMgPSB0aW1lc3BlY19hZGQoKnRzLCB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KSk7XG4mIzQzO31cbiBcbiBzdGF0aWMgdm9pZCB2Y3B1X3dvcmtlcihzdHJ1Y3QgbWVtc3RyZXNzX3ZjcHVfYXJncyAqdmNwdV9hcmdzKVxuIHtcbkBAIC00MywxOSAmIzQzOzc4LDM2IEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHNfZGlmZjtcbiBcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuIFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcbiYjNDM7XHRib29sIHVzZV9kaXJ0eV9yaW5nID0gISF2Y3B1LVx1MDAzZXZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcbiYjNDM7XHR1MzIgcmluZ19pZHggPSAwO1xuIFx0aW50IHJldDtcbiBcbiBcdHJ1biA9IHZjcHUtXHUwMDNlcnVuO1xuIFxuIFx0d2hpbGUgKCFSRUFEX09OQ0UoaG9zdF9xdWl0KSkge1xuIFx0XHRpbnQgY3VycmVudF9pdGVyYXRpb24gPSBSRUFEX09OQ0UoaXRlcmF0aW9uKTtcbiYjNDM7XHRcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4gXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0XHRkbyB7XG4mIzQzO1x0XHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XHRcdFx0aWYgKCF1c2VfZGlydHlfcmluZylcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdGRpcnR5X3JpbmdfY29sbGVjdCh2Y3B1LCBcdTAwMjZyaW5nX2lkeCwgXHUwMDI2Y29sbGVjdCk7XG4mIzQzO1x0XHR9IHdoaWxlIChyZXQgPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKTtcbiYjNDM7XG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbiBcbiYjNDM7XHRcdGlmICh1c2VfZGlydHlfcmluZykge1xuJiM0MztcdFx0XHR0c19kaWZmID0gdGltZXNwZWNfc3ViKHRzX2RpZmYsIGNvbGxlY3QpO1xuJiM0MztcdFx0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0VEVTVF9BU1NFUlQocmV0ID09IDAsIFwmIzM0O3ZjcHVfcnVuIGZhaWxlZDogJWRcJiMzNDssIHJldCk7XG4tXHRcdFRFU1RfQVNTRVJUKGdldF91Y2FsbCh2Y3B1LCBOVUxMKSA9PSBVQ0FMTF9TWU5DLFxuJiM0MztcdFx0VEVTVF9BU1NFUlQoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpID09IFVDQUxMX1NZTkMgfHxcbiYjNDM7XHRcdFx0ICAgICh1c2VfZGlydHlfcmluZyBcdTAwMjZcdTAwMjYgcnVuLVx1MDAzZWV4aXRfcmVhc29uID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCksXG4gXHRcdFx0ICAgIFwmIzM0O0ludmFsaWQgZ3Vlc3Qgc3luYyBzdGF0dXM6IGV4aXRfcmVhc29uPSVzXCYjMzQ7LFxuIFx0XHRcdCAgICBleGl0X3JlYXNvbl9zdHIocnVuLVx1MDAzZWV4aXRfcmVhc29uKSk7XG4gXG5AQCAtMTE5LDcgJiM0MzsxNzEsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXG4gXHRcdFx0XHQgcC1cdTAwM2VzbG90cywgcC1cdTAwM2ViYWNraW5nX3NyYyxcbi1cdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXG4mIzQzO1x0XHRcdFx0IGRpcnR5X3Jpbmdfc2l6ZSk7XG4gXG4gXHRtZW1zdHJlc3Nfc2V0X3dyaXRlX3BlcmNlbnQodm0sIHAtXHUwMDNld3JpdGVfcGVyY2VudCk7XG4gXG5AQCAtMTM5LDggJiM0MzsxOTIsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGhvc3RfcXVpdCA9IGZhbHNlO1xuIFxuIFx0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnN0YXJ0KTtcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgaSYjNDM7JiM0MzspIHtcbiBcdFx0dmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25baV0gPSAtMTtcbiYjNDM7XHRcdHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4mIzQzO1x0fVxuIFxuIFx0LypcbiBcdCAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbFxuQEAgLTE5NSw2ICYjNDM7MjUwLDIxIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRcdHByX2luZm8oXCYjMzQ7SXRlcmF0aW9uICVkIGRpcnR5IG1lbW9yeSB0aW1lOiAlbGQuJS45bGRzXFxuXCYjMzQ7LFxuIFx0XHRcdGl0ZXJhdGlvbiwgdHNfZGlmZi50dl9zZWMsIHRzX2RpZmYudHZfbnNlYyk7XG4gXG4mIzQzO1x0XHRpZiAoZGlydHlfcmluZ19zaXplKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCB0aW1lc3BlYyBpdGVyYXRpb25fc3VtID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4mIzQzO1xuJiM0MztcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdFx0aXRlcmF0aW9uX3N1bSA9IHRpbWVzcGVjX2FkZChpdGVyYXRpb25fc3VtLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pO1xuJiM0MztcbiYjNDM7XHRcdFx0cHJfaW5mbyhcJiMzNDtJdGVyYXRpb24gJWQgY2xlYXIgZGlydHkgcmluZyB0aW1lOiAlbGQuJS45bGRzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdGl0ZXJhdGlvbiwgaXRlcmF0aW9uX3N1bS50dl9zZWMsIGl0ZXJhdGlvbl9zdW0udHZfbnNlYyk7XG4mIzQzO1xuJiM0MztcdFx0XHRjbGVhcl9kaXJ0eV9sb2dfdG90YWwgPSB0aW1lc3BlY19hZGQoY2xlYXJfZGlydHlfbG9nX3RvdGFsLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgaXRlcmF0aW9uX3N1bSk7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnN0YXJ0KTtcbiBcdFx0bWVtc3RyZXNzX2dldF9kaXJ0eV9sb2codm0sIGJpdG1hcHMsIHAtXHUwMDNlc2xvdHMpO1xuIFx0XHR0c19kaWZmID0gdGltZXNwZWNfZWxhcHNlZChzdGFydCk7XG5AQCAtMjM4LDEyICYjNDM7MzA4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRob3N0X3F1aXQgPSB0cnVlO1xuIFx0bWVtc3RyZXNzX2pvaW5fdmNwdV90aHJlYWRzKG5yX3ZjcHVzKTtcbiBcbi1cdGF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuLVx0cHJfaW5mbyhcJiMzNDtHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwmIzM0Oyxcbi1cdFx0cC1cdTAwM2VpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcbi1cdFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XG4mIzQzO1x0aWYgKCFkaXJ0eV9yaW5nX3NpemUpIHtcbiYjNDM7XHRcdGF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuJiM0MztcdFx0cHJfaW5mbyhcJiMzNDtHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cC1cdTAwM2VpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcbiYjNDM7XHRcdFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XG4mIzQzO1x0fVxuIFxuLVx0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2Fwcykge1xuJiM0MztcdGlmIChkaXJ0eV9sb2dfbWFudWFsX2NhcHMgfHwgZGlydHlfcmluZ19zaXplKSB7XG4gXHRcdGF2ZyA9IHRpbWVzcGVjX2RpdihjbGVhcl9kaXJ0eV9sb2dfdG90YWwsIHAtXHUwMDNlaXRlcmF0aW9ucyk7XG4gXHRcdHByX2luZm8oXCYjMzQ7Q2xlYXIgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwmIzM0OyxcbiBcdFx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGNsZWFyX2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXG5AQCAtMjY0LDYgJiM0MzszMzYsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNoYXIgKm5hbWUpXG4gXHRwcmludGYoXCYjMzQ7IC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxcblwmIzM0Oyk7XG4gXHRwcmludGYoXCYjMzQ7IC1pOiBzcGVjaWZ5IGl0ZXJhdGlvbiBjb3VudHMgKGRlZmF1bHQ6ICVcJiMzNDtQUkl1NjRcJiMzNDspXFxuXCYjMzQ7LFxuIFx0ICAgICAgIFRFU1RfSE9TVF9MT09QX04pO1xuJiM0MztcdHByaW50ZihcJiMzNDsgLWQ6IHNwZWNpZnkgdGhlIHNpemUgb2YgZGlydHktcmluZyBmb3IgdHJhY2tpbmcgZGlydHkgcGFnZXMuXFxuXCYjMzQ7XG4mIzQzO1x0ICAgICAgIFwmIzM0OyAgICAgSWYgbm9uLXplcm8sIHdpbGwgY2F1c2UgZGlydHktcmluZyB0byBiZSB1c2VkIGluc3RlYWQgb2ZcXG5cJiMzNDtcbiYjNDM7XHQgICAgICAgXCYjMzQ7ICAgICBkaXJ0eS1iaXRtYXAuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uXCYjMzQ7KTtcbiBcdHByaW50ZihcJiMzNDsgLWc6IERvIG5vdCBlbmFibGUgS1ZNX0NBUF9NQU5VQUxfRElSVFlfTE9HX1BST1RFQ1QyLiBUaGlzXFxuXCYjMzQ7XG4gXHQgICAgICAgXCYjMzQ7ICAgICBtYWtlcyBLVk1fR0VUX0RJUlRZX0xPRyBjbGVhciB0aGUgZGlydHkgbG9nIChpLmUuXFxuXCYjMzQ7XG4gXHQgICAgICAgXCYjMzQ7ICAgICBLVk1fRElSVFlfTE9HX01BTlVBTF9QUk9URUNUX0VOQUJMRSBpcyBub3QgZW5hYmxlZClcXG5cJiMzNDtcbkBAIC0zMjAsNyAmIzQzOzM5NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHRndWVzdF9tb2Rlc19hcHBlbmRfZGVmYXVsdCgpO1xuIFxuLVx0d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgXCYjMzQ7YWI6YzplZ2hpOm06bm9wOnI6czp2Ong6dzpcJiMzNDspKSAhPSAtMSkge1xuJiM0MztcdHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFwmIzM0O2FiOmM6ZDplZ2hpOm06bm9wOnI6czp2Ong6dzpcJiMzNDspKSAhPSAtMSkge1xuIFx0XHRzd2l0Y2ggKG9wdCkge1xuIFx0XHRjYXNlICYjMzk7YSYjMzk7OlxuIFx0XHRcdHAucmFuZG9tX2FjY2VzcyA9IHRydWU7XG5AQCAtMzMxLDYgJiM0Mzs0MDYsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0Y2FzZSAmIzM5O2MmIzM5OzpcbiBcdFx0XHRwY3B1X2xpc3QgPSBvcHRhcmc7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlICYjMzk7ZCYjMzk7OlxuJiM0MztcdFx0XHRkaXJ0eV9yaW5nX3NpemUgPSBwYXJzZV9zaXplKG9wdGFyZyk7XG4mIzQzO1x0XHRcdGRpcnR5X3Jpbmdfc2l6ZSAqPSBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pO1xuJiM0MztcdFx0XHRkaXJ0eV9sb2dfbWFudWFsX2NhcHMgPSAwO1xuJiM0MztcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSAmIzM5O2UmIzM5OzpcbiBcdFx0XHQvKiAmIzM5O2UmIzM5OyBpcyBmb3IgZXZpbC4gKi9cbiBcdFx0XHRydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcbmluZGV4IDBkMWQ2MjMwY2MwNTFiLi5lMTdmMzQ0OTc4YWY2NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxuQEAgLTU4LDcgJiM0Mzs1OCw4IEBAIGV4dGVybiBzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgbWVtc3RyZXNzX2FyZ3M7XG4gc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLFxuIFx0XHRcdFx0ICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsXG4gXHRcdFx0XHQgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLFxuLVx0XHRcdFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbiYjNDM7XHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXG4mIzQzO1x0XHRcdFx0ICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSk7XG4gdm9pZCBtZW1zdHJlc3NfZGVzdHJveV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSk7XG4gXG4gdm9pZCBtZW1zdHJlc3Nfc2V0X3dyaXRlX3BlcmNlbnQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB3cml0ZV9wZXJjZW50KTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbmluZGV4IDE5NWYzZmRhZTFlMzk2Li4yMzdmMGNlMGFlNjAwNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXG5AQCAtMTY3LDEwICYjNDM7MTY3LDIwIEBAIHVuc2lnbmVkIGludCBrdm1fY2hlY2tfY2FwKGxvbmcgY2FwKVxuIFxuIHZvaWQgdm1fZW5hYmxlX2RpcnR5X3Jpbmcoc3RydWN0IGt2bV92bSAqdm0sIHUzMiByaW5nX3NpemUpXG4ge1xuLVx0aWYgKHZtX2NoZWNrX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMKSlcbi1cdFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMLCByaW5nX3NpemUpO1xuLVx0ZWxzZVxuLVx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HLCByaW5nX3NpemUpO1xuJiM0MztcdGxvbmcgY2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMO1xuJiM0MztcdGludCBtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFtYXhfc2l6ZSkge1xuJiM0MztcdFx0Y2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklORztcbiYjNDM7XHRcdG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0VEVTVF9BU1NFUlQocmluZ19zaXplIFx1MDAzYz0gbWF4X3NpemUgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIocmluZ19zaXplKSxcbiYjNDM7XHRcdCAgICBcJiMzNDtJbnZhbGlkIGRpcnR5LXJpbmcgc2l6ZTogU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvIFwmIzM0O1xuJiM0MztcdFx0ICAgIFwmIzM0O3NtYWxsZXIgdGhhbiAlZCBlbnRyaWVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgIG1heF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKSk7XG4mIzQzO1xuJiM0MztcdHZtX2VuYWJsZV9jYXAodm0sIGNhcCwgcmluZ19zaXplKTtcbiBcdHZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZSA9IHJpbmdfc2l6ZTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNcbmluZGV4IDZkY2QxNTkxMGEwNjA4Li5jOWY4NTUzM2ZmZmZkYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNcbkBAIC0xMjEsMTAgJiM0MzsxMjEsMzUgQEAgdm9pZCBtZW1zdHJlc3Nfc2V0dXBfdmNwdXMoc3RydWN0IGt2bV92bSAqdm0sIGludCBucl92Y3B1cyxcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoc3RydWN0IHZtX3NoYXBlIHNoYXBlLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHUzMiBucl92Y3B1cyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICB1NjQgZXh0cmFfbWVtX3BhZ2VzLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHZvaWQgKmd1ZXN0X2NvZGUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgc3RydWN0IGt2bV92Y3B1ICp2Y3B1c1tdLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9BU1NFUlQoIW5yX3ZjcHVzIHx8IHZjcHVzLCBcJiMzNDtNdXN0IHByb3ZpZGUgdkNQVSBhcnJheVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHZtID0gX192bV9jcmVhdGUoc2hhcGUsIG5yX3ZjcHVzLCBleHRyYV9tZW1fcGFnZXMpO1xuJiM0MztcbiYjNDM7XHRpZiAoZGlydHlfcmluZ19zaXplKVxuJiM0MztcdFx0dm1fZW5hYmxlX2RpcnR5X3Jpbmcodm0sIGRpcnR5X3Jpbmdfc2l6ZSk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyAmIzQzOyYjNDM7aSlcbiYjNDM7XHRcdHZjcHVzW2ldID0gdm1fdmNwdV9hZGQodm0sIGksIGd1ZXN0X2NvZGUpO1xuJiM0MztcbiYjNDM7XHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XG4mIzQzO1x0cmV0dXJuIHZtO1xuJiM0Mzt9XG4mIzQzO1xuIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdFx0XHRcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxuIFx0XHRcdFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcbi1cdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcylcbiYjNDM7XHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXG4mIzQzO1x0XHRcdFx0ICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSlcbiB7XG4gXHRzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgKmFyZ3MgPSBcdTAwMjZtZW1zdHJlc3NfYXJncztcbiBcdHN0cnVjdCBrdm1fdm0gKnZtO1xuQEAgLTE2Nyw5ICYjNDM7MTkyLDEwIEBAIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdCAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0JiMzOTtzIGEgYmVuaWduIHNpZGVcbiBcdCAqIGVmZmVjdCBhcyBLVk0gYWxsb3dzIGFsaWFzaW5nIEhWQXMgaW4gbWVzbG90cy5cbiBcdCAqL1xuLVx0dm0gPSBfX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKFZNX1NIQVBFKG1vZGUpLCBucl92Y3B1cyxcbi1cdFx0XHRcdCAgICBzbG90MF9wYWdlcyAmIzQzOyBndWVzdF9udW1fcGFnZXMsXG4tXHRcdFx0XHQgICAgbWVtc3RyZXNzX2d1ZXN0X2NvZGUsIHZjcHVzKTtcbiYjNDM7XHR2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLFxuJiM0MztcdFx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyxcbiYjNDM7XHRcdFx0XHRcdCAgICBkaXJ0eV9yaW5nX3NpemUpO1xuIFxuIFx0YXJncy1cdTAwM2V2bSA9IHZtO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcbmluZGV4IDljNzU3OGEwOThjM2UxLi4zYTFiZTliNzVlMDFkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xuQEAgLTkwLDcgJiM0Mzs5MCw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwgMSxcbiBcdFx0XHRcdCBWTV9NRU1fU1JDX0FOT05ZTU9VUyxcbi1cdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuICNpZmRlZiBfX3g4Nl82NF9fXG4gXHRpZiAocC1cdTAwM2VkaXNhYmxlX3Nsb3RfemFwX3F1aXJrKVxuIFx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJU0FCTEVfUVVJUktTMiwgS1ZNX1g4Nl9RVUlSS19TTE9UX1pBUF9BTEwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xuaW5kZXggMzg4YmE0MTAxZjk3MzYuLjY2MWU5YWJmYjQzOTVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcbkBAIC0xMDEsNyAmIzQzOzEwMSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICp1bnVzZWQpXG4gXHRzdHJ1Y3Qga3ZtX3BhZ2Vfc3RhdHMgc3RhdHNfcmVwb3B1bGF0ZWQ7XG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgVkNQVVMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSxcbi1cdFx0XHRcdCBTTE9UUywgYmFja2luZ19zcmMsIGZhbHNlKTtcbiYjNDM7XHRcdFx0XHQgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSwgMCk7XG4gXG4gXHRndWVzdF9udW1fcGFnZXMgPSAoVkNQVVMgKiBndWVzdF9wZXJjcHVfbWVtX3NpemUpIFx1MDAzZVx1MDAzZSB2bS1cdTAwM2VwYWdlX3NoaWZ0O1xuIFx0Z3Vlc3RfbnVtX3BhZ2VzID0gdm1fYWRqdXN0X251bV9ndWVzdF9wYWdlcyhtb2RlLCBndWVzdF9udW1fcGFnZXMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YjI1ZmVjOWFkZWMwNTA3MDc5OGQzZTUwMTAzNzkxMmE2YWYwN2U2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMTc6MjY6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYwppbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYwpAQCAtNDA5LDcgJiM0Mzs0MDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWludCBucl92Y3B1cyA9IHBhcmFtcy0mZ3Q7bnJfdmNwdXM7CiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy0mZ3Q7dmNwdV9tZW1vcnlfYnl0ZXMsIDEsCi0JCQkJIHBhcmFtcy0mZ3Q7YmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpOwomIzQzOwkJCQkgcGFyYW1zLSZndDtiYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2VzcywgMCk7CiAKIAkvKgogCSAqIElmIGd1ZXN0X3BhZ2Vfc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgaG9zdCYjMzk7cyBwYWdlIHNpemUsIHRoZQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jCmluZGV4IDMwMmM0OTIzZDA5MzBmLi45MjI0NmUyN2VmNzQ0NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuYwpAQCAtMTYyLDcgJiM0MzsxNjIsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWludCBpLCBudW1fdWZmZHMgPSAwOwogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsCi0JCQkJIHAtJmd0O3NyY190eXBlLCBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3NyY190eXBlLCBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTsKIAogCWRlbWFuZF9wYWdpbmdfc2l6ZSA9IGdldF9iYWNraW5nX3NyY19wYWdlc3oocC0mZ3Q7c3JjX3R5cGUpOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYwppbmRleCBlZjc3OWZhOTE4MjdjOS4uNjU5ZWZhNjc5YmM3NDQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYwpAQCAtMTMsNiAmIzQzOzEzLDcgQEAKICNpbmNsdWRlICZsdDt0aW1lLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG1hcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vYmFycmllci5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X3V0aWwuaCYjMzQ7CkBAIC0yOSw5ICYjNDM7MzAsNDMgQEAgc3RhdGljIGJvb2wgcnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nOwogCiAvKiBIb3N0IHZhcmlhYmxlcyAqLwogc3RhdGljIHU2NCBkaXJ0eV9sb2dfbWFudWFsX2NhcHM7CiYjNDM7c3RhdGljIHUzMiBkaXJ0eV9yaW5nX3NpemU7CiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7CiBzdGF0aWMgaW50IGl0ZXJhdGlvbjsKIHN0YXRpYyBpbnQgdmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25bS1ZNX01BWF9WQ1BVU107CiYjNDM7c3RhdGljIHN0cnVjdCB0aW1lc3BlYyB2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtLVk1fTUFYX1ZDUFVTXTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkaXJ0eV9yaW5nX2NvbGxlY3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKnJpbmdfaWR4LAomIzQzOwkJCQlzdHJ1Y3QgdGltZXNwZWMgKnRzKQomIzQzO3sKJiM0MzsJc3RydWN0IHRpbWVzcGVjIHN0YXJ0OwomIzQzOwlzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqZGlydHlfZ2ZucyA9IHZjcHVfbWFwX2RpcnR5X3JpbmcodmNwdSk7CiYjNDM7CXUzMiByZXQsIGlkeCA9ICpyaW5nX2lkeDsKJiM0MzsJdTMyIHJpbmdfc2l6ZSA9IHZjcHUtJmd0O3ZtLSZndDtkaXJ0eV9yaW5nX3NpemU7CiYjNDM7CiYjNDM7CWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3N0YXJ0KTsKJiM0MzsKJiM0MzsJd2hpbGUgKHRydWUpIHsKJiM0MzsJCXN0cnVjdCBrdm1fZGlydHlfZ2ZuICpjdXI7CiYjNDM7CiYjNDM7CQljdXIgPSAmYW1wO2RpcnR5X2dmbnNbaWR4ICUgcmluZ19zaXplXTsKJiM0MzsJCWlmIChzbXBfbG9hZF9hY3F1aXJlKCZhbXA7Y3VyLSZndDtmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJc21wX3N0b3JlX3JlbGVhc2UoJmFtcDtjdXItJmd0O2ZsYWdzLCBLVk1fRElSVFlfR0ZOX0ZfUkVTRVQpOwomIzQzOwkJaWR4JiM0MzsmIzQzOzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZHggLT0gKnJpbmdfaWR4OwomIzQzOwkqcmluZ19pZHggJiM0Mzs9IGlkeDsKJiM0MzsKJiM0MzsJcmV0ID0ga3ZtX3ZtX3Jlc2V0X2RpcnR5X3JpbmcodmNwdS0mZ3Q7dm0pOwomIzQzOwomIzQzOwlURVNUX0FTU0VSVChyZXQgPT0gaWR4LCAmIzM0O1Jlc2V0IGRpcnR5IHBhZ2VzICgldSkgbWlzbWF0Y2ggJiMzNDsKJiM0MzsJCSAgICAmIzM0O3dpdGggY29sbGVjdGVkICgldSkmIzM0OywgcmV0LCBpZHgpOwomIzQzOwomIzQzOwkqdHMgPSB0aW1lc3BlY19hZGQoKnRzLCB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KSk7CiYjNDM7fQogCiBzdGF0aWMgdm9pZCB2Y3B1X3dvcmtlcihzdHJ1Y3QgbWVtc3RyZXNzX3ZjcHVfYXJncyAqdmNwdV9hcmdzKQogewpAQCAtNDMsMTkgJiM0Mzs3OCwzNiBAQCBzdGF0aWMgdm9pZCB2Y3B1X3dvcmtlcihzdHJ1Y3QgbWVtc3RyZXNzX3ZjcHVfYXJncyAqdmNwdV9hcmdzKQogCXN0cnVjdCB0aW1lc3BlYyB0c19kaWZmOwogCXN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9OwogCXN0cnVjdCB0aW1lc3BlYyBhdmc7CiYjNDM7CWJvb2wgdXNlX2RpcnR5X3JpbmcgPSAhIXZjcHUtJmd0O3ZtLSZndDtkaXJ0eV9yaW5nX3NpemU7CiYjNDM7CXUzMiByaW5nX2lkeCA9IDA7CiAJaW50IHJldDsKIAogCXJ1biA9IHZjcHUtJmd0O3J1bjsKIAogCXdoaWxlICghUkVBRF9PTkNFKGhvc3RfcXVpdCkpIHsKIAkJaW50IGN1cnJlbnRfaXRlcmF0aW9uID0gUkVBRF9PTkNFKGl0ZXJhdGlvbik7CiYjNDM7CQlzdHJ1Y3QgdGltZXNwZWMgY29sbGVjdCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9OwogCiAJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3N0YXJ0KTsKLQkJcmV0ID0gX3ZjcHVfcnVuKHZjcHUpOwomIzQzOwomIzQzOwkJZG8gewomIzQzOwkJCXJldCA9IF92Y3B1X3J1bih2Y3B1KTsKJiM0MzsJCQlpZiAoIXVzZV9kaXJ0eV9yaW5nKQomIzQzOwkJCQlicmVhazsKJiM0MzsKJiM0MzsJCQlkaXJ0eV9yaW5nX2NvbGxlY3QodmNwdSwgJmFtcDtyaW5nX2lkeCwgJmFtcDtjb2xsZWN0KTsKJiM0MzsJCX0gd2hpbGUgKHJldCA9PSBLVk1fRVhJVF9ESVJUWV9SSU5HX0ZVTEwpOwomIzQzOwogCQl0c19kaWZmID0gdGltZXNwZWNfZWxhcHNlZChzdGFydCk7CiAKJiM0MzsJCWlmICh1c2VfZGlydHlfcmluZykgewomIzQzOwkJCXRzX2RpZmYgPSB0aW1lc3BlY19zdWIodHNfZGlmZiwgY29sbGVjdCk7CiYjNDM7CQkJdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbdmNwdV9pZHhdID0gY29sbGVjdDsKJiM0MzsJCX0KJiM0MzsKIAkJVEVTVF9BU1NFUlQocmV0ID09IDAsICYjMzQ7dmNwdV9ydW4gZmFpbGVkOiAlZCYjMzQ7LCByZXQpOwotCQlURVNUX0FTU0VSVChnZXRfdWNhbGwodmNwdSwgTlVMTCkgPT0gVUNBTExfU1lOQywKJiM0MzsJCVRFU1RfQVNTRVJUKGdldF91Y2FsbCh2Y3B1LCBOVUxMKSA9PSBVQ0FMTF9TWU5DIHx8CiYjNDM7CQkJICAgICh1c2VfZGlydHlfcmluZyAmYW1wOyZhbXA7IHJ1bi0mZ3Q7ZXhpdF9yZWFzb24gPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKSwKIAkJCSAgICAmIzM0O0ludmFsaWQgZ3Vlc3Qgc3luYyBzdGF0dXM6IGV4aXRfcmVhc29uPSVzJiMzNDssCiAJCQkgICAgZXhpdF9yZWFzb25fc3RyKHJ1bi0mZ3Q7ZXhpdF9yZWFzb24pKTsKIApAQCAtMTE5LDcgJiM0MzsxNzEsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsCiAJCQkJIHAtJmd0O3Nsb3RzLCBwLSZndDtiYWNraW5nX3NyYywKLQkJCQkgcC0mZ3Q7cGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7CiYjNDM7CQkJCSBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLAomIzQzOwkJCQkgZGlydHlfcmluZ19zaXplKTsKIAogCW1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudCh2bSwgcC0mZ3Q7d3JpdGVfcGVyY2VudCk7CiAKQEAgLTEzOSw4ICYjNDM7MTkyLDEwIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpCiAJaG9zdF9xdWl0ID0gZmFsc2U7CiAKIAljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDtzdGFydCk7Ci0JZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyBpJiM0MzsmIzQzOykKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyBpJiM0MzsmIzQzOykgewogCQl2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltpXSA9IC0xOwomIzQzOwkJdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTsKJiM0MzsJfQogCiAJLyoKIAkgKiBVc2UgMTAwJSB3cml0ZXMgZHVyaW5nIHRoZSBwb3B1bGF0aW9uIHBoYXNlIHRvIGVuc3VyZSBhbGwKQEAgLTE5NSw2ICYjNDM7MjUwLDIxIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpCiAJCXByX2luZm8oJiMzNDtJdGVyYXRpb24gJWQgZGlydHkgbWVtb3J5IHRpbWU6ICVsZC4lLjlsZHNcbiYjMzQ7LAogCQkJaXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTsKIAomIzQzOwkJaWYgKGRpcnR5X3Jpbmdfc2l6ZSkgewomIzQzOwkJCXN0cnVjdCB0aW1lc3BlYyBpdGVyYXRpb25fc3VtID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07CiYjNDM7CiYjNDM7CQkJZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyBpJiM0MzsmIzQzOykKJiM0MzsJCQkJaXRlcmF0aW9uX3N1bSA9IHRpbWVzcGVjX2FkZChpdGVyYXRpb25fc3VtLAomIzQzOwkJCQkJCQkgICAgIHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldKTsKJiM0MzsKJiM0MzsJCQlwcl9pbmZvKCYjMzQ7SXRlcmF0aW9uICVkIGNsZWFyIGRpcnR5IHJpbmcgdGltZTogJWxkLiUuOWxkc1xuJiMzNDssCiYjNDM7CQkJCWl0ZXJhdGlvbiwgaXRlcmF0aW9uX3N1bS50dl9zZWMsIGl0ZXJhdGlvbl9zdW0udHZfbnNlYyk7CiYjNDM7CiYjNDM7CQkJY2xlYXJfZGlydHlfbG9nX3RvdGFsID0gdGltZXNwZWNfYWRkKGNsZWFyX2RpcnR5X2xvZ190b3RhbCwKJiM0MzsJCQkJCQkJICAgICBpdGVyYXRpb25fc3VtKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKIAkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7c3RhcnQpOwogCQltZW1zdHJlc3NfZ2V0X2RpcnR5X2xvZyh2bSwgYml0bWFwcywgcC0mZ3Q7c2xvdHMpOwogCQl0c19kaWZmID0gdGltZXNwZWNfZWxhcHNlZChzdGFydCk7CkBAIC0yMzgsMTIgJiM0MzszMDgsMTQgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZykKIAlob3N0X3F1aXQgPSB0cnVlOwogCW1lbXN0cmVzc19qb2luX3ZjcHVfdGhyZWFkcyhucl92Y3B1cyk7CiAKLQlhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC0mZ3Q7aXRlcmF0aW9ucyk7Ci0JcHJfaW5mbygmIzM0O0dldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXG4mIzM0OywKLQkJcC0mZ3Q7aXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsCi0JCWdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpOwomIzQzOwlpZiAoIWRpcnR5X3Jpbmdfc2l6ZSkgewomIzQzOwkJYXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtJmd0O2l0ZXJhdGlvbnMpOwomIzQzOwkJcHJfaW5mbygmIzM0O0dldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXG4mIzM0OywKJiM0MzsJCQlwLSZndDtpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYywKJiM0MzsJCQlnZXRfZGlydHlfbG9nX3RvdGFsLnR2X25zZWMsIGF2Zy50dl9zZWMsIGF2Zy50dl9uc2VjKTsKJiM0MzsJfQogCi0JaWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcykgewomIzQzOwlpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzIHx8IGRpcnR5X3Jpbmdfc2l6ZSkgewogCQlhdmcgPSB0aW1lc3BlY19kaXYoY2xlYXJfZGlydHlfbG9nX3RvdGFsLCBwLSZndDtpdGVyYXRpb25zKTsKIAkJcHJfaW5mbygmIzM0O0NsZWFyIGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcbiYjMzQ7LAogCQkJcC0mZ3Q7aXRlcmF0aW9ucywgY2xlYXJfZGlydHlfbG9nX3RvdGFsLnR2X3NlYywKQEAgLTI2NCw2ICYjNDM7MzM2LDkgQEAgc3RhdGljIHZvaWQgaGVscChjaGFyICpuYW1lKQogCXByaW50ZigmIzM0OyAtYTogYWNjZXNzIG1lbW9yeSByYW5kb21seSByYXRoZXIgdGhhbiBpbiBvcmRlci5cbiYjMzQ7KTsKIAlwcmludGYoJiMzNDsgLWk6IHNwZWNpZnkgaXRlcmF0aW9uIGNvdW50cyAoZGVmYXVsdDogJSYjMzQ7UFJJdTY0JiMzNDspXG4mIzM0OywKIAkgICAgICAgVEVTVF9IT1NUX0xPT1BfTik7CiYjNDM7CXByaW50ZigmIzM0OyAtZDogc3BlY2lmeSB0aGUgc2l6ZSBvZiBkaXJ0eS1yaW5nIGZvciB0cmFja2luZyBkaXJ0eSBwYWdlcy5cbiYjMzQ7CiYjNDM7CSAgICAgICAmIzM0OyAgICAgSWYgbm9uLXplcm8sIHdpbGwgY2F1c2UgZGlydHktcmluZyB0byBiZSB1c2VkIGluc3RlYWQgb2ZcbiYjMzQ7CiYjNDM7CSAgICAgICAmIzM0OyAgICAgZGlydHktYml0bWFwLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiYjMzQ7KTsKIAlwcmludGYoJiMzNDsgLWc6IERvIG5vdCBlbmFibGUgS1ZNX0NBUF9NQU5VQUxfRElSVFlfTE9HX1BST1RFQ1QyLiBUaGlzXG4mIzM0OwogCSAgICAgICAmIzM0OyAgICAgbWFrZXMgS1ZNX0dFVF9ESVJUWV9MT0cgY2xlYXIgdGhlIGRpcnR5IGxvZyAoaS5lLlxuJiMzNDsKIAkgICAgICAgJiMzNDsgICAgIEtWTV9ESVJUWV9MT0dfTUFOVUFMX1BST1RFQ1RfRU5BQkxFIGlzIG5vdCBlbmFibGVkKVxuJiMzNDsKQEAgLTMyMCw3ICYjNDM7Mzk1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KCk7CiAKLQl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAmIzM0O2FiOmM6ZWdoaTptOm5vcDpyOnM6djp4Onc6JiMzNDspKSAhPSAtMSkgewomIzQzOwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAmIzM0O2FiOmM6ZDplZ2hpOm06bm9wOnI6czp2Ong6dzomIzM0OykpICE9IC0xKSB7CiAJCXN3aXRjaCAob3B0KSB7CiAJCWNhc2UgJiMzOTthJiMzOTs6CiAJCQlwLnJhbmRvbV9hY2Nlc3MgPSB0cnVlOwpAQCAtMzMxLDYgJiM0Mzs0MDYsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJY2FzZSAmIzM5O2MmIzM5OzoKIAkJCXBjcHVfbGlzdCA9IG9wdGFyZzsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSAmIzM5O2QmIzM5OzoKJiM0MzsJCQlkaXJ0eV9yaW5nX3NpemUgPSBwYXJzZV9zaXplKG9wdGFyZyk7CiYjNDM7CQkJZGlydHlfcmluZ19zaXplICo9IHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7CiYjNDM7CQkJZGlydHlfbG9nX21hbnVhbF9jYXBzID0gMDsKJiM0MzsJCQlicmVhazsKIAkJY2FzZSAmIzM5O2UmIzM5OzoKIAkJCS8qICYjMzk7ZSYjMzk7IGlzIGZvciBldmlsLiAqLwogCQkJcnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmgKaW5kZXggMGQxZDYyMzBjYzA1MWIuLmUxN2YzNDQ5NzhhZjY2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaApAQCAtNTgsNyAmIzQzOzU4LDggQEAgZXh0ZXJuIHN0cnVjdCBtZW1zdHJlc3NfYXJncyBtZW1zdHJlc3NfYXJnczsKIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cywKIAkJCQkgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cywKIAkJCQkgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLAotCQkJCSAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7CiYjNDM7CQkJCSAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywKJiM0MzsJCQkJICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSk7CiB2b2lkIG1lbXN0cmVzc19kZXN0cm95X3ZtKHN0cnVjdCBrdm1fdm0gKnZtKTsKIAogdm9pZCBtZW1zdHJlc3Nfc2V0X3dyaXRlX3BlcmNlbnQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB3cml0ZV9wZXJjZW50KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYwppbmRleCAxOTVmM2ZkYWUxZTM5Ni4uMjM3ZjBjZTBhZTYwMDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMKQEAgLTE2NywxMCAmIzQzOzE2NywyMCBAQCB1bnNpZ25lZCBpbnQga3ZtX2NoZWNrX2NhcChsb25nIGNhcCkKIAogdm9pZCB2bV9lbmFibGVfZGlydHlfcmluZyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHJpbmdfc2l6ZSkKIHsKLQlpZiAodm1fY2hlY2tfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwpKQotCQl2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwsIHJpbmdfc2l6ZSk7Ci0JZWxzZQotCQl2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HLCByaW5nX3NpemUpOwomIzQzOwlsb25nIGNhcCA9IEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTDsKJiM0MzsJaW50IG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApOwomIzQzOwomIzQzOwlpZiAoIW1heF9zaXplKSB7CiYjNDM7CQljYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HOwomIzQzOwkJbWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJVEVTVF9BU1NFUlQocmluZ19zaXplICZsdDs9IG1heF9zaXplICZhbXA7JmFtcDsgaXNfcG93ZXJfb2ZfMihyaW5nX3NpemUpLAomIzQzOwkJICAgICYjMzQ7SW52YWxpZCBkaXJ0eS1yaW5nIHNpemU6IFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byAmIzM0OwomIzQzOwkJICAgICYjMzQ7c21hbGxlciB0aGFuICVkIGVudHJpZXNcbiYjMzQ7LAomIzQzOwkJICAgIG1heF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKSk7CiYjNDM7CiYjNDM7CXZtX2VuYWJsZV9jYXAodm0sIGNhcCwgcmluZ19zaXplKTsKIAl2bS0mZ3Q7ZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplOwogfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYwppbmRleCA2ZGNkMTU5MTBhMDYwOC4uYzlmODU1MzNmZmZmZGMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYwpAQCAtMTIxLDEwICYjNDM7MTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsCiAJfQogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUsCiYjNDM7CQkJCQkJICAgICB1MzIgbnJfdmNwdXMsCiYjNDM7CQkJCQkJICAgICB1NjQgZXh0cmFfbWVtX3BhZ2VzLAomIzQzOwkJCQkJCSAgICAgdm9pZCAqZ3Vlc3RfY29kZSwKJiM0MzsJCQkJCQkgICAgIHN0cnVjdCBrdm1fdmNwdSAqdmNwdXNbXSwKJiM0MzsJCQkJCQkgICAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKCFucl92Y3B1cyB8fCB2Y3B1cywgJiMzNDtNdXN0IHByb3ZpZGUgdkNQVSBhcnJheSYjMzQ7KTsKJiM0MzsKJiM0MzsJdm0gPSBfX3ZtX2NyZWF0ZShzaGFwZSwgbnJfdmNwdXMsIGV4dHJhX21lbV9wYWdlcyk7CiYjNDM7CiYjNDM7CWlmIChkaXJ0eV9yaW5nX3NpemUpCiYjNDM7CQl2bV9lbmFibGVfZGlydHlfcmluZyh2bSwgZGlydHlfcmluZ19zaXplKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyAmIzQzOyYjNDM7aSkKJiM0MzsJCXZjcHVzW2ldID0gdm1fdmNwdV9hZGQodm0sIGksIGd1ZXN0X2NvZGUpOwomIzQzOwomIzQzOwlrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7CiYjNDM7CXJldHVybiB2bTsKJiM0Mzt9CiYjNDM7CiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsCiAJCQkJICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsCiAJCQkJICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYywKLQkJCQkgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpCiYjNDM7CQkJCSAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywKJiM0MzsJCQkJICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSkKIHsKIAlzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgKmFyZ3MgPSAmYW1wO21lbXN0cmVzc19hcmdzOwogCXN0cnVjdCBrdm1fdm0gKnZtOwpAQCAtMTY3LDkgJiM0MzsxOTIsMTAgQEAgc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLAogCSAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0JiMzOTtzIGEgYmVuaWduIHNpZGUKIAkgKiBlZmZlY3QgYXMgS1ZNIGFsbG93cyBhbGlhc2luZyBIVkFzIGluIG1lc2xvdHMuCiAJICovCi0Jdm0gPSBfX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKFZNX1NIQVBFKG1vZGUpLCBucl92Y3B1cywKLQkJCQkgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLAotCQkJCSAgICBtZW1zdHJlc3NfZ3Vlc3RfY29kZSwgdmNwdXMpOwomIzQzOwl2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsCiYjNDM7CQkJCQkgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLAomIzQzOwkJCQkJICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cywKJiM0MzsJCQkJCSAgICBkaXJ0eV9yaW5nX3NpemUpOwogCiAJYXJncy0mZ3Q7dm0gPSB2bTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuYwppbmRleCA5Yzc1NzhhMDk4YzNlMS4uM2ExYmU5Yjc1ZTAxZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jCkBAIC05MCw3ICYjNDM7OTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsCiAJCQkJIFZNX01FTV9TUkNfQU5PTllNT1VTLAotCQkJCSBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3BhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApOwogI2lmZGVmIF9feDg2XzY0X18KIAlpZiAocC0mZ3Q7ZGlzYWJsZV9zbG90X3phcF9xdWlyaykKIAkJdm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVNBQkxFX1FVSVJLUzIsIEtWTV9YODZfUVVJUktfU0xPVF9aQVBfQUxMKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYwppbmRleCAzODhiYTQxMDFmOTczNi4uNjYxZTlhYmZiNDM5NWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmMKQEAgLTEwMSw3ICYjNDM7MTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZCkKIAlzdHJ1Y3Qga3ZtX3BhZ2Vfc3RhdHMgc3RhdHNfcmVwb3B1bGF0ZWQ7CiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgVkNQVVMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwKLQkJCQkgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSk7CiYjNDM7CQkJCSBTTE9UUywgYmFja2luZ19zcmMsIGZhbHNlLCAwKTsKIAogCWd1ZXN0X251bV9wYWdlcyA9IChWQ1BVUyAqIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSkgJmd0OyZndDsgdm0tJmd0O3BhZ2Vfc2hpZnQ7CiAJZ3Vlc3RfbnVtX3BhZ2VzID0gdm1fYWRqdXN0X251bV9ndWVzdF9wYWdlcyhtb2RlLCBndWVzdF9udW1fcGFnZXMpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTQwCgkJCQkJCQlvdXRwdXQ6IDY3CgkJCQkJCQl0aG91Z2h0czogNTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBLVk0gU2VsZnRlc3RzIFBhdGNoIFNlcmllcyoqCgpPa2F5LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgbW9kaWZ5aW5nIEtWTSBzZWxmdGVzdHMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8qYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGlzOyB0aGUgZGlmZiBpbmNsdWRlcyBjaGFuZ2VzIHRvOiBgYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jYCwgYGRlbWFuZF9wYWdpbmdfdGVzdC5jYCwgYGRpcnR5X2xvZ19wZXJmX3Rlc3QuY2AsIGBpbmNsdWRlL21lbXN0cmVzcy5oYCwgYGxpYi9rdm1fdXRpbC5jYCwgYGxpYi9tZW1zdHJlc3MuY2AsIGBtZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jYCwgYW5kIGB4ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY2AuIFllcywgaXQgYWxsIHNlZW1zIGlzb2xhdGVkIHRvIHRoYXQgZGlyZWN0b3J5LgoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBtYXJrIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyB0aGluZ3MgbGlrZSBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciBub24tZnVuY3Rpb25hbCBjb25zdGFudHMuIEl0IGV4cGxpY2l0bHkgZXhjbHVkZXMgbW9kaWZpY2F0aW9ucyB0byBjb2RlIHRoYXQgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkFoYSEgVGhlc2UgYXJlICpzZWxmdGVzdHMqLiBTZWxmdGVzdHMgYXJlIHVzZXJzcGFjZSBwcm9ncmFtcyBkZXNpZ25lZCB0byBleGVyY2lzZSBhbmQgdmFsaWRhdGUga2VybmVsIGZ1bmN0aW9uYWxpdHksIGJ1dCB0aGV5IGFyZSBub3QgdGhlbXNlbHZlcyBwYXJ0IG9mIHRoZSBrZXJuZWwgY29kZS4gSWYgdGhlIGtlcm5lbCBsb2dpYyBpc24mIzM5O3QgY2hhbmdlZCwgdGhlcmUmIzM5O3Mgbm8gbmVlZCB0byBmdXp6IHRoZSBrZXJuZWwgYmFzZWQgb24gY2hhbmdlcyB0byB0aGVzZSB0ZXN0cy4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoZSBrZXJuZWwgYmFzZWQgb24gdGhlc2UgY2hhbmdlcyBkb2VzbiYjMzk7dCBtYWtlIHNlbnNlLiBUaGUga2VybmVsJiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eSBoYXNuJiMzOTt0IGJlZW4gbW9kaWZpZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZpbGVzIGludm9sdmVkLiBOb3BlLCBpdCYjMzk7cyBleGNsdXNpdmVseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8uLi5gLgoKVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IFRoaXMgcGF0Y2ggc2VyaWVzIGlzIG1vZGlmeWluZyB1c2VyLXNwYWNlIEtWTSBzZWxmdGVzdHMgb25seS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLiBUaHVzLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgY2FuIGJlIGVtcHR5IGFycmF5cyBhcyB3ZWxsLiBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGVzZSByZXN1bHRzIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLywgd2hpY2ggaXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjI2OjEzLjY1NjE4NjA5OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NjE5NDEyNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzoyNjoxMy42NTYxOTE3NDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDcxOTcxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDliMjVmZWM5YWRlYzA1MDcwNzk4ZDNlNTAxMDM3OTEyYTZhZjA3ZTZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTc6MjY6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcXG5pbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcXG5AQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXFxuIFxcdGludCBucl92Y3B1cyA9IHBhcmFtcy1cXHUwMDNlbnJfdmNwdXM7XFxuIFxcbiBcXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy1cXHUwMDNldmNwdV9tZW1vcnlfYnl0ZXMsIDEsXFxuLVxcdFxcdFxcdFxcdCBwYXJhbXMtXFx1MDAzZWJhY2tpbmdfc3JjLCAhb3ZlcmxhcF9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHBhcmFtcy1cXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MsIDApO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogSWYgZ3Vlc3RfcGFnZV9zaXplIGlzIGxhcmdlciB0aGFuIHRoZSBob3N0J3MgcGFnZSBzaXplLCB0aGVcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXFxuaW5kZXggMzAyYzQ5MjNkMDkzMGYuLjkyMjQ2ZTI3ZWY3NDQ3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xcbkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFx0aW50IGksIG51bV91ZmZkcyA9IDA7XFxuIFxcbiBcXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwgMSxcXG4tXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXNyY190eXBlLCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXNyY190eXBlLCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTtcXG4gXFxuIFxcdGRlbWFuZF9wYWdpbmdfc2l6ZSA9IGdldF9iYWNraW5nX3NyY19wYWdlc3oocC1cXHUwMDNlc3JjX3R5cGUpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcXG5pbmRleCBlZjc3OWZhOTE4MjdjOS4uNjU5ZWZhNjc5YmM3NDQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcXG5AQCAtMTMsNiArMTMsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjdGltZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjcHRocmVhZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0bWFwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vYmFycmllci5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcImt2bV91dGlsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3V0aWwuaFxcXCJcXG5AQCAtMjksOSArMzAsNDMgQEAgc3RhdGljIGJvb2wgcnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nO1xcbiBcXG4gLyogSG9zdCB2YXJpYWJsZXMgKi9cXG4gc3RhdGljIHU2NCBkaXJ0eV9sb2dfbWFudWFsX2NhcHM7XFxuK3N0YXRpYyB1MzIgZGlydHlfcmluZ19zaXplO1xcbiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7XFxuIHN0YXRpYyBpbnQgaXRlcmF0aW9uO1xcbiBzdGF0aWMgaW50IHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW0tWTV9NQVhfVkNQVVNdO1xcbitzdGF0aWMgc3RydWN0IHRpbWVzcGVjIHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W0tWTV9NQVhfVkNQVVNdO1xcbitcXG4rc3RhdGljIHZvaWQgZGlydHlfcmluZ19jb2xsZWN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICpyaW5nX2lkeCxcXG4rXFx0XFx0XFx0XFx0c3RydWN0IHRpbWVzcGVjICp0cylcXG4re1xcbitcXHRzdHJ1Y3QgdGltZXNwZWMgc3RhcnQ7XFxuK1xcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpkaXJ0eV9nZm5zID0gdmNwdV9tYXBfZGlydHlfcmluZyh2Y3B1KTtcXG4rXFx0dTMyIHJldCwgaWR4ID0gKnJpbmdfaWR4O1xcbitcXHR1MzIgcmluZ19zaXplID0gdmNwdS1cXHUwMDNldm0tXFx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcXG4rXFxuK1xcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcXHUwMDI2c3RhcnQpO1xcbitcXG4rXFx0d2hpbGUgKHRydWUpIHtcXG4rXFx0XFx0c3RydWN0IGt2bV9kaXJ0eV9nZm4gKmN1cjtcXG4rXFxuK1xcdFxcdGN1ciA9IFxcdTAwMjZkaXJ0eV9nZm5zW2lkeCAlIHJpbmdfc2l6ZV07XFxuK1xcdFxcdGlmIChzbXBfbG9hZF9hY3F1aXJlKFxcdTAwMjZjdXItXFx1MDAzZWZsYWdzKSAhPSBLVk1fRElSVFlfR0ZOX0ZfRElSVFkpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNmN1ci1cXHUwMDNlZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7XFxuK1xcdFxcdGlkeCsrO1xcbitcXHR9XFxuK1xcbitcXHRpZHggLT0gKnJpbmdfaWR4O1xcbitcXHQqcmluZ19pZHggKz0gaWR4O1xcbitcXG4rXFx0cmV0ID0ga3ZtX3ZtX3Jlc2V0X2RpcnR5X3JpbmcodmNwdS1cXHUwMDNldm0pO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQocmV0ID09IGlkeCwgXFxcIlJlc2V0IGRpcnR5IHBhZ2VzICgldSkgbWlzbWF0Y2ggXFxcIlxcbitcXHRcXHQgICAgXFxcIndpdGggY29sbGVjdGVkICgldSlcXFwiLCByZXQsIGlkeCk7XFxuK1xcbitcXHQqdHMgPSB0aW1lc3BlY19hZGQoKnRzLCB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KSk7XFxuK31cXG4gXFxuIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXFxuIHtcXG5AQCAtNDMsMTkgKzc4LDM2IEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXFxuIFxcdHN0cnVjdCB0aW1lc3BlYyB0c19kaWZmO1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWMgdG90YWwgPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcXG4gXFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcXG4rXFx0Ym9vbCB1c2VfZGlydHlfcmluZyA9ICEhdmNwdS1cXHUwMDNldm0tXFx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcXG4rXFx0dTMyIHJpbmdfaWR4ID0gMDtcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdHJ1biA9IHZjcHUtXFx1MDAzZXJ1bjtcXG4gXFxuIFxcdHdoaWxlICghUkVBRF9PTkNFKGhvc3RfcXVpdCkpIHtcXG4gXFx0XFx0aW50IGN1cnJlbnRfaXRlcmF0aW9uID0gUkVBRF9PTkNFKGl0ZXJhdGlvbik7XFxuK1xcdFxcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XFxuIFxcbiBcXHRcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4tXFx0XFx0cmV0ID0gX3ZjcHVfcnVuKHZjcHUpO1xcbitcXG4rXFx0XFx0ZG8ge1xcbitcXHRcXHRcXHRyZXQgPSBfdmNwdV9ydW4odmNwdSk7XFxuK1xcdFxcdFxcdGlmICghdXNlX2RpcnR5X3JpbmcpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0XFx0ZGlydHlfcmluZ19jb2xsZWN0KHZjcHUsIFxcdTAwMjZyaW5nX2lkeCwgXFx1MDAyNmNvbGxlY3QpO1xcbitcXHRcXHR9IHdoaWxlIChyZXQgPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKTtcXG4rXFxuIFxcdFxcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcXG4gXFxuK1xcdFxcdGlmICh1c2VfZGlydHlfcmluZykge1xcbitcXHRcXHRcXHR0c19kaWZmID0gdGltZXNwZWNfc3ViKHRzX2RpZmYsIGNvbGxlY3QpO1xcbitcXHRcXHRcXHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRURVNUX0FTU0VSVChyZXQgPT0gMCwgXFxcInZjcHVfcnVuIGZhaWxlZDogJWRcXFwiLCByZXQpO1xcbi1cXHRcXHRURVNUX0FTU0VSVChnZXRfdWNhbGwodmNwdSwgTlVMTCkgPT0gVUNBTExfU1lOQyxcXG4rXFx0XFx0VEVTVF9BU1NFUlQoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpID09IFVDQUxMX1NZTkMgfHxcXG4rXFx0XFx0XFx0ICAgICh1c2VfZGlydHlfcmluZyBcXHUwMDI2XFx1MDAyNiBydW4tXFx1MDAzZWV4aXRfcmVhc29uID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCksXFxuIFxcdFxcdFxcdCAgICBcXFwiSW52YWxpZCBndWVzdCBzeW5jIHN0YXR1czogZXhpdF9yZWFzb249JXNcXFwiLFxcbiBcXHRcXHRcXHQgICAgZXhpdF9yZWFzb25fc3RyKHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24pKTtcXG4gXFxuQEAgLTExOSw3ICsxNzEsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXG4gXFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXFxuIFxcdFxcdFxcdFxcdCBwLVxcdTAwM2VzbG90cywgcC1cXHUwMDNlYmFja2luZ19zcmMsXFxuLVxcdFxcdFxcdFxcdCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXFxuK1xcdFxcdFxcdFxcdCBkaXJ0eV9yaW5nX3NpemUpO1xcbiBcXG4gXFx0bWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHZtLCBwLVxcdTAwM2V3cml0ZV9wZXJjZW50KTtcXG4gXFxuQEAgLTEzOSw4ICsxOTIsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFx0aG9zdF9xdWl0ID0gZmFsc2U7XFxuIFxcbiBcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3ZjcHVzOyBpKyspXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgaSsrKSB7XFxuIFxcdFxcdHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW2ldID0gLTE7XFxuK1xcdFxcdHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XFxuK1xcdH1cXG4gXFxuIFxcdC8qXFxuIFxcdCAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbFxcbkBAIC0xOTUsNiArMjUwLDIxIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXFxuIFxcdFxcdHByX2luZm8oXFxcIkl0ZXJhdGlvbiAlZCBkaXJ0eSBtZW1vcnkgdGltZTogJWxkLiUuOWxkc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0aXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTtcXG4gXFxuK1xcdFxcdGlmIChkaXJ0eV9yaW5nX3NpemUpIHtcXG4rXFx0XFx0XFx0c3RydWN0IHRpbWVzcGVjIGl0ZXJhdGlvbl9zdW0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcXG4rXFxuK1xcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgaSsrKVxcbitcXHRcXHRcXHRcXHRpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pO1xcbitcXG4rXFx0XFx0XFx0cHJfaW5mbyhcXFwiSXRlcmF0aW9uICVkIGNsZWFyIGRpcnR5IHJpbmcgdGltZTogJWxkLiUuOWxkc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0aXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTtcXG4rXFxuK1xcdFxcdFxcdGNsZWFyX2RpcnR5X2xvZ190b3RhbCA9IHRpbWVzcGVjX2FkZChjbGVhcl9kaXJ0eV9sb2dfdG90YWwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgaXRlcmF0aW9uX3N1bSk7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4gXFx0XFx0bWVtc3RyZXNzX2dldF9kaXJ0eV9sb2codm0sIGJpdG1hcHMsIHAtXFx1MDAzZXNsb3RzKTtcXG4gXFx0XFx0dHNfZGlmZiA9IHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpO1xcbkBAIC0yMzgsMTIgKzMwOCwxNCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXHRob3N0X3F1aXQgPSB0cnVlO1xcbiBcXHRtZW1zdHJlc3Nfam9pbl92Y3B1X3RocmVhZHMobnJfdmNwdXMpO1xcbiBcXG4tXFx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXFx1MDAzZWl0ZXJhdGlvbnMpO1xcbi1cXHRwcl9pbmZvKFxcXCJHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcXFxuXFxcIixcXG4tXFx0XFx0cC1cXHUwMDNlaXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXFxuLVxcdFxcdGdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpO1xcbitcXHRpZiAoIWRpcnR5X3Jpbmdfc2l6ZSkge1xcbitcXHRcXHRhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC1cXHUwMDNlaXRlcmF0aW9ucyk7XFxuK1xcdFxcdHByX2luZm8oXFxcIkdldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRwLVxcdTAwM2VpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcXG4rXFx0XFx0XFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XFxuK1xcdH1cXG4gXFxuLVxcdGlmIChkaXJ0eV9sb2dfbWFudWFsX2NhcHMpIHtcXG4rXFx0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcyB8fCBkaXJ0eV9yaW5nX3NpemUpIHtcXG4gXFx0XFx0YXZnID0gdGltZXNwZWNfZGl2KGNsZWFyX2RpcnR5X2xvZ190b3RhbCwgcC1cXHUwMDNlaXRlcmF0aW9ucyk7XFxuIFxcdFxcdHByX2luZm8oXFxcIkNsZWFyIGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcXFxcblxcXCIsXFxuIFxcdFxcdFxcdHAtXFx1MDAzZWl0ZXJhdGlvbnMsIGNsZWFyX2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXFxuQEAgLTI2NCw2ICszMzYsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNoYXIgKm5hbWUpXFxuIFxcdHByaW50ZihcXFwiIC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxcXFxuXFxcIik7XFxuIFxcdHByaW50ZihcXFwiIC1pOiBzcGVjaWZ5IGl0ZXJhdGlvbiBjb3VudHMgKGRlZmF1bHQ6ICVcXFwiUFJJdTY0XFxcIilcXFxcblxcXCIsXFxuIFxcdCAgICAgICBURVNUX0hPU1RfTE9PUF9OKTtcXG4rXFx0cHJpbnRmKFxcXCIgLWQ6IHNwZWNpZnkgdGhlIHNpemUgb2YgZGlydHktcmluZyBmb3IgdHJhY2tpbmcgZGlydHkgcGFnZXMuXFxcXG5cXFwiXFxuK1xcdCAgICAgICBcXFwiICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxcXFxuXFxcIlxcbitcXHQgICAgICAgXFxcIiAgICAgZGlydHktYml0bWFwLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLlxcXCIpO1xcbiBcXHRwcmludGYoXFxcIiAtZzogRG8gbm90IGVuYWJsZSBLVk1fQ0FQX01BTlVBTF9ESVJUWV9MT0dfUFJPVEVDVDIuIFRoaXNcXFxcblxcXCJcXG4gXFx0ICAgICAgIFxcXCIgICAgIG1ha2VzIEtWTV9HRVRfRElSVFlfTE9HIGNsZWFyIHRoZSBkaXJ0eSBsb2cgKGkuZS5cXFxcblxcXCJcXG4gXFx0ICAgICAgIFxcXCIgICAgIEtWTV9ESVJUWV9MT0dfTUFOVUFMX1BST1RFQ1RfRU5BQkxFIGlzIG5vdCBlbmFibGVkKVxcXFxuXFxcIlxcbkBAIC0zMjAsNyArMzk1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFxuIFxcdGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KCk7XFxuIFxcbi1cXHR3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCBcXFwiYWI6YzplZ2hpOm06bm9wOnI6czp2Ong6dzpcXFwiKSkgIT0gLTEpIHtcXG4rXFx0d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgXFxcImFiOmM6ZDplZ2hpOm06bm9wOnI6czp2Ong6dzpcXFwiKSkgIT0gLTEpIHtcXG4gXFx0XFx0c3dpdGNoIChvcHQpIHtcXG4gXFx0XFx0Y2FzZSAnYSc6XFxuIFxcdFxcdFxcdHAucmFuZG9tX2FjY2VzcyA9IHRydWU7XFxuQEAgLTMzMSw2ICs0MDYsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0Y2FzZSAnYyc6XFxuIFxcdFxcdFxcdHBjcHVfbGlzdCA9IG9wdGFyZztcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgJ2QnOlxcbitcXHRcXHRcXHRkaXJ0eV9yaW5nX3NpemUgPSBwYXJzZV9zaXplKG9wdGFyZyk7XFxuK1xcdFxcdFxcdGRpcnR5X3Jpbmdfc2l6ZSAqPSBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pO1xcbitcXHRcXHRcXHRkaXJ0eV9sb2dfbWFudWFsX2NhcHMgPSAwO1xcbitcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSAnZSc6XFxuIFxcdFxcdFxcdC8qICdlJyBpcyBmb3IgZXZpbC4gKi9cXG4gXFx0XFx0XFx0cnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxcbmluZGV4IDBkMWQ2MjMwY2MwNTFiLi5lMTdmMzQ0OTc4YWY2NiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXFxuQEAgLTU4LDcgKzU4LDggQEAgZXh0ZXJuIHN0cnVjdCBtZW1zdHJlc3NfYXJncyBtZW1zdHJlc3NfYXJncztcXG4gc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLFxcbiBcXHRcXHRcXHRcXHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcXG4gXFx0XFx0XFx0XFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcXG4tXFx0XFx0XFx0XFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLFxcbitcXHRcXHRcXHRcXHQgICB1MzIgZGlydHlfcmluZ19zaXplKTtcXG4gdm9pZCBtZW1zdHJlc3NfZGVzdHJveV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSk7XFxuIFxcbiB2b2lkIG1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHdyaXRlX3BlcmNlbnQpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG5pbmRleCAxOTVmM2ZkYWUxZTM5Ni4uMjM3ZjBjZTBhZTYwMDYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXFxuQEAgLTE2NywxMCArMTY3LDIwIEBAIHVuc2lnbmVkIGludCBrdm1fY2hlY2tfY2FwKGxvbmcgY2FwKVxcbiBcXG4gdm9pZCB2bV9lbmFibGVfZGlydHlfcmluZyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHJpbmdfc2l6ZSlcXG4ge1xcbi1cXHRpZiAodm1fY2hlY2tfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwpKVxcbi1cXHRcXHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwsIHJpbmdfc2l6ZSk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklORywgcmluZ19zaXplKTtcXG4rXFx0bG9uZyBjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw7XFxuK1xcdGludCBtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTtcXG4rXFxuK1xcdGlmICghbWF4X3NpemUpIHtcXG4rXFx0XFx0Y2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklORztcXG4rXFx0XFx0bWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7XFxuK1xcdH1cXG4rXFxuK1xcdFRFU1RfQVNTRVJUKHJpbmdfc2l6ZSBcXHUwMDNjPSBtYXhfc2l6ZSBcXHUwMDI2XFx1MDAyNiBpc19wb3dlcl9vZl8yKHJpbmdfc2l6ZSksXFxuK1xcdFxcdCAgICBcXFwiSW52YWxpZCBkaXJ0eS1yaW5nIHNpemU6IFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byBcXFwiXFxuK1xcdFxcdCAgICBcXFwic21hbGxlciB0aGFuICVkIGVudHJpZXNcXFxcblxcXCIsXFxuK1xcdFxcdCAgICBtYXhfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbikpO1xcbitcXG4rXFx0dm1fZW5hYmxlX2NhcCh2bSwgY2FwLCByaW5nX3NpemUpO1xcbiBcXHR2bS1cXHUwMDNlZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xcbmluZGV4IDZkY2QxNTkxMGEwNjA4Li5jOWY4NTUzM2ZmZmZkYyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xcbkBAIC0xMjEsMTAgKzEyMSwzNSBAQCB2b2lkIG1lbXN0cmVzc19zZXR1cF92Y3B1cyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgaW50IG5yX3ZjcHVzLFxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoc3RydWN0IHZtX3NoYXBlIHNoYXBlLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHUzMiBucl92Y3B1cyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICB1NjQgZXh0cmFfbWVtX3BhZ2VzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHZvaWQgKmd1ZXN0X2NvZGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGt2bV92Y3B1ICp2Y3B1c1tdLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV92bSAqdm07XFxuK1xcdGludCBpO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQoIW5yX3ZjcHVzIHx8IHZjcHVzLCBcXFwiTXVzdCBwcm92aWRlIHZDUFUgYXJyYXlcXFwiKTtcXG4rXFxuK1xcdHZtID0gX192bV9jcmVhdGUoc2hhcGUsIG5yX3ZjcHVzLCBleHRyYV9tZW1fcGFnZXMpO1xcbitcXG4rXFx0aWYgKGRpcnR5X3Jpbmdfc2l6ZSlcXG4rXFx0XFx0dm1fZW5hYmxlX2RpcnR5X3Jpbmcodm0sIGRpcnR5X3Jpbmdfc2l6ZSk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfdmNwdXM7ICsraSlcXG4rXFx0XFx0dmNwdXNbaV0gPSB2bV92Y3B1X2FkZCh2bSwgaSwgZ3Vlc3RfY29kZSk7XFxuK1xcbitcXHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XFxuK1xcdHJldHVybiB2bTtcXG4rfVxcbitcXG4gc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLFxcbiBcXHRcXHRcXHRcXHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcXG4gXFx0XFx0XFx0XFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcXG4tXFx0XFx0XFx0XFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKVxcbitcXHRcXHRcXHRcXHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXFxuK1xcdFxcdFxcdFxcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXFxuIHtcXG4gXFx0c3RydWN0IG1lbXN0cmVzc19hcmdzICphcmdzID0gXFx1MDAyNm1lbXN0cmVzc19hcmdzO1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG5AQCAtMTY3LDkgKzE5MiwxMCBAQCBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXFxuIFxcdCAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0J3MgYSBiZW5pZ24gc2lkZVxcbiBcXHQgKiBlZmZlY3QgYXMgS1ZNIGFsbG93cyBhbGlhc2luZyBIVkFzIGluIG1lc2xvdHMuXFxuIFxcdCAqL1xcbi1cXHR2bSA9IF9fdm1fY3JlYXRlX3dpdGhfdmNwdXMoVk1fU0hBUEUobW9kZSksIG5yX3ZjcHVzLFxcbi1cXHRcXHRcXHRcXHQgICAgc2xvdDBfcGFnZXMgKyBndWVzdF9udW1fcGFnZXMsXFxuLVxcdFxcdFxcdFxcdCAgICBtZW1zdHJlc3NfZ3Vlc3RfY29kZSwgdmNwdXMpO1xcbitcXHR2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBzbG90MF9wYWdlcyArIGd1ZXN0X251bV9wYWdlcyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGRpcnR5X3Jpbmdfc2l6ZSk7XFxuIFxcbiBcXHRhcmdzLVxcdTAwM2V2bSA9IHZtO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xcbmluZGV4IDljNzU3OGEwOThjM2UxLi4zYTFiZTliNzVlMDFkYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXFxuQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFxuIFxcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLCAxLFxcbiBcXHRcXHRcXHRcXHQgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXFxuLVxcdFxcdFxcdFxcdCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xcbiAjaWZkZWYgX194ODZfNjRfX1xcbiBcXHRpZiAocC1cXHUwMDNlZGlzYWJsZV9zbG90X3phcF9xdWlyaylcXG4gXFx0XFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVNBQkxFX1FVSVJLUzIsIEtWTV9YODZfUVVJUktfU0xPVF9aQVBfQUxMKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXFxuaW5kZXggMzg4YmE0MTAxZjk3MzYuLjY2MWU5YWJmYjQzOTVkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xcbkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZClcXG4gXFx0c3RydWN0IGt2bV9wYWdlX3N0YXRzIHN0YXRzX3JlcG9wdWxhdGVkO1xcbiBcXG4gXFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIFZDUFVTLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXFxuLVxcdFxcdFxcdFxcdCBTTE9UUywgYmFja2luZ19zcmMsIGZhbHNlKTtcXG4rXFx0XFx0XFx0XFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UsIDApO1xcbiBcXG4gXFx0Z3Vlc3RfbnVtX3BhZ2VzID0gKFZDUFVTICogZ3Vlc3RfcGVyY3B1X21lbV9zaXplKSBcXHUwMDNlXFx1MDAzZSB2bS1cXHUwMDNlcGFnZV9zaGlmdDtcXG4gXFx0Z3Vlc3RfbnVtX3BhZ2VzID0gdm1fYWRqdXN0X251bV9ndWVzdF9wYWdlcyhtb2RlLCBndWVzdF9udW1fcGFnZXMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzoyNjoxNC4yODc4MjU1MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MzAyOTQxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDliMjVmZWM5YWRlYzA1MDcwNzk4ZDNlNTAxMDM3OTEyYTZhZjA3ZTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAxNzoyNjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG5pbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG5AQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRpbnQgbnJfdmNwdXMgPSBwYXJhbXMtXHUwMDNlbnJfdmNwdXM7XG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy1cdTAwM2V2Y3B1X21lbW9yeV9ieXRlcywgMSxcbi1cdFx0XHRcdCBwYXJhbXMtXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpO1xuK1x0XHRcdFx0IHBhcmFtcy1cdTAwM2ViYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2VzcywgMCk7XG4gXG4gXHQvKlxuIFx0ICogSWYgZ3Vlc3RfcGFnZV9zaXplIGlzIGxhcmdlciB0aGFuIHRoZSBob3N0J3MgcGFnZSBzaXplLCB0aGVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcbmluZGV4IDMwMmM0OTIzZDA5MzBmLi45MjI0NmUyN2VmNzQ0NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXG5AQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRpbnQgaSwgbnVtX3VmZmRzID0gMDtcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLCAxLFxuLVx0XHRcdFx0IHAtXHUwMDNlc3JjX3R5cGUsIHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7XG4rXHRcdFx0XHQgcC1cdTAwM2VzcmNfdHlwZSwgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTtcbiBcbiBcdGRlbWFuZF9wYWdpbmdfc2l6ZSA9IGdldF9iYWNraW5nX3NyY19wYWdlc3oocC1cdTAwM2VzcmNfdHlwZSk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcbmluZGV4IGVmNzc5ZmE5MTgyN2M5Li42NTllZmE2NzliYzc0NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcbkBAIC0xMyw2ICsxMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjdGltZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjcHRocmVhZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0bWFwLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20vYmFycmllci5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJrdm1fdXRpbC5oXCJcbiAjaW5jbHVkZSBcInRlc3RfdXRpbC5oXCJcbkBAIC0yOSw5ICszMCw0MyBAQCBzdGF0aWMgYm9vbCBydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmc7XG4gXG4gLyogSG9zdCB2YXJpYWJsZXMgKi9cbiBzdGF0aWMgdTY0IGRpcnR5X2xvZ19tYW51YWxfY2FwcztcbitzdGF0aWMgdTMyIGRpcnR5X3Jpbmdfc2l6ZTtcbiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7XG4gc3RhdGljIGludCBpdGVyYXRpb247XG4gc3RhdGljIGludCB2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltLVk1fTUFYX1ZDUFVTXTtcbitzdGF0aWMgc3RydWN0IHRpbWVzcGVjIHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W0tWTV9NQVhfVkNQVVNdO1xuK1xuK3N0YXRpYyB2b2lkIGRpcnR5X3JpbmdfY29sbGVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiAqcmluZ19pZHgsXG4rXHRcdFx0XHRzdHJ1Y3QgdGltZXNwZWMgKnRzKVxuK3tcbitcdHN0cnVjdCB0aW1lc3BlYyBzdGFydDtcbitcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpkaXJ0eV9nZm5zID0gdmNwdV9tYXBfZGlydHlfcmluZyh2Y3B1KTtcbitcdHUzMiByZXQsIGlkeCA9ICpyaW5nX2lkeDtcbitcdHUzMiByaW5nX3NpemUgPSB2Y3B1LVx1MDAzZXZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcbitcbitcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4rXG4rXHR3aGlsZSAodHJ1ZSkge1xuK1x0XHRzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqY3VyO1xuK1xuK1x0XHRjdXIgPSBcdTAwMjZkaXJ0eV9nZm5zW2lkeCAlIHJpbmdfc2l6ZV07XG4rXHRcdGlmIChzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmN1ci1cdTAwM2VmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKVxuK1x0XHRcdGJyZWFrO1xuK1xuK1x0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZjdXItXHUwMDNlZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7XG4rXHRcdGlkeCsrO1xuK1x0fVxuK1xuK1x0aWR4IC09ICpyaW5nX2lkeDtcbitcdCpyaW5nX2lkeCArPSBpZHg7XG4rXG4rXHRyZXQgPSBrdm1fdm1fcmVzZXRfZGlydHlfcmluZyh2Y3B1LVx1MDAzZXZtKTtcbitcbitcdFRFU1RfQVNTRVJUKHJldCA9PSBpZHgsIFwiUmVzZXQgZGlydHkgcGFnZXMgKCV1KSBtaXNtYXRjaCBcIlxuK1x0XHQgICAgXCJ3aXRoIGNvbGxlY3RlZCAoJXUpXCIsIHJldCwgaWR4KTtcbitcbitcdCp0cyA9IHRpbWVzcGVjX2FkZCgqdHMsIHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpKTtcbit9XG4gXG4gc3RhdGljIHZvaWQgdmNwdV93b3JrZXIoc3RydWN0IG1lbXN0cmVzc192Y3B1X2FyZ3MgKnZjcHVfYXJncylcbiB7XG5AQCAtNDMsMTkgKzc4LDM2IEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHNfZGlmZjtcbiBcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuIFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcbitcdGJvb2wgdXNlX2RpcnR5X3JpbmcgPSAhIXZjcHUtXHUwMDNldm0tXHUwMDNlZGlydHlfcmluZ19zaXplO1xuK1x0dTMyIHJpbmdfaWR4ID0gMDtcbiBcdGludCByZXQ7XG4gXG4gXHRydW4gPSB2Y3B1LVx1MDAzZXJ1bjtcbiBcbiBcdHdoaWxlICghUkVBRF9PTkNFKGhvc3RfcXVpdCkpIHtcbiBcdFx0aW50IGN1cnJlbnRfaXRlcmF0aW9uID0gUkVBRF9PTkNFKGl0ZXJhdGlvbik7XG4rXHRcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4gXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbitcbitcdFx0ZG8ge1xuK1x0XHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbitcdFx0XHRpZiAoIXVzZV9kaXJ0eV9yaW5nKVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0ZGlydHlfcmluZ19jb2xsZWN0KHZjcHUsIFx1MDAyNnJpbmdfaWR4LCBcdTAwMjZjb2xsZWN0KTtcbitcdFx0fSB3aGlsZSAocmV0ID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCk7XG4rXG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbiBcbitcdFx0aWYgKHVzZV9kaXJ0eV9yaW5nKSB7XG4rXHRcdFx0dHNfZGlmZiA9IHRpbWVzcGVjX3N1Yih0c19kaWZmLCBjb2xsZWN0KTtcbitcdFx0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xuK1x0XHR9XG4rXG4gXHRcdFRFU1RfQVNTRVJUKHJldCA9PSAwLCBcInZjcHVfcnVuIGZhaWxlZDogJWRcIiwgcmV0KTtcbi1cdFx0VEVTVF9BU1NFUlQoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpID09IFVDQUxMX1NZTkMsXG4rXHRcdFRFU1RfQVNTRVJUKGdldF91Y2FsbCh2Y3B1LCBOVUxMKSA9PSBVQ0FMTF9TWU5DIHx8XG4rXHRcdFx0ICAgICh1c2VfZGlydHlfcmluZyBcdTAwMjZcdTAwMjYgcnVuLVx1MDAzZWV4aXRfcmVhc29uID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCksXG4gXHRcdFx0ICAgIFwiSW52YWxpZCBndWVzdCBzeW5jIHN0YXR1czogZXhpdF9yZWFzb249JXNcIixcbiBcdFx0XHQgICAgZXhpdF9yZWFzb25fc3RyKHJ1bi1cdTAwM2VleGl0X3JlYXNvbikpO1xuIFxuQEAgLTExOSw3ICsxNzEsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXG4gXHRcdFx0XHQgcC1cdTAwM2VzbG90cywgcC1cdTAwM2ViYWNraW5nX3NyYyxcbi1cdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuK1x0XHRcdFx0IHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbitcdFx0XHRcdCBkaXJ0eV9yaW5nX3NpemUpO1xuIFxuIFx0bWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHZtLCBwLVx1MDAzZXdyaXRlX3BlcmNlbnQpO1xuIFxuQEAgLTEzOSw4ICsxOTIsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGhvc3RfcXVpdCA9IGZhbHNlO1xuIFxuIFx0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnN0YXJ0KTtcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpKyspXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgaSsrKSB7XG4gXHRcdHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW2ldID0gLTE7XG4rXHRcdHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4rXHR9XG4gXG4gXHQvKlxuIFx0ICogVXNlIDEwMCUgd3JpdGVzIGR1cmluZyB0aGUgcG9wdWxhdGlvbiBwaGFzZSB0byBlbnN1cmUgYWxsXG5AQCAtMTk1LDYgKzI1MCwyMSBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0XHRwcl9pbmZvKFwiSXRlcmF0aW9uICVkIGRpcnR5IG1lbW9yeSB0aW1lOiAlbGQuJS45bGRzXFxuXCIsXG4gXHRcdFx0aXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTtcbiBcbitcdFx0aWYgKGRpcnR5X3Jpbmdfc2l6ZSkge1xuK1x0XHRcdHN0cnVjdCB0aW1lc3BlYyBpdGVyYXRpb25fc3VtID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4rXG4rXHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7IGkrKylcbitcdFx0XHRcdGl0ZXJhdGlvbl9zdW0gPSB0aW1lc3BlY19hZGQoaXRlcmF0aW9uX3N1bSxcbitcdFx0XHRcdFx0XHRcdCAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pO1xuK1xuK1x0XHRcdHByX2luZm8oXCJJdGVyYXRpb24gJWQgY2xlYXIgZGlydHkgcmluZyB0aW1lOiAlbGQuJS45bGRzXFxuXCIsXG4rXHRcdFx0XHRpdGVyYXRpb24sIGl0ZXJhdGlvbl9zdW0udHZfc2VjLCBpdGVyYXRpb25fc3VtLnR2X25zZWMpO1xuK1xuK1x0XHRcdGNsZWFyX2RpcnR5X2xvZ190b3RhbCA9IHRpbWVzcGVjX2FkZChjbGVhcl9kaXJ0eV9sb2dfdG90YWwsXG4rXHRcdFx0XHRcdFx0XHQgICAgIGl0ZXJhdGlvbl9zdW0pO1xuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4rXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4gXHRcdG1lbXN0cmVzc19nZXRfZGlydHlfbG9nKHZtLCBiaXRtYXBzLCBwLVx1MDAzZXNsb3RzKTtcbiBcdFx0dHNfZGlmZiA9IHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpO1xuQEAgLTIzOCwxMiArMzA4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRob3N0X3F1aXQgPSB0cnVlO1xuIFx0bWVtc3RyZXNzX2pvaW5fdmNwdV90aHJlYWRzKG5yX3ZjcHVzKTtcbiBcbi1cdGF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuLVx0cHJfaW5mbyhcIkdldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxuXCIsXG4tXHRcdHAtXHUwMDNlaXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXG4tXHRcdGdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpO1xuK1x0aWYgKCFkaXJ0eV9yaW5nX3NpemUpIHtcbitcdFx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXHUwMDNlaXRlcmF0aW9ucyk7XG4rXHRcdHByX2luZm8oXCJHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwiLFxuK1x0XHRcdHAtXHUwMDNlaXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXG4rXHRcdFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XG4rXHR9XG4gXG4tXHRpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzKSB7XG4rXHRpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzIHx8IGRpcnR5X3Jpbmdfc2l6ZSkge1xuIFx0XHRhdmcgPSB0aW1lc3BlY19kaXYoY2xlYXJfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuIFx0XHRwcl9pbmZvKFwiQ2xlYXIgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwiLFxuIFx0XHRcdHAtXHUwMDNlaXRlcmF0aW9ucywgY2xlYXJfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcbkBAIC0yNjQsNiArMzM2LDkgQEAgc3RhdGljIHZvaWQgaGVscChjaGFyICpuYW1lKVxuIFx0cHJpbnRmKFwiIC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxcblwiKTtcbiBcdHByaW50ZihcIiAtaTogc3BlY2lmeSBpdGVyYXRpb24gY291bnRzIChkZWZhdWx0OiAlXCJQUkl1NjRcIilcXG5cIixcbiBcdCAgICAgICBURVNUX0hPU1RfTE9PUF9OKTtcbitcdHByaW50ZihcIiAtZDogc3BlY2lmeSB0aGUgc2l6ZSBvZiBkaXJ0eS1yaW5nIGZvciB0cmFja2luZyBkaXJ0eSBwYWdlcy5cXG5cIlxuK1x0ICAgICAgIFwiICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxcblwiXG4rXHQgICAgICAgXCIgICAgIGRpcnR5LWJpdG1hcC4gTXVzdCBiZSBhIHBvd2VyIG9mIHR3by5cIik7XG4gXHRwcmludGYoXCIgLWc6IERvIG5vdCBlbmFibGUgS1ZNX0NBUF9NQU5VQUxfRElSVFlfTE9HX1BST1RFQ1QyLiBUaGlzXFxuXCJcbiBcdCAgICAgICBcIiAgICAgbWFrZXMgS1ZNX0dFVF9ESVJUWV9MT0cgY2xlYXIgdGhlIGRpcnR5IGxvZyAoaS5lLlxcblwiXG4gXHQgICAgICAgXCIgICAgIEtWTV9ESVJUWV9MT0dfTUFOVUFMX1BST1RFQ1RfRU5BQkxFIGlzIG5vdCBlbmFibGVkKVxcblwiXG5AQCAtMzIwLDcgKzM5NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHRndWVzdF9tb2Rlc19hcHBlbmRfZGVmYXVsdCgpO1xuIFxuLVx0d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgXCJhYjpjOmVnaGk6bTpub3A6cjpzOnY6eDp3OlwiKSkgIT0gLTEpIHtcbitcdHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFwiYWI6YzpkOmVnaGk6bTpub3A6cjpzOnY6eDp3OlwiKSkgIT0gLTEpIHtcbiBcdFx0c3dpdGNoIChvcHQpIHtcbiBcdFx0Y2FzZSAnYSc6XG4gXHRcdFx0cC5yYW5kb21fYWNjZXNzID0gdHJ1ZTtcbkBAIC0zMzEsNiArNDA2LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdGNhc2UgJ2MnOlxuIFx0XHRcdHBjcHVfbGlzdCA9IG9wdGFyZztcbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSAnZCc6XG4rXHRcdFx0ZGlydHlfcmluZ19zaXplID0gcGFyc2Vfc2l6ZShvcHRhcmcpO1xuK1x0XHRcdGRpcnR5X3Jpbmdfc2l6ZSAqPSBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pO1xuK1x0XHRcdGRpcnR5X2xvZ19tYW51YWxfY2FwcyA9IDA7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgJ2UnOlxuIFx0XHRcdC8qICdlJyBpcyBmb3IgZXZpbC4gKi9cbiBcdFx0XHRydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcbmluZGV4IDBkMWQ2MjMwY2MwNTFiLi5lMTdmMzQ0OTc4YWY2NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxuQEAgLTU4LDcgKzU4LDggQEAgZXh0ZXJuIHN0cnVjdCBtZW1zdHJlc3NfYXJncyBtZW1zdHJlc3NfYXJncztcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXG4gXHRcdFx0XHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcbiBcdFx0XHRcdCAgIGVudW0gdm1fbWVtX2JhY2tpbmdfc3JjX3R5cGUgYmFja2luZ19zcmMsXG4tXHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuK1x0XHRcdFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLFxuK1x0XHRcdFx0ICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSk7XG4gdm9pZCBtZW1zdHJlc3NfZGVzdHJveV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSk7XG4gXG4gdm9pZCBtZW1zdHJlc3Nfc2V0X3dyaXRlX3BlcmNlbnQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB3cml0ZV9wZXJjZW50KTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbmluZGV4IDE5NWYzZmRhZTFlMzk2Li4yMzdmMGNlMGFlNjAwNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXG5AQCAtMTY3LDEwICsxNjcsMjAgQEAgdW5zaWduZWQgaW50IGt2bV9jaGVja19jYXAobG9uZyBjYXApXG4gXG4gdm9pZCB2bV9lbmFibGVfZGlydHlfcmluZyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHJpbmdfc2l6ZSlcbiB7XG4tXHRpZiAodm1fY2hlY2tfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwpKVxuLVx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwsIHJpbmdfc2l6ZSk7XG4tXHRlbHNlXG4tXHRcdHZtX2VuYWJsZV9jYXAodm0sIEtWTV9DQVBfRElSVFlfTE9HX1JJTkcsIHJpbmdfc2l6ZSk7XG4rXHRsb25nIGNhcCA9IEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTDtcbitcdGludCBtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTtcbitcbitcdGlmICghbWF4X3NpemUpIHtcbitcdFx0Y2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklORztcbitcdFx0bWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7XG4rXHR9XG4rXG4rXHRURVNUX0FTU0VSVChyaW5nX3NpemUgXHUwMDNjPSBtYXhfc2l6ZSBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMihyaW5nX3NpemUpLFxuK1x0XHQgICAgXCJJbnZhbGlkIGRpcnR5LXJpbmcgc2l6ZTogU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvIFwiXG4rXHRcdCAgICBcInNtYWxsZXIgdGhhbiAlZCBlbnRyaWVzXFxuXCIsXG4rXHRcdCAgICBtYXhfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbikpO1xuK1xuK1x0dm1fZW5hYmxlX2NhcCh2bSwgY2FwLCByaW5nX3NpemUpO1xuIFx0dm0tXHUwMDNlZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuaW5kZXggNmRjZDE1OTEwYTA2MDguLmM5Zjg1NTMzZmZmZmRjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuQEAgLTEyMSwxMCArMTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoc3RydWN0IHZtX3NoYXBlIHNoYXBlLFxuK1x0XHRcdFx0XHRcdCAgICAgdTMyIG5yX3ZjcHVzLFxuK1x0XHRcdFx0XHRcdCAgICAgdTY0IGV4dHJhX21lbV9wYWdlcyxcbitcdFx0XHRcdFx0XHQgICAgIHZvaWQgKmd1ZXN0X2NvZGUsXG4rXHRcdFx0XHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHVzW10sXG4rXHRcdFx0XHRcdFx0ICAgICB1MzIgZGlydHlfcmluZ19zaXplKVxuK3tcbitcdHN0cnVjdCBrdm1fdm0gKnZtO1xuK1x0aW50IGk7XG4rXG4rXHRURVNUX0FTU0VSVCghbnJfdmNwdXMgfHwgdmNwdXMsIFwiTXVzdCBwcm92aWRlIHZDUFUgYXJyYXlcIik7XG4rXG4rXHR2bSA9IF9fdm1fY3JlYXRlKHNoYXBlLCBucl92Y3B1cywgZXh0cmFfbWVtX3BhZ2VzKTtcbitcbitcdGlmIChkaXJ0eV9yaW5nX3NpemUpXG4rXHRcdHZtX2VuYWJsZV9kaXJ0eV9yaW5nKHZtLCBkaXJ0eV9yaW5nX3NpemUpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7ICsraSlcbitcdFx0dmNwdXNbaV0gPSB2bV92Y3B1X2FkZCh2bSwgaSwgZ3Vlc3RfY29kZSk7XG4rXG4rXHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XG4rXHRyZXR1cm4gdm07XG4rfVxuK1xuIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdFx0XHRcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxuIFx0XHRcdFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcbi1cdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcylcbitcdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbitcdFx0XHRcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXG4ge1xuIFx0c3RydWN0IG1lbXN0cmVzc19hcmdzICphcmdzID0gXHUwMDI2bWVtc3RyZXNzX2FyZ3M7XG4gXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbkBAIC0xNjcsOSArMTkyLDEwIEBAIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdCAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0J3MgYSBiZW5pZ24gc2lkZVxuIFx0ICogZWZmZWN0IGFzIEtWTSBhbGxvd3MgYWxpYXNpbmcgSFZBcyBpbiBtZXNsb3RzLlxuIFx0ICovXG4tXHR2bSA9IF9fdm1fY3JlYXRlX3dpdGhfdmNwdXMoVk1fU0hBUEUobW9kZSksIG5yX3ZjcHVzLFxuLVx0XHRcdFx0ICAgIHNsb3QwX3BhZ2VzICsgZ3Vlc3RfbnVtX3BhZ2VzLFxuLVx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyk7XG4rXHR2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXG4rXHRcdFx0XHRcdCAgICBzbG90MF9wYWdlcyArIGd1ZXN0X251bV9wYWdlcyxcbitcdFx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyxcbitcdFx0XHRcdFx0ICAgIGRpcnR5X3Jpbmdfc2l6ZSk7XG4gXG4gXHRhcmdzLVx1MDAzZXZtID0gdm07XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xuaW5kZXggOWM3NTc4YTA5OGMzZTEuLjNhMWJlOWI3NWUwMWRhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXG5AQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXG4gXHRcdFx0XHQgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXG4tXHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuICNpZmRlZiBfX3g4Nl82NF9fXG4gXHRpZiAocC1cdTAwM2VkaXNhYmxlX3Nsb3RfemFwX3F1aXJrKVxuIFx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJU0FCTEVfUVVJUktTMiwgS1ZNX1g4Nl9RVUlSS19TTE9UX1pBUF9BTEwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xuaW5kZXggMzg4YmE0MTAxZjk3MzYuLjY2MWU5YWJmYjQzOTVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcbkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZClcbiBcdHN0cnVjdCBrdm1fcGFnZV9zdGF0cyBzdGF0c19yZXBvcHVsYXRlZDtcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBWQ1BVUywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLFxuLVx0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UpO1xuK1x0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UsIDApO1xuIFxuIFx0Z3Vlc3RfbnVtX3BhZ2VzID0gKFZDUFVTICogZ3Vlc3RfcGVyY3B1X21lbV9zaXplKSBcdTAwM2VcdTAwM2Ugdm0tXHUwMDNlcGFnZV9zaGlmdDtcbiBcdGd1ZXN0X251bV9wYWdlcyA9IHZtX2FkanVzdF9udW1fZ3Vlc3RfcGFnZXMobW9kZSwgZ3Vlc3RfbnVtX3BhZ2VzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjI2OjE0LjI4NzgyNzg4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MzAyNjIzNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IEtWTSBTZWxmdGVzdHMgUGF0Y2ggU2VyaWVzKipcblxuT2theSwgSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgbW9kaWZ5aW5nIEtWTSBzZWxmdGVzdHMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8qYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGlzOyB0aGUgZGlmZiBpbmNsdWRlcyBjaGFuZ2VzIHRvOiBgYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jYCwgYGRlbWFuZF9wYWdpbmdfdGVzdC5jYCwgYGRpcnR5X2xvZ19wZXJmX3Rlc3QuY2AsIGBpbmNsdWRlL21lbXN0cmVzcy5oYCwgYGxpYi9rdm1fdXRpbC5jYCwgYGxpYi9tZW1zdHJlc3MuY2AsIGBtZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jYCwgYW5kIGB4ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY2AuIFllcywgaXQgYWxsIHNlZW1zIGlzb2xhdGVkIHRvIHRoYXQgZGlyZWN0b3J5LlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG1hcmsgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50cy4gSXQgZXhwbGljaXRseSBleGNsdWRlcyBtb2RpZmljYXRpb25zIHRvIGNvZGUgdGhhdCBjYW4ndCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkFoYSEgVGhlc2UgYXJlICpzZWxmdGVzdHMqLiBTZWxmdGVzdHMgYXJlIHVzZXJzcGFjZSBwcm9ncmFtcyBkZXNpZ25lZCB0byBleGVyY2lzZSBhbmQgdmFsaWRhdGUga2VybmVsIGZ1bmN0aW9uYWxpdHksIGJ1dCB0aGV5IGFyZSBub3QgdGhlbXNlbHZlcyBwYXJ0IG9mIHRoZSBrZXJuZWwgY29kZS4gSWYgdGhlIGtlcm5lbCBsb2dpYyBpc24ndCBjaGFuZ2VkLCB0aGVyZSdzIG5vIG5lZWQgdG8gZnV6eiB0aGUga2VybmVsIGJhc2VkIG9uIGNoYW5nZXMgdG8gdGhlc2UgdGVzdHMuIFRoZXJlZm9yZSwgZnV6emluZyB0aGUga2VybmVsIGJhc2VkIG9uIHRoZXNlIGNoYW5nZXMgZG9lc24ndCBtYWtlIHNlbnNlLiBUaGUga2VybmVsJ3MgY29yZSBmdW5jdGlvbmFsaXR5IGhhc24ndCBiZWVuIG1vZGlmaWVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZmlsZXMgaW52b2x2ZWQuIE5vcGUsIGl0J3MgZXhjbHVzaXZlbHkgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLi4uYC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IFRoaXMgcGF0Y2ggc2VyaWVzIGlzIG1vZGlmeWluZyB1c2VyLXNwYWNlIEtWTSBzZWxmdGVzdHMgb25seS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLiBUaHVzLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgY2FuIGJlIGVtcHR5IGFycmF5cyBhcyB3ZWxsLiBJJ20gZ29pbmcgdG8gc2V0IHRoZXNlIHJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTQwLCJPdXRwdXRUb2tlbnMiOjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MjY6MjIuMjE4MDkyNzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLywgd2hpY2ggaXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgtp9j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 17:20:08 +0000 UTC FinishedAt: 2026-06-24 17:26:23 +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+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjI2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWIyNWZlYzlhZGVjMDUwNzA3OThkM2U1MDEwMzc5MTJhNmFmMDdlNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjI2OjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG5pbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG5AQCAtNDA5LDcgJiM0Mzs0MDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0aW50IG5yX3ZjcHVzID0gcGFyYW1zLVx1MDAzZW5yX3ZjcHVzO1xuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBwYXJhbXMtXHUwMDNldmNwdV9tZW1vcnlfYnl0ZXMsIDEsXG4tXHRcdFx0XHQgcGFyYW1zLVx1MDAzZWJhY2tpbmdfc3JjLCAhb3ZlcmxhcF9tZW1vcnlfYWNjZXNzKTtcbiYjNDM7XHRcdFx0XHQgcGFyYW1zLVx1MDAzZWJhY2tpbmdfc3JjLCAhb3ZlcmxhcF9tZW1vcnlfYWNjZXNzLCAwKTtcbiBcbiBcdC8qXG4gXHQgKiBJZiBndWVzdF9wYWdlX3NpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGhvc3QmIzM5O3MgcGFnZSBzaXplLCB0aGVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcbmluZGV4IDMwMmM0OTIzZDA5MzBmLi45MjI0NmUyN2VmNzQ0NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXG5AQCAtMTYyLDcgJiM0MzsxNjIsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0aW50IGksIG51bV91ZmZkcyA9IDA7XG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwgMSxcbi1cdFx0XHRcdCBwLVx1MDAzZXNyY190eXBlLCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCBwLVx1MDAzZXNyY190eXBlLCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuIFxuIFx0ZGVtYW5kX3BhZ2luZ19zaXplID0gZ2V0X2JhY2tpbmdfc3JjX3BhZ2VzeihwLVx1MDAzZXNyY190eXBlKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuaW5kZXggZWY3NzlmYTkxODI3YzkuLjY1OWVmYTY3OWJjNzQ0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuQEAgLTEzLDYgJiM0MzsxMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjdGltZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjcHRocmVhZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0bWFwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXNtL2JhcnJpZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O2t2bV91dGlsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3V0aWwuaFwmIzM0O1xuQEAgLTI5LDkgJiM0MzszMCw0MyBAQCBzdGF0aWMgYm9vbCBydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmc7XG4gXG4gLyogSG9zdCB2YXJpYWJsZXMgKi9cbiBzdGF0aWMgdTY0IGRpcnR5X2xvZ19tYW51YWxfY2FwcztcbiYjNDM7c3RhdGljIHUzMiBkaXJ0eV9yaW5nX3NpemU7XG4gc3RhdGljIGJvb2wgaG9zdF9xdWl0O1xuIHN0YXRpYyBpbnQgaXRlcmF0aW9uO1xuIHN0YXRpYyBpbnQgdmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25bS1ZNX01BWF9WQ1BVU107XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbS1ZNX01BWF9WQ1BVU107XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBkaXJ0eV9yaW5nX2NvbGxlY3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKnJpbmdfaWR4LFxuJiM0MztcdFx0XHRcdHN0cnVjdCB0aW1lc3BlYyAqdHMpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdGltZXNwZWMgc3RhcnQ7XG4mIzQzO1x0c3RydWN0IGt2bV9kaXJ0eV9nZm4gKmRpcnR5X2dmbnMgPSB2Y3B1X21hcF9kaXJ0eV9yaW5nKHZjcHUpO1xuJiM0MztcdHUzMiByZXQsIGlkeCA9ICpyaW5nX2lkeDtcbiYjNDM7XHR1MzIgcmluZ19zaXplID0gdmNwdS1cdTAwM2V2bS1cdTAwM2VkaXJ0eV9yaW5nX3NpemU7XG4mIzQzO1xuJiM0MztcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICh0cnVlKSB7XG4mIzQzO1x0XHRzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqY3VyO1xuJiM0MztcbiYjNDM7XHRcdGN1ciA9IFx1MDAyNmRpcnR5X2dmbnNbaWR4ICUgcmluZ19zaXplXTtcbiYjNDM7XHRcdGlmIChzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmN1ci1cdTAwM2VmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZjdXItXHUwMDNlZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7XG4mIzQzO1x0XHRpZHgmIzQzOyYjNDM7O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWR4IC09ICpyaW5nX2lkeDtcbiYjNDM7XHQqcmluZ19pZHggJiM0Mzs9IGlkeDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0ga3ZtX3ZtX3Jlc2V0X2RpcnR5X3JpbmcodmNwdS1cdTAwM2V2bSk7XG4mIzQzO1xuJiM0MztcdFRFU1RfQVNTRVJUKHJldCA9PSBpZHgsIFwmIzM0O1Jlc2V0IGRpcnR5IHBhZ2VzICgldSkgbWlzbWF0Y2ggXCYjMzQ7XG4mIzQzO1x0XHQgICAgXCYjMzQ7d2l0aCBjb2xsZWN0ZWQgKCV1KVwmIzM0OywgcmV0LCBpZHgpO1xuJiM0MztcbiYjNDM7XHQqdHMgPSB0aW1lc3BlY19hZGQoKnRzLCB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KSk7XG4mIzQzO31cbiBcbiBzdGF0aWMgdm9pZCB2Y3B1X3dvcmtlcihzdHJ1Y3QgbWVtc3RyZXNzX3ZjcHVfYXJncyAqdmNwdV9hcmdzKVxuIHtcbkBAIC00MywxOSAmIzQzOzc4LDM2IEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHNfZGlmZjtcbiBcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuIFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcbiYjNDM7XHRib29sIHVzZV9kaXJ0eV9yaW5nID0gISF2Y3B1LVx1MDAzZXZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcbiYjNDM7XHR1MzIgcmluZ19pZHggPSAwO1xuIFx0aW50IHJldDtcbiBcbiBcdHJ1biA9IHZjcHUtXHUwMDNlcnVuO1xuIFxuIFx0d2hpbGUgKCFSRUFEX09OQ0UoaG9zdF9xdWl0KSkge1xuIFx0XHRpbnQgY3VycmVudF9pdGVyYXRpb24gPSBSRUFEX09OQ0UoaXRlcmF0aW9uKTtcbiYjNDM7XHRcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4gXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0XHRkbyB7XG4mIzQzO1x0XHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XHRcdFx0aWYgKCF1c2VfZGlydHlfcmluZylcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdGRpcnR5X3JpbmdfY29sbGVjdCh2Y3B1LCBcdTAwMjZyaW5nX2lkeCwgXHUwMDI2Y29sbGVjdCk7XG4mIzQzO1x0XHR9IHdoaWxlIChyZXQgPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKTtcbiYjNDM7XG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbiBcbiYjNDM7XHRcdGlmICh1c2VfZGlydHlfcmluZykge1xuJiM0MztcdFx0XHR0c19kaWZmID0gdGltZXNwZWNfc3ViKHRzX2RpZmYsIGNvbGxlY3QpO1xuJiM0MztcdFx0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0VEVTVF9BU1NFUlQocmV0ID09IDAsIFwmIzM0O3ZjcHVfcnVuIGZhaWxlZDogJWRcJiMzNDssIHJldCk7XG4tXHRcdFRFU1RfQVNTRVJUKGdldF91Y2FsbCh2Y3B1LCBOVUxMKSA9PSBVQ0FMTF9TWU5DLFxuJiM0MztcdFx0VEVTVF9BU1NFUlQoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpID09IFVDQUxMX1NZTkMgfHxcbiYjNDM7XHRcdFx0ICAgICh1c2VfZGlydHlfcmluZyBcdTAwMjZcdTAwMjYgcnVuLVx1MDAzZWV4aXRfcmVhc29uID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCksXG4gXHRcdFx0ICAgIFwmIzM0O0ludmFsaWQgZ3Vlc3Qgc3luYyBzdGF0dXM6IGV4aXRfcmVhc29uPSVzXCYjMzQ7LFxuIFx0XHRcdCAgICBleGl0X3JlYXNvbl9zdHIocnVuLVx1MDAzZWV4aXRfcmVhc29uKSk7XG4gXG5AQCAtMTE5LDcgJiM0MzsxNzEsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXG4gXHRcdFx0XHQgcC1cdTAwM2VzbG90cywgcC1cdTAwM2ViYWNraW5nX3NyYyxcbi1cdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXG4mIzQzO1x0XHRcdFx0IGRpcnR5X3Jpbmdfc2l6ZSk7XG4gXG4gXHRtZW1zdHJlc3Nfc2V0X3dyaXRlX3BlcmNlbnQodm0sIHAtXHUwMDNld3JpdGVfcGVyY2VudCk7XG4gXG5AQCAtMTM5LDggJiM0MzsxOTIsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGhvc3RfcXVpdCA9IGZhbHNlO1xuIFxuIFx0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnN0YXJ0KTtcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgaSYjNDM7JiM0MzspIHtcbiBcdFx0dmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25baV0gPSAtMTtcbiYjNDM7XHRcdHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4mIzQzO1x0fVxuIFxuIFx0LypcbiBcdCAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbFxuQEAgLTE5NSw2ICYjNDM7MjUwLDIxIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRcdHByX2luZm8oXCYjMzQ7SXRlcmF0aW9uICVkIGRpcnR5IG1lbW9yeSB0aW1lOiAlbGQuJS45bGRzXFxuXCYjMzQ7LFxuIFx0XHRcdGl0ZXJhdGlvbiwgdHNfZGlmZi50dl9zZWMsIHRzX2RpZmYudHZfbnNlYyk7XG4gXG4mIzQzO1x0XHRpZiAoZGlydHlfcmluZ19zaXplKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCB0aW1lc3BlYyBpdGVyYXRpb25fc3VtID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4mIzQzO1xuJiM0MztcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgaSYjNDM7JiM0MzspXG4mIzQzO1x0XHRcdFx0aXRlcmF0aW9uX3N1bSA9IHRpbWVzcGVjX2FkZChpdGVyYXRpb25fc3VtLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pO1xuJiM0MztcbiYjNDM7XHRcdFx0cHJfaW5mbyhcJiMzNDtJdGVyYXRpb24gJWQgY2xlYXIgZGlydHkgcmluZyB0aW1lOiAlbGQuJS45bGRzXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdGl0ZXJhdGlvbiwgaXRlcmF0aW9uX3N1bS50dl9zZWMsIGl0ZXJhdGlvbl9zdW0udHZfbnNlYyk7XG4mIzQzO1xuJiM0MztcdFx0XHRjbGVhcl9kaXJ0eV9sb2dfdG90YWwgPSB0aW1lc3BlY19hZGQoY2xlYXJfZGlydHlfbG9nX3RvdGFsLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgaXRlcmF0aW9uX3N1bSk7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnN0YXJ0KTtcbiBcdFx0bWVtc3RyZXNzX2dldF9kaXJ0eV9sb2codm0sIGJpdG1hcHMsIHAtXHUwMDNlc2xvdHMpO1xuIFx0XHR0c19kaWZmID0gdGltZXNwZWNfZWxhcHNlZChzdGFydCk7XG5AQCAtMjM4LDEyICYjNDM7MzA4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRob3N0X3F1aXQgPSB0cnVlO1xuIFx0bWVtc3RyZXNzX2pvaW5fdmNwdV90aHJlYWRzKG5yX3ZjcHVzKTtcbiBcbi1cdGF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuLVx0cHJfaW5mbyhcJiMzNDtHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwmIzM0Oyxcbi1cdFx0cC1cdTAwM2VpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcbi1cdFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XG4mIzQzO1x0aWYgKCFkaXJ0eV9yaW5nX3NpemUpIHtcbiYjNDM7XHRcdGF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuJiM0MztcdFx0cHJfaW5mbyhcJiMzNDtHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0cC1cdTAwM2VpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcbiYjNDM7XHRcdFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XG4mIzQzO1x0fVxuIFxuLVx0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2Fwcykge1xuJiM0MztcdGlmIChkaXJ0eV9sb2dfbWFudWFsX2NhcHMgfHwgZGlydHlfcmluZ19zaXplKSB7XG4gXHRcdGF2ZyA9IHRpbWVzcGVjX2RpdihjbGVhcl9kaXJ0eV9sb2dfdG90YWwsIHAtXHUwMDNlaXRlcmF0aW9ucyk7XG4gXHRcdHByX2luZm8oXCYjMzQ7Q2xlYXIgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwmIzM0OyxcbiBcdFx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGNsZWFyX2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXG5AQCAtMjY0LDYgJiM0MzszMzYsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNoYXIgKm5hbWUpXG4gXHRwcmludGYoXCYjMzQ7IC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxcblwmIzM0Oyk7XG4gXHRwcmludGYoXCYjMzQ7IC1pOiBzcGVjaWZ5IGl0ZXJhdGlvbiBjb3VudHMgKGRlZmF1bHQ6ICVcJiMzNDtQUkl1NjRcJiMzNDspXFxuXCYjMzQ7LFxuIFx0ICAgICAgIFRFU1RfSE9TVF9MT09QX04pO1xuJiM0MztcdHByaW50ZihcJiMzNDsgLWQ6IHNwZWNpZnkgdGhlIHNpemUgb2YgZGlydHktcmluZyBmb3IgdHJhY2tpbmcgZGlydHkgcGFnZXMuXFxuXCYjMzQ7XG4mIzQzO1x0ICAgICAgIFwmIzM0OyAgICAgSWYgbm9uLXplcm8sIHdpbGwgY2F1c2UgZGlydHktcmluZyB0byBiZSB1c2VkIGluc3RlYWQgb2ZcXG5cJiMzNDtcbiYjNDM7XHQgICAgICAgXCYjMzQ7ICAgICBkaXJ0eS1iaXRtYXAuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uXCYjMzQ7KTtcbiBcdHByaW50ZihcJiMzNDsgLWc6IERvIG5vdCBlbmFibGUgS1ZNX0NBUF9NQU5VQUxfRElSVFlfTE9HX1BST1RFQ1QyLiBUaGlzXFxuXCYjMzQ7XG4gXHQgICAgICAgXCYjMzQ7ICAgICBtYWtlcyBLVk1fR0VUX0RJUlRZX0xPRyBjbGVhciB0aGUgZGlydHkgbG9nIChpLmUuXFxuXCYjMzQ7XG4gXHQgICAgICAgXCYjMzQ7ICAgICBLVk1fRElSVFlfTE9HX01BTlVBTF9QUk9URUNUX0VOQUJMRSBpcyBub3QgZW5hYmxlZClcXG5cJiMzNDtcbkBAIC0zMjAsNyAmIzQzOzM5NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHRndWVzdF9tb2Rlc19hcHBlbmRfZGVmYXVsdCgpO1xuIFxuLVx0d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgXCYjMzQ7YWI6YzplZ2hpOm06bm9wOnI6czp2Ong6dzpcJiMzNDspKSAhPSAtMSkge1xuJiM0MztcdHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFwmIzM0O2FiOmM6ZDplZ2hpOm06bm9wOnI6czp2Ong6dzpcJiMzNDspKSAhPSAtMSkge1xuIFx0XHRzd2l0Y2ggKG9wdCkge1xuIFx0XHRjYXNlICYjMzk7YSYjMzk7OlxuIFx0XHRcdHAucmFuZG9tX2FjY2VzcyA9IHRydWU7XG5AQCAtMzMxLDYgJiM0Mzs0MDYsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0Y2FzZSAmIzM5O2MmIzM5OzpcbiBcdFx0XHRwY3B1X2xpc3QgPSBvcHRhcmc7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlICYjMzk7ZCYjMzk7OlxuJiM0MztcdFx0XHRkaXJ0eV9yaW5nX3NpemUgPSBwYXJzZV9zaXplKG9wdGFyZyk7XG4mIzQzO1x0XHRcdGRpcnR5X3Jpbmdfc2l6ZSAqPSBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pO1xuJiM0MztcdFx0XHRkaXJ0eV9sb2dfbWFudWFsX2NhcHMgPSAwO1xuJiM0MztcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSAmIzM5O2UmIzM5OzpcbiBcdFx0XHQvKiAmIzM5O2UmIzM5OyBpcyBmb3IgZXZpbC4gKi9cbiBcdFx0XHRydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcbmluZGV4IDBkMWQ2MjMwY2MwNTFiLi5lMTdmMzQ0OTc4YWY2NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxuQEAgLTU4LDcgJiM0Mzs1OCw4IEBAIGV4dGVybiBzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgbWVtc3RyZXNzX2FyZ3M7XG4gc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLFxuIFx0XHRcdFx0ICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsXG4gXHRcdFx0XHQgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLFxuLVx0XHRcdFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbiYjNDM7XHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXG4mIzQzO1x0XHRcdFx0ICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSk7XG4gdm9pZCBtZW1zdHJlc3NfZGVzdHJveV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSk7XG4gXG4gdm9pZCBtZW1zdHJlc3Nfc2V0X3dyaXRlX3BlcmNlbnQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB3cml0ZV9wZXJjZW50KTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbmluZGV4IDE5NWYzZmRhZTFlMzk2Li4yMzdmMGNlMGFlNjAwNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXG5AQCAtMTY3LDEwICYjNDM7MTY3LDIwIEBAIHVuc2lnbmVkIGludCBrdm1fY2hlY2tfY2FwKGxvbmcgY2FwKVxuIFxuIHZvaWQgdm1fZW5hYmxlX2RpcnR5X3Jpbmcoc3RydWN0IGt2bV92bSAqdm0sIHUzMiByaW5nX3NpemUpXG4ge1xuLVx0aWYgKHZtX2NoZWNrX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMKSlcbi1cdFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMLCByaW5nX3NpemUpO1xuLVx0ZWxzZVxuLVx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HLCByaW5nX3NpemUpO1xuJiM0MztcdGxvbmcgY2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMO1xuJiM0MztcdGludCBtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFtYXhfc2l6ZSkge1xuJiM0MztcdFx0Y2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklORztcbiYjNDM7XHRcdG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0VEVTVF9BU1NFUlQocmluZ19zaXplIFx1MDAzYz0gbWF4X3NpemUgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIocmluZ19zaXplKSxcbiYjNDM7XHRcdCAgICBcJiMzNDtJbnZhbGlkIGRpcnR5LXJpbmcgc2l6ZTogU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvIFwmIzM0O1xuJiM0MztcdFx0ICAgIFwmIzM0O3NtYWxsZXIgdGhhbiAlZCBlbnRyaWVzXFxuXCYjMzQ7LFxuJiM0MztcdFx0ICAgIG1heF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKSk7XG4mIzQzO1xuJiM0MztcdHZtX2VuYWJsZV9jYXAodm0sIGNhcCwgcmluZ19zaXplKTtcbiBcdHZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZSA9IHJpbmdfc2l6ZTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNcbmluZGV4IDZkY2QxNTkxMGEwNjA4Li5jOWY4NTUzM2ZmZmZkYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNcbkBAIC0xMjEsMTAgJiM0MzsxMjEsMzUgQEAgdm9pZCBtZW1zdHJlc3Nfc2V0dXBfdmNwdXMoc3RydWN0IGt2bV92bSAqdm0sIGludCBucl92Y3B1cyxcbiBcdH1cbiB9XG4gXG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoc3RydWN0IHZtX3NoYXBlIHNoYXBlLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHUzMiBucl92Y3B1cyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICB1NjQgZXh0cmFfbWVtX3BhZ2VzLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHZvaWQgKmd1ZXN0X2NvZGUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgc3RydWN0IGt2bV92Y3B1ICp2Y3B1c1tdLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9BU1NFUlQoIW5yX3ZjcHVzIHx8IHZjcHVzLCBcJiMzNDtNdXN0IHByb3ZpZGUgdkNQVSBhcnJheVwmIzM0Oyk7XG4mIzQzO1xuJiM0MztcdHZtID0gX192bV9jcmVhdGUoc2hhcGUsIG5yX3ZjcHVzLCBleHRyYV9tZW1fcGFnZXMpO1xuJiM0MztcbiYjNDM7XHRpZiAoZGlydHlfcmluZ19zaXplKVxuJiM0MztcdFx0dm1fZW5hYmxlX2RpcnR5X3Jpbmcodm0sIGRpcnR5X3Jpbmdfc2l6ZSk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyAmIzQzOyYjNDM7aSlcbiYjNDM7XHRcdHZjcHVzW2ldID0gdm1fdmNwdV9hZGQodm0sIGksIGd1ZXN0X2NvZGUpO1xuJiM0MztcbiYjNDM7XHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XG4mIzQzO1x0cmV0dXJuIHZtO1xuJiM0Mzt9XG4mIzQzO1xuIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdFx0XHRcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxuIFx0XHRcdFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcbi1cdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcylcbiYjNDM7XHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXG4mIzQzO1x0XHRcdFx0ICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSlcbiB7XG4gXHRzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgKmFyZ3MgPSBcdTAwMjZtZW1zdHJlc3NfYXJncztcbiBcdHN0cnVjdCBrdm1fdm0gKnZtO1xuQEAgLTE2Nyw5ICYjNDM7MTkyLDEwIEBAIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdCAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0JiMzOTtzIGEgYmVuaWduIHNpZGVcbiBcdCAqIGVmZmVjdCBhcyBLVk0gYWxsb3dzIGFsaWFzaW5nIEhWQXMgaW4gbWVzbG90cy5cbiBcdCAqL1xuLVx0dm0gPSBfX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKFZNX1NIQVBFKG1vZGUpLCBucl92Y3B1cyxcbi1cdFx0XHRcdCAgICBzbG90MF9wYWdlcyAmIzQzOyBndWVzdF9udW1fcGFnZXMsXG4tXHRcdFx0XHQgICAgbWVtc3RyZXNzX2d1ZXN0X2NvZGUsIHZjcHVzKTtcbiYjNDM7XHR2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLFxuJiM0MztcdFx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyxcbiYjNDM7XHRcdFx0XHRcdCAgICBkaXJ0eV9yaW5nX3NpemUpO1xuIFxuIFx0YXJncy1cdTAwM2V2bSA9IHZtO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcbmluZGV4IDljNzU3OGEwOThjM2UxLi4zYTFiZTliNzVlMDFkYSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xuQEAgLTkwLDcgJiM0Mzs5MCw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwgMSxcbiBcdFx0XHRcdCBWTV9NRU1fU1JDX0FOT05ZTU9VUyxcbi1cdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuICNpZmRlZiBfX3g4Nl82NF9fXG4gXHRpZiAocC1cdTAwM2VkaXNhYmxlX3Nsb3RfemFwX3F1aXJrKVxuIFx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJU0FCTEVfUVVJUktTMiwgS1ZNX1g4Nl9RVUlSS19TTE9UX1pBUF9BTEwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xuaW5kZXggMzg4YmE0MTAxZjk3MzYuLjY2MWU5YWJmYjQzOTVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcbkBAIC0xMDEsNyAmIzQzOzEwMSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICp1bnVzZWQpXG4gXHRzdHJ1Y3Qga3ZtX3BhZ2Vfc3RhdHMgc3RhdHNfcmVwb3B1bGF0ZWQ7XG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgVkNQVVMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSxcbi1cdFx0XHRcdCBTTE9UUywgYmFja2luZ19zcmMsIGZhbHNlKTtcbiYjNDM7XHRcdFx0XHQgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSwgMCk7XG4gXG4gXHRndWVzdF9udW1fcGFnZXMgPSAoVkNQVVMgKiBndWVzdF9wZXJjcHVfbWVtX3NpemUpIFx1MDAzZVx1MDAzZSB2bS1cdTAwM2VwYWdlX3NoaWZ0O1xuIFx0Z3Vlc3RfbnVtX3BhZ2VzID0gdm1fYWRqdXN0X251bV9ndWVzdF9wYWdlcyhtb2RlLCBndWVzdF9udW1fcGFnZXMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5YjI1ZmVjOWFkZWMwNTA3MDc5OGQzZTUwMTAzNzkxMmE2YWYwN2U2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMTc6MjY6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYwppbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYwpAQCAtNDA5LDcgJiM0Mzs0MDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWludCBucl92Y3B1cyA9IHBhcmFtcy0mZ3Q7bnJfdmNwdXM7CiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy0mZ3Q7dmNwdV9tZW1vcnlfYnl0ZXMsIDEsCi0JCQkJIHBhcmFtcy0mZ3Q7YmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpOwomIzQzOwkJCQkgcGFyYW1zLSZndDtiYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2VzcywgMCk7CiAKIAkvKgogCSAqIElmIGd1ZXN0X3BhZ2Vfc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgaG9zdCYjMzk7cyBwYWdlIHNpemUsIHRoZQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jCmluZGV4IDMwMmM0OTIzZDA5MzBmLi45MjI0NmUyN2VmNzQ0NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuYwpAQCAtMTYyLDcgJiM0MzsxNjIsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWludCBpLCBudW1fdWZmZHMgPSAwOwogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsCi0JCQkJIHAtJmd0O3NyY190eXBlLCBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3NyY190eXBlLCBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTsKIAogCWRlbWFuZF9wYWdpbmdfc2l6ZSA9IGdldF9iYWNraW5nX3NyY19wYWdlc3oocC0mZ3Q7c3JjX3R5cGUpOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYwppbmRleCBlZjc3OWZhOTE4MjdjOS4uNjU5ZWZhNjc5YmM3NDQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYwpAQCAtMTMsNiAmIzQzOzEzLDcgQEAKICNpbmNsdWRlICZsdDt0aW1lLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG1hcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vYmFycmllci5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X3V0aWwuaCYjMzQ7CkBAIC0yOSw5ICYjNDM7MzAsNDMgQEAgc3RhdGljIGJvb2wgcnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nOwogCiAvKiBIb3N0IHZhcmlhYmxlcyAqLwogc3RhdGljIHU2NCBkaXJ0eV9sb2dfbWFudWFsX2NhcHM7CiYjNDM7c3RhdGljIHUzMiBkaXJ0eV9yaW5nX3NpemU7CiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7CiBzdGF0aWMgaW50IGl0ZXJhdGlvbjsKIHN0YXRpYyBpbnQgdmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25bS1ZNX01BWF9WQ1BVU107CiYjNDM7c3RhdGljIHN0cnVjdCB0aW1lc3BlYyB2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtLVk1fTUFYX1ZDUFVTXTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkaXJ0eV9yaW5nX2NvbGxlY3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKnJpbmdfaWR4LAomIzQzOwkJCQlzdHJ1Y3QgdGltZXNwZWMgKnRzKQomIzQzO3sKJiM0MzsJc3RydWN0IHRpbWVzcGVjIHN0YXJ0OwomIzQzOwlzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqZGlydHlfZ2ZucyA9IHZjcHVfbWFwX2RpcnR5X3JpbmcodmNwdSk7CiYjNDM7CXUzMiByZXQsIGlkeCA9ICpyaW5nX2lkeDsKJiM0MzsJdTMyIHJpbmdfc2l6ZSA9IHZjcHUtJmd0O3ZtLSZndDtkaXJ0eV9yaW5nX3NpemU7CiYjNDM7CiYjNDM7CWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3N0YXJ0KTsKJiM0MzsKJiM0MzsJd2hpbGUgKHRydWUpIHsKJiM0MzsJCXN0cnVjdCBrdm1fZGlydHlfZ2ZuICpjdXI7CiYjNDM7CiYjNDM7CQljdXIgPSAmYW1wO2RpcnR5X2dmbnNbaWR4ICUgcmluZ19zaXplXTsKJiM0MzsJCWlmIChzbXBfbG9hZF9hY3F1aXJlKCZhbXA7Y3VyLSZndDtmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJc21wX3N0b3JlX3JlbGVhc2UoJmFtcDtjdXItJmd0O2ZsYWdzLCBLVk1fRElSVFlfR0ZOX0ZfUkVTRVQpOwomIzQzOwkJaWR4JiM0MzsmIzQzOzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZHggLT0gKnJpbmdfaWR4OwomIzQzOwkqcmluZ19pZHggJiM0Mzs9IGlkeDsKJiM0MzsKJiM0MzsJcmV0ID0ga3ZtX3ZtX3Jlc2V0X2RpcnR5X3JpbmcodmNwdS0mZ3Q7dm0pOwomIzQzOwomIzQzOwlURVNUX0FTU0VSVChyZXQgPT0gaWR4LCAmIzM0O1Jlc2V0IGRpcnR5IHBhZ2VzICgldSkgbWlzbWF0Y2ggJiMzNDsKJiM0MzsJCSAgICAmIzM0O3dpdGggY29sbGVjdGVkICgldSkmIzM0OywgcmV0LCBpZHgpOwomIzQzOwomIzQzOwkqdHMgPSB0aW1lc3BlY19hZGQoKnRzLCB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KSk7CiYjNDM7fQogCiBzdGF0aWMgdm9pZCB2Y3B1X3dvcmtlcihzdHJ1Y3QgbWVtc3RyZXNzX3ZjcHVfYXJncyAqdmNwdV9hcmdzKQogewpAQCAtNDMsMTkgJiM0Mzs3OCwzNiBAQCBzdGF0aWMgdm9pZCB2Y3B1X3dvcmtlcihzdHJ1Y3QgbWVtc3RyZXNzX3ZjcHVfYXJncyAqdmNwdV9hcmdzKQogCXN0cnVjdCB0aW1lc3BlYyB0c19kaWZmOwogCXN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9OwogCXN0cnVjdCB0aW1lc3BlYyBhdmc7CiYjNDM7CWJvb2wgdXNlX2RpcnR5X3JpbmcgPSAhIXZjcHUtJmd0O3ZtLSZndDtkaXJ0eV9yaW5nX3NpemU7CiYjNDM7CXUzMiByaW5nX2lkeCA9IDA7CiAJaW50IHJldDsKIAogCXJ1biA9IHZjcHUtJmd0O3J1bjsKIAogCXdoaWxlICghUkVBRF9PTkNFKGhvc3RfcXVpdCkpIHsKIAkJaW50IGN1cnJlbnRfaXRlcmF0aW9uID0gUkVBRF9PTkNFKGl0ZXJhdGlvbik7CiYjNDM7CQlzdHJ1Y3QgdGltZXNwZWMgY29sbGVjdCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9OwogCiAJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3N0YXJ0KTsKLQkJcmV0ID0gX3ZjcHVfcnVuKHZjcHUpOwomIzQzOwomIzQzOwkJZG8gewomIzQzOwkJCXJldCA9IF92Y3B1X3J1bih2Y3B1KTsKJiM0MzsJCQlpZiAoIXVzZV9kaXJ0eV9yaW5nKQomIzQzOwkJCQlicmVhazsKJiM0MzsKJiM0MzsJCQlkaXJ0eV9yaW5nX2NvbGxlY3QodmNwdSwgJmFtcDtyaW5nX2lkeCwgJmFtcDtjb2xsZWN0KTsKJiM0MzsJCX0gd2hpbGUgKHJldCA9PSBLVk1fRVhJVF9ESVJUWV9SSU5HX0ZVTEwpOwomIzQzOwogCQl0c19kaWZmID0gdGltZXNwZWNfZWxhcHNlZChzdGFydCk7CiAKJiM0MzsJCWlmICh1c2VfZGlydHlfcmluZykgewomIzQzOwkJCXRzX2RpZmYgPSB0aW1lc3BlY19zdWIodHNfZGlmZiwgY29sbGVjdCk7CiYjNDM7CQkJdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbdmNwdV9pZHhdID0gY29sbGVjdDsKJiM0MzsJCX0KJiM0MzsKIAkJVEVTVF9BU1NFUlQocmV0ID09IDAsICYjMzQ7dmNwdV9ydW4gZmFpbGVkOiAlZCYjMzQ7LCByZXQpOwotCQlURVNUX0FTU0VSVChnZXRfdWNhbGwodmNwdSwgTlVMTCkgPT0gVUNBTExfU1lOQywKJiM0MzsJCVRFU1RfQVNTRVJUKGdldF91Y2FsbCh2Y3B1LCBOVUxMKSA9PSBVQ0FMTF9TWU5DIHx8CiYjNDM7CQkJICAgICh1c2VfZGlydHlfcmluZyAmYW1wOyZhbXA7IHJ1bi0mZ3Q7ZXhpdF9yZWFzb24gPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKSwKIAkJCSAgICAmIzM0O0ludmFsaWQgZ3Vlc3Qgc3luYyBzdGF0dXM6IGV4aXRfcmVhc29uPSVzJiMzNDssCiAJCQkgICAgZXhpdF9yZWFzb25fc3RyKHJ1bi0mZ3Q7ZXhpdF9yZWFzb24pKTsKIApAQCAtMTE5LDcgJiM0MzsxNzEsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsCiAJCQkJIHAtJmd0O3Nsb3RzLCBwLSZndDtiYWNraW5nX3NyYywKLQkJCQkgcC0mZ3Q7cGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7CiYjNDM7CQkJCSBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLAomIzQzOwkJCQkgZGlydHlfcmluZ19zaXplKTsKIAogCW1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudCh2bSwgcC0mZ3Q7d3JpdGVfcGVyY2VudCk7CiAKQEAgLTEzOSw4ICYjNDM7MTkyLDEwIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpCiAJaG9zdF9xdWl0ID0gZmFsc2U7CiAKIAljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDtzdGFydCk7Ci0JZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyBpJiM0MzsmIzQzOykKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyBpJiM0MzsmIzQzOykgewogCQl2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltpXSA9IC0xOwomIzQzOwkJdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTsKJiM0MzsJfQogCiAJLyoKIAkgKiBVc2UgMTAwJSB3cml0ZXMgZHVyaW5nIHRoZSBwb3B1bGF0aW9uIHBoYXNlIHRvIGVuc3VyZSBhbGwKQEAgLTE5NSw2ICYjNDM7MjUwLDIxIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpCiAJCXByX2luZm8oJiMzNDtJdGVyYXRpb24gJWQgZGlydHkgbWVtb3J5IHRpbWU6ICVsZC4lLjlsZHNcbiYjMzQ7LAogCQkJaXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTsKIAomIzQzOwkJaWYgKGRpcnR5X3Jpbmdfc2l6ZSkgewomIzQzOwkJCXN0cnVjdCB0aW1lc3BlYyBpdGVyYXRpb25fc3VtID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07CiYjNDM7CiYjNDM7CQkJZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyBpJiM0MzsmIzQzOykKJiM0MzsJCQkJaXRlcmF0aW9uX3N1bSA9IHRpbWVzcGVjX2FkZChpdGVyYXRpb25fc3VtLAomIzQzOwkJCQkJCQkgICAgIHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldKTsKJiM0MzsKJiM0MzsJCQlwcl9pbmZvKCYjMzQ7SXRlcmF0aW9uICVkIGNsZWFyIGRpcnR5IHJpbmcgdGltZTogJWxkLiUuOWxkc1xuJiMzNDssCiYjNDM7CQkJCWl0ZXJhdGlvbiwgaXRlcmF0aW9uX3N1bS50dl9zZWMsIGl0ZXJhdGlvbl9zdW0udHZfbnNlYyk7CiYjNDM7CiYjNDM7CQkJY2xlYXJfZGlydHlfbG9nX3RvdGFsID0gdGltZXNwZWNfYWRkKGNsZWFyX2RpcnR5X2xvZ190b3RhbCwKJiM0MzsJCQkJCQkJICAgICBpdGVyYXRpb25fc3VtKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKIAkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7c3RhcnQpOwogCQltZW1zdHJlc3NfZ2V0X2RpcnR5X2xvZyh2bSwgYml0bWFwcywgcC0mZ3Q7c2xvdHMpOwogCQl0c19kaWZmID0gdGltZXNwZWNfZWxhcHNlZChzdGFydCk7CkBAIC0yMzgsMTIgJiM0MzszMDgsMTQgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZykKIAlob3N0X3F1aXQgPSB0cnVlOwogCW1lbXN0cmVzc19qb2luX3ZjcHVfdGhyZWFkcyhucl92Y3B1cyk7CiAKLQlhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC0mZ3Q7aXRlcmF0aW9ucyk7Ci0JcHJfaW5mbygmIzM0O0dldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXG4mIzM0OywKLQkJcC0mZ3Q7aXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsCi0JCWdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpOwomIzQzOwlpZiAoIWRpcnR5X3Jpbmdfc2l6ZSkgewomIzQzOwkJYXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtJmd0O2l0ZXJhdGlvbnMpOwomIzQzOwkJcHJfaW5mbygmIzM0O0dldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXG4mIzM0OywKJiM0MzsJCQlwLSZndDtpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYywKJiM0MzsJCQlnZXRfZGlydHlfbG9nX3RvdGFsLnR2X25zZWMsIGF2Zy50dl9zZWMsIGF2Zy50dl9uc2VjKTsKJiM0MzsJfQogCi0JaWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcykgewomIzQzOwlpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzIHx8IGRpcnR5X3Jpbmdfc2l6ZSkgewogCQlhdmcgPSB0aW1lc3BlY19kaXYoY2xlYXJfZGlydHlfbG9nX3RvdGFsLCBwLSZndDtpdGVyYXRpb25zKTsKIAkJcHJfaW5mbygmIzM0O0NsZWFyIGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcbiYjMzQ7LAogCQkJcC0mZ3Q7aXRlcmF0aW9ucywgY2xlYXJfZGlydHlfbG9nX3RvdGFsLnR2X3NlYywKQEAgLTI2NCw2ICYjNDM7MzM2LDkgQEAgc3RhdGljIHZvaWQgaGVscChjaGFyICpuYW1lKQogCXByaW50ZigmIzM0OyAtYTogYWNjZXNzIG1lbW9yeSByYW5kb21seSByYXRoZXIgdGhhbiBpbiBvcmRlci5cbiYjMzQ7KTsKIAlwcmludGYoJiMzNDsgLWk6IHNwZWNpZnkgaXRlcmF0aW9uIGNvdW50cyAoZGVmYXVsdDogJSYjMzQ7UFJJdTY0JiMzNDspXG4mIzM0OywKIAkgICAgICAgVEVTVF9IT1NUX0xPT1BfTik7CiYjNDM7CXByaW50ZigmIzM0OyAtZDogc3BlY2lmeSB0aGUgc2l6ZSBvZiBkaXJ0eS1yaW5nIGZvciB0cmFja2luZyBkaXJ0eSBwYWdlcy5cbiYjMzQ7CiYjNDM7CSAgICAgICAmIzM0OyAgICAgSWYgbm9uLXplcm8sIHdpbGwgY2F1c2UgZGlydHktcmluZyB0byBiZSB1c2VkIGluc3RlYWQgb2ZcbiYjMzQ7CiYjNDM7CSAgICAgICAmIzM0OyAgICAgZGlydHktYml0bWFwLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLiYjMzQ7KTsKIAlwcmludGYoJiMzNDsgLWc6IERvIG5vdCBlbmFibGUgS1ZNX0NBUF9NQU5VQUxfRElSVFlfTE9HX1BST1RFQ1QyLiBUaGlzXG4mIzM0OwogCSAgICAgICAmIzM0OyAgICAgbWFrZXMgS1ZNX0dFVF9ESVJUWV9MT0cgY2xlYXIgdGhlIGRpcnR5IGxvZyAoaS5lLlxuJiMzNDsKIAkgICAgICAgJiMzNDsgICAgIEtWTV9ESVJUWV9MT0dfTUFOVUFMX1BST1RFQ1RfRU5BQkxFIGlzIG5vdCBlbmFibGVkKVxuJiMzNDsKQEAgLTMyMCw3ICYjNDM7Mzk1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KCk7CiAKLQl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAmIzM0O2FiOmM6ZWdoaTptOm5vcDpyOnM6djp4Onc6JiMzNDspKSAhPSAtMSkgewomIzQzOwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAmIzM0O2FiOmM6ZDplZ2hpOm06bm9wOnI6czp2Ong6dzomIzM0OykpICE9IC0xKSB7CiAJCXN3aXRjaCAob3B0KSB7CiAJCWNhc2UgJiMzOTthJiMzOTs6CiAJCQlwLnJhbmRvbV9hY2Nlc3MgPSB0cnVlOwpAQCAtMzMxLDYgJiM0Mzs0MDYsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJY2FzZSAmIzM5O2MmIzM5OzoKIAkJCXBjcHVfbGlzdCA9IG9wdGFyZzsKIAkJCWJyZWFrOwomIzQzOwkJY2FzZSAmIzM5O2QmIzM5OzoKJiM0MzsJCQlkaXJ0eV9yaW5nX3NpemUgPSBwYXJzZV9zaXplKG9wdGFyZyk7CiYjNDM7CQkJZGlydHlfcmluZ19zaXplICo9IHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7CiYjNDM7CQkJZGlydHlfbG9nX21hbnVhbF9jYXBzID0gMDsKJiM0MzsJCQlicmVhazsKIAkJY2FzZSAmIzM5O2UmIzM5OzoKIAkJCS8qICYjMzk7ZSYjMzk7IGlzIGZvciBldmlsLiAqLwogCQkJcnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmgKaW5kZXggMGQxZDYyMzBjYzA1MWIuLmUxN2YzNDQ5NzhhZjY2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaApAQCAtNTgsNyAmIzQzOzU4LDggQEAgZXh0ZXJuIHN0cnVjdCBtZW1zdHJlc3NfYXJncyBtZW1zdHJlc3NfYXJnczsKIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cywKIAkJCQkgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cywKIAkJCQkgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLAotCQkJCSAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7CiYjNDM7CQkJCSAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywKJiM0MzsJCQkJICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSk7CiB2b2lkIG1lbXN0cmVzc19kZXN0cm95X3ZtKHN0cnVjdCBrdm1fdm0gKnZtKTsKIAogdm9pZCBtZW1zdHJlc3Nfc2V0X3dyaXRlX3BlcmNlbnQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB3cml0ZV9wZXJjZW50KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYwppbmRleCAxOTVmM2ZkYWUxZTM5Ni4uMjM3ZjBjZTBhZTYwMDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMKQEAgLTE2NywxMCAmIzQzOzE2NywyMCBAQCB1bnNpZ25lZCBpbnQga3ZtX2NoZWNrX2NhcChsb25nIGNhcCkKIAogdm9pZCB2bV9lbmFibGVfZGlydHlfcmluZyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHJpbmdfc2l6ZSkKIHsKLQlpZiAodm1fY2hlY2tfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwpKQotCQl2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwsIHJpbmdfc2l6ZSk7Ci0JZWxzZQotCQl2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HLCByaW5nX3NpemUpOwomIzQzOwlsb25nIGNhcCA9IEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTDsKJiM0MzsJaW50IG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApOwomIzQzOwomIzQzOwlpZiAoIW1heF9zaXplKSB7CiYjNDM7CQljYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HOwomIzQzOwkJbWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJVEVTVF9BU1NFUlQocmluZ19zaXplICZsdDs9IG1heF9zaXplICZhbXA7JmFtcDsgaXNfcG93ZXJfb2ZfMihyaW5nX3NpemUpLAomIzQzOwkJICAgICYjMzQ7SW52YWxpZCBkaXJ0eS1yaW5nIHNpemU6IFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byAmIzM0OwomIzQzOwkJICAgICYjMzQ7c21hbGxlciB0aGFuICVkIGVudHJpZXNcbiYjMzQ7LAomIzQzOwkJICAgIG1heF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKSk7CiYjNDM7CiYjNDM7CXZtX2VuYWJsZV9jYXAodm0sIGNhcCwgcmluZ19zaXplKTsKIAl2bS0mZ3Q7ZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplOwogfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYwppbmRleCA2ZGNkMTU5MTBhMDYwOC4uYzlmODU1MzNmZmZmZGMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYwpAQCAtMTIxLDEwICYjNDM7MTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsCiAJfQogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUsCiYjNDM7CQkJCQkJICAgICB1MzIgbnJfdmNwdXMsCiYjNDM7CQkJCQkJICAgICB1NjQgZXh0cmFfbWVtX3BhZ2VzLAomIzQzOwkJCQkJCSAgICAgdm9pZCAqZ3Vlc3RfY29kZSwKJiM0MzsJCQkJCQkgICAgIHN0cnVjdCBrdm1fdmNwdSAqdmNwdXNbXSwKJiM0MzsJCQkJCQkgICAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKCFucl92Y3B1cyB8fCB2Y3B1cywgJiMzNDtNdXN0IHByb3ZpZGUgdkNQVSBhcnJheSYjMzQ7KTsKJiM0MzsKJiM0MzsJdm0gPSBfX3ZtX2NyZWF0ZShzaGFwZSwgbnJfdmNwdXMsIGV4dHJhX21lbV9wYWdlcyk7CiYjNDM7CiYjNDM7CWlmIChkaXJ0eV9yaW5nX3NpemUpCiYjNDM7CQl2bV9lbmFibGVfZGlydHlfcmluZyh2bSwgZGlydHlfcmluZ19zaXplKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyAmIzQzOyYjNDM7aSkKJiM0MzsJCXZjcHVzW2ldID0gdm1fdmNwdV9hZGQodm0sIGksIGd1ZXN0X2NvZGUpOwomIzQzOwomIzQzOwlrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7CiYjNDM7CXJldHVybiB2bTsKJiM0Mzt9CiYjNDM7CiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsCiAJCQkJICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsCiAJCQkJICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYywKLQkJCQkgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpCiYjNDM7CQkJCSAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywKJiM0MzsJCQkJICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSkKIHsKIAlzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgKmFyZ3MgPSAmYW1wO21lbXN0cmVzc19hcmdzOwogCXN0cnVjdCBrdm1fdm0gKnZtOwpAQCAtMTY3LDkgJiM0MzsxOTIsMTAgQEAgc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLAogCSAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0JiMzOTtzIGEgYmVuaWduIHNpZGUKIAkgKiBlZmZlY3QgYXMgS1ZNIGFsbG93cyBhbGlhc2luZyBIVkFzIGluIG1lc2xvdHMuCiAJICovCi0Jdm0gPSBfX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKFZNX1NIQVBFKG1vZGUpLCBucl92Y3B1cywKLQkJCQkgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLAotCQkJCSAgICBtZW1zdHJlc3NfZ3Vlc3RfY29kZSwgdmNwdXMpOwomIzQzOwl2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsCiYjNDM7CQkJCQkgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLAomIzQzOwkJCQkJICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cywKJiM0MzsJCQkJCSAgICBkaXJ0eV9yaW5nX3NpemUpOwogCiAJYXJncy0mZ3Q7dm0gPSB2bTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuYwppbmRleCA5Yzc1NzhhMDk4YzNlMS4uM2ExYmU5Yjc1ZTAxZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jCkBAIC05MCw3ICYjNDM7OTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsCiAJCQkJIFZNX01FTV9TUkNfQU5PTllNT1VTLAotCQkJCSBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3BhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApOwogI2lmZGVmIF9feDg2XzY0X18KIAlpZiAocC0mZ3Q7ZGlzYWJsZV9zbG90X3phcF9xdWlyaykKIAkJdm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVNBQkxFX1FVSVJLUzIsIEtWTV9YODZfUVVJUktfU0xPVF9aQVBfQUxMKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYwppbmRleCAzODhiYTQxMDFmOTczNi4uNjYxZTlhYmZiNDM5NWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmMKQEAgLTEwMSw3ICYjNDM7MTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZCkKIAlzdHJ1Y3Qga3ZtX3BhZ2Vfc3RhdHMgc3RhdHNfcmVwb3B1bGF0ZWQ7CiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgVkNQVVMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwKLQkJCQkgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSk7CiYjNDM7CQkJCSBTTE9UUywgYmFja2luZ19zcmMsIGZhbHNlLCAwKTsKIAogCWd1ZXN0X251bV9wYWdlcyA9IChWQ1BVUyAqIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSkgJmd0OyZndDsgdm0tJmd0O3BhZ2Vfc2hpZnQ7CiAJZ3Vlc3RfbnVtX3BhZ2VzID0gdm1fYWRqdXN0X251bV9ndWVzdF9wYWdlcyhtb2RlLCBndWVzdF9udW1fcGFnZXMpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTQwCgkJCQkJCQlvdXRwdXQ6IDY3CgkJCQkJCQl0aG91Z2h0czogNTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBLVk0gU2VsZnRlc3RzIFBhdGNoIFNlcmllcyoqCgpPa2F5LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgbW9kaWZ5aW5nIEtWTSBzZWxmdGVzdHMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8qYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGlzOyB0aGUgZGlmZiBpbmNsdWRlcyBjaGFuZ2VzIHRvOiBgYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jYCwgYGRlbWFuZF9wYWdpbmdfdGVzdC5jYCwgYGRpcnR5X2xvZ19wZXJmX3Rlc3QuY2AsIGBpbmNsdWRlL21lbXN0cmVzcy5oYCwgYGxpYi9rdm1fdXRpbC5jYCwgYGxpYi9tZW1zdHJlc3MuY2AsIGBtZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jYCwgYW5kIGB4ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY2AuIFllcywgaXQgYWxsIHNlZW1zIGlzb2xhdGVkIHRvIHRoYXQgZGlyZWN0b3J5LgoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBtYXJrIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBjb25jZXJucyB0aGluZ3MgbGlrZSBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBvciBub24tZnVuY3Rpb25hbCBjb25zdGFudHMuIEl0IGV4cGxpY2l0bHkgZXhjbHVkZXMgbW9kaWZpY2F0aW9ucyB0byBjb2RlIHRoYXQgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkFoYSEgVGhlc2UgYXJlICpzZWxmdGVzdHMqLiBTZWxmdGVzdHMgYXJlIHVzZXJzcGFjZSBwcm9ncmFtcyBkZXNpZ25lZCB0byBleGVyY2lzZSBhbmQgdmFsaWRhdGUga2VybmVsIGZ1bmN0aW9uYWxpdHksIGJ1dCB0aGV5IGFyZSBub3QgdGhlbXNlbHZlcyBwYXJ0IG9mIHRoZSBrZXJuZWwgY29kZS4gSWYgdGhlIGtlcm5lbCBsb2dpYyBpc24mIzM5O3QgY2hhbmdlZCwgdGhlcmUmIzM5O3Mgbm8gbmVlZCB0byBmdXp6IHRoZSBrZXJuZWwgYmFzZWQgb24gY2hhbmdlcyB0byB0aGVzZSB0ZXN0cy4gVGhlcmVmb3JlLCBmdXp6aW5nIHRoZSBrZXJuZWwgYmFzZWQgb24gdGhlc2UgY2hhbmdlcyBkb2VzbiYjMzk7dCBtYWtlIHNlbnNlLiBUaGUga2VybmVsJiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eSBoYXNuJiMzOTt0IGJlZW4gbW9kaWZpZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZpbGVzIGludm9sdmVkLiBOb3BlLCBpdCYjMzk7cyBleGNsdXNpdmVseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8uLi5gLgoKVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IFRoaXMgcGF0Y2ggc2VyaWVzIGlzIG1vZGlmeWluZyB1c2VyLXNwYWNlIEtWTSBzZWxmdGVzdHMgb25seS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLiBUaHVzLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgY2FuIGJlIGVtcHR5IGFycmF5cyBhcyB3ZWxsLiBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGVzZSByZXN1bHRzIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLywgd2hpY2ggaXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjI2OjEzLjY1NjE4NjA5OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1NjE5NDEyNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzoyNjoxMy42NTYxOTE3NDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMDcxOTcxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDliMjVmZWM5YWRlYzA1MDcwNzk4ZDNlNTAxMDM3OTEyYTZhZjA3ZTZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTc6MjY6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcXG5pbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcXG5AQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXFxuIFxcdGludCBucl92Y3B1cyA9IHBhcmFtcy1cXHUwMDNlbnJfdmNwdXM7XFxuIFxcbiBcXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy1cXHUwMDNldmNwdV9tZW1vcnlfYnl0ZXMsIDEsXFxuLVxcdFxcdFxcdFxcdCBwYXJhbXMtXFx1MDAzZWJhY2tpbmdfc3JjLCAhb3ZlcmxhcF9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHBhcmFtcy1cXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MsIDApO1xcbiBcXG4gXFx0LypcXG4gXFx0ICogSWYgZ3Vlc3RfcGFnZV9zaXplIGlzIGxhcmdlciB0aGFuIHRoZSBob3N0J3MgcGFnZSBzaXplLCB0aGVcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXFxuaW5kZXggMzAyYzQ5MjNkMDkzMGYuLjkyMjQ2ZTI3ZWY3NDQ3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xcbkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFx0aW50IGksIG51bV91ZmZkcyA9IDA7XFxuIFxcbiBcXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwgMSxcXG4tXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXNyY190eXBlLCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXNyY190eXBlLCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTtcXG4gXFxuIFxcdGRlbWFuZF9wYWdpbmdfc2l6ZSA9IGdldF9iYWNraW5nX3NyY19wYWdlc3oocC1cXHUwMDNlc3JjX3R5cGUpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcXG5pbmRleCBlZjc3OWZhOTE4MjdjOS4uNjU5ZWZhNjc5YmM3NDQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcXG5AQCAtMTMsNiArMTMsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjdGltZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjcHRocmVhZC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0bWFwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vYmFycmllci5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcImt2bV91dGlsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3V0aWwuaFxcXCJcXG5AQCAtMjksOSArMzAsNDMgQEAgc3RhdGljIGJvb2wgcnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nO1xcbiBcXG4gLyogSG9zdCB2YXJpYWJsZXMgKi9cXG4gc3RhdGljIHU2NCBkaXJ0eV9sb2dfbWFudWFsX2NhcHM7XFxuK3N0YXRpYyB1MzIgZGlydHlfcmluZ19zaXplO1xcbiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7XFxuIHN0YXRpYyBpbnQgaXRlcmF0aW9uO1xcbiBzdGF0aWMgaW50IHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW0tWTV9NQVhfVkNQVVNdO1xcbitzdGF0aWMgc3RydWN0IHRpbWVzcGVjIHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W0tWTV9NQVhfVkNQVVNdO1xcbitcXG4rc3RhdGljIHZvaWQgZGlydHlfcmluZ19jb2xsZWN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICpyaW5nX2lkeCxcXG4rXFx0XFx0XFx0XFx0c3RydWN0IHRpbWVzcGVjICp0cylcXG4re1xcbitcXHRzdHJ1Y3QgdGltZXNwZWMgc3RhcnQ7XFxuK1xcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpkaXJ0eV9nZm5zID0gdmNwdV9tYXBfZGlydHlfcmluZyh2Y3B1KTtcXG4rXFx0dTMyIHJldCwgaWR4ID0gKnJpbmdfaWR4O1xcbitcXHR1MzIgcmluZ19zaXplID0gdmNwdS1cXHUwMDNldm0tXFx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcXG4rXFxuK1xcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcXHUwMDI2c3RhcnQpO1xcbitcXG4rXFx0d2hpbGUgKHRydWUpIHtcXG4rXFx0XFx0c3RydWN0IGt2bV9kaXJ0eV9nZm4gKmN1cjtcXG4rXFxuK1xcdFxcdGN1ciA9IFxcdTAwMjZkaXJ0eV9nZm5zW2lkeCAlIHJpbmdfc2l6ZV07XFxuK1xcdFxcdGlmIChzbXBfbG9hZF9hY3F1aXJlKFxcdTAwMjZjdXItXFx1MDAzZWZsYWdzKSAhPSBLVk1fRElSVFlfR0ZOX0ZfRElSVFkpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNmN1ci1cXHUwMDNlZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7XFxuK1xcdFxcdGlkeCsrO1xcbitcXHR9XFxuK1xcbitcXHRpZHggLT0gKnJpbmdfaWR4O1xcbitcXHQqcmluZ19pZHggKz0gaWR4O1xcbitcXG4rXFx0cmV0ID0ga3ZtX3ZtX3Jlc2V0X2RpcnR5X3JpbmcodmNwdS1cXHUwMDNldm0pO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQocmV0ID09IGlkeCwgXFxcIlJlc2V0IGRpcnR5IHBhZ2VzICgldSkgbWlzbWF0Y2ggXFxcIlxcbitcXHRcXHQgICAgXFxcIndpdGggY29sbGVjdGVkICgldSlcXFwiLCByZXQsIGlkeCk7XFxuK1xcbitcXHQqdHMgPSB0aW1lc3BlY19hZGQoKnRzLCB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KSk7XFxuK31cXG4gXFxuIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXFxuIHtcXG5AQCAtNDMsMTkgKzc4LDM2IEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXFxuIFxcdHN0cnVjdCB0aW1lc3BlYyB0c19kaWZmO1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWMgdG90YWwgPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcXG4gXFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcXG4rXFx0Ym9vbCB1c2VfZGlydHlfcmluZyA9ICEhdmNwdS1cXHUwMDNldm0tXFx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcXG4rXFx0dTMyIHJpbmdfaWR4ID0gMDtcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdHJ1biA9IHZjcHUtXFx1MDAzZXJ1bjtcXG4gXFxuIFxcdHdoaWxlICghUkVBRF9PTkNFKGhvc3RfcXVpdCkpIHtcXG4gXFx0XFx0aW50IGN1cnJlbnRfaXRlcmF0aW9uID0gUkVBRF9PTkNFKGl0ZXJhdGlvbik7XFxuK1xcdFxcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XFxuIFxcbiBcXHRcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4tXFx0XFx0cmV0ID0gX3ZjcHVfcnVuKHZjcHUpO1xcbitcXG4rXFx0XFx0ZG8ge1xcbitcXHRcXHRcXHRyZXQgPSBfdmNwdV9ydW4odmNwdSk7XFxuK1xcdFxcdFxcdGlmICghdXNlX2RpcnR5X3JpbmcpXFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0XFx0ZGlydHlfcmluZ19jb2xsZWN0KHZjcHUsIFxcdTAwMjZyaW5nX2lkeCwgXFx1MDAyNmNvbGxlY3QpO1xcbitcXHRcXHR9IHdoaWxlIChyZXQgPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKTtcXG4rXFxuIFxcdFxcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcXG4gXFxuK1xcdFxcdGlmICh1c2VfZGlydHlfcmluZykge1xcbitcXHRcXHRcXHR0c19kaWZmID0gdGltZXNwZWNfc3ViKHRzX2RpZmYsIGNvbGxlY3QpO1xcbitcXHRcXHRcXHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRURVNUX0FTU0VSVChyZXQgPT0gMCwgXFxcInZjcHVfcnVuIGZhaWxlZDogJWRcXFwiLCByZXQpO1xcbi1cXHRcXHRURVNUX0FTU0VSVChnZXRfdWNhbGwodmNwdSwgTlVMTCkgPT0gVUNBTExfU1lOQyxcXG4rXFx0XFx0VEVTVF9BU1NFUlQoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpID09IFVDQUxMX1NZTkMgfHxcXG4rXFx0XFx0XFx0ICAgICh1c2VfZGlydHlfcmluZyBcXHUwMDI2XFx1MDAyNiBydW4tXFx1MDAzZWV4aXRfcmVhc29uID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCksXFxuIFxcdFxcdFxcdCAgICBcXFwiSW52YWxpZCBndWVzdCBzeW5jIHN0YXR1czogZXhpdF9yZWFzb249JXNcXFwiLFxcbiBcXHRcXHRcXHQgICAgZXhpdF9yZWFzb25fc3RyKHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24pKTtcXG4gXFxuQEAgLTExOSw3ICsxNzEsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXG4gXFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXFxuIFxcdFxcdFxcdFxcdCBwLVxcdTAwM2VzbG90cywgcC1cXHUwMDNlYmFja2luZ19zcmMsXFxuLVxcdFxcdFxcdFxcdCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXFxuK1xcdFxcdFxcdFxcdCBkaXJ0eV9yaW5nX3NpemUpO1xcbiBcXG4gXFx0bWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHZtLCBwLVxcdTAwM2V3cml0ZV9wZXJjZW50KTtcXG4gXFxuQEAgLTEzOSw4ICsxOTIsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFx0aG9zdF9xdWl0ID0gZmFsc2U7XFxuIFxcbiBcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3ZjcHVzOyBpKyspXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgaSsrKSB7XFxuIFxcdFxcdHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW2ldID0gLTE7XFxuK1xcdFxcdHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XFxuK1xcdH1cXG4gXFxuIFxcdC8qXFxuIFxcdCAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbFxcbkBAIC0xOTUsNiArMjUwLDIxIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXFxuIFxcdFxcdHByX2luZm8oXFxcIkl0ZXJhdGlvbiAlZCBkaXJ0eSBtZW1vcnkgdGltZTogJWxkLiUuOWxkc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0aXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTtcXG4gXFxuK1xcdFxcdGlmIChkaXJ0eV9yaW5nX3NpemUpIHtcXG4rXFx0XFx0XFx0c3RydWN0IHRpbWVzcGVjIGl0ZXJhdGlvbl9zdW0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcXG4rXFxuK1xcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgaSsrKVxcbitcXHRcXHRcXHRcXHRpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pO1xcbitcXG4rXFx0XFx0XFx0cHJfaW5mbyhcXFwiSXRlcmF0aW9uICVkIGNsZWFyIGRpcnR5IHJpbmcgdGltZTogJWxkLiUuOWxkc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0aXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTtcXG4rXFxuK1xcdFxcdFxcdGNsZWFyX2RpcnR5X2xvZ190b3RhbCA9IHRpbWVzcGVjX2FkZChjbGVhcl9kaXJ0eV9sb2dfdG90YWwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgaXRlcmF0aW9uX3N1bSk7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4gXFx0XFx0bWVtc3RyZXNzX2dldF9kaXJ0eV9sb2codm0sIGJpdG1hcHMsIHAtXFx1MDAzZXNsb3RzKTtcXG4gXFx0XFx0dHNfZGlmZiA9IHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpO1xcbkBAIC0yMzgsMTIgKzMwOCwxNCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXHRob3N0X3F1aXQgPSB0cnVlO1xcbiBcXHRtZW1zdHJlc3Nfam9pbl92Y3B1X3RocmVhZHMobnJfdmNwdXMpO1xcbiBcXG4tXFx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXFx1MDAzZWl0ZXJhdGlvbnMpO1xcbi1cXHRwcl9pbmZvKFxcXCJHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcXFxuXFxcIixcXG4tXFx0XFx0cC1cXHUwMDNlaXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXFxuLVxcdFxcdGdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpO1xcbitcXHRpZiAoIWRpcnR5X3Jpbmdfc2l6ZSkge1xcbitcXHRcXHRhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC1cXHUwMDNlaXRlcmF0aW9ucyk7XFxuK1xcdFxcdHByX2luZm8oXFxcIkdldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRwLVxcdTAwM2VpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcXG4rXFx0XFx0XFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XFxuK1xcdH1cXG4gXFxuLVxcdGlmIChkaXJ0eV9sb2dfbWFudWFsX2NhcHMpIHtcXG4rXFx0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcyB8fCBkaXJ0eV9yaW5nX3NpemUpIHtcXG4gXFx0XFx0YXZnID0gdGltZXNwZWNfZGl2KGNsZWFyX2RpcnR5X2xvZ190b3RhbCwgcC1cXHUwMDNlaXRlcmF0aW9ucyk7XFxuIFxcdFxcdHByX2luZm8oXFxcIkNsZWFyIGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcXFxcblxcXCIsXFxuIFxcdFxcdFxcdHAtXFx1MDAzZWl0ZXJhdGlvbnMsIGNsZWFyX2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXFxuQEAgLTI2NCw2ICszMzYsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNoYXIgKm5hbWUpXFxuIFxcdHByaW50ZihcXFwiIC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxcXFxuXFxcIik7XFxuIFxcdHByaW50ZihcXFwiIC1pOiBzcGVjaWZ5IGl0ZXJhdGlvbiBjb3VudHMgKGRlZmF1bHQ6ICVcXFwiUFJJdTY0XFxcIilcXFxcblxcXCIsXFxuIFxcdCAgICAgICBURVNUX0hPU1RfTE9PUF9OKTtcXG4rXFx0cHJpbnRmKFxcXCIgLWQ6IHNwZWNpZnkgdGhlIHNpemUgb2YgZGlydHktcmluZyBmb3IgdHJhY2tpbmcgZGlydHkgcGFnZXMuXFxcXG5cXFwiXFxuK1xcdCAgICAgICBcXFwiICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxcXFxuXFxcIlxcbitcXHQgICAgICAgXFxcIiAgICAgZGlydHktYml0bWFwLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLlxcXCIpO1xcbiBcXHRwcmludGYoXFxcIiAtZzogRG8gbm90IGVuYWJsZSBLVk1fQ0FQX01BTlVBTF9ESVJUWV9MT0dfUFJPVEVDVDIuIFRoaXNcXFxcblxcXCJcXG4gXFx0ICAgICAgIFxcXCIgICAgIG1ha2VzIEtWTV9HRVRfRElSVFlfTE9HIGNsZWFyIHRoZSBkaXJ0eSBsb2cgKGkuZS5cXFxcblxcXCJcXG4gXFx0ICAgICAgIFxcXCIgICAgIEtWTV9ESVJUWV9MT0dfTUFOVUFMX1BST1RFQ1RfRU5BQkxFIGlzIG5vdCBlbmFibGVkKVxcXFxuXFxcIlxcbkBAIC0zMjAsNyArMzk1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFxuIFxcdGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KCk7XFxuIFxcbi1cXHR3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCBcXFwiYWI6YzplZ2hpOm06bm9wOnI6czp2Ong6dzpcXFwiKSkgIT0gLTEpIHtcXG4rXFx0d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgXFxcImFiOmM6ZDplZ2hpOm06bm9wOnI6czp2Ong6dzpcXFwiKSkgIT0gLTEpIHtcXG4gXFx0XFx0c3dpdGNoIChvcHQpIHtcXG4gXFx0XFx0Y2FzZSAnYSc6XFxuIFxcdFxcdFxcdHAucmFuZG9tX2FjY2VzcyA9IHRydWU7XFxuQEAgLTMzMSw2ICs0MDYsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0Y2FzZSAnYyc6XFxuIFxcdFxcdFxcdHBjcHVfbGlzdCA9IG9wdGFyZztcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgJ2QnOlxcbitcXHRcXHRcXHRkaXJ0eV9yaW5nX3NpemUgPSBwYXJzZV9zaXplKG9wdGFyZyk7XFxuK1xcdFxcdFxcdGRpcnR5X3Jpbmdfc2l6ZSAqPSBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pO1xcbitcXHRcXHRcXHRkaXJ0eV9sb2dfbWFudWFsX2NhcHMgPSAwO1xcbitcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSAnZSc6XFxuIFxcdFxcdFxcdC8qICdlJyBpcyBmb3IgZXZpbC4gKi9cXG4gXFx0XFx0XFx0cnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxcbmluZGV4IDBkMWQ2MjMwY2MwNTFiLi5lMTdmMzQ0OTc4YWY2NiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXFxuQEAgLTU4LDcgKzU4LDggQEAgZXh0ZXJuIHN0cnVjdCBtZW1zdHJlc3NfYXJncyBtZW1zdHJlc3NfYXJncztcXG4gc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLFxcbiBcXHRcXHRcXHRcXHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcXG4gXFx0XFx0XFx0XFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcXG4tXFx0XFx0XFx0XFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLFxcbitcXHRcXHRcXHRcXHQgICB1MzIgZGlydHlfcmluZ19zaXplKTtcXG4gdm9pZCBtZW1zdHJlc3NfZGVzdHJveV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSk7XFxuIFxcbiB2b2lkIG1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHdyaXRlX3BlcmNlbnQpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG5pbmRleCAxOTVmM2ZkYWUxZTM5Ni4uMjM3ZjBjZTBhZTYwMDYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXFxuQEAgLTE2NywxMCArMTY3LDIwIEBAIHVuc2lnbmVkIGludCBrdm1fY2hlY2tfY2FwKGxvbmcgY2FwKVxcbiBcXG4gdm9pZCB2bV9lbmFibGVfZGlydHlfcmluZyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHJpbmdfc2l6ZSlcXG4ge1xcbi1cXHRpZiAodm1fY2hlY2tfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwpKVxcbi1cXHRcXHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwsIHJpbmdfc2l6ZSk7XFxuLVxcdGVsc2VcXG4tXFx0XFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklORywgcmluZ19zaXplKTtcXG4rXFx0bG9uZyBjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw7XFxuK1xcdGludCBtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTtcXG4rXFxuK1xcdGlmICghbWF4X3NpemUpIHtcXG4rXFx0XFx0Y2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklORztcXG4rXFx0XFx0bWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7XFxuK1xcdH1cXG4rXFxuK1xcdFRFU1RfQVNTRVJUKHJpbmdfc2l6ZSBcXHUwMDNjPSBtYXhfc2l6ZSBcXHUwMDI2XFx1MDAyNiBpc19wb3dlcl9vZl8yKHJpbmdfc2l6ZSksXFxuK1xcdFxcdCAgICBcXFwiSW52YWxpZCBkaXJ0eS1yaW5nIHNpemU6IFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byBcXFwiXFxuK1xcdFxcdCAgICBcXFwic21hbGxlciB0aGFuICVkIGVudHJpZXNcXFxcblxcXCIsXFxuK1xcdFxcdCAgICBtYXhfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbikpO1xcbitcXG4rXFx0dm1fZW5hYmxlX2NhcCh2bSwgY2FwLCByaW5nX3NpemUpO1xcbiBcXHR2bS1cXHUwMDNlZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplO1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xcbmluZGV4IDZkY2QxNTkxMGEwNjA4Li5jOWY4NTUzM2ZmZmZkYyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xcbkBAIC0xMjEsMTAgKzEyMSwzNSBAQCB2b2lkIG1lbXN0cmVzc19zZXR1cF92Y3B1cyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgaW50IG5yX3ZjcHVzLFxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoc3RydWN0IHZtX3NoYXBlIHNoYXBlLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHUzMiBucl92Y3B1cyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICB1NjQgZXh0cmFfbWVtX3BhZ2VzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHZvaWQgKmd1ZXN0X2NvZGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGt2bV92Y3B1ICp2Y3B1c1tdLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXFxuK3tcXG4rXFx0c3RydWN0IGt2bV92bSAqdm07XFxuK1xcdGludCBpO1xcbitcXG4rXFx0VEVTVF9BU1NFUlQoIW5yX3ZjcHVzIHx8IHZjcHVzLCBcXFwiTXVzdCBwcm92aWRlIHZDUFUgYXJyYXlcXFwiKTtcXG4rXFxuK1xcdHZtID0gX192bV9jcmVhdGUoc2hhcGUsIG5yX3ZjcHVzLCBleHRyYV9tZW1fcGFnZXMpO1xcbitcXG4rXFx0aWYgKGRpcnR5X3Jpbmdfc2l6ZSlcXG4rXFx0XFx0dm1fZW5hYmxlX2RpcnR5X3Jpbmcodm0sIGRpcnR5X3Jpbmdfc2l6ZSk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfdmNwdXM7ICsraSlcXG4rXFx0XFx0dmNwdXNbaV0gPSB2bV92Y3B1X2FkZCh2bSwgaSwgZ3Vlc3RfY29kZSk7XFxuK1xcbitcXHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XFxuK1xcdHJldHVybiB2bTtcXG4rfVxcbitcXG4gc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLFxcbiBcXHRcXHRcXHRcXHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcXG4gXFx0XFx0XFx0XFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcXG4tXFx0XFx0XFx0XFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKVxcbitcXHRcXHRcXHRcXHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXFxuK1xcdFxcdFxcdFxcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXFxuIHtcXG4gXFx0c3RydWN0IG1lbXN0cmVzc19hcmdzICphcmdzID0gXFx1MDAyNm1lbXN0cmVzc19hcmdzO1xcbiBcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG5AQCAtMTY3LDkgKzE5MiwxMCBAQCBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXFxuIFxcdCAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0J3MgYSBiZW5pZ24gc2lkZVxcbiBcXHQgKiBlZmZlY3QgYXMgS1ZNIGFsbG93cyBhbGlhc2luZyBIVkFzIGluIG1lc2xvdHMuXFxuIFxcdCAqL1xcbi1cXHR2bSA9IF9fdm1fY3JlYXRlX3dpdGhfdmNwdXMoVk1fU0hBUEUobW9kZSksIG5yX3ZjcHVzLFxcbi1cXHRcXHRcXHRcXHQgICAgc2xvdDBfcGFnZXMgKyBndWVzdF9udW1fcGFnZXMsXFxuLVxcdFxcdFxcdFxcdCAgICBtZW1zdHJlc3NfZ3Vlc3RfY29kZSwgdmNwdXMpO1xcbitcXHR2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICBzbG90MF9wYWdlcyArIGd1ZXN0X251bV9wYWdlcyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGRpcnR5X3Jpbmdfc2l6ZSk7XFxuIFxcbiBcXHRhcmdzLVxcdTAwM2V2bSA9IHZtO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xcbmluZGV4IDljNzU3OGEwOThjM2UxLi4zYTFiZTliNzVlMDFkYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXFxuQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFxuIFxcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLCAxLFxcbiBcXHRcXHRcXHRcXHQgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXFxuLVxcdFxcdFxcdFxcdCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xcbiAjaWZkZWYgX194ODZfNjRfX1xcbiBcXHRpZiAocC1cXHUwMDNlZGlzYWJsZV9zbG90X3phcF9xdWlyaylcXG4gXFx0XFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVNBQkxFX1FVSVJLUzIsIEtWTV9YODZfUVVJUktfU0xPVF9aQVBfQUxMKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXFxuaW5kZXggMzg4YmE0MTAxZjk3MzYuLjY2MWU5YWJmYjQzOTVkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xcbkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZClcXG4gXFx0c3RydWN0IGt2bV9wYWdlX3N0YXRzIHN0YXRzX3JlcG9wdWxhdGVkO1xcbiBcXG4gXFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIFZDUFVTLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXFxuLVxcdFxcdFxcdFxcdCBTTE9UUywgYmFja2luZ19zcmMsIGZhbHNlKTtcXG4rXFx0XFx0XFx0XFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UsIDApO1xcbiBcXG4gXFx0Z3Vlc3RfbnVtX3BhZ2VzID0gKFZDUFVTICogZ3Vlc3RfcGVyY3B1X21lbV9zaXplKSBcXHUwMDNlXFx1MDAzZSB2bS1cXHUwMDNlcGFnZV9zaGlmdDtcXG4gXFx0Z3Vlc3RfbnVtX3BhZ2VzID0gdm1fYWRqdXN0X251bV9ndWVzdF9wYWdlcyhtb2RlLCBndWVzdF9udW1fcGFnZXMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzoyNjoxNC4yODc4MjU1MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MzAyOTQxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDliMjVmZWM5YWRlYzA1MDcwNzk4ZDNlNTAxMDM3OTEyYTZhZjA3ZTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAxNzoyNjoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG5pbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXG5AQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRpbnQgbnJfdmNwdXMgPSBwYXJhbXMtXHUwMDNlbnJfdmNwdXM7XG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy1cdTAwM2V2Y3B1X21lbW9yeV9ieXRlcywgMSxcbi1cdFx0XHRcdCBwYXJhbXMtXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpO1xuK1x0XHRcdFx0IHBhcmFtcy1cdTAwM2ViYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2VzcywgMCk7XG4gXG4gXHQvKlxuIFx0ICogSWYgZ3Vlc3RfcGFnZV9zaXplIGlzIGxhcmdlciB0aGFuIHRoZSBob3N0J3MgcGFnZSBzaXplLCB0aGVcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcbmluZGV4IDMwMmM0OTIzZDA5MzBmLi45MjI0NmUyN2VmNzQ0NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXG5AQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRpbnQgaSwgbnVtX3VmZmRzID0gMDtcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLCAxLFxuLVx0XHRcdFx0IHAtXHUwMDNlc3JjX3R5cGUsIHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7XG4rXHRcdFx0XHQgcC1cdTAwM2VzcmNfdHlwZSwgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTtcbiBcbiBcdGRlbWFuZF9wYWdpbmdfc2l6ZSA9IGdldF9iYWNraW5nX3NyY19wYWdlc3oocC1cdTAwM2VzcmNfdHlwZSk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcbmluZGV4IGVmNzc5ZmE5MTgyN2M5Li42NTllZmE2NzliYzc0NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmNcbkBAIC0xMyw2ICsxMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjdGltZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjcHRocmVhZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0bWFwLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20vYmFycmllci5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJrdm1fdXRpbC5oXCJcbiAjaW5jbHVkZSBcInRlc3RfdXRpbC5oXCJcbkBAIC0yOSw5ICszMCw0MyBAQCBzdGF0aWMgYm9vbCBydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmc7XG4gXG4gLyogSG9zdCB2YXJpYWJsZXMgKi9cbiBzdGF0aWMgdTY0IGRpcnR5X2xvZ19tYW51YWxfY2FwcztcbitzdGF0aWMgdTMyIGRpcnR5X3Jpbmdfc2l6ZTtcbiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7XG4gc3RhdGljIGludCBpdGVyYXRpb247XG4gc3RhdGljIGludCB2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltLVk1fTUFYX1ZDUFVTXTtcbitzdGF0aWMgc3RydWN0IHRpbWVzcGVjIHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W0tWTV9NQVhfVkNQVVNdO1xuK1xuK3N0YXRpYyB2b2lkIGRpcnR5X3JpbmdfY29sbGVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiAqcmluZ19pZHgsXG4rXHRcdFx0XHRzdHJ1Y3QgdGltZXNwZWMgKnRzKVxuK3tcbitcdHN0cnVjdCB0aW1lc3BlYyBzdGFydDtcbitcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpkaXJ0eV9nZm5zID0gdmNwdV9tYXBfZGlydHlfcmluZyh2Y3B1KTtcbitcdHUzMiByZXQsIGlkeCA9ICpyaW5nX2lkeDtcbitcdHUzMiByaW5nX3NpemUgPSB2Y3B1LVx1MDAzZXZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcbitcbitcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4rXG4rXHR3aGlsZSAodHJ1ZSkge1xuK1x0XHRzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqY3VyO1xuK1xuK1x0XHRjdXIgPSBcdTAwMjZkaXJ0eV9nZm5zW2lkeCAlIHJpbmdfc2l6ZV07XG4rXHRcdGlmIChzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmN1ci1cdTAwM2VmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKVxuK1x0XHRcdGJyZWFrO1xuK1xuK1x0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZjdXItXHUwMDNlZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7XG4rXHRcdGlkeCsrO1xuK1x0fVxuK1xuK1x0aWR4IC09ICpyaW5nX2lkeDtcbitcdCpyaW5nX2lkeCArPSBpZHg7XG4rXG4rXHRyZXQgPSBrdm1fdm1fcmVzZXRfZGlydHlfcmluZyh2Y3B1LVx1MDAzZXZtKTtcbitcbitcdFRFU1RfQVNTRVJUKHJldCA9PSBpZHgsIFwiUmVzZXQgZGlydHkgcGFnZXMgKCV1KSBtaXNtYXRjaCBcIlxuK1x0XHQgICAgXCJ3aXRoIGNvbGxlY3RlZCAoJXUpXCIsIHJldCwgaWR4KTtcbitcbitcdCp0cyA9IHRpbWVzcGVjX2FkZCgqdHMsIHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpKTtcbit9XG4gXG4gc3RhdGljIHZvaWQgdmNwdV93b3JrZXIoc3RydWN0IG1lbXN0cmVzc192Y3B1X2FyZ3MgKnZjcHVfYXJncylcbiB7XG5AQCAtNDMsMTkgKzc4LDM2IEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHNfZGlmZjtcbiBcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuIFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcbitcdGJvb2wgdXNlX2RpcnR5X3JpbmcgPSAhIXZjcHUtXHUwMDNldm0tXHUwMDNlZGlydHlfcmluZ19zaXplO1xuK1x0dTMyIHJpbmdfaWR4ID0gMDtcbiBcdGludCByZXQ7XG4gXG4gXHRydW4gPSB2Y3B1LVx1MDAzZXJ1bjtcbiBcbiBcdHdoaWxlICghUkVBRF9PTkNFKGhvc3RfcXVpdCkpIHtcbiBcdFx0aW50IGN1cnJlbnRfaXRlcmF0aW9uID0gUkVBRF9PTkNFKGl0ZXJhdGlvbik7XG4rXHRcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4gXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbitcbitcdFx0ZG8ge1xuK1x0XHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbitcdFx0XHRpZiAoIXVzZV9kaXJ0eV9yaW5nKVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0ZGlydHlfcmluZ19jb2xsZWN0KHZjcHUsIFx1MDAyNnJpbmdfaWR4LCBcdTAwMjZjb2xsZWN0KTtcbitcdFx0fSB3aGlsZSAocmV0ID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCk7XG4rXG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbiBcbitcdFx0aWYgKHVzZV9kaXJ0eV9yaW5nKSB7XG4rXHRcdFx0dHNfZGlmZiA9IHRpbWVzcGVjX3N1Yih0c19kaWZmLCBjb2xsZWN0KTtcbitcdFx0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xuK1x0XHR9XG4rXG4gXHRcdFRFU1RfQVNTRVJUKHJldCA9PSAwLCBcInZjcHVfcnVuIGZhaWxlZDogJWRcIiwgcmV0KTtcbi1cdFx0VEVTVF9BU1NFUlQoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpID09IFVDQUxMX1NZTkMsXG4rXHRcdFRFU1RfQVNTRVJUKGdldF91Y2FsbCh2Y3B1LCBOVUxMKSA9PSBVQ0FMTF9TWU5DIHx8XG4rXHRcdFx0ICAgICh1c2VfZGlydHlfcmluZyBcdTAwMjZcdTAwMjYgcnVuLVx1MDAzZWV4aXRfcmVhc29uID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCksXG4gXHRcdFx0ICAgIFwiSW52YWxpZCBndWVzdCBzeW5jIHN0YXR1czogZXhpdF9yZWFzb249JXNcIixcbiBcdFx0XHQgICAgZXhpdF9yZWFzb25fc3RyKHJ1bi1cdTAwM2VleGl0X3JlYXNvbikpO1xuIFxuQEAgLTExOSw3ICsxNzEsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXG4gXHRcdFx0XHQgcC1cdTAwM2VzbG90cywgcC1cdTAwM2ViYWNraW5nX3NyYyxcbi1cdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuK1x0XHRcdFx0IHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbitcdFx0XHRcdCBkaXJ0eV9yaW5nX3NpemUpO1xuIFxuIFx0bWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHZtLCBwLVx1MDAzZXdyaXRlX3BlcmNlbnQpO1xuIFxuQEAgLTEzOSw4ICsxOTIsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGhvc3RfcXVpdCA9IGZhbHNlO1xuIFxuIFx0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnN0YXJ0KTtcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpKyspXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgaSsrKSB7XG4gXHRcdHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW2ldID0gLTE7XG4rXHRcdHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4rXHR9XG4gXG4gXHQvKlxuIFx0ICogVXNlIDEwMCUgd3JpdGVzIGR1cmluZyB0aGUgcG9wdWxhdGlvbiBwaGFzZSB0byBlbnN1cmUgYWxsXG5AQCAtMTk1LDYgKzI1MCwyMSBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0XHRwcl9pbmZvKFwiSXRlcmF0aW9uICVkIGRpcnR5IG1lbW9yeSB0aW1lOiAlbGQuJS45bGRzXFxuXCIsXG4gXHRcdFx0aXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTtcbiBcbitcdFx0aWYgKGRpcnR5X3Jpbmdfc2l6ZSkge1xuK1x0XHRcdHN0cnVjdCB0aW1lc3BlYyBpdGVyYXRpb25fc3VtID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4rXG4rXHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7IGkrKylcbitcdFx0XHRcdGl0ZXJhdGlvbl9zdW0gPSB0aW1lc3BlY19hZGQoaXRlcmF0aW9uX3N1bSxcbitcdFx0XHRcdFx0XHRcdCAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pO1xuK1xuK1x0XHRcdHByX2luZm8oXCJJdGVyYXRpb24gJWQgY2xlYXIgZGlydHkgcmluZyB0aW1lOiAlbGQuJS45bGRzXFxuXCIsXG4rXHRcdFx0XHRpdGVyYXRpb24sIGl0ZXJhdGlvbl9zdW0udHZfc2VjLCBpdGVyYXRpb25fc3VtLnR2X25zZWMpO1xuK1xuK1x0XHRcdGNsZWFyX2RpcnR5X2xvZ190b3RhbCA9IHRpbWVzcGVjX2FkZChjbGVhcl9kaXJ0eV9sb2dfdG90YWwsXG4rXHRcdFx0XHRcdFx0XHQgICAgIGl0ZXJhdGlvbl9zdW0pO1xuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR9XG4rXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4gXHRcdG1lbXN0cmVzc19nZXRfZGlydHlfbG9nKHZtLCBiaXRtYXBzLCBwLVx1MDAzZXNsb3RzKTtcbiBcdFx0dHNfZGlmZiA9IHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpO1xuQEAgLTIzOCwxMiArMzA4LDE0IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRob3N0X3F1aXQgPSB0cnVlO1xuIFx0bWVtc3RyZXNzX2pvaW5fdmNwdV90aHJlYWRzKG5yX3ZjcHVzKTtcbiBcbi1cdGF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuLVx0cHJfaW5mbyhcIkdldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxuXCIsXG4tXHRcdHAtXHUwMDNlaXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXG4tXHRcdGdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpO1xuK1x0aWYgKCFkaXJ0eV9yaW5nX3NpemUpIHtcbitcdFx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXHUwMDNlaXRlcmF0aW9ucyk7XG4rXHRcdHByX2luZm8oXCJHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwiLFxuK1x0XHRcdHAtXHUwMDNlaXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXG4rXHRcdFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XG4rXHR9XG4gXG4tXHRpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzKSB7XG4rXHRpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzIHx8IGRpcnR5X3Jpbmdfc2l6ZSkge1xuIFx0XHRhdmcgPSB0aW1lc3BlY19kaXYoY2xlYXJfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuIFx0XHRwcl9pbmZvKFwiQ2xlYXIgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwiLFxuIFx0XHRcdHAtXHUwMDNlaXRlcmF0aW9ucywgY2xlYXJfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcbkBAIC0yNjQsNiArMzM2LDkgQEAgc3RhdGljIHZvaWQgaGVscChjaGFyICpuYW1lKVxuIFx0cHJpbnRmKFwiIC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxcblwiKTtcbiBcdHByaW50ZihcIiAtaTogc3BlY2lmeSBpdGVyYXRpb24gY291bnRzIChkZWZhdWx0OiAlXCJQUkl1NjRcIilcXG5cIixcbiBcdCAgICAgICBURVNUX0hPU1RfTE9PUF9OKTtcbitcdHByaW50ZihcIiAtZDogc3BlY2lmeSB0aGUgc2l6ZSBvZiBkaXJ0eS1yaW5nIGZvciB0cmFja2luZyBkaXJ0eSBwYWdlcy5cXG5cIlxuK1x0ICAgICAgIFwiICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxcblwiXG4rXHQgICAgICAgXCIgICAgIGRpcnR5LWJpdG1hcC4gTXVzdCBiZSBhIHBvd2VyIG9mIHR3by5cIik7XG4gXHRwcmludGYoXCIgLWc6IERvIG5vdCBlbmFibGUgS1ZNX0NBUF9NQU5VQUxfRElSVFlfTE9HX1BST1RFQ1QyLiBUaGlzXFxuXCJcbiBcdCAgICAgICBcIiAgICAgbWFrZXMgS1ZNX0dFVF9ESVJUWV9MT0cgY2xlYXIgdGhlIGRpcnR5IGxvZyAoaS5lLlxcblwiXG4gXHQgICAgICAgXCIgICAgIEtWTV9ESVJUWV9MT0dfTUFOVUFMX1BST1RFQ1RfRU5BQkxFIGlzIG5vdCBlbmFibGVkKVxcblwiXG5AQCAtMzIwLDcgKzM5NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHRndWVzdF9tb2Rlc19hcHBlbmRfZGVmYXVsdCgpO1xuIFxuLVx0d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgXCJhYjpjOmVnaGk6bTpub3A6cjpzOnY6eDp3OlwiKSkgIT0gLTEpIHtcbitcdHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFwiYWI6YzpkOmVnaGk6bTpub3A6cjpzOnY6eDp3OlwiKSkgIT0gLTEpIHtcbiBcdFx0c3dpdGNoIChvcHQpIHtcbiBcdFx0Y2FzZSAnYSc6XG4gXHRcdFx0cC5yYW5kb21fYWNjZXNzID0gdHJ1ZTtcbkBAIC0zMzEsNiArNDA2LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdGNhc2UgJ2MnOlxuIFx0XHRcdHBjcHVfbGlzdCA9IG9wdGFyZztcbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSAnZCc6XG4rXHRcdFx0ZGlydHlfcmluZ19zaXplID0gcGFyc2Vfc2l6ZShvcHRhcmcpO1xuK1x0XHRcdGRpcnR5X3Jpbmdfc2l6ZSAqPSBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pO1xuK1x0XHRcdGRpcnR5X2xvZ19tYW51YWxfY2FwcyA9IDA7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgJ2UnOlxuIFx0XHRcdC8qICdlJyBpcyBmb3IgZXZpbC4gKi9cbiBcdFx0XHRydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmcgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcbmluZGV4IDBkMWQ2MjMwY2MwNTFiLi5lMTdmMzQ0OTc4YWY2NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxuQEAgLTU4LDcgKzU4LDggQEAgZXh0ZXJuIHN0cnVjdCBtZW1zdHJlc3NfYXJncyBtZW1zdHJlc3NfYXJncztcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXG4gXHRcdFx0XHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcbiBcdFx0XHRcdCAgIGVudW0gdm1fbWVtX2JhY2tpbmdfc3JjX3R5cGUgYmFja2luZ19zcmMsXG4tXHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuK1x0XHRcdFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLFxuK1x0XHRcdFx0ICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSk7XG4gdm9pZCBtZW1zdHJlc3NfZGVzdHJveV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSk7XG4gXG4gdm9pZCBtZW1zdHJlc3Nfc2V0X3dyaXRlX3BlcmNlbnQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB3cml0ZV9wZXJjZW50KTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbmluZGV4IDE5NWYzZmRhZTFlMzk2Li4yMzdmMGNlMGFlNjAwNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXG5AQCAtMTY3LDEwICsxNjcsMjAgQEAgdW5zaWduZWQgaW50IGt2bV9jaGVja19jYXAobG9uZyBjYXApXG4gXG4gdm9pZCB2bV9lbmFibGVfZGlydHlfcmluZyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHJpbmdfc2l6ZSlcbiB7XG4tXHRpZiAodm1fY2hlY2tfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwpKVxuLVx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwsIHJpbmdfc2l6ZSk7XG4tXHRlbHNlXG4tXHRcdHZtX2VuYWJsZV9jYXAodm0sIEtWTV9DQVBfRElSVFlfTE9HX1JJTkcsIHJpbmdfc2l6ZSk7XG4rXHRsb25nIGNhcCA9IEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTDtcbitcdGludCBtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTtcbitcbitcdGlmICghbWF4X3NpemUpIHtcbitcdFx0Y2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklORztcbitcdFx0bWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7XG4rXHR9XG4rXG4rXHRURVNUX0FTU0VSVChyaW5nX3NpemUgXHUwMDNjPSBtYXhfc2l6ZSBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMihyaW5nX3NpemUpLFxuK1x0XHQgICAgXCJJbnZhbGlkIGRpcnR5LXJpbmcgc2l6ZTogU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvIFwiXG4rXHRcdCAgICBcInNtYWxsZXIgdGhhbiAlZCBlbnRyaWVzXFxuXCIsXG4rXHRcdCAgICBtYXhfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbikpO1xuK1xuK1x0dm1fZW5hYmxlX2NhcCh2bSwgY2FwLCByaW5nX3NpemUpO1xuIFx0dm0tXHUwMDNlZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuaW5kZXggNmRjZDE1OTEwYTA2MDguLmM5Zjg1NTMzZmZmZmRjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuQEAgLTEyMSwxMCArMTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoc3RydWN0IHZtX3NoYXBlIHNoYXBlLFxuK1x0XHRcdFx0XHRcdCAgICAgdTMyIG5yX3ZjcHVzLFxuK1x0XHRcdFx0XHRcdCAgICAgdTY0IGV4dHJhX21lbV9wYWdlcyxcbitcdFx0XHRcdFx0XHQgICAgIHZvaWQgKmd1ZXN0X2NvZGUsXG4rXHRcdFx0XHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHVzW10sXG4rXHRcdFx0XHRcdFx0ICAgICB1MzIgZGlydHlfcmluZ19zaXplKVxuK3tcbitcdHN0cnVjdCBrdm1fdm0gKnZtO1xuK1x0aW50IGk7XG4rXG4rXHRURVNUX0FTU0VSVCghbnJfdmNwdXMgfHwgdmNwdXMsIFwiTXVzdCBwcm92aWRlIHZDUFUgYXJyYXlcIik7XG4rXG4rXHR2bSA9IF9fdm1fY3JlYXRlKHNoYXBlLCBucl92Y3B1cywgZXh0cmFfbWVtX3BhZ2VzKTtcbitcbitcdGlmIChkaXJ0eV9yaW5nX3NpemUpXG4rXHRcdHZtX2VuYWJsZV9kaXJ0eV9yaW5nKHZtLCBkaXJ0eV9yaW5nX3NpemUpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7ICsraSlcbitcdFx0dmNwdXNbaV0gPSB2bV92Y3B1X2FkZCh2bSwgaSwgZ3Vlc3RfY29kZSk7XG4rXG4rXHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XG4rXHRyZXR1cm4gdm07XG4rfVxuK1xuIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdFx0XHRcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxuIFx0XHRcdFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcbi1cdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcylcbitcdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbitcdFx0XHRcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXG4ge1xuIFx0c3RydWN0IG1lbXN0cmVzc19hcmdzICphcmdzID0gXHUwMDI2bWVtc3RyZXNzX2FyZ3M7XG4gXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbkBAIC0xNjcsOSArMTkyLDEwIEBAIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdCAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0J3MgYSBiZW5pZ24gc2lkZVxuIFx0ICogZWZmZWN0IGFzIEtWTSBhbGxvd3MgYWxpYXNpbmcgSFZBcyBpbiBtZXNsb3RzLlxuIFx0ICovXG4tXHR2bSA9IF9fdm1fY3JlYXRlX3dpdGhfdmNwdXMoVk1fU0hBUEUobW9kZSksIG5yX3ZjcHVzLFxuLVx0XHRcdFx0ICAgIHNsb3QwX3BhZ2VzICsgZ3Vlc3RfbnVtX3BhZ2VzLFxuLVx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyk7XG4rXHR2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXG4rXHRcdFx0XHRcdCAgICBzbG90MF9wYWdlcyArIGd1ZXN0X251bV9wYWdlcyxcbitcdFx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyxcbitcdFx0XHRcdFx0ICAgIGRpcnR5X3Jpbmdfc2l6ZSk7XG4gXG4gXHRhcmdzLVx1MDAzZXZtID0gdm07XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xuaW5kZXggOWM3NTc4YTA5OGMzZTEuLjNhMWJlOWI3NWUwMWRhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXG5AQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXG4gXHRcdFx0XHQgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXG4tXHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuICNpZmRlZiBfX3g4Nl82NF9fXG4gXHRpZiAocC1cdTAwM2VkaXNhYmxlX3Nsb3RfemFwX3F1aXJrKVxuIFx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJU0FCTEVfUVVJUktTMiwgS1ZNX1g4Nl9RVUlSS19TTE9UX1pBUF9BTEwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xuaW5kZXggMzg4YmE0MTAxZjk3MzYuLjY2MWU5YWJmYjQzOTVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcbkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZClcbiBcdHN0cnVjdCBrdm1fcGFnZV9zdGF0cyBzdGF0c19yZXBvcHVsYXRlZDtcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBWQ1BVUywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLFxuLVx0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UpO1xuK1x0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UsIDApO1xuIFxuIFx0Z3Vlc3RfbnVtX3BhZ2VzID0gKFZDUFVTICogZ3Vlc3RfcGVyY3B1X21lbV9zaXplKSBcdTAwM2VcdTAwM2Ugdm0tXHUwMDNlcGFnZV9zaGlmdDtcbiBcdGd1ZXN0X251bV9wYWdlcyA9IHZtX2FkanVzdF9udW1fZ3Vlc3RfcGFnZXMobW9kZSwgZ3Vlc3RfbnVtX3BhZ2VzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjI2OjE0LjI4NzgyNzg4MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5MzAyNjIzNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IEtWTSBTZWxmdGVzdHMgUGF0Y2ggU2VyaWVzKipcblxuT2theSwgSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBzZXJpZXMgbW9kaWZ5aW5nIEtWTSBzZWxmdGVzdHMsIHNwZWNpZmljYWxseSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8qYC4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB0aGlzOyB0aGUgZGlmZiBpbmNsdWRlcyBjaGFuZ2VzIHRvOiBgYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jYCwgYGRlbWFuZF9wYWdpbmdfdGVzdC5jYCwgYGRpcnR5X2xvZ19wZXJmX3Rlc3QuY2AsIGBpbmNsdWRlL21lbXN0cmVzcy5oYCwgYGxpYi9rdm1fdXRpbC5jYCwgYGxpYi9tZW1zdHJlc3MuY2AsIGBtZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jYCwgYW5kIGB4ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY2AuIFllcywgaXQgYWxsIHNlZW1zIGlzb2xhdGVkIHRvIHRoYXQgZGlyZWN0b3J5LlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG1hcmsgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGNvbmNlcm5zIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24sIEtjb25maWcsIGNvbW1lbnRzLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIG9yIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50cy4gSXQgZXhwbGljaXRseSBleGNsdWRlcyBtb2RpZmljYXRpb25zIHRvIGNvZGUgdGhhdCBjYW4ndCBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkFoYSEgVGhlc2UgYXJlICpzZWxmdGVzdHMqLiBTZWxmdGVzdHMgYXJlIHVzZXJzcGFjZSBwcm9ncmFtcyBkZXNpZ25lZCB0byBleGVyY2lzZSBhbmQgdmFsaWRhdGUga2VybmVsIGZ1bmN0aW9uYWxpdHksIGJ1dCB0aGV5IGFyZSBub3QgdGhlbXNlbHZlcyBwYXJ0IG9mIHRoZSBrZXJuZWwgY29kZS4gSWYgdGhlIGtlcm5lbCBsb2dpYyBpc24ndCBjaGFuZ2VkLCB0aGVyZSdzIG5vIG5lZWQgdG8gZnV6eiB0aGUga2VybmVsIGJhc2VkIG9uIGNoYW5nZXMgdG8gdGhlc2UgdGVzdHMuIFRoZXJlZm9yZSwgZnV6emluZyB0aGUga2VybmVsIGJhc2VkIG9uIHRoZXNlIGNoYW5nZXMgZG9lc24ndCBtYWtlIHNlbnNlLiBUaGUga2VybmVsJ3MgY29yZSBmdW5jdGlvbmFsaXR5IGhhc24ndCBiZWVuIG1vZGlmaWVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZmlsZXMgaW52b2x2ZWQuIE5vcGUsIGl0J3MgZXhjbHVzaXZlbHkgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLi4uYC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgY2xlYXI6IFRoaXMgcGF0Y2ggc2VyaWVzIGlzIG1vZGlmeWluZyB1c2VyLXNwYWNlIEtWTSBzZWxmdGVzdHMgb25seS4gSXQgZG9lcyBub3QgYWx0ZXIgYW55IGNvcmUga2VybmVsIGxvZ2ljLiBUaHVzLCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgY2FuIGJlIGVtcHR5IGFycmF5cyBhcyB3ZWxsLiBJJ20gZ29pbmcgdG8gc2V0IHRoZXNlIHJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTQwLCJPdXRwdXRUb2tlbnMiOjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MjY6MjIuMjE4MDkyNzVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vLCB3aGljaCBpcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGFuZCBkb2VzIG5vdCBhbHRlciBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLywgd2hpY2ggaXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBhbmQgZG9lcyBub3QgYWx0ZXIgYW55IGZ1bmN0aW9uYWwga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgtp9j[1] Phase: Running StartedAt: 2026-06-24 17:27:58 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgtp9j[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-24 17:27:58 +0000 UTC FinishedAt: 2026-06-24 17:28:03 +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,}