Name: series-workflowmb4gm Phase: Failed StartedAt: 2026-07-09 09:21:42 +0000 UTC FinishedAt: 2026-07-09 09:33:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4gm[0] Phase: Succeeded StartedAt: 2026-07-09 09:21:42 +0000 UTC FinishedAt: 2026-07-09 09:33:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4gm[0].run-triage Phase: Succeeded StartedAt: 2026-07-09 09:21:42 +0000 UTC FinishedAt: 2026-07-09 09:33:37 +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+CgkJCTx0ZD4yMDI2LzA3LzA5IDA5OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0aGUgdG9vbHMvIGRpcmVjdG9yeS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA5OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGE4ODk5OWZlYjI2NGFhZmQzNjc5NTJkNGRmMDc2NGU0NmFkZDIwY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDk6MzI6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbmluZGV4IDQ0MTVjOTRiMjg2NjA1Li5mNzhkNTYyNjVkODkzNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbkBAIC00MDksNyAmIzQzOzQwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRpbnQgbnJfdmNwdXMgPSBwYXJhbXMtXHUwMDNlbnJfdmNwdXM7XG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy1cdTAwM2V2Y3B1X21lbW9yeV9ieXRlcywgMSxcbi1cdFx0XHRcdCBwYXJhbXMtXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCBwYXJhbXMtXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MsIDApO1xuIFxuIFx0LypcbiBcdCAqIElmIGd1ZXN0X3BhZ2Vfc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgaG9zdCYjMzk7cyBwYWdlIHNpemUsIHRoZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xuaW5kZXggMzAyYzQ5MjNkMDkzMGYuLjkyMjQ2ZTI3ZWY3NDQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcbkBAIC0xNjIsNyAmIzQzOzE2Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRpbnQgaSwgbnVtX3VmZmRzID0gMDtcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLCAxLFxuLVx0XHRcdFx0IHAtXHUwMDNlc3JjX3R5cGUsIHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7XG4mIzQzO1x0XHRcdFx0IHAtXHUwMDNlc3JjX3R5cGUsIHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywgMCk7XG4gXG4gXHRkZW1hbmRfcGFnaW5nX3NpemUgPSBnZXRfYmFja2luZ19zcmNfcGFnZXN6KHAtXHUwMDNlc3JjX3R5cGUpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jXG5pbmRleCBlZjc3OWZhOTE4MjdjOS4uMTgxZjUyMWM5YmU5NjEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jXG5AQCAtMTMsNiAmIzQzOzEzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N0aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRtYXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vYmFycmllci5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3RfdXRpbC5oXCYjMzQ7XG5AQCAtMjksOSAmIzQzOzMwLDUzIEBAIHN0YXRpYyBib29sIHJ1bl92Y3B1c193aGlsZV9kaXNhYmxpbmdfZGlydHlfbG9nZ2luZztcbiBcbiAvKiBIb3N0IHZhcmlhYmxlcyAqL1xuIHN0YXRpYyB1NjQgZGlydHlfbG9nX21hbnVhbF9jYXBzO1xuJiM0MztzdGF0aWMgdTMyIGRpcnR5X3Jpbmdfc2l6ZTtcbiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7XG4gc3RhdGljIGludCBpdGVyYXRpb247XG4gc3RhdGljIGludCB2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltLVk1fTUFYX1ZDUFVTXTtcbiYjNDM7c3RhdGljIHN0cnVjdCB0aW1lc3BlYyB2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtLVk1fTUFYX1ZDUFVTXTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGRpcnR5X3JpbmdfY29sbGVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiAqcmluZ19pZHgsXG4mIzQzO1x0XHRcdFx0c3RydWN0IHRpbWVzcGVjICp0cylcbiYjNDM7e1xuJiM0MztcdHN0YXRpYyBwdGhyZWFkX211dGV4X3QgY29sbGVjdCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7XG4mIzQzO1x0c3RydWN0IHRpbWVzcGVjIHN0YXJ0O1xuJiM0MztcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpkaXJ0eV9nZm5zID0gdmNwdV9tYXBfZGlydHlfcmluZyh2Y3B1KTtcbiYjNDM7XHR1MzIgaWR4ID0gKnJpbmdfaWR4O1xuJiM0MztcdHUzMiByaW5nX3NpemUgPSB2Y3B1LVx1MDAzZXZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7XG4mIzQzO1x0aW50IGNsZWFyZWQsIGNvdW50O1xuJiM0MztcbiYjNDM7XHRwdGhyZWFkX211dGV4X2xvY2soXHUwMDI2Y29sbGVjdCk7XG4mIzQzO1xuJiM0MztcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICh0cnVlKSB7XG4mIzQzO1x0XHRzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqY3VyO1xuJiM0MztcbiYjNDM7XHRcdGN1ciA9IFx1MDAyNmRpcnR5X2dmbnNbaWR4ICUgcmluZ19zaXplXTtcbiYjNDM7XHRcdGlmIChzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmN1ci1cdTAwM2VmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZjdXItXHUwMDNlZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7XG4mIzQzO1x0XHRpZHgmIzQzOyYjNDM7O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Y291bnQgPSBpZHggLSAqcmluZ19pZHg7XG4mIzQzO1x0KnJpbmdfaWR4ID0gaWR4O1xuJiM0MztcbiYjNDM7XHRjbGVhcmVkID0ga3ZtX3ZtX3Jlc2V0X2RpcnR5X3JpbmcodmNwdS1cdTAwM2V2bSk7XG4mIzQzO1xuJiM0MztcdC8qIENsZWFyZWQgcGFnZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbGxlY3RlZCwgYXMgS1ZNIGlzIHN1cHBvc2VkIHRvXG4mIzQzO1x0ICogY2xlYXIgb25seSB0aGUgZW50cmllcyB0aGF0IGhhdmUgYmVlbiBoYXJ2ZXN0ZWQsIGFuZCBhIHNpbmdsZSB2Y3B1IHdpbGxcbiYjNDM7XHQgKiBoYXJ2ZXN0IGF0IHRpbWUuXG4mIzQzO1x0ICovXG4mIzQzO1x0VEVTVF9BU1NFUlQoY2xlYXJlZCA9PSBjb3VudCwgXCYjMzQ7UmVzZXQgZGlydHkgcGFnZXMgKCV1KSBtaXNtYXRjaCBcJiMzNDtcbiYjNDM7XHRcdCAgICBcJiMzNDt3aXRoIGNvbGxlY3RlZCAoJXUpXCYjMzQ7LCBjbGVhcmVkLCBjb3VudCk7XG4mIzQzO1xuJiM0MztcdCp0cyA9IHRpbWVzcGVjX2FkZCgqdHMsIHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpKTtcbiYjNDM7XG4mIzQzO1x0cHRocmVhZF9tdXRleF91bmxvY2soXHUwMDI2Y29sbGVjdCk7XG4mIzQzO31cbiBcbiBzdGF0aWMgdm9pZCB2Y3B1X3dvcmtlcihzdHJ1Y3QgbWVtc3RyZXNzX3ZjcHVfYXJncyAqdmNwdV9hcmdzKVxuIHtcbkBAIC00MywxNyAmIzQzOzg4LDMzIEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHNfZGlmZjtcbiBcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuIFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcbiYjNDM7XHRib29sIHVzZV9kaXJ0eV9yaW5nID0gISF2Y3B1LVx1MDAzZXZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcbiYjNDM7XHR1MzIgcmluZ19pZHggPSAwO1xuIFx0aW50IHJldDtcbiBcbiBcdHJ1biA9IHZjcHUtXHUwMDNlcnVuO1xuIFxuIFx0d2hpbGUgKCFSRUFEX09OQ0UoaG9zdF9xdWl0KSkge1xuIFx0XHRpbnQgY3VycmVudF9pdGVyYXRpb24gPSBSRUFEX09OQ0UoaXRlcmF0aW9uKTtcbiYjNDM7XHRcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4gXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0XHRkbyB7XG4mIzQzO1x0XHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XHRcdFx0aWYgKCF1c2VfZGlydHlfcmluZylcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdGRpcnR5X3JpbmdfY29sbGVjdCh2Y3B1LCBcdTAwMjZyaW5nX2lkeCwgXHUwMDI2Y29sbGVjdCk7XG4mIzQzO1x0XHR9IHdoaWxlIChydW4tXHUwMDNlZXhpdF9yZWFzb24gPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKTtcbiYjNDM7XG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbiBcbiYjNDM7XHRcdGlmICh1c2VfZGlydHlfcmluZykge1xuJiM0MztcdFx0XHR0c19kaWZmID0gdGltZXNwZWNfc3ViKHRzX2RpZmYsIGNvbGxlY3QpO1xuJiM0MztcdFx0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0VEVTVF9BU1NFUlQocmV0ID09IDAsIFwmIzM0O3ZjcHVfcnVuIGZhaWxlZDogJWRcJiMzNDssIHJldCk7XG4gXHRcdFRFU1RfQVNTRVJUKGdldF91Y2FsbCh2Y3B1LCBOVUxMKSA9PSBVQ0FMTF9TWU5DLFxuIFx0XHRcdCAgICBcJiMzNDtJbnZhbGlkIGd1ZXN0IHN5bmMgc3RhdHVzOiBleGl0X3JlYXNvbj0lc1wmIzM0OyxcbkBAIC0xMTksNyAmIzQzOzE4MCw4IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSxcbiBcdFx0XHRcdCBwLVx1MDAzZXNsb3RzLCBwLVx1MDAzZWJhY2tpbmdfc3JjLFxuLVx0XHRcdFx0IHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7XG4mIzQzO1x0XHRcdFx0IHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbiYjNDM7XHRcdFx0XHQgZGlydHlfcmluZ19zaXplKTtcbiBcbiBcdG1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudCh2bSwgcC1cdTAwM2V3cml0ZV9wZXJjZW50KTtcbiBcbkBAIC0xMzksOCAmIzQzOzIwMSwxMCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0aG9zdF9xdWl0ID0gZmFsc2U7XG4gXG4gXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2c3RhcnQpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7IGkmIzQzOyYjNDM7KVxuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpJiM0MzsmIzQzOykge1xuIFx0XHR2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltpXSA9IC0xO1xuJiM0MztcdFx0dmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcbiYjNDM7XHR9XG4gXG4gXHQvKlxuIFx0ICogVXNlIDEwMCUgd3JpdGVzIGR1cmluZyB0aGUgcG9wdWxhdGlvbiBwaGFzZSB0byBlbnN1cmUgYWxsXG5AQCAtMTk1LDYgJiM0MzsyNTksMjEgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdFx0cHJfaW5mbyhcJiMzNDtJdGVyYXRpb24gJWQgZGlydHkgbWVtb3J5IHRpbWU6ICVsZC4lLjlsZHNcXG5cJiMzNDssXG4gXHRcdFx0aXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTtcbiBcbiYjNDM7XHRcdGlmIChkaXJ0eV9yaW5nX3NpemUpIHtcbiYjNDM7XHRcdFx0c3RydWN0IHRpbWVzcGVjIGl0ZXJhdGlvbl9zdW0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcbiYjNDM7XG4mIzQzO1x0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0XHRpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgICB2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtpXSk7XG4mIzQzO1xuJiM0MztcdFx0XHRwcl9pbmZvKFwmIzM0O0l0ZXJhdGlvbiAlZCBjbGVhciBkaXJ0eSByaW5nIHRpbWU6ICVsZC4lLjlsZHNcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0aXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGNsZWFyX2RpcnR5X2xvZ190b3RhbCA9IHRpbWVzcGVjX2FkZChjbGVhcl9kaXJ0eV9sb2dfdG90YWwsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgICBpdGVyYXRpb25fc3VtKTtcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2c3RhcnQpO1xuIFx0XHRtZW1zdHJlc3NfZ2V0X2RpcnR5X2xvZyh2bSwgYml0bWFwcywgcC1cdTAwM2VzbG90cyk7XG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbkBAIC0yMzgsMTIgJiM0MzszMTcsMTQgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGhvc3RfcXVpdCA9IHRydWU7XG4gXHRtZW1zdHJlc3Nfam9pbl92Y3B1X3RocmVhZHMobnJfdmNwdXMpO1xuIFxuLVx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXHUwMDNlaXRlcmF0aW9ucyk7XG4tXHRwcl9pbmZvKFwmIzM0O0dldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxuXCYjMzQ7LFxuLVx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLFxuLVx0XHRnZXRfZGlydHlfbG9nX3RvdGFsLnR2X25zZWMsIGF2Zy50dl9zZWMsIGF2Zy50dl9uc2VjKTtcbiYjNDM7XHRpZiAoIWRpcnR5X3Jpbmdfc2l6ZSkge1xuJiM0MztcdFx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXHUwMDNlaXRlcmF0aW9ucyk7XG4mIzQzO1x0XHRwcl9pbmZvKFwmIzM0O0dldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLFxuJiM0MztcdFx0XHRnZXRfZGlydHlfbG9nX3RvdGFsLnR2X25zZWMsIGF2Zy50dl9zZWMsIGF2Zy50dl9uc2VjKTtcbiYjNDM7XHR9XG4gXG4tXHRpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzKSB7XG4mIzQzO1x0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcyB8fCBkaXJ0eV9yaW5nX3NpemUpIHtcbiBcdFx0YXZnID0gdGltZXNwZWNfZGl2KGNsZWFyX2RpcnR5X2xvZ190b3RhbCwgcC1cdTAwM2VpdGVyYXRpb25zKTtcbiBcdFx0cHJfaW5mbyhcJiMzNDtDbGVhciBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxuXCYjMzQ7LFxuIFx0XHRcdHAtXHUwMDNlaXRlcmF0aW9ucywgY2xlYXJfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcbkBAIC0yNjQsNiAmIzQzOzM0NSw5IEBAIHN0YXRpYyB2b2lkIGhlbHAoY2hhciAqbmFtZSlcbiBcdHByaW50ZihcJiMzNDsgLWE6IGFjY2VzcyBtZW1vcnkgcmFuZG9tbHkgcmF0aGVyIHRoYW4gaW4gb3JkZXIuXFxuXCYjMzQ7KTtcbiBcdHByaW50ZihcJiMzNDsgLWk6IHNwZWNpZnkgaXRlcmF0aW9uIGNvdW50cyAoZGVmYXVsdDogJVwmIzM0O1BSSXU2NFwmIzM0OylcXG5cJiMzNDssXG4gXHQgICAgICAgVEVTVF9IT1NUX0xPT1BfTik7XG4mIzQzO1x0cHJpbnRmKFwmIzM0OyAtZDogc3BlY2lmeSB0aGUgc2l6ZSBvZiBkaXJ0eS1yaW5nIGZvciB0cmFja2luZyBkaXJ0eSBwYWdlcy5cXG5cJiMzNDtcbiYjNDM7XHQgICAgICAgXCYjMzQ7ICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxcblwmIzM0O1xuJiM0MztcdCAgICAgICBcJiMzNDsgICAgIGRpcnR5LWJpdG1hcC4gTXVzdCBiZSBhIHBvd2VyIG9mIHR3by5cXG5cJiMzNDspO1xuIFx0cHJpbnRmKFwmIzM0OyAtZzogRG8gbm90IGVuYWJsZSBLVk1fQ0FQX01BTlVBTF9ESVJUWV9MT0dfUFJPVEVDVDIuIFRoaXNcXG5cJiMzNDtcbiBcdCAgICAgICBcJiMzNDsgICAgIG1ha2VzIEtWTV9HRVRfRElSVFlfTE9HIGNsZWFyIHRoZSBkaXJ0eSBsb2cgKGkuZS5cXG5cJiMzNDtcbiBcdCAgICAgICBcJiMzNDsgICAgIEtWTV9ESVJUWV9MT0dfTUFOVUFMX1BST1RFQ1RfRU5BQkxFIGlzIG5vdCBlbmFibGVkKVxcblwmIzM0O1xuQEAgLTMyMCw3ICYjNDM7NDA0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcbiBcdGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KCk7XG4gXG4tXHR3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCBcJiMzNDthYjpjOmVnaGk6bTpub3A6cjpzOnY6eDp3OlwmIzM0OykpICE9IC0xKSB7XG4mIzQzO1x0d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgXCYjMzQ7YWI6YzpkOmVnaGk6bTpub3A6cjpzOnY6eDp3OlwmIzM0OykpICE9IC0xKSB7XG4gXHRcdHN3aXRjaCAob3B0KSB7XG4gXHRcdGNhc2UgJiMzOTthJiMzOTs6XG4gXHRcdFx0cC5yYW5kb21fYWNjZXNzID0gdHJ1ZTtcbkBAIC0zMzEsNiAmIzQzOzQxNSwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHRjYXNlICYjMzk7YyYjMzk7OlxuIFx0XHRcdHBjcHVfbGlzdCA9IG9wdGFyZztcbiBcdFx0XHRicmVhaztcbiYjNDM7XHRcdGNhc2UgJiMzOTtkJiMzOTs6XG4mIzQzO1x0XHRcdGRpcnR5X3Jpbmdfc2l6ZSA9IHBhcnNlX3NpemUob3B0YXJnKTtcbiYjNDM7XHRcdFx0ZGlydHlfcmluZ19zaXplICo9IHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7XG4mIzQzO1x0XHRcdGRpcnR5X2xvZ19tYW51YWxfY2FwcyA9IDA7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlICYjMzk7ZSYjMzk7OlxuIFx0XHRcdC8qICYjMzk7ZSYjMzk7IGlzIGZvciBldmlsLiAqL1xuIFx0XHRcdHJ1bl92Y3B1c193aGlsZV9kaXNhYmxpbmdfZGlydHlfbG9nZ2luZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxuaW5kZXggMGQxZDYyMzBjYzA1MWIuLmUxN2YzNDQ5NzhhZjY2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXG5AQCAtNTgsNyAmIzQzOzU4LDggQEAgZXh0ZXJuIHN0cnVjdCBtZW1zdHJlc3NfYXJncyBtZW1zdHJlc3NfYXJncztcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXG4gXHRcdFx0XHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcbiBcdFx0XHRcdCAgIGVudW0gdm1fbWVtX2JhY2tpbmdfc3JjX3R5cGUgYmFja2luZ19zcmMsXG4tXHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbiYjNDM7XHRcdFx0XHQgICB1MzIgZGlydHlfcmluZ19zaXplKTtcbiB2b2lkIG1lbXN0cmVzc19kZXN0cm95X3ZtKHN0cnVjdCBrdm1fdm0gKnZtKTtcbiBcbiB2b2lkIG1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHdyaXRlX3BlcmNlbnQpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuaW5kZXggMTk1ZjNmZGFlMWUzOTYuLjRhZTI3YWQ5Zjk0NzNkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbkBAIC0xNjcsMTAgJiM0MzsxNjcsMjEgQEAgdW5zaWduZWQgaW50IGt2bV9jaGVja19jYXAobG9uZyBjYXApXG4gXG4gdm9pZCB2bV9lbmFibGVfZGlydHlfcmluZyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHJpbmdfc2l6ZSlcbiB7XG4tXHRpZiAodm1fY2hlY2tfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwpKVxuLVx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwsIHJpbmdfc2l6ZSk7XG4tXHRlbHNlXG4tXHRcdHZtX2VuYWJsZV9jYXAodm0sIEtWTV9DQVBfRElSVFlfTE9HX1JJTkcsIHJpbmdfc2l6ZSk7XG4mIzQzO1x0bG9uZyBjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw7XG4mIzQzO1x0aW50IG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApO1xuJiM0MztcbiYjNDM7XHRpZiAoIW1heF9zaXplKSB7XG4mIzQzO1x0XHRjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HO1xuJiM0MztcdFx0bWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRURVNUX0FTU0VSVChtYXhfc2l6ZSBcdTAwM2UgMCwgXCYjMzQ7RGlydHktcmluZyBub3Qgc3VwcG9ydGVkIGluIHRoaXMga2VybmVsXFxuXCYjMzQ7KTtcbiYjNDM7XHRURVNUX0FTU0VSVChyaW5nX3NpemUgXHUwMDNjPSBtYXhfc2l6ZSBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMihyaW5nX3NpemUpLFxuJiM0MztcdFx0ICAgIFwmIzM0O0ludmFsaWQgZGlydHktcmluZyBzaXplOiBTaG91bGQgYmUgYSBwb3dlciBvZiB0d28gXCYjMzQ7XG4mIzQzO1x0XHQgICAgXCYjMzQ7XHUwMDNjPSAlbHUgZW50cmllc1xcblwmIzM0OyxcbiYjNDM7XHRcdCAgICBtYXhfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbikpO1xuJiM0MztcbiYjNDM7XHR2bV9lbmFibGVfY2FwKHZtLCBjYXAsIHJpbmdfc2l6ZSk7XG4gXHR2bS1cdTAwM2VkaXJ0eV9yaW5nX3NpemUgPSByaW5nX3NpemU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXG5pbmRleCA2ZGNkMTU5MTBhMDYwOC4uYzlmODU1MzNmZmZmZGMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXG5AQCAtMTIxLDEwICYjNDM7MTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKHN0cnVjdCB2bV9zaGFwZSBzaGFwZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICB1MzIgbnJfdmNwdXMsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgdTY0IGV4dHJhX21lbV9wYWdlcyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICB2b2lkICpndWVzdF9jb2RlLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHN0cnVjdCBrdm1fdmNwdSAqdmNwdXNbXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICB1MzIgZGlydHlfcmluZ19zaXplKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGt2bV92bSAqdm07XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdFRFU1RfQVNTRVJUKCFucl92Y3B1cyB8fCB2Y3B1cywgXCYjMzQ7TXVzdCBwcm92aWRlIHZDUFUgYXJyYXlcJiMzNDspO1xuJiM0MztcbiYjNDM7XHR2bSA9IF9fdm1fY3JlYXRlKHNoYXBlLCBucl92Y3B1cywgZXh0cmFfbWVtX3BhZ2VzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRpcnR5X3Jpbmdfc2l6ZSlcbiYjNDM7XHRcdHZtX2VuYWJsZV9kaXJ0eV9yaW5nKHZtLCBkaXJ0eV9yaW5nX3NpemUpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgJiM0MzsmIzQzO2kpXG4mIzQzO1x0XHR2Y3B1c1tpXSA9IHZtX3ZjcHVfYWRkKHZtLCBpLCBndWVzdF9jb2RlKTtcbiYjNDM7XG4mIzQzO1x0a3ZtX2FyY2hfdm1fZmluYWxpemVfdmNwdXModm0pO1xuJiM0MztcdHJldHVybiB2bTtcbiYjNDM7fVxuJiM0MztcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXG4gXHRcdFx0XHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcbiBcdFx0XHRcdCAgIGVudW0gdm1fbWVtX2JhY2tpbmdfc3JjX3R5cGUgYmFja2luZ19zcmMsXG4tXHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpXG4mIzQzO1x0XHRcdFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLFxuJiM0MztcdFx0XHRcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXG4ge1xuIFx0c3RydWN0IG1lbXN0cmVzc19hcmdzICphcmdzID0gXHUwMDI2bWVtc3RyZXNzX2FyZ3M7XG4gXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbkBAIC0xNjcsOSAmIzQzOzE5MiwxMCBAQCBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXG4gXHQgKiBUaGUgbWVtb3J5IGlzIGFsc28gYWRkZWQgdG8gbWVtc2xvdCAwLCBidXQgdGhhdCYjMzk7cyBhIGJlbmlnbiBzaWRlXG4gXHQgKiBlZmZlY3QgYXMgS1ZNIGFsbG93cyBhbGlhc2luZyBIVkFzIGluIG1lc2xvdHMuXG4gXHQgKi9cbi1cdHZtID0gX192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXG4tXHRcdFx0XHQgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLFxuLVx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyk7XG4mIzQzO1x0dm0gPSBtZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoVk1fU0hBUEUobW9kZSksIG5yX3ZjcHVzLFxuJiM0MztcdFx0XHRcdFx0ICAgIHNsb3QwX3BhZ2VzICYjNDM7IGd1ZXN0X251bV9wYWdlcyxcbiYjNDM7XHRcdFx0XHRcdCAgICBtZW1zdHJlc3NfZ3Vlc3RfY29kZSwgdmNwdXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgZGlydHlfcmluZ19zaXplKTtcbiBcbiBcdGFyZ3MtXHUwMDNldm0gPSB2bTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXG5pbmRleCA5Yzc1NzhhMDk4YzNlMS4uM2ExYmU5Yjc1ZTAxZGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcbkBAIC05MCw3ICYjNDM7OTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXG4gXHRcdFx0XHQgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXG4tXHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbiYjNDM7XHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTtcbiAjaWZkZWYgX194ODZfNjRfX1xuIFx0aWYgKHAtXHUwMDNlZGlzYWJsZV9zbG90X3phcF9xdWlyaylcbiBcdFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVNBQkxFX1FVSVJLUzIsIEtWTV9YODZfUVVJUktfU0xPVF9aQVBfQUxMKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcbmluZGV4IDM4OGJhNDEwMWY5NzM2Li42NjFlOWFiZmI0Mzk1ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXG5AQCAtMTAxLDcgJiM0MzsxMDEsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqdW51c2VkKVxuIFx0c3RydWN0IGt2bV9wYWdlX3N0YXRzIHN0YXRzX3JlcG9wdWxhdGVkO1xuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIFZDUFVTLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXG4tXHRcdFx0XHQgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSk7XG4mIzQzO1x0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UsIDApO1xuIFxuIFx0Z3Vlc3RfbnVtX3BhZ2VzID0gKFZDUFVTICogZ3Vlc3RfcGVyY3B1X21lbV9zaXplKSBcdTAwM2VcdTAwM2Ugdm0tXHUwMDNlcGFnZV9zaGlmdDtcbiBcdGd1ZXN0X251bV9wYWdlcyA9IHZtX2FkanVzdF9udW1fZ3Vlc3RfcGFnZXMobW9kZSwgZ3Vlc3RfbnVtX3BhZ2VzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwOTozMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdGhlIHRvb2xzLyBkaXJlY3RvcnkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGE4ODk5OWZlYjI2NGFhZmQzNjc5NTJkNGRmMDc2NGU0NmFkZDIwYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMDk6MzI6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYwppbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYwpAQCAtNDA5LDcgJiM0Mzs0MDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWludCBucl92Y3B1cyA9IHBhcmFtcy0mZ3Q7bnJfdmNwdXM7CiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy0mZ3Q7dmNwdV9tZW1vcnlfYnl0ZXMsIDEsCi0JCQkJIHBhcmFtcy0mZ3Q7YmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpOwomIzQzOwkJCQkgcGFyYW1zLSZndDtiYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2VzcywgMCk7CiAKIAkvKgogCSAqIElmIGd1ZXN0X3BhZ2Vfc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgaG9zdCYjMzk7cyBwYWdlIHNpemUsIHRoZQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jCmluZGV4IDMwMmM0OTIzZDA5MzBmLi45MjI0NmUyN2VmNzQ0NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuYwpAQCAtMTYyLDcgJiM0MzsxNjIsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWludCBpLCBudW1fdWZmZHMgPSAwOwogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsCi0JCQkJIHAtJmd0O3NyY190eXBlLCBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3NyY190eXBlLCBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTsKIAogCWRlbWFuZF9wYWdpbmdfc2l6ZSA9IGdldF9iYWNraW5nX3NyY19wYWdlc3oocC0mZ3Q7c3JjX3R5cGUpOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYwppbmRleCBlZjc3OWZhOTE4MjdjOS4uMTgxZjUyMWM5YmU5NjEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYwpAQCAtMTMsNiAmIzQzOzEzLDcgQEAKICNpbmNsdWRlICZsdDt0aW1lLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG1hcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vYmFycmllci5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X3V0aWwuaCYjMzQ7CkBAIC0yOSw5ICYjNDM7MzAsNTMgQEAgc3RhdGljIGJvb2wgcnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nOwogCiAvKiBIb3N0IHZhcmlhYmxlcyAqLwogc3RhdGljIHU2NCBkaXJ0eV9sb2dfbWFudWFsX2NhcHM7CiYjNDM7c3RhdGljIHUzMiBkaXJ0eV9yaW5nX3NpemU7CiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7CiBzdGF0aWMgaW50IGl0ZXJhdGlvbjsKIHN0YXRpYyBpbnQgdmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25bS1ZNX01BWF9WQ1BVU107CiYjNDM7c3RhdGljIHN0cnVjdCB0aW1lc3BlYyB2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtLVk1fTUFYX1ZDUFVTXTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkaXJ0eV9yaW5nX2NvbGxlY3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKnJpbmdfaWR4LAomIzQzOwkJCQlzdHJ1Y3QgdGltZXNwZWMgKnRzKQomIzQzO3sKJiM0MzsJc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBjb2xsZWN0ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKJiM0MzsJc3RydWN0IHRpbWVzcGVjIHN0YXJ0OwomIzQzOwlzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqZGlydHlfZ2ZucyA9IHZjcHVfbWFwX2RpcnR5X3JpbmcodmNwdSk7CiYjNDM7CXUzMiBpZHggPSAqcmluZ19pZHg7CiYjNDM7CXUzMiByaW5nX3NpemUgPSB2Y3B1LSZndDt2bS0mZ3Q7ZGlydHlfcmluZ19zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKTsKJiM0MzsJaW50IGNsZWFyZWQsIGNvdW50OwomIzQzOwomIzQzOwlwdGhyZWFkX211dGV4X2xvY2soJmFtcDtjb2xsZWN0KTsKJiM0MzsKJiM0MzsJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7c3RhcnQpOwomIzQzOwomIzQzOwl3aGlsZSAodHJ1ZSkgewomIzQzOwkJc3RydWN0IGt2bV9kaXJ0eV9nZm4gKmN1cjsKJiM0MzsKJiM0MzsJCWN1ciA9ICZhbXA7ZGlydHlfZ2Zuc1tpZHggJSByaW5nX3NpemVdOwomIzQzOwkJaWYgKHNtcF9sb2FkX2FjcXVpcmUoJmFtcDtjdXItJmd0O2ZsYWdzKSAhPSBLVk1fRElSVFlfR0ZOX0ZfRElSVFkpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO2N1ci0mZ3Q7ZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7CiYjNDM7CQlpZHgmIzQzOyYjNDM7OwomIzQzOwl9CiYjNDM7CiYjNDM7CWNvdW50ID0gaWR4IC0gKnJpbmdfaWR4OwomIzQzOwkqcmluZ19pZHggPSBpZHg7CiYjNDM7CiYjNDM7CWNsZWFyZWQgPSBrdm1fdm1fcmVzZXRfZGlydHlfcmluZyh2Y3B1LSZndDt2bSk7CiYjNDM7CiYjNDM7CS8qIENsZWFyZWQgcGFnZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbGxlY3RlZCwgYXMgS1ZNIGlzIHN1cHBvc2VkIHRvCiYjNDM7CSAqIGNsZWFyIG9ubHkgdGhlIGVudHJpZXMgdGhhdCBoYXZlIGJlZW4gaGFydmVzdGVkLCBhbmQgYSBzaW5nbGUgdmNwdSB3aWxsCiYjNDM7CSAqIGhhcnZlc3QgYXQgdGltZS4KJiM0MzsJICovCiYjNDM7CVRFU1RfQVNTRVJUKGNsZWFyZWQgPT0gY291bnQsICYjMzQ7UmVzZXQgZGlydHkgcGFnZXMgKCV1KSBtaXNtYXRjaCAmIzM0OwomIzQzOwkJICAgICYjMzQ7d2l0aCBjb2xsZWN0ZWQgKCV1KSYjMzQ7LCBjbGVhcmVkLCBjb3VudCk7CiYjNDM7CiYjNDM7CSp0cyA9IHRpbWVzcGVjX2FkZCgqdHMsIHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9tdXRleF91bmxvY2soJmFtcDtjb2xsZWN0KTsKJiM0Mzt9CiAKIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpCiB7CkBAIC00MywxNyAmIzQzOzg4LDMzIEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpCiAJc3RydWN0IHRpbWVzcGVjIHRzX2RpZmY7CiAJc3RydWN0IHRpbWVzcGVjIHRvdGFsID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07CiAJc3RydWN0IHRpbWVzcGVjIGF2ZzsKJiM0MzsJYm9vbCB1c2VfZGlydHlfcmluZyA9ICEhdmNwdS0mZ3Q7dm0tJmd0O2RpcnR5X3Jpbmdfc2l6ZTsKJiM0MzsJdTMyIHJpbmdfaWR4ID0gMDsKIAlpbnQgcmV0OwogCiAJcnVuID0gdmNwdS0mZ3Q7cnVuOwogCiAJd2hpbGUgKCFSRUFEX09OQ0UoaG9zdF9xdWl0KSkgewogCQlpbnQgY3VycmVudF9pdGVyYXRpb24gPSBSRUFEX09OQ0UoaXRlcmF0aW9uKTsKJiM0MzsJCXN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07CiAKIAkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7c3RhcnQpOwotCQlyZXQgPSBfdmNwdV9ydW4odmNwdSk7CiYjNDM7CiYjNDM7CQlkbyB7CiYjNDM7CQkJcmV0ID0gX3ZjcHVfcnVuKHZjcHUpOwomIzQzOwkJCWlmICghdXNlX2RpcnR5X3JpbmcpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCWRpcnR5X3JpbmdfY29sbGVjdCh2Y3B1LCAmYW1wO3JpbmdfaWR4LCAmYW1wO2NvbGxlY3QpOwomIzQzOwkJfSB3aGlsZSAocnVuLSZndDtleGl0X3JlYXNvbiA9PSBLVk1fRVhJVF9ESVJUWV9SSU5HX0ZVTEwpOwomIzQzOwogCQl0c19kaWZmID0gdGltZXNwZWNfZWxhcHNlZChzdGFydCk7CiAKJiM0MzsJCWlmICh1c2VfZGlydHlfcmluZykgewomIzQzOwkJCXRzX2RpZmYgPSB0aW1lc3BlY19zdWIodHNfZGlmZiwgY29sbGVjdCk7CiYjNDM7CQkJdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbdmNwdV9pZHhdID0gY29sbGVjdDsKJiM0MzsJCX0KJiM0MzsKIAkJVEVTVF9BU1NFUlQocmV0ID09IDAsICYjMzQ7dmNwdV9ydW4gZmFpbGVkOiAlZCYjMzQ7LCByZXQpOwogCQlURVNUX0FTU0VSVChnZXRfdWNhbGwodmNwdSwgTlVMTCkgPT0gVUNBTExfU1lOQywKIAkJCSAgICAmIzM0O0ludmFsaWQgZ3Vlc3Qgc3luYyBzdGF0dXM6IGV4aXRfcmVhc29uPSVzJiMzNDssCkBAIC0xMTksNyAmIzQzOzE4MCw4IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpCiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwKIAkJCQkgcC0mZ3Q7c2xvdHMsIHAtJmd0O2JhY2tpbmdfc3JjLAotCQkJCSBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3BhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsCiYjNDM7CQkJCSBkaXJ0eV9yaW5nX3NpemUpOwogCiAJbWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHZtLCBwLSZndDt3cml0ZV9wZXJjZW50KTsKIApAQCAtMTM5LDggJiM0MzsyMDEsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZykKIAlob3N0X3F1aXQgPSBmYWxzZTsKIAogCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3N0YXJ0KTsKLQlmb3IgKGkgPSAwOyBpICZsdDsgbnJfdmNwdXM7IGkmIzQzOyYjNDM7KQomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbnJfdmNwdXM7IGkmIzQzOyYjNDM7KSB7CiAJCXZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW2ldID0gLTE7CiYjNDM7CQl2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtpXSA9IChzdHJ1Y3QgdGltZXNwZWMpezB9OwomIzQzOwl9CiAKIAkvKgogCSAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbApAQCAtMTk1LDYgJiM0MzsyNTksMjEgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZykKIAkJcHJfaW5mbygmIzM0O0l0ZXJhdGlvbiAlZCBkaXJ0eSBtZW1vcnkgdGltZTogJWxkLiUuOWxkc1xuJiMzNDssCiAJCQlpdGVyYXRpb24sIHRzX2RpZmYudHZfc2VjLCB0c19kaWZmLnR2X25zZWMpOwogCiYjNDM7CQlpZiAoZGlydHlfcmluZ19zaXplKSB7CiYjNDM7CQkJc3RydWN0IHRpbWVzcGVjIGl0ZXJhdGlvbl9zdW0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTsKJiM0MzsKJiM0MzsJCQlmb3IgKGkgPSAwOyBpICZsdDsgbnJfdmNwdXM7IGkmIzQzOyYjNDM7KQomIzQzOwkJCQlpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sCiYjNDM7CQkJCQkJCSAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pOwomIzQzOwomIzQzOwkJCXByX2luZm8oJiMzNDtJdGVyYXRpb24gJWQgY2xlYXIgZGlydHkgcmluZyB0aW1lOiAlbGQuJS45bGRzXG4mIzM0OywKJiM0MzsJCQkJaXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTsKJiM0MzsKJiM0MzsJCQljbGVhcl9kaXJ0eV9sb2dfdG90YWwgPSB0aW1lc3BlY19hZGQoY2xlYXJfZGlydHlfbG9nX3RvdGFsLAomIzQzOwkJCQkJCQkgICAgIGl0ZXJhdGlvbl9zdW0pOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQomIzQzOwogCQljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDtzdGFydCk7CiAJCW1lbXN0cmVzc19nZXRfZGlydHlfbG9nKHZtLCBiaXRtYXBzLCBwLSZndDtzbG90cyk7CiAJCXRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTsKQEAgLTIzOCwxMiAmIzQzOzMxNywxNCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWhvc3RfcXVpdCA9IHRydWU7CiAJbWVtc3RyZXNzX2pvaW5fdmNwdV90aHJlYWRzKG5yX3ZjcHVzKTsKIAotCWF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLSZndDtpdGVyYXRpb25zKTsKLQlwcl9pbmZvKCYjMzQ7R2V0IGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcbiYjMzQ7LAotCQlwLSZndDtpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYywKLQkJZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7CiYjNDM7CWlmICghZGlydHlfcmluZ19zaXplKSB7CiYjNDM7CQlhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC0mZ3Q7aXRlcmF0aW9ucyk7CiYjNDM7CQlwcl9pbmZvKCYjMzQ7R2V0IGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcbiYjMzQ7LAomIzQzOwkJCXAtJmd0O2l0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLAomIzQzOwkJCWdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpOwomIzQzOwl9CiAKLQlpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzKSB7CiYjNDM7CWlmIChkaXJ0eV9sb2dfbWFudWFsX2NhcHMgfHwgZGlydHlfcmluZ19zaXplKSB7CiAJCWF2ZyA9IHRpbWVzcGVjX2RpdihjbGVhcl9kaXJ0eV9sb2dfdG90YWwsIHAtJmd0O2l0ZXJhdGlvbnMpOwogCQlwcl9pbmZvKCYjMzQ7Q2xlYXIgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxuJiMzNDssCiAJCQlwLSZndDtpdGVyYXRpb25zLCBjbGVhcl9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLApAQCAtMjY0LDYgJiM0MzszNDUsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNoYXIgKm5hbWUpCiAJcHJpbnRmKCYjMzQ7IC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxuJiMzNDspOwogCXByaW50ZigmIzM0OyAtaTogc3BlY2lmeSBpdGVyYXRpb24gY291bnRzIChkZWZhdWx0OiAlJiMzNDtQUkl1NjQmIzM0OylcbiYjMzQ7LAogCSAgICAgICBURVNUX0hPU1RfTE9PUF9OKTsKJiM0MzsJcHJpbnRmKCYjMzQ7IC1kOiBzcGVjaWZ5IHRoZSBzaXplIG9mIGRpcnR5LXJpbmcgZm9yIHRyYWNraW5nIGRpcnR5IHBhZ2VzLlxuJiMzNDsKJiM0MzsJICAgICAgICYjMzQ7ICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxuJiMzNDsKJiM0MzsJICAgICAgICYjMzQ7ICAgICBkaXJ0eS1iaXRtYXAuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uXG4mIzM0Oyk7CiAJcHJpbnRmKCYjMzQ7IC1nOiBEbyBub3QgZW5hYmxlIEtWTV9DQVBfTUFOVUFMX0RJUlRZX0xPR19QUk9URUNUMi4gVGhpc1xuJiMzNDsKIAkgICAgICAgJiMzNDsgICAgIG1ha2VzIEtWTV9HRVRfRElSVFlfTE9HIGNsZWFyIHRoZSBkaXJ0eSBsb2cgKGkuZS5cbiYjMzQ7CiAJICAgICAgICYjMzQ7ICAgICBLVk1fRElSVFlfTE9HX01BTlVBTF9QUk9URUNUX0VOQUJMRSBpcyBub3QgZW5hYmxlZClcbiYjMzQ7CkBAIC0zMjAsNyAmIzQzOzQwNCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlndWVzdF9tb2Rlc19hcHBlbmRfZGVmYXVsdCgpOwogCi0Jd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgJiMzNDthYjpjOmVnaGk6bTpub3A6cjpzOnY6eDp3OiYjMzQ7KSkgIT0gLTEpIHsKJiM0MzsJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgJiMzNDthYjpjOmQ6ZWdoaTptOm5vcDpyOnM6djp4Onc6JiMzNDspKSAhPSAtMSkgewogCQlzd2l0Y2ggKG9wdCkgewogCQljYXNlICYjMzk7YSYjMzk7OgogCQkJcC5yYW5kb21fYWNjZXNzID0gdHJ1ZTsKQEAgLTMzMSw2ICYjNDM7NDE1LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWNhc2UgJiMzOTtjJiMzOTs6CiAJCQlwY3B1X2xpc3QgPSBvcHRhcmc7CiAJCQlicmVhazsKJiM0MzsJCWNhc2UgJiMzOTtkJiMzOTs6CiYjNDM7CQkJZGlydHlfcmluZ19zaXplID0gcGFyc2Vfc2l6ZShvcHRhcmcpOwomIzQzOwkJCWRpcnR5X3Jpbmdfc2l6ZSAqPSBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pOwomIzQzOwkJCWRpcnR5X2xvZ19tYW51YWxfY2FwcyA9IDA7CiYjNDM7CQkJYnJlYWs7CiAJCWNhc2UgJiMzOTtlJiMzOTs6CiAJCQkvKiAmIzM5O2UmIzM5OyBpcyBmb3IgZXZpbC4gKi8KIAkJCXJ1bl92Y3B1c193aGlsZV9kaXNhYmxpbmdfZGlydHlfbG9nZ2luZyA9IHRydWU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oCmluZGV4IDBkMWQ2MjMwY2MwNTFiLi5lMTdmMzQ0OTc4YWY2NiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmgKQEAgLTU4LDcgJiM0Mzs1OCw4IEBAIGV4dGVybiBzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgbWVtc3RyZXNzX2FyZ3M7CiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsCiAJCQkJICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsCiAJCQkJICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYywKLQkJCQkgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpOwomIzQzOwkJCQkgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsCiYjNDM7CQkJCSAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpOwogdm9pZCBtZW1zdHJlc3NfZGVzdHJveV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSk7CiAKIHZvaWQgbWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgd3JpdGVfcGVyY2VudCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMKaW5kZXggMTk1ZjNmZGFlMWUzOTYuLjRhZTI3YWQ5Zjk0NzNkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jCkBAIC0xNjcsMTAgJiM0MzsxNjcsMjEgQEAgdW5zaWduZWQgaW50IGt2bV9jaGVja19jYXAobG9uZyBjYXApCiAKIHZvaWQgdm1fZW5hYmxlX2RpcnR5X3Jpbmcoc3RydWN0IGt2bV92bSAqdm0sIHUzMiByaW5nX3NpemUpCiB7Ci0JaWYgKHZtX2NoZWNrX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMKSkKLQkJdm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMLCByaW5nX3NpemUpOwotCWVsc2UKLQkJdm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklORywgcmluZ19zaXplKTsKJiM0MzsJbG9uZyBjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw7CiYjNDM7CWludCBtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTsKJiM0MzsKJiM0MzsJaWYgKCFtYXhfc2l6ZSkgewomIzQzOwkJY2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklORzsKJiM0MzsJCW1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApOwomIzQzOwl9CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKG1heF9zaXplICZndDsgMCwgJiMzNDtEaXJ0eS1yaW5nIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBrZXJuZWxcbiYjMzQ7KTsKJiM0MzsJVEVTVF9BU1NFUlQocmluZ19zaXplICZsdDs9IG1heF9zaXplICZhbXA7JmFtcDsgaXNfcG93ZXJfb2ZfMihyaW5nX3NpemUpLAomIzQzOwkJICAgICYjMzQ7SW52YWxpZCBkaXJ0eS1yaW5nIHNpemU6IFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byAmIzM0OwomIzQzOwkJICAgICYjMzQ7Jmx0Oz0gJWx1IGVudHJpZXNcbiYjMzQ7LAomIzQzOwkJICAgIG1heF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKSk7CiYjNDM7CiYjNDM7CXZtX2VuYWJsZV9jYXAodm0sIGNhcCwgcmluZ19zaXplKTsKIAl2bS0mZ3Q7ZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplOwogfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYwppbmRleCA2ZGNkMTU5MTBhMDYwOC4uYzlmODU1MzNmZmZmZGMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYwpAQCAtMTIxLDEwICYjNDM7MTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsCiAJfQogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUsCiYjNDM7CQkJCQkJICAgICB1MzIgbnJfdmNwdXMsCiYjNDM7CQkJCQkJICAgICB1NjQgZXh0cmFfbWVtX3BhZ2VzLAomIzQzOwkJCQkJCSAgICAgdm9pZCAqZ3Vlc3RfY29kZSwKJiM0MzsJCQkJCQkgICAgIHN0cnVjdCBrdm1fdmNwdSAqdmNwdXNbXSwKJiM0MzsJCQkJCQkgICAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKCFucl92Y3B1cyB8fCB2Y3B1cywgJiMzNDtNdXN0IHByb3ZpZGUgdkNQVSBhcnJheSYjMzQ7KTsKJiM0MzsKJiM0MzsJdm0gPSBfX3ZtX2NyZWF0ZShzaGFwZSwgbnJfdmNwdXMsIGV4dHJhX21lbV9wYWdlcyk7CiYjNDM7CiYjNDM7CWlmIChkaXJ0eV9yaW5nX3NpemUpCiYjNDM7CQl2bV9lbmFibGVfZGlydHlfcmluZyh2bSwgZGlydHlfcmluZ19zaXplKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyAmIzQzOyYjNDM7aSkKJiM0MzsJCXZjcHVzW2ldID0gdm1fdmNwdV9hZGQodm0sIGksIGd1ZXN0X2NvZGUpOwomIzQzOwomIzQzOwlrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7CiYjNDM7CXJldHVybiB2bTsKJiM0Mzt9CiYjNDM7CiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsCiAJCQkJICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsCiAJCQkJICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYywKLQkJCQkgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpCiYjNDM7CQkJCSAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywKJiM0MzsJCQkJICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSkKIHsKIAlzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgKmFyZ3MgPSAmYW1wO21lbXN0cmVzc19hcmdzOwogCXN0cnVjdCBrdm1fdm0gKnZtOwpAQCAtMTY3LDkgJiM0MzsxOTIsMTAgQEAgc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLAogCSAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0JiMzOTtzIGEgYmVuaWduIHNpZGUKIAkgKiBlZmZlY3QgYXMgS1ZNIGFsbG93cyBhbGlhc2luZyBIVkFzIGluIG1lc2xvdHMuCiAJICovCi0Jdm0gPSBfX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKFZNX1NIQVBFKG1vZGUpLCBucl92Y3B1cywKLQkJCQkgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLAotCQkJCSAgICBtZW1zdHJlc3NfZ3Vlc3RfY29kZSwgdmNwdXMpOwomIzQzOwl2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsCiYjNDM7CQkJCQkgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLAomIzQzOwkJCQkJICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cywKJiM0MzsJCQkJCSAgICBkaXJ0eV9yaW5nX3NpemUpOwogCiAJYXJncy0mZ3Q7dm0gPSB2bTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuYwppbmRleCA5Yzc1NzhhMDk4YzNlMS4uM2ExYmU5Yjc1ZTAxZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jCkBAIC05MCw3ICYjNDM7OTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsCiAJCQkJIFZNX01FTV9TUkNfQU5PTllNT1VTLAotCQkJCSBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3BhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApOwogI2lmZGVmIF9feDg2XzY0X18KIAlpZiAocC0mZ3Q7ZGlzYWJsZV9zbG90X3phcF9xdWlyaykKIAkJdm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVNBQkxFX1FVSVJLUzIsIEtWTV9YODZfUVVJUktfU0xPVF9aQVBfQUxMKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYwppbmRleCAzODhiYTQxMDFmOTczNi4uNjYxZTlhYmZiNDM5NWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmMKQEAgLTEwMSw3ICYjNDM7MTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZCkKIAlzdHJ1Y3Qga3ZtX3BhZ2Vfc3RhdHMgc3RhdHNfcmVwb3B1bGF0ZWQ7CiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgVkNQVVMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwKLQkJCQkgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSk7CiYjNDM7CQkJCSBTTE9UUywgYmFja2luZ19zcmMsIGZhbHNlLCAwKTsKIAogCWd1ZXN0X251bV9wYWdlcyA9IChWQ1BVUyAqIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSkgJmd0OyZndDsgdm0tJmd0O3BhZ2Vfc2hpZnQ7CiAJZ3Vlc3RfbnVtX3BhZ2VzID0gdm1fYWRqdXN0X251bV9ndWVzdF9wYWdlcyhtb2RlLCBndWVzdF9udW1fcGFnZXMpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjE4CgkJCQkJCQlvdXRwdXQ6IDU5CgkJCQkJCQl0aG91Z2h0czogNTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBmaWxlcyB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gLiBUaGVzZSBhcmUgc2VsZnRlc3RzIOKAkyBub3QgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFueXRoaW5nIHRoYXQgd291bGQgYmUgZGlyZWN0bHkgZXhlY3V0ZWQgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50IG9yLCBjcnVjaWFsbHksIGZ1enplZCBieSBzeXprYWxsZXIuIFN5emthbGxlciYjMzk7cyBqb2IgaXMgdG8gZnV6eiB0aGUga2VybmVsIGl0c2VsZiwgbm90IHRoZSB0ZXN0IHN1aXRlLgoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBtb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBjb2RlIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiwgb3IgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDsKCkxldCBtZSBjb25maXJtIHRoZSBmaWxlcyBpbnZvbHZlZDogIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jYCwgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaGAsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY2AsIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jYC4gIFl1cCwgKmFsbCogd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AgZGlyZWN0b3J5LgoKU28sIHNpbmNlIHRoZSBwYXRjaCAqb25seSogdG91Y2hlcyBzZWxmdGVzdHMsIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkga2VybmVsIGNvZGUgdGhhdCBuZWVkcyB0byBiZSBmdXp6ZWQuIEl0JiMzOTtzIGEgdGVzdCBtb2RpZmljYXRpb24sIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcmUtc2NhbiB0aGUgZmlsZSBsaXN0IGFnYWluLiBZZXAsIG5vdGhpbmcga2VybmVsLWZhY2luZy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpczogYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBwYXRjaCBpcyBjb25maW5lZCB0byBLVk0gc2VsZnRlc3RzIHdpdGhpbiB0aGUgdG9vbHMgZGlyZWN0b3J5LCBhbmQgaXQgZG9lc24mIzM5O3QgYWZmZWN0IGFueSBrZXJuZWwgY29kZSB0aGF0IGlzIGRpcmVjdGx5IGV4cG9zZWQgZm9yIGV4ZWN1dGlvbiBvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA5OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRoZSB0b29scy8gZGlyZWN0b3J5LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0aGUgdG9vbHMvIGRpcmVjdG9yeS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMDk6MzI6NTYuMjA5MzE5ODE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NTY3NDIwMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0aGUgdG9vbHMvIGRpcmVjdG9yeS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwOTozMjo1Ni4yMDkzMjY5MDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0OTMwOTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRhODg5OTlmZWIyNjRhYWZkMzY3OTUyZDRkZjA3NjRlNDZhZGQyMGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgOSAwOTozMjo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuY1xcbmluZGV4IDQ0MTVjOTRiMjg2NjA1Li5mNzhkNTYyNjVkODkzNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuY1xcbkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFx0aW50IG5yX3ZjcHVzID0gcGFyYW1zLVxcdTAwM2Vucl92Y3B1cztcXG4gXFxuIFxcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgcGFyYW1zLVxcdTAwM2V2Y3B1X21lbW9yeV9ieXRlcywgMSxcXG4tXFx0XFx0XFx0XFx0IHBhcmFtcy1cXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpO1xcbitcXHRcXHRcXHRcXHQgcGFyYW1zLVxcdTAwM2ViYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2VzcywgMCk7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBJZiBndWVzdF9wYWdlX3NpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGhvc3QncyBwYWdlIHNpemUsIHRoZVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcXG5pbmRleCAzMDJjNDkyM2QwOTMwZi4uOTIyNDZlMjdlZjc0NDcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXFxuQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXHRpbnQgaSwgbnVtX3VmZmRzID0gMDtcXG4gXFxuIFxcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLCAxLFxcbi1cXHRcXHRcXHRcXHQgcC1cXHUwMDNlc3JjX3R5cGUsIHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xcbitcXHRcXHRcXHRcXHQgcC1cXHUwMDNlc3JjX3R5cGUsIHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xcbiBcXG4gXFx0ZGVtYW5kX3BhZ2luZ19zaXplID0gZ2V0X2JhY2tpbmdfc3JjX3BhZ2VzeihwLVxcdTAwM2VzcmNfdHlwZSk7XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xcbmluZGV4IGVmNzc5ZmE5MTgyN2M5Li4xODFmNTIxYzliZTk2MSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xcbkBAIC0xMyw2ICsxMyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2N0aW1lLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NwdGhyZWFkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRtYXAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS9iYXJyaWVyLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwia3ZtX3V0aWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3RfdXRpbC5oXFxcIlxcbkBAIC0yOSw5ICszMCw1MyBAQCBzdGF0aWMgYm9vbCBydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmc7XFxuIFxcbiAvKiBIb3N0IHZhcmlhYmxlcyAqL1xcbiBzdGF0aWMgdTY0IGRpcnR5X2xvZ19tYW51YWxfY2FwcztcXG4rc3RhdGljIHUzMiBkaXJ0eV9yaW5nX3NpemU7XFxuIHN0YXRpYyBib29sIGhvc3RfcXVpdDtcXG4gc3RhdGljIGludCBpdGVyYXRpb247XFxuIHN0YXRpYyBpbnQgdmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25bS1ZNX01BWF9WQ1BVU107XFxuK3N0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbS1ZNX01BWF9WQ1BVU107XFxuK1xcbitzdGF0aWMgdm9pZCBkaXJ0eV9yaW5nX2NvbGxlY3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKnJpbmdfaWR4LFxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgdGltZXNwZWMgKnRzKVxcbit7XFxuK1xcdHN0YXRpYyBwdGhyZWFkX211dGV4X3QgY29sbGVjdCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7XFxuK1xcdHN0cnVjdCB0aW1lc3BlYyBzdGFydDtcXG4rXFx0c3RydWN0IGt2bV9kaXJ0eV9nZm4gKmRpcnR5X2dmbnMgPSB2Y3B1X21hcF9kaXJ0eV9yaW5nKHZjcHUpO1xcbitcXHR1MzIgaWR4ID0gKnJpbmdfaWR4O1xcbitcXHR1MzIgcmluZ19zaXplID0gdmNwdS1cXHUwMDNldm0tXFx1MDAzZWRpcnR5X3Jpbmdfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7XFxuK1xcdGludCBjbGVhcmVkLCBjb3VudDtcXG4rXFxuK1xcdHB0aHJlYWRfbXV0ZXhfbG9jayhcXHUwMDI2Y29sbGVjdCk7XFxuK1xcbitcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4rXFxuK1xcdHdoaWxlICh0cnVlKSB7XFxuK1xcdFxcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpjdXI7XFxuK1xcbitcXHRcXHRjdXIgPSBcXHUwMDI2ZGlydHlfZ2Zuc1tpZHggJSByaW5nX3NpemVdO1xcbitcXHRcXHRpZiAoc21wX2xvYWRfYWNxdWlyZShcXHUwMDI2Y3VyLVxcdTAwM2VmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZjdXItXFx1MDAzZWZsYWdzLCBLVk1fRElSVFlfR0ZOX0ZfUkVTRVQpO1xcbitcXHRcXHRpZHgrKztcXG4rXFx0fVxcbitcXG4rXFx0Y291bnQgPSBpZHggLSAqcmluZ19pZHg7XFxuK1xcdCpyaW5nX2lkeCA9IGlkeDtcXG4rXFxuK1xcdGNsZWFyZWQgPSBrdm1fdm1fcmVzZXRfZGlydHlfcmluZyh2Y3B1LVxcdTAwM2V2bSk7XFxuK1xcbitcXHQvKiBDbGVhcmVkIHBhZ2VzIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBjb2xsZWN0ZWQsIGFzIEtWTSBpcyBzdXBwb3NlZCB0b1xcbitcXHQgKiBjbGVhciBvbmx5IHRoZSBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGhhcnZlc3RlZCwgYW5kIGEgc2luZ2xlIHZjcHUgd2lsbFxcbitcXHQgKiBoYXJ2ZXN0IGF0IHRpbWUuXFxuK1xcdCAqL1xcbitcXHRURVNUX0FTU0VSVChjbGVhcmVkID09IGNvdW50LCBcXFwiUmVzZXQgZGlydHkgcGFnZXMgKCV1KSBtaXNtYXRjaCBcXFwiXFxuK1xcdFxcdCAgICBcXFwid2l0aCBjb2xsZWN0ZWQgKCV1KVxcXCIsIGNsZWFyZWQsIGNvdW50KTtcXG4rXFxuK1xcdCp0cyA9IHRpbWVzcGVjX2FkZCgqdHMsIHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpKTtcXG4rXFxuK1xcdHB0aHJlYWRfbXV0ZXhfdW5sb2NrKFxcdTAwMjZjb2xsZWN0KTtcXG4rfVxcbiBcXG4gc3RhdGljIHZvaWQgdmNwdV93b3JrZXIoc3RydWN0IG1lbXN0cmVzc192Y3B1X2FyZ3MgKnZjcHVfYXJncylcXG4ge1xcbkBAIC00MywxNyArODgsMzMgQEAgc3RhdGljIHZvaWQgdmNwdV93b3JrZXIoc3RydWN0IG1lbXN0cmVzc192Y3B1X2FyZ3MgKnZjcHVfYXJncylcXG4gXFx0c3RydWN0IHRpbWVzcGVjIHRzX2RpZmY7XFxuIFxcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWMgYXZnO1xcbitcXHRib29sIHVzZV9kaXJ0eV9yaW5nID0gISF2Y3B1LVxcdTAwM2V2bS1cXHUwMDNlZGlydHlfcmluZ19zaXplO1xcbitcXHR1MzIgcmluZ19pZHggPSAwO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0cnVuID0gdmNwdS1cXHUwMDNlcnVuO1xcbiBcXG4gXFx0d2hpbGUgKCFSRUFEX09OQ0UoaG9zdF9xdWl0KSkge1xcbiBcXHRcXHRpbnQgY3VycmVudF9pdGVyYXRpb24gPSBSRUFEX09OQ0UoaXRlcmF0aW9uKTtcXG4rXFx0XFx0c3RydWN0IHRpbWVzcGVjIGNvbGxlY3QgPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcXG4gXFxuIFxcdFxcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcXHUwMDI2c3RhcnQpO1xcbi1cXHRcXHRyZXQgPSBfdmNwdV9ydW4odmNwdSk7XFxuK1xcbitcXHRcXHRkbyB7XFxuK1xcdFxcdFxcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcXG4rXFx0XFx0XFx0aWYgKCF1c2VfZGlydHlfcmluZylcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHRkaXJ0eV9yaW5nX2NvbGxlY3QodmNwdSwgXFx1MDAyNnJpbmdfaWR4LCBcXHUwMDI2Y29sbGVjdCk7XFxuK1xcdFxcdH0gd2hpbGUgKHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24gPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKTtcXG4rXFxuIFxcdFxcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcXG4gXFxuK1xcdFxcdGlmICh1c2VfZGlydHlfcmluZykge1xcbitcXHRcXHRcXHR0c19kaWZmID0gdGltZXNwZWNfc3ViKHRzX2RpZmYsIGNvbGxlY3QpO1xcbitcXHRcXHRcXHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRURVNUX0FTU0VSVChyZXQgPT0gMCwgXFxcInZjcHVfcnVuIGZhaWxlZDogJWRcXFwiLCByZXQpO1xcbiBcXHRcXHRURVNUX0FTU0VSVChnZXRfdWNhbGwodmNwdSwgTlVMTCkgPT0gVUNBTExfU1lOQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJJbnZhbGlkIGd1ZXN0IHN5bmMgc3RhdHVzOiBleGl0X3JlYXNvbj0lc1xcXCIsXFxuQEAgLTExOSw3ICsxODAsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXG4gXFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXFxuIFxcdFxcdFxcdFxcdCBwLVxcdTAwM2VzbG90cywgcC1cXHUwMDNlYmFja2luZ19zcmMsXFxuLVxcdFxcdFxcdFxcdCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXFxuK1xcdFxcdFxcdFxcdCBkaXJ0eV9yaW5nX3NpemUpO1xcbiBcXG4gXFx0bWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHZtLCBwLVxcdTAwM2V3cml0ZV9wZXJjZW50KTtcXG4gXFxuQEAgLTEzOSw4ICsyMDEsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFx0aG9zdF9xdWl0ID0gZmFsc2U7XFxuIFxcbiBcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3ZjcHVzOyBpKyspXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgaSsrKSB7XFxuIFxcdFxcdHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW2ldID0gLTE7XFxuK1xcdFxcdHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XFxuK1xcdH1cXG4gXFxuIFxcdC8qXFxuIFxcdCAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbFxcbkBAIC0xOTUsNiArMjU5LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXFxuIFxcdFxcdHByX2luZm8oXFxcIkl0ZXJhdGlvbiAlZCBkaXJ0eSBtZW1vcnkgdGltZTogJWxkLiUuOWxkc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0aXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTtcXG4gXFxuK1xcdFxcdGlmIChkaXJ0eV9yaW5nX3NpemUpIHtcXG4rXFx0XFx0XFx0c3RydWN0IHRpbWVzcGVjIGl0ZXJhdGlvbl9zdW0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcXG4rXFxuK1xcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgaSsrKVxcbitcXHRcXHRcXHRcXHRpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pO1xcbitcXG4rXFx0XFx0XFx0cHJfaW5mbyhcXFwiSXRlcmF0aW9uICVkIGNsZWFyIGRpcnR5IHJpbmcgdGltZTogJWxkLiUuOWxkc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0aXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTtcXG4rXFxuK1xcdFxcdFxcdGNsZWFyX2RpcnR5X2xvZ190b3RhbCA9IHRpbWVzcGVjX2FkZChjbGVhcl9kaXJ0eV9sb2dfdG90YWwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgaXRlcmF0aW9uX3N1bSk7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4gXFx0XFx0bWVtc3RyZXNzX2dldF9kaXJ0eV9sb2codm0sIGJpdG1hcHMsIHAtXFx1MDAzZXNsb3RzKTtcXG4gXFx0XFx0dHNfZGlmZiA9IHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpO1xcbkBAIC0yMzgsMTIgKzMxNywxNCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXHRob3N0X3F1aXQgPSB0cnVlO1xcbiBcXHRtZW1zdHJlc3Nfam9pbl92Y3B1X3RocmVhZHMobnJfdmNwdXMpO1xcbiBcXG4tXFx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXFx1MDAzZWl0ZXJhdGlvbnMpO1xcbi1cXHRwcl9pbmZvKFxcXCJHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcXFxuXFxcIixcXG4tXFx0XFx0cC1cXHUwMDNlaXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXFxuLVxcdFxcdGdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpO1xcbitcXHRpZiAoIWRpcnR5X3Jpbmdfc2l6ZSkge1xcbitcXHRcXHRhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC1cXHUwMDNlaXRlcmF0aW9ucyk7XFxuK1xcdFxcdHByX2luZm8oXFxcIkdldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRwLVxcdTAwM2VpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcXG4rXFx0XFx0XFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XFxuK1xcdH1cXG4gXFxuLVxcdGlmIChkaXJ0eV9sb2dfbWFudWFsX2NhcHMpIHtcXG4rXFx0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcyB8fCBkaXJ0eV9yaW5nX3NpemUpIHtcXG4gXFx0XFx0YXZnID0gdGltZXNwZWNfZGl2KGNsZWFyX2RpcnR5X2xvZ190b3RhbCwgcC1cXHUwMDNlaXRlcmF0aW9ucyk7XFxuIFxcdFxcdHByX2luZm8oXFxcIkNsZWFyIGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcXFxcblxcXCIsXFxuIFxcdFxcdFxcdHAtXFx1MDAzZWl0ZXJhdGlvbnMsIGNsZWFyX2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXFxuQEAgLTI2NCw2ICszNDUsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNoYXIgKm5hbWUpXFxuIFxcdHByaW50ZihcXFwiIC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxcXFxuXFxcIik7XFxuIFxcdHByaW50ZihcXFwiIC1pOiBzcGVjaWZ5IGl0ZXJhdGlvbiBjb3VudHMgKGRlZmF1bHQ6ICVcXFwiUFJJdTY0XFxcIilcXFxcblxcXCIsXFxuIFxcdCAgICAgICBURVNUX0hPU1RfTE9PUF9OKTtcXG4rXFx0cHJpbnRmKFxcXCIgLWQ6IHNwZWNpZnkgdGhlIHNpemUgb2YgZGlydHktcmluZyBmb3IgdHJhY2tpbmcgZGlydHkgcGFnZXMuXFxcXG5cXFwiXFxuK1xcdCAgICAgICBcXFwiICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxcXFxuXFxcIlxcbitcXHQgICAgICAgXFxcIiAgICAgZGlydHktYml0bWFwLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLlxcXFxuXFxcIik7XFxuIFxcdHByaW50ZihcXFwiIC1nOiBEbyBub3QgZW5hYmxlIEtWTV9DQVBfTUFOVUFMX0RJUlRZX0xPR19QUk9URUNUMi4gVGhpc1xcXFxuXFxcIlxcbiBcXHQgICAgICAgXFxcIiAgICAgbWFrZXMgS1ZNX0dFVF9ESVJUWV9MT0cgY2xlYXIgdGhlIGRpcnR5IGxvZyAoaS5lLlxcXFxuXFxcIlxcbiBcXHQgICAgICAgXFxcIiAgICAgS1ZNX0RJUlRZX0xPR19NQU5VQUxfUFJPVEVDVF9FTkFCTEUgaXMgbm90IGVuYWJsZWQpXFxcXG5cXFwiXFxuQEAgLTMyMCw3ICs0MDQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXG4gXFx0Z3Vlc3RfbW9kZXNfYXBwZW5kX2RlZmF1bHQoKTtcXG4gXFxuLVxcdHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFxcXCJhYjpjOmVnaGk6bTpub3A6cjpzOnY6eDp3OlxcXCIpKSAhPSAtMSkge1xcbitcXHR3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCBcXFwiYWI6YzpkOmVnaGk6bTpub3A6cjpzOnY6eDp3OlxcXCIpKSAhPSAtMSkge1xcbiBcXHRcXHRzd2l0Y2ggKG9wdCkge1xcbiBcXHRcXHRjYXNlICdhJzpcXG4gXFx0XFx0XFx0cC5yYW5kb21fYWNjZXNzID0gdHJ1ZTtcXG5AQCAtMzMxLDYgKzQxNSwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRcXHRjYXNlICdjJzpcXG4gXFx0XFx0XFx0cGNwdV9saXN0ID0gb3B0YXJnO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSAnZCc6XFxuK1xcdFxcdFxcdGRpcnR5X3Jpbmdfc2l6ZSA9IHBhcnNlX3NpemUob3B0YXJnKTtcXG4rXFx0XFx0XFx0ZGlydHlfcmluZ19zaXplICo9IHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7XFxuK1xcdFxcdFxcdGRpcnR5X2xvZ19tYW51YWxfY2FwcyA9IDA7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlICdlJzpcXG4gXFx0XFx0XFx0LyogJ2UnIGlzIGZvciBldmlsLiAqL1xcbiBcXHRcXHRcXHRydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmcgPSB0cnVlO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXFxuaW5kZXggMGQxZDYyMzBjYzA1MWIuLmUxN2YzNDQ5NzhhZjY2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcXG5AQCAtNTgsNyArNTgsOCBAQCBleHRlcm4gc3RydWN0IG1lbXN0cmVzc19hcmdzIG1lbXN0cmVzc19hcmdzO1xcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXFxuIFxcdFxcdFxcdFxcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxcbiBcXHRcXHRcXHRcXHQgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLFxcbi1cXHRcXHRcXHRcXHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xcbitcXHRcXHRcXHRcXHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXFxuK1xcdFxcdFxcdFxcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpO1xcbiB2b2lkIG1lbXN0cmVzc19kZXN0cm95X3ZtKHN0cnVjdCBrdm1fdm0gKnZtKTtcXG4gXFxuIHZvaWQgbWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgd3JpdGVfcGVyY2VudCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xcbmluZGV4IDE5NWYzZmRhZTFlMzk2Li40YWUyN2FkOWY5NDczZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG5AQCAtMTY3LDEwICsxNjcsMjEgQEAgdW5zaWduZWQgaW50IGt2bV9jaGVja19jYXAobG9uZyBjYXApXFxuIFxcbiB2b2lkIHZtX2VuYWJsZV9kaXJ0eV9yaW5nKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgcmluZ19zaXplKVxcbiB7XFxuLVxcdGlmICh2bV9jaGVja19jYXAodm0sIEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTCkpXFxuLVxcdFxcdHZtX2VuYWJsZV9jYXAodm0sIEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTCwgcmluZ19zaXplKTtcXG4tXFx0ZWxzZVxcbi1cXHRcXHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HLCByaW5nX3NpemUpO1xcbitcXHRsb25nIGNhcCA9IEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTDtcXG4rXFx0aW50IG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApO1xcbitcXG4rXFx0aWYgKCFtYXhfc2l6ZSkge1xcbitcXHRcXHRjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HO1xcbitcXHRcXHRtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTtcXG4rXFx0fVxcbitcXG4rXFx0VEVTVF9BU1NFUlQobWF4X3NpemUgXFx1MDAzZSAwLCBcXFwiRGlydHktcmluZyBub3Qgc3VwcG9ydGVkIGluIHRoaXMga2VybmVsXFxcXG5cXFwiKTtcXG4rXFx0VEVTVF9BU1NFUlQocmluZ19zaXplIFxcdTAwM2M9IG1heF9zaXplIFxcdTAwMjZcXHUwMDI2IGlzX3Bvd2VyX29mXzIocmluZ19zaXplKSxcXG4rXFx0XFx0ICAgIFxcXCJJbnZhbGlkIGRpcnR5LXJpbmcgc2l6ZTogU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvIFxcXCJcXG4rXFx0XFx0ICAgIFxcXCJcXHUwMDNjPSAlbHUgZW50cmllc1xcXFxuXFxcIixcXG4rXFx0XFx0ICAgIG1heF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKSk7XFxuK1xcbitcXHR2bV9lbmFibGVfY2FwKHZtLCBjYXAsIHJpbmdfc2l6ZSk7XFxuIFxcdHZtLVxcdTAwM2VkaXJ0eV9yaW5nX3NpemUgPSByaW5nX3NpemU7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXFxuaW5kZXggNmRjZDE1OTEwYTA2MDguLmM5Zjg1NTMzZmZmZmRjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXFxuQEAgLTEyMSwxMCArMTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIG5yX3ZjcHVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHU2NCBleHRyYV9tZW1fcGFnZXMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgdm9pZCAqZ3Vlc3RfY29kZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHVzW10sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSlcXG4re1xcbitcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG4rXFx0aW50IGk7XFxuK1xcbitcXHRURVNUX0FTU0VSVCghbnJfdmNwdXMgfHwgdmNwdXMsIFxcXCJNdXN0IHByb3ZpZGUgdkNQVSBhcnJheVxcXCIpO1xcbitcXG4rXFx0dm0gPSBfX3ZtX2NyZWF0ZShzaGFwZSwgbnJfdmNwdXMsIGV4dHJhX21lbV9wYWdlcyk7XFxuK1xcbitcXHRpZiAoZGlydHlfcmluZ19zaXplKVxcbitcXHRcXHR2bV9lbmFibGVfZGlydHlfcmluZyh2bSwgZGlydHlfcmluZ19zaXplKTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgKytpKVxcbitcXHRcXHR2Y3B1c1tpXSA9IHZtX3ZjcHVfYWRkKHZtLCBpLCBndWVzdF9jb2RlKTtcXG4rXFxuK1xcdGt2bV9hcmNoX3ZtX2ZpbmFsaXplX3ZjcHVzKHZtKTtcXG4rXFx0cmV0dXJuIHZtO1xcbit9XFxuK1xcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXFxuIFxcdFxcdFxcdFxcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxcbiBcXHRcXHRcXHRcXHQgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLFxcbi1cXHRcXHRcXHRcXHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpXFxuK1xcdFxcdFxcdFxcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcXG4rXFx0XFx0XFx0XFx0ICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgKmFyZ3MgPSBcXHUwMDI2bWVtc3RyZXNzX2FyZ3M7XFxuIFxcdHN0cnVjdCBrdm1fdm0gKnZtO1xcbkBAIC0xNjcsOSArMTkyLDEwIEBAIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcXG4gXFx0ICogVGhlIG1lbW9yeSBpcyBhbHNvIGFkZGVkIHRvIG1lbXNsb3QgMCwgYnV0IHRoYXQncyBhIGJlbmlnbiBzaWRlXFxuIFxcdCAqIGVmZmVjdCBhcyBLVk0gYWxsb3dzIGFsaWFzaW5nIEhWQXMgaW4gbWVzbG90cy5cXG4gXFx0ICovXFxuLVxcdHZtID0gX192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXFxuLVxcdFxcdFxcdFxcdCAgICBzbG90MF9wYWdlcyArIGd1ZXN0X251bV9wYWdlcyxcXG4tXFx0XFx0XFx0XFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyk7XFxuK1xcdHZtID0gbWVtc3RyZXNzX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKFZNX1NIQVBFKG1vZGUpLCBucl92Y3B1cyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHNsb3QwX3BhZ2VzICsgZ3Vlc3RfbnVtX3BhZ2VzLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgbWVtc3RyZXNzX2d1ZXN0X2NvZGUsIHZjcHVzLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgZGlydHlfcmluZ19zaXplKTtcXG4gXFxuIFxcdGFyZ3MtXFx1MDAzZXZtID0gdm07XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXFxuaW5kZXggOWM3NTc4YTA5OGMzZTEuLjNhMWJlOWI3NWUwMWRhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcXG5AQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXG4gXFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXFxuIFxcdFxcdFxcdFxcdCBWTV9NRU1fU1JDX0FOT05ZTU9VUyxcXG4tXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xcbitcXHRcXHRcXHRcXHQgcC1cXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywgMCk7XFxuICNpZmRlZiBfX3g4Nl82NF9fXFxuIFxcdGlmIChwLVxcdTAwM2VkaXNhYmxlX3Nsb3RfemFwX3F1aXJrKVxcbiBcXHRcXHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJU0FCTEVfUVVJUktTMiwgS1ZNX1g4Nl9RVUlSS19TTE9UX1pBUF9BTEwpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcXG5pbmRleCAzODhiYTQxMDFmOTczNi4uNjYxZTlhYmZiNDM5NWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXFxuQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqdW51c2VkKVxcbiBcXHRzdHJ1Y3Qga3ZtX3BhZ2Vfc3RhdHMgc3RhdHNfcmVwb3B1bGF0ZWQ7XFxuIFxcbiBcXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgVkNQVVMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSxcXG4tXFx0XFx0XFx0XFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UpO1xcbitcXHRcXHRcXHRcXHQgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSwgMCk7XFxuIFxcbiBcXHRndWVzdF9udW1fcGFnZXMgPSAoVkNQVVMgKiBndWVzdF9wZXJjcHVfbWVtX3NpemUpIFxcdTAwM2VcXHUwMDNlIHZtLVxcdTAwM2VwYWdlX3NoaWZ0O1xcbiBcXHRndWVzdF9udW1fcGFnZXMgPSB2bV9hZGp1c3RfbnVtX2d1ZXN0X3BhZ2VzKG1vZGUsIGd1ZXN0X251bV9wYWdlcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA5OjMyOjU3LjA1OTUxMTIwMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5MDY1NDI0NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0aGUgdG9vbHMvIGRpcmVjdG9yeS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRhODg5OTlmZWIyNjRhYWZkMzY3OTUyZDRkZjA3NjRlNDZhZGQyMGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDA5OjMyOjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbmluZGV4IDQ0MTVjOTRiMjg2NjA1Li5mNzhkNTYyNjVkODkzNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGludCBucl92Y3B1cyA9IHBhcmFtcy1cdTAwM2Vucl92Y3B1cztcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgcGFyYW1zLVx1MDAzZXZjcHVfbWVtb3J5X2J5dGVzLCAxLFxuLVx0XHRcdFx0IHBhcmFtcy1cdTAwM2ViYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2Vzcyk7XG4rXHRcdFx0XHQgcGFyYW1zLVx1MDAzZWJhY2tpbmdfc3JjLCAhb3ZlcmxhcF9tZW1vcnlfYWNjZXNzLCAwKTtcbiBcbiBcdC8qXG4gXHQgKiBJZiBndWVzdF9wYWdlX3NpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGhvc3QncyBwYWdlIHNpemUsIHRoZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xuaW5kZXggMzAyYzQ5MjNkMDkzMGYuLjkyMjQ2ZTI3ZWY3NDQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcbkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGludCBpLCBudW1fdWZmZHMgPSAwO1xuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXG4tXHRcdFx0XHQgcC1cdTAwM2VzcmNfdHlwZSwgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCBwLVx1MDAzZXNyY190eXBlLCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuIFxuIFx0ZGVtYW5kX3BhZ2luZ19zaXplID0gZ2V0X2JhY2tpbmdfc3JjX3BhZ2VzeihwLVx1MDAzZXNyY190eXBlKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuaW5kZXggZWY3NzlmYTkxODI3YzkuLjE4MWY1MjFjOWJlOTYxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuQEAgLTEzLDYgKzEzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N0aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS9iYXJyaWVyLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcImt2bV91dGlsLmhcIlxuICNpbmNsdWRlIFwidGVzdF91dGlsLmhcIlxuQEAgLTI5LDkgKzMwLDUzIEBAIHN0YXRpYyBib29sIHJ1bl92Y3B1c193aGlsZV9kaXNhYmxpbmdfZGlydHlfbG9nZ2luZztcbiBcbiAvKiBIb3N0IHZhcmlhYmxlcyAqL1xuIHN0YXRpYyB1NjQgZGlydHlfbG9nX21hbnVhbF9jYXBzO1xuK3N0YXRpYyB1MzIgZGlydHlfcmluZ19zaXplO1xuIHN0YXRpYyBib29sIGhvc3RfcXVpdDtcbiBzdGF0aWMgaW50IGl0ZXJhdGlvbjtcbiBzdGF0aWMgaW50IHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW0tWTV9NQVhfVkNQVVNdO1xuK3N0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbS1ZNX01BWF9WQ1BVU107XG4rXG4rc3RhdGljIHZvaWQgZGlydHlfcmluZ19jb2xsZWN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICpyaW5nX2lkeCxcbitcdFx0XHRcdHN0cnVjdCB0aW1lc3BlYyAqdHMpXG4re1xuK1x0c3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBjb2xsZWN0ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjtcbitcdHN0cnVjdCB0aW1lc3BlYyBzdGFydDtcbitcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpkaXJ0eV9nZm5zID0gdmNwdV9tYXBfZGlydHlfcmluZyh2Y3B1KTtcbitcdHUzMiBpZHggPSAqcmluZ19pZHg7XG4rXHR1MzIgcmluZ19zaXplID0gdmNwdS1cdTAwM2V2bS1cdTAwM2VkaXJ0eV9yaW5nX3NpemUgLyBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pO1xuK1x0aW50IGNsZWFyZWQsIGNvdW50O1xuK1xuK1x0cHRocmVhZF9tdXRleF9sb2NrKFx1MDAyNmNvbGxlY3QpO1xuK1xuK1x0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnN0YXJ0KTtcbitcbitcdHdoaWxlICh0cnVlKSB7XG4rXHRcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpjdXI7XG4rXG4rXHRcdGN1ciA9IFx1MDAyNmRpcnR5X2dmbnNbaWR4ICUgcmluZ19zaXplXTtcbitcdFx0aWYgKHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2Y3VyLVx1MDAzZWZsYWdzKSAhPSBLVk1fRElSVFlfR0ZOX0ZfRElSVFkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNmN1ci1cdTAwM2VmbGFncywgS1ZNX0RJUlRZX0dGTl9GX1JFU0VUKTtcbitcdFx0aWR4Kys7XG4rXHR9XG4rXG4rXHRjb3VudCA9IGlkeCAtICpyaW5nX2lkeDtcbitcdCpyaW5nX2lkeCA9IGlkeDtcbitcbitcdGNsZWFyZWQgPSBrdm1fdm1fcmVzZXRfZGlydHlfcmluZyh2Y3B1LVx1MDAzZXZtKTtcbitcbitcdC8qIENsZWFyZWQgcGFnZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbGxlY3RlZCwgYXMgS1ZNIGlzIHN1cHBvc2VkIHRvXG4rXHQgKiBjbGVhciBvbmx5IHRoZSBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGhhcnZlc3RlZCwgYW5kIGEgc2luZ2xlIHZjcHUgd2lsbFxuK1x0ICogaGFydmVzdCBhdCB0aW1lLlxuK1x0ICovXG4rXHRURVNUX0FTU0VSVChjbGVhcmVkID09IGNvdW50LCBcIlJlc2V0IGRpcnR5IHBhZ2VzICgldSkgbWlzbWF0Y2ggXCJcbitcdFx0ICAgIFwid2l0aCBjb2xsZWN0ZWQgKCV1KVwiLCBjbGVhcmVkLCBjb3VudCk7XG4rXG4rXHQqdHMgPSB0aW1lc3BlY19hZGQoKnRzLCB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KSk7XG4rXG4rXHRwdGhyZWFkX211dGV4X3VubG9jayhcdTAwMjZjb2xsZWN0KTtcbit9XG4gXG4gc3RhdGljIHZvaWQgdmNwdV93b3JrZXIoc3RydWN0IG1lbXN0cmVzc192Y3B1X2FyZ3MgKnZjcHVfYXJncylcbiB7XG5AQCAtNDMsMTcgKzg4LDMzIEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHNfZGlmZjtcbiBcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuIFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcbitcdGJvb2wgdXNlX2RpcnR5X3JpbmcgPSAhIXZjcHUtXHUwMDNldm0tXHUwMDNlZGlydHlfcmluZ19zaXplO1xuK1x0dTMyIHJpbmdfaWR4ID0gMDtcbiBcdGludCByZXQ7XG4gXG4gXHRydW4gPSB2Y3B1LVx1MDAzZXJ1bjtcbiBcbiBcdHdoaWxlICghUkVBRF9PTkNFKGhvc3RfcXVpdCkpIHtcbiBcdFx0aW50IGN1cnJlbnRfaXRlcmF0aW9uID0gUkVBRF9PTkNFKGl0ZXJhdGlvbik7XG4rXHRcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4gXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbitcbitcdFx0ZG8ge1xuK1x0XHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbitcdFx0XHRpZiAoIXVzZV9kaXJ0eV9yaW5nKVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0ZGlydHlfcmluZ19jb2xsZWN0KHZjcHUsIFx1MDAyNnJpbmdfaWR4LCBcdTAwMjZjb2xsZWN0KTtcbitcdFx0fSB3aGlsZSAocnVuLVx1MDAzZWV4aXRfcmVhc29uID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCk7XG4rXG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbiBcbitcdFx0aWYgKHVzZV9kaXJ0eV9yaW5nKSB7XG4rXHRcdFx0dHNfZGlmZiA9IHRpbWVzcGVjX3N1Yih0c19kaWZmLCBjb2xsZWN0KTtcbitcdFx0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xuK1x0XHR9XG4rXG4gXHRcdFRFU1RfQVNTRVJUKHJldCA9PSAwLCBcInZjcHVfcnVuIGZhaWxlZDogJWRcIiwgcmV0KTtcbiBcdFx0VEVTVF9BU1NFUlQoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpID09IFVDQUxMX1NZTkMsXG4gXHRcdFx0ICAgIFwiSW52YWxpZCBndWVzdCBzeW5jIHN0YXR1czogZXhpdF9yZWFzb249JXNcIixcbkBAIC0xMTksNyArMTgwLDggQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLFxuIFx0XHRcdFx0IHAtXHUwMDNlc2xvdHMsIHAtXHUwMDNlYmFja2luZ19zcmMsXG4tXHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXG4rXHRcdFx0XHQgZGlydHlfcmluZ19zaXplKTtcbiBcbiBcdG1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudCh2bSwgcC1cdTAwM2V3cml0ZV9wZXJjZW50KTtcbiBcbkBAIC0xMzksOCArMjAxLDEwIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRob3N0X3F1aXQgPSBmYWxzZTtcbiBcbiBcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgaSsrKVxuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7IGkrKykge1xuIFx0XHR2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltpXSA9IC0xO1xuK1x0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtpXSA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuK1x0fVxuIFxuIFx0LypcbiBcdCAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbFxuQEAgLTE5NSw2ICsyNTksMjEgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdFx0cHJfaW5mbyhcIkl0ZXJhdGlvbiAlZCBkaXJ0eSBtZW1vcnkgdGltZTogJWxkLiUuOWxkc1xcblwiLFxuIFx0XHRcdGl0ZXJhdGlvbiwgdHNfZGlmZi50dl9zZWMsIHRzX2RpZmYudHZfbnNlYyk7XG4gXG4rXHRcdGlmIChkaXJ0eV9yaW5nX3NpemUpIHtcbitcdFx0XHRzdHJ1Y3QgdGltZXNwZWMgaXRlcmF0aW9uX3N1bSA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuK1xuK1x0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpKyspXG4rXHRcdFx0XHRpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sXG4rXHRcdFx0XHRcdFx0XHQgICAgIHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldKTtcbitcbitcdFx0XHRwcl9pbmZvKFwiSXRlcmF0aW9uICVkIGNsZWFyIGRpcnR5IHJpbmcgdGltZTogJWxkLiUuOWxkc1xcblwiLFxuK1x0XHRcdFx0aXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTtcbitcbitcdFx0XHRjbGVhcl9kaXJ0eV9sb2dfdG90YWwgPSB0aW1lc3BlY19hZGQoY2xlYXJfZGlydHlfbG9nX3RvdGFsLFxuK1x0XHRcdFx0XHRcdFx0ICAgICBpdGVyYXRpb25fc3VtKTtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuIFx0XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2c3RhcnQpO1xuIFx0XHRtZW1zdHJlc3NfZ2V0X2RpcnR5X2xvZyh2bSwgYml0bWFwcywgcC1cdTAwM2VzbG90cyk7XG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbkBAIC0yMzgsMTIgKzMxNywxNCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0aG9zdF9xdWl0ID0gdHJ1ZTtcbiBcdG1lbXN0cmVzc19qb2luX3ZjcHVfdGhyZWFkcyhucl92Y3B1cyk7XG4gXG4tXHRhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC1cdTAwM2VpdGVyYXRpb25zKTtcbi1cdHByX2luZm8oXCJHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwiLFxuLVx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLFxuLVx0XHRnZXRfZGlydHlfbG9nX3RvdGFsLnR2X25zZWMsIGF2Zy50dl9zZWMsIGF2Zy50dl9uc2VjKTtcbitcdGlmICghZGlydHlfcmluZ19zaXplKSB7XG4rXHRcdGF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuK1x0XHRwcl9pbmZvKFwiR2V0IGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcXG5cIixcbitcdFx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLFxuK1x0XHRcdGdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpO1xuK1x0fVxuIFxuLVx0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2Fwcykge1xuK1x0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcyB8fCBkaXJ0eV9yaW5nX3NpemUpIHtcbiBcdFx0YXZnID0gdGltZXNwZWNfZGl2KGNsZWFyX2RpcnR5X2xvZ190b3RhbCwgcC1cdTAwM2VpdGVyYXRpb25zKTtcbiBcdFx0cHJfaW5mbyhcIkNsZWFyIGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcXG5cIixcbiBcdFx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGNsZWFyX2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXG5AQCAtMjY0LDYgKzM0NSw5IEBAIHN0YXRpYyB2b2lkIGhlbHAoY2hhciAqbmFtZSlcbiBcdHByaW50ZihcIiAtYTogYWNjZXNzIG1lbW9yeSByYW5kb21seSByYXRoZXIgdGhhbiBpbiBvcmRlci5cXG5cIik7XG4gXHRwcmludGYoXCIgLWk6IHNwZWNpZnkgaXRlcmF0aW9uIGNvdW50cyAoZGVmYXVsdDogJVwiUFJJdTY0XCIpXFxuXCIsXG4gXHQgICAgICAgVEVTVF9IT1NUX0xPT1BfTik7XG4rXHRwcmludGYoXCIgLWQ6IHNwZWNpZnkgdGhlIHNpemUgb2YgZGlydHktcmluZyBmb3IgdHJhY2tpbmcgZGlydHkgcGFnZXMuXFxuXCJcbitcdCAgICAgICBcIiAgICAgSWYgbm9uLXplcm8sIHdpbGwgY2F1c2UgZGlydHktcmluZyB0byBiZSB1c2VkIGluc3RlYWQgb2ZcXG5cIlxuK1x0ICAgICAgIFwiICAgICBkaXJ0eS1iaXRtYXAuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uXFxuXCIpO1xuIFx0cHJpbnRmKFwiIC1nOiBEbyBub3QgZW5hYmxlIEtWTV9DQVBfTUFOVUFMX0RJUlRZX0xPR19QUk9URUNUMi4gVGhpc1xcblwiXG4gXHQgICAgICAgXCIgICAgIG1ha2VzIEtWTV9HRVRfRElSVFlfTE9HIGNsZWFyIHRoZSBkaXJ0eSBsb2cgKGkuZS5cXG5cIlxuIFx0ICAgICAgIFwiICAgICBLVk1fRElSVFlfTE9HX01BTlVBTF9QUk9URUNUX0VOQUJMRSBpcyBub3QgZW5hYmxlZClcXG5cIlxuQEAgLTMyMCw3ICs0MDQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0Z3Vlc3RfbW9kZXNfYXBwZW5kX2RlZmF1bHQoKTtcbiBcbi1cdHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFwiYWI6YzplZ2hpOm06bm9wOnI6czp2Ong6dzpcIikpICE9IC0xKSB7XG4rXHR3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCBcImFiOmM6ZDplZ2hpOm06bm9wOnI6czp2Ong6dzpcIikpICE9IC0xKSB7XG4gXHRcdHN3aXRjaCAob3B0KSB7XG4gXHRcdGNhc2UgJ2EnOlxuIFx0XHRcdHAucmFuZG9tX2FjY2VzcyA9IHRydWU7XG5AQCAtMzMxLDYgKzQxNSwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHRjYXNlICdjJzpcbiBcdFx0XHRwY3B1X2xpc3QgPSBvcHRhcmc7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgJ2QnOlxuK1x0XHRcdGRpcnR5X3Jpbmdfc2l6ZSA9IHBhcnNlX3NpemUob3B0YXJnKTtcbitcdFx0XHRkaXJ0eV9yaW5nX3NpemUgKj0gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKTtcbitcdFx0XHRkaXJ0eV9sb2dfbWFudWFsX2NhcHMgPSAwO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlICdlJzpcbiBcdFx0XHQvKiAnZScgaXMgZm9yIGV2aWwuICovXG4gXHRcdFx0cnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXG5pbmRleCAwZDFkNjIzMGNjMDUxYi4uZTE3ZjM0NDk3OGFmNjYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcbkBAIC01OCw3ICs1OCw4IEBAIGV4dGVybiBzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgbWVtc3RyZXNzX2FyZ3M7XG4gc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLFxuIFx0XHRcdFx0ICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsXG4gXHRcdFx0XHQgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLFxuLVx0XHRcdFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbitcdFx0XHRcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpO1xuIHZvaWQgbWVtc3RyZXNzX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bV92bSAqdm0pO1xuIFxuIHZvaWQgbWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgd3JpdGVfcGVyY2VudCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXG5pbmRleCAxOTVmM2ZkYWUxZTM5Ni4uNGFlMjdhZDlmOTQ3M2QgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuQEAgLTE2NywxMCArMTY3LDIxIEBAIHVuc2lnbmVkIGludCBrdm1fY2hlY2tfY2FwKGxvbmcgY2FwKVxuIFxuIHZvaWQgdm1fZW5hYmxlX2RpcnR5X3Jpbmcoc3RydWN0IGt2bV92bSAqdm0sIHUzMiByaW5nX3NpemUpXG4ge1xuLVx0aWYgKHZtX2NoZWNrX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMKSlcbi1cdFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMLCByaW5nX3NpemUpO1xuLVx0ZWxzZVxuLVx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HLCByaW5nX3NpemUpO1xuK1x0bG9uZyBjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw7XG4rXHRpbnQgbWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7XG4rXG4rXHRpZiAoIW1heF9zaXplKSB7XG4rXHRcdGNhcCA9IEtWTV9DQVBfRElSVFlfTE9HX1JJTkc7XG4rXHRcdG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApO1xuK1x0fVxuK1xuK1x0VEVTVF9BU1NFUlQobWF4X3NpemUgXHUwMDNlIDAsIFwiRGlydHktcmluZyBub3Qgc3VwcG9ydGVkIGluIHRoaXMga2VybmVsXFxuXCIpO1xuK1x0VEVTVF9BU1NFUlQocmluZ19zaXplIFx1MDAzYz0gbWF4X3NpemUgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIocmluZ19zaXplKSxcbitcdFx0ICAgIFwiSW52YWxpZCBkaXJ0eS1yaW5nIHNpemU6IFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byBcIlxuK1x0XHQgICAgXCJcdTAwM2M9ICVsdSBlbnRyaWVzXFxuXCIsXG4rXHRcdCAgICBtYXhfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbikpO1xuK1xuK1x0dm1fZW5hYmxlX2NhcCh2bSwgY2FwLCByaW5nX3NpemUpO1xuIFx0dm0tXHUwMDNlZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuaW5kZXggNmRjZDE1OTEwYTA2MDguLmM5Zjg1NTMzZmZmZmRjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuQEAgLTEyMSwxMCArMTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoc3RydWN0IHZtX3NoYXBlIHNoYXBlLFxuK1x0XHRcdFx0XHRcdCAgICAgdTMyIG5yX3ZjcHVzLFxuK1x0XHRcdFx0XHRcdCAgICAgdTY0IGV4dHJhX21lbV9wYWdlcyxcbitcdFx0XHRcdFx0XHQgICAgIHZvaWQgKmd1ZXN0X2NvZGUsXG4rXHRcdFx0XHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHVzW10sXG4rXHRcdFx0XHRcdFx0ICAgICB1MzIgZGlydHlfcmluZ19zaXplKVxuK3tcbitcdHN0cnVjdCBrdm1fdm0gKnZtO1xuK1x0aW50IGk7XG4rXG4rXHRURVNUX0FTU0VSVCghbnJfdmNwdXMgfHwgdmNwdXMsIFwiTXVzdCBwcm92aWRlIHZDUFUgYXJyYXlcIik7XG4rXG4rXHR2bSA9IF9fdm1fY3JlYXRlKHNoYXBlLCBucl92Y3B1cywgZXh0cmFfbWVtX3BhZ2VzKTtcbitcbitcdGlmIChkaXJ0eV9yaW5nX3NpemUpXG4rXHRcdHZtX2VuYWJsZV9kaXJ0eV9yaW5nKHZtLCBkaXJ0eV9yaW5nX3NpemUpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7ICsraSlcbitcdFx0dmNwdXNbaV0gPSB2bV92Y3B1X2FkZCh2bSwgaSwgZ3Vlc3RfY29kZSk7XG4rXG4rXHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XG4rXHRyZXR1cm4gdm07XG4rfVxuK1xuIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdFx0XHRcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxuIFx0XHRcdFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcbi1cdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcylcbitcdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbitcdFx0XHRcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXG4ge1xuIFx0c3RydWN0IG1lbXN0cmVzc19hcmdzICphcmdzID0gXHUwMDI2bWVtc3RyZXNzX2FyZ3M7XG4gXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbkBAIC0xNjcsOSArMTkyLDEwIEBAIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdCAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0J3MgYSBiZW5pZ24gc2lkZVxuIFx0ICogZWZmZWN0IGFzIEtWTSBhbGxvd3MgYWxpYXNpbmcgSFZBcyBpbiBtZXNsb3RzLlxuIFx0ICovXG4tXHR2bSA9IF9fdm1fY3JlYXRlX3dpdGhfdmNwdXMoVk1fU0hBUEUobW9kZSksIG5yX3ZjcHVzLFxuLVx0XHRcdFx0ICAgIHNsb3QwX3BhZ2VzICsgZ3Vlc3RfbnVtX3BhZ2VzLFxuLVx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyk7XG4rXHR2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXG4rXHRcdFx0XHRcdCAgICBzbG90MF9wYWdlcyArIGd1ZXN0X251bV9wYWdlcyxcbitcdFx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyxcbitcdFx0XHRcdFx0ICAgIGRpcnR5X3Jpbmdfc2l6ZSk7XG4gXG4gXHRhcmdzLVx1MDAzZXZtID0gdm07XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xuaW5kZXggOWM3NTc4YTA5OGMzZTEuLjNhMWJlOWI3NWUwMWRhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXG5AQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXG4gXHRcdFx0XHQgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXG4tXHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuICNpZmRlZiBfX3g4Nl82NF9fXG4gXHRpZiAocC1cdTAwM2VkaXNhYmxlX3Nsb3RfemFwX3F1aXJrKVxuIFx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJU0FCTEVfUVVJUktTMiwgS1ZNX1g4Nl9RVUlSS19TTE9UX1pBUF9BTEwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xuaW5kZXggMzg4YmE0MTAxZjk3MzYuLjY2MWU5YWJmYjQzOTVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcbkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZClcbiBcdHN0cnVjdCBrdm1fcGFnZV9zdGF0cyBzdGF0c19yZXBvcHVsYXRlZDtcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBWQ1BVUywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLFxuLVx0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UpO1xuK1x0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UsIDApO1xuIFxuIFx0Z3Vlc3RfbnVtX3BhZ2VzID0gKFZDUFVTICogZ3Vlc3RfcGVyY3B1X21lbV9zaXplKSBcdTAwM2VcdTAwM2Ugdm0tXHUwMDNlcGFnZV9zaGlmdDtcbiBcdGd1ZXN0X251bV9wYWdlcyA9IHZtX2FkanVzdF9udW1fZ3Vlc3RfcGFnZXMobW9kZSwgZ3Vlc3RfbnVtX3BhZ2VzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA5OjMyOjU3LjA1OTUxMjk1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwOTA2NTA0MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYC4gVGhlc2UgYXJlIHNlbGZ0ZXN0cyDigJMgbm90IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhbnl0aGluZyB0aGF0IHdvdWxkIGJlIGRpcmVjdGx5IGV4ZWN1dGVkIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCBvciwgY3J1Y2lhbGx5LCBmdXp6ZWQgYnkgc3l6a2FsbGVyLiBTeXprYWxsZXIncyBqb2IgaXMgdG8gZnV6eiB0aGUga2VybmVsIGl0c2VsZiwgbm90IHRoZSB0ZXN0IHN1aXRlLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHdpdGhvdXQgZnVuY3Rpb25hbCBhbHRlcmF0aW9uLCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIlxuXG5MZXQgbWUgY29uZmlybSB0aGUgZmlsZXMgaW52b2x2ZWQ6ICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY2AsICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY2AuICBZdXAsICphbGwqIHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gIGRpcmVjdG9yeS5cblxuU28sIHNpbmNlIHRoZSBwYXRjaCAqb25seSogdG91Y2hlcyBzZWxmdGVzdHMsIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IGtlcm5lbCBjb2RlIHRoYXQgbmVlZHMgdG8gYmUgZnV6emVkLiBJdCdzIGEgdGVzdCBtb2RpZmljYXRpb24sIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCByZS1zY2FuIHRoZSBmaWxlIGxpc3QgYWdhaW4uIFllcCwgbm90aGluZyBrZXJuZWwtZmFjaW5nLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXM6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggaXMgY29uZmluZWQgdG8gS1ZNIHNlbGZ0ZXN0cyB3aXRoaW4gdGhlIHRvb2xzIGRpcmVjdG9yeSwgYW5kIGl0IGRvZXNuJ3QgYWZmZWN0IGFueSBrZXJuZWwgY29kZSB0aGF0IGlzIGRpcmVjdGx5IGV4cG9zZWQgZm9yIGV4ZWN1dGlvbiBvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjE4LCJPdXRwdXRUb2tlbnMiOjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDk6MzM6MDcuOTY2MDIwNzEyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdGhlIHRvb2xzLyBkaXJlY3RvcnkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRoZSB0b29scy8gZGlyZWN0b3J5LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmb4gm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-09 09:21:42 +0000 UTC FinishedAt: 2026-07-09 09:33:09 +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+CgkJCTx0ZD4yMDI2LzA3LzA5IDA5OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0aGUgdG9vbHMvIGRpcmVjdG9yeS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA5OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGE4ODk5OWZlYjI2NGFhZmQzNjc5NTJkNGRmMDc2NGU0NmFkZDIwY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDkgMDk6MzI6NTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbmluZGV4IDQ0MTVjOTRiMjg2NjA1Li5mNzhkNTYyNjVkODkzNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbkBAIC00MDksNyAmIzQzOzQwOSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRpbnQgbnJfdmNwdXMgPSBwYXJhbXMtXHUwMDNlbnJfdmNwdXM7XG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy1cdTAwM2V2Y3B1X21lbW9yeV9ieXRlcywgMSxcbi1cdFx0XHRcdCBwYXJhbXMtXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCBwYXJhbXMtXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MsIDApO1xuIFxuIFx0LypcbiBcdCAqIElmIGd1ZXN0X3BhZ2Vfc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgaG9zdCYjMzk7cyBwYWdlIHNpemUsIHRoZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xuaW5kZXggMzAyYzQ5MjNkMDkzMGYuLjkyMjQ2ZTI3ZWY3NDQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcbkBAIC0xNjIsNyAmIzQzOzE2Miw3IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRpbnQgaSwgbnVtX3VmZmRzID0gMDtcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLCAxLFxuLVx0XHRcdFx0IHAtXHUwMDNlc3JjX3R5cGUsIHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7XG4mIzQzO1x0XHRcdFx0IHAtXHUwMDNlc3JjX3R5cGUsIHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywgMCk7XG4gXG4gXHRkZW1hbmRfcGFnaW5nX3NpemUgPSBnZXRfYmFja2luZ19zcmNfcGFnZXN6KHAtXHUwMDNlc3JjX3R5cGUpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jXG5pbmRleCBlZjc3OWZhOTE4MjdjOS4uMTgxZjUyMWM5YmU5NjEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jXG5AQCAtMTMsNiAmIzQzOzEzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N0aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRtYXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vYmFycmllci5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3RfdXRpbC5oXCYjMzQ7XG5AQCAtMjksOSAmIzQzOzMwLDUzIEBAIHN0YXRpYyBib29sIHJ1bl92Y3B1c193aGlsZV9kaXNhYmxpbmdfZGlydHlfbG9nZ2luZztcbiBcbiAvKiBIb3N0IHZhcmlhYmxlcyAqL1xuIHN0YXRpYyB1NjQgZGlydHlfbG9nX21hbnVhbF9jYXBzO1xuJiM0MztzdGF0aWMgdTMyIGRpcnR5X3Jpbmdfc2l6ZTtcbiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7XG4gc3RhdGljIGludCBpdGVyYXRpb247XG4gc3RhdGljIGludCB2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltLVk1fTUFYX1ZDUFVTXTtcbiYjNDM7c3RhdGljIHN0cnVjdCB0aW1lc3BlYyB2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtLVk1fTUFYX1ZDUFVTXTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGRpcnR5X3JpbmdfY29sbGVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiAqcmluZ19pZHgsXG4mIzQzO1x0XHRcdFx0c3RydWN0IHRpbWVzcGVjICp0cylcbiYjNDM7e1xuJiM0MztcdHN0YXRpYyBwdGhyZWFkX211dGV4X3QgY29sbGVjdCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7XG4mIzQzO1x0c3RydWN0IHRpbWVzcGVjIHN0YXJ0O1xuJiM0MztcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpkaXJ0eV9nZm5zID0gdmNwdV9tYXBfZGlydHlfcmluZyh2Y3B1KTtcbiYjNDM7XHR1MzIgaWR4ID0gKnJpbmdfaWR4O1xuJiM0MztcdHUzMiByaW5nX3NpemUgPSB2Y3B1LVx1MDAzZXZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7XG4mIzQzO1x0aW50IGNsZWFyZWQsIGNvdW50O1xuJiM0MztcbiYjNDM7XHRwdGhyZWFkX211dGV4X2xvY2soXHUwMDI2Y29sbGVjdCk7XG4mIzQzO1xuJiM0MztcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4mIzQzO1xuJiM0MztcdHdoaWxlICh0cnVlKSB7XG4mIzQzO1x0XHRzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqY3VyO1xuJiM0MztcbiYjNDM7XHRcdGN1ciA9IFx1MDAyNmRpcnR5X2dmbnNbaWR4ICUgcmluZ19zaXplXTtcbiYjNDM7XHRcdGlmIChzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNmN1ci1cdTAwM2VmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZjdXItXHUwMDNlZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7XG4mIzQzO1x0XHRpZHgmIzQzOyYjNDM7O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Y291bnQgPSBpZHggLSAqcmluZ19pZHg7XG4mIzQzO1x0KnJpbmdfaWR4ID0gaWR4O1xuJiM0MztcbiYjNDM7XHRjbGVhcmVkID0ga3ZtX3ZtX3Jlc2V0X2RpcnR5X3JpbmcodmNwdS1cdTAwM2V2bSk7XG4mIzQzO1xuJiM0MztcdC8qIENsZWFyZWQgcGFnZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbGxlY3RlZCwgYXMgS1ZNIGlzIHN1cHBvc2VkIHRvXG4mIzQzO1x0ICogY2xlYXIgb25seSB0aGUgZW50cmllcyB0aGF0IGhhdmUgYmVlbiBoYXJ2ZXN0ZWQsIGFuZCBhIHNpbmdsZSB2Y3B1IHdpbGxcbiYjNDM7XHQgKiBoYXJ2ZXN0IGF0IHRpbWUuXG4mIzQzO1x0ICovXG4mIzQzO1x0VEVTVF9BU1NFUlQoY2xlYXJlZCA9PSBjb3VudCwgXCYjMzQ7UmVzZXQgZGlydHkgcGFnZXMgKCV1KSBtaXNtYXRjaCBcJiMzNDtcbiYjNDM7XHRcdCAgICBcJiMzNDt3aXRoIGNvbGxlY3RlZCAoJXUpXCYjMzQ7LCBjbGVhcmVkLCBjb3VudCk7XG4mIzQzO1xuJiM0MztcdCp0cyA9IHRpbWVzcGVjX2FkZCgqdHMsIHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpKTtcbiYjNDM7XG4mIzQzO1x0cHRocmVhZF9tdXRleF91bmxvY2soXHUwMDI2Y29sbGVjdCk7XG4mIzQzO31cbiBcbiBzdGF0aWMgdm9pZCB2Y3B1X3dvcmtlcihzdHJ1Y3QgbWVtc3RyZXNzX3ZjcHVfYXJncyAqdmNwdV9hcmdzKVxuIHtcbkBAIC00MywxNyAmIzQzOzg4LDMzIEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHNfZGlmZjtcbiBcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuIFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcbiYjNDM7XHRib29sIHVzZV9kaXJ0eV9yaW5nID0gISF2Y3B1LVx1MDAzZXZtLVx1MDAzZWRpcnR5X3Jpbmdfc2l6ZTtcbiYjNDM7XHR1MzIgcmluZ19pZHggPSAwO1xuIFx0aW50IHJldDtcbiBcbiBcdHJ1biA9IHZjcHUtXHUwMDNlcnVuO1xuIFxuIFx0d2hpbGUgKCFSRUFEX09OQ0UoaG9zdF9xdWl0KSkge1xuIFx0XHRpbnQgY3VycmVudF9pdGVyYXRpb24gPSBSRUFEX09OQ0UoaXRlcmF0aW9uKTtcbiYjNDM7XHRcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4gXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XG4mIzQzO1x0XHRkbyB7XG4mIzQzO1x0XHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XHRcdFx0aWYgKCF1c2VfZGlydHlfcmluZylcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRcdGRpcnR5X3JpbmdfY29sbGVjdCh2Y3B1LCBcdTAwMjZyaW5nX2lkeCwgXHUwMDI2Y29sbGVjdCk7XG4mIzQzO1x0XHR9IHdoaWxlIChydW4tXHUwMDNlZXhpdF9yZWFzb24gPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKTtcbiYjNDM7XG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbiBcbiYjNDM7XHRcdGlmICh1c2VfZGlydHlfcmluZykge1xuJiM0MztcdFx0XHR0c19kaWZmID0gdGltZXNwZWNfc3ViKHRzX2RpZmYsIGNvbGxlY3QpO1xuJiM0MztcdFx0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0VEVTVF9BU1NFUlQocmV0ID09IDAsIFwmIzM0O3ZjcHVfcnVuIGZhaWxlZDogJWRcJiMzNDssIHJldCk7XG4gXHRcdFRFU1RfQVNTRVJUKGdldF91Y2FsbCh2Y3B1LCBOVUxMKSA9PSBVQ0FMTF9TWU5DLFxuIFx0XHRcdCAgICBcJiMzNDtJbnZhbGlkIGd1ZXN0IHN5bmMgc3RhdHVzOiBleGl0X3JlYXNvbj0lc1wmIzM0OyxcbkBAIC0xMTksNyAmIzQzOzE4MCw4IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXG4gXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSxcbiBcdFx0XHRcdCBwLVx1MDAzZXNsb3RzLCBwLVx1MDAzZWJhY2tpbmdfc3JjLFxuLVx0XHRcdFx0IHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2Vzcyk7XG4mIzQzO1x0XHRcdFx0IHAtXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbiYjNDM7XHRcdFx0XHQgZGlydHlfcmluZ19zaXplKTtcbiBcbiBcdG1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudCh2bSwgcC1cdTAwM2V3cml0ZV9wZXJjZW50KTtcbiBcbkBAIC0xMzksOCAmIzQzOzIwMSwxMCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0aG9zdF9xdWl0ID0gZmFsc2U7XG4gXG4gXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2c3RhcnQpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7IGkmIzQzOyYjNDM7KVxuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpJiM0MzsmIzQzOykge1xuIFx0XHR2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltpXSA9IC0xO1xuJiM0MztcdFx0dmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcbiYjNDM7XHR9XG4gXG4gXHQvKlxuIFx0ICogVXNlIDEwMCUgd3JpdGVzIGR1cmluZyB0aGUgcG9wdWxhdGlvbiBwaGFzZSB0byBlbnN1cmUgYWxsXG5AQCAtMTk1LDYgJiM0MzsyNTksMjEgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdFx0cHJfaW5mbyhcJiMzNDtJdGVyYXRpb24gJWQgZGlydHkgbWVtb3J5IHRpbWU6ICVsZC4lLjlsZHNcXG5cJiMzNDssXG4gXHRcdFx0aXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTtcbiBcbiYjNDM7XHRcdGlmIChkaXJ0eV9yaW5nX3NpemUpIHtcbiYjNDM7XHRcdFx0c3RydWN0IHRpbWVzcGVjIGl0ZXJhdGlvbl9zdW0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcbiYjNDM7XG4mIzQzO1x0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpJiM0MzsmIzQzOylcbiYjNDM7XHRcdFx0XHRpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgICB2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtpXSk7XG4mIzQzO1xuJiM0MztcdFx0XHRwcl9pbmZvKFwmIzM0O0l0ZXJhdGlvbiAlZCBjbGVhciBkaXJ0eSByaW5nIHRpbWU6ICVsZC4lLjlsZHNcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0aXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGNsZWFyX2RpcnR5X2xvZ190b3RhbCA9IHRpbWVzcGVjX2FkZChjbGVhcl9kaXJ0eV9sb2dfdG90YWwsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgICBpdGVyYXRpb25fc3VtKTtcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2c3RhcnQpO1xuIFx0XHRtZW1zdHJlc3NfZ2V0X2RpcnR5X2xvZyh2bSwgYml0bWFwcywgcC1cdTAwM2VzbG90cyk7XG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbkBAIC0yMzgsMTIgJiM0MzszMTcsMTQgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGhvc3RfcXVpdCA9IHRydWU7XG4gXHRtZW1zdHJlc3Nfam9pbl92Y3B1X3RocmVhZHMobnJfdmNwdXMpO1xuIFxuLVx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXHUwMDNlaXRlcmF0aW9ucyk7XG4tXHRwcl9pbmZvKFwmIzM0O0dldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxuXCYjMzQ7LFxuLVx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLFxuLVx0XHRnZXRfZGlydHlfbG9nX3RvdGFsLnR2X25zZWMsIGF2Zy50dl9zZWMsIGF2Zy50dl9uc2VjKTtcbiYjNDM7XHRpZiAoIWRpcnR5X3Jpbmdfc2l6ZSkge1xuJiM0MztcdFx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXHUwMDNlaXRlcmF0aW9ucyk7XG4mIzQzO1x0XHRwcl9pbmZvKFwmIzM0O0dldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLFxuJiM0MztcdFx0XHRnZXRfZGlydHlfbG9nX3RvdGFsLnR2X25zZWMsIGF2Zy50dl9zZWMsIGF2Zy50dl9uc2VjKTtcbiYjNDM7XHR9XG4gXG4tXHRpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzKSB7XG4mIzQzO1x0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcyB8fCBkaXJ0eV9yaW5nX3NpemUpIHtcbiBcdFx0YXZnID0gdGltZXNwZWNfZGl2KGNsZWFyX2RpcnR5X2xvZ190b3RhbCwgcC1cdTAwM2VpdGVyYXRpb25zKTtcbiBcdFx0cHJfaW5mbyhcJiMzNDtDbGVhciBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxuXCYjMzQ7LFxuIFx0XHRcdHAtXHUwMDNlaXRlcmF0aW9ucywgY2xlYXJfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcbkBAIC0yNjQsNiAmIzQzOzM0NSw5IEBAIHN0YXRpYyB2b2lkIGhlbHAoY2hhciAqbmFtZSlcbiBcdHByaW50ZihcJiMzNDsgLWE6IGFjY2VzcyBtZW1vcnkgcmFuZG9tbHkgcmF0aGVyIHRoYW4gaW4gb3JkZXIuXFxuXCYjMzQ7KTtcbiBcdHByaW50ZihcJiMzNDsgLWk6IHNwZWNpZnkgaXRlcmF0aW9uIGNvdW50cyAoZGVmYXVsdDogJVwmIzM0O1BSSXU2NFwmIzM0OylcXG5cJiMzNDssXG4gXHQgICAgICAgVEVTVF9IT1NUX0xPT1BfTik7XG4mIzQzO1x0cHJpbnRmKFwmIzM0OyAtZDogc3BlY2lmeSB0aGUgc2l6ZSBvZiBkaXJ0eS1yaW5nIGZvciB0cmFja2luZyBkaXJ0eSBwYWdlcy5cXG5cJiMzNDtcbiYjNDM7XHQgICAgICAgXCYjMzQ7ICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxcblwmIzM0O1xuJiM0MztcdCAgICAgICBcJiMzNDsgICAgIGRpcnR5LWJpdG1hcC4gTXVzdCBiZSBhIHBvd2VyIG9mIHR3by5cXG5cJiMzNDspO1xuIFx0cHJpbnRmKFwmIzM0OyAtZzogRG8gbm90IGVuYWJsZSBLVk1fQ0FQX01BTlVBTF9ESVJUWV9MT0dfUFJPVEVDVDIuIFRoaXNcXG5cJiMzNDtcbiBcdCAgICAgICBcJiMzNDsgICAgIG1ha2VzIEtWTV9HRVRfRElSVFlfTE9HIGNsZWFyIHRoZSBkaXJ0eSBsb2cgKGkuZS5cXG5cJiMzNDtcbiBcdCAgICAgICBcJiMzNDsgICAgIEtWTV9ESVJUWV9MT0dfTUFOVUFMX1BST1RFQ1RfRU5BQkxFIGlzIG5vdCBlbmFibGVkKVxcblwmIzM0O1xuQEAgLTMyMCw3ICYjNDM7NDA0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcbiBcdGd1ZXN0X21vZGVzX2FwcGVuZF9kZWZhdWx0KCk7XG4gXG4tXHR3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCBcJiMzNDthYjpjOmVnaGk6bTpub3A6cjpzOnY6eDp3OlwmIzM0OykpICE9IC0xKSB7XG4mIzQzO1x0d2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgXCYjMzQ7YWI6YzpkOmVnaGk6bTpub3A6cjpzOnY6eDp3OlwmIzM0OykpICE9IC0xKSB7XG4gXHRcdHN3aXRjaCAob3B0KSB7XG4gXHRcdGNhc2UgJiMzOTthJiMzOTs6XG4gXHRcdFx0cC5yYW5kb21fYWNjZXNzID0gdHJ1ZTtcbkBAIC0zMzEsNiAmIzQzOzQxNSwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHRjYXNlICYjMzk7YyYjMzk7OlxuIFx0XHRcdHBjcHVfbGlzdCA9IG9wdGFyZztcbiBcdFx0XHRicmVhaztcbiYjNDM7XHRcdGNhc2UgJiMzOTtkJiMzOTs6XG4mIzQzO1x0XHRcdGRpcnR5X3Jpbmdfc2l6ZSA9IHBhcnNlX3NpemUob3B0YXJnKTtcbiYjNDM7XHRcdFx0ZGlydHlfcmluZ19zaXplICo9IHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7XG4mIzQzO1x0XHRcdGRpcnR5X2xvZ19tYW51YWxfY2FwcyA9IDA7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlICYjMzk7ZSYjMzk7OlxuIFx0XHRcdC8qICYjMzk7ZSYjMzk7IGlzIGZvciBldmlsLiAqL1xuIFx0XHRcdHJ1bl92Y3B1c193aGlsZV9kaXNhYmxpbmdfZGlydHlfbG9nZ2luZyA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxuaW5kZXggMGQxZDYyMzBjYzA1MWIuLmUxN2YzNDQ5NzhhZjY2IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXG5AQCAtNTgsNyAmIzQzOzU4LDggQEAgZXh0ZXJuIHN0cnVjdCBtZW1zdHJlc3NfYXJncyBtZW1zdHJlc3NfYXJncztcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXG4gXHRcdFx0XHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcbiBcdFx0XHRcdCAgIGVudW0gdm1fbWVtX2JhY2tpbmdfc3JjX3R5cGUgYmFja2luZ19zcmMsXG4tXHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xuJiM0MztcdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbiYjNDM7XHRcdFx0XHQgICB1MzIgZGlydHlfcmluZ19zaXplKTtcbiB2b2lkIG1lbXN0cmVzc19kZXN0cm95X3ZtKHN0cnVjdCBrdm1fdm0gKnZtKTtcbiBcbiB2b2lkIG1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHdyaXRlX3BlcmNlbnQpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuaW5kZXggMTk1ZjNmZGFlMWUzOTYuLjRhZTI3YWQ5Zjk0NzNkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbkBAIC0xNjcsMTAgJiM0MzsxNjcsMjEgQEAgdW5zaWduZWQgaW50IGt2bV9jaGVja19jYXAobG9uZyBjYXApXG4gXG4gdm9pZCB2bV9lbmFibGVfZGlydHlfcmluZyhzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHJpbmdfc2l6ZSlcbiB7XG4tXHRpZiAodm1fY2hlY2tfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwpKVxuLVx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUwsIHJpbmdfc2l6ZSk7XG4tXHRlbHNlXG4tXHRcdHZtX2VuYWJsZV9jYXAodm0sIEtWTV9DQVBfRElSVFlfTE9HX1JJTkcsIHJpbmdfc2l6ZSk7XG4mIzQzO1x0bG9uZyBjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw7XG4mIzQzO1x0aW50IG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApO1xuJiM0MztcbiYjNDM7XHRpZiAoIW1heF9zaXplKSB7XG4mIzQzO1x0XHRjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HO1xuJiM0MztcdFx0bWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRURVNUX0FTU0VSVChtYXhfc2l6ZSBcdTAwM2UgMCwgXCYjMzQ7RGlydHktcmluZyBub3Qgc3VwcG9ydGVkIGluIHRoaXMga2VybmVsXFxuXCYjMzQ7KTtcbiYjNDM7XHRURVNUX0FTU0VSVChyaW5nX3NpemUgXHUwMDNjPSBtYXhfc2l6ZSBcdTAwMjZcdTAwMjYgaXNfcG93ZXJfb2ZfMihyaW5nX3NpemUpLFxuJiM0MztcdFx0ICAgIFwmIzM0O0ludmFsaWQgZGlydHktcmluZyBzaXplOiBTaG91bGQgYmUgYSBwb3dlciBvZiB0d28gXCYjMzQ7XG4mIzQzO1x0XHQgICAgXCYjMzQ7XHUwMDNjPSAlbHUgZW50cmllc1xcblwmIzM0OyxcbiYjNDM7XHRcdCAgICBtYXhfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbikpO1xuJiM0MztcbiYjNDM7XHR2bV9lbmFibGVfY2FwKHZtLCBjYXAsIHJpbmdfc2l6ZSk7XG4gXHR2bS1cdTAwM2VkaXJ0eV9yaW5nX3NpemUgPSByaW5nX3NpemU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXG5pbmRleCA2ZGNkMTU5MTBhMDYwOC4uYzlmODU1MzNmZmZmZGMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXG5AQCAtMTIxLDEwICYjNDM7MTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKHN0cnVjdCB2bV9zaGFwZSBzaGFwZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICB1MzIgbnJfdmNwdXMsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgdTY0IGV4dHJhX21lbV9wYWdlcyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICB2b2lkICpndWVzdF9jb2RlLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgIHN0cnVjdCBrdm1fdmNwdSAqdmNwdXNbXSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICB1MzIgZGlydHlfcmluZ19zaXplKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGt2bV92bSAqdm07XG4mIzQzO1x0aW50IGk7XG4mIzQzO1xuJiM0MztcdFRFU1RfQVNTRVJUKCFucl92Y3B1cyB8fCB2Y3B1cywgXCYjMzQ7TXVzdCBwcm92aWRlIHZDUFUgYXJyYXlcJiMzNDspO1xuJiM0MztcbiYjNDM7XHR2bSA9IF9fdm1fY3JlYXRlKHNoYXBlLCBucl92Y3B1cywgZXh0cmFfbWVtX3BhZ2VzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKGRpcnR5X3Jpbmdfc2l6ZSlcbiYjNDM7XHRcdHZtX2VuYWJsZV9kaXJ0eV9yaW5nKHZtLCBkaXJ0eV9yaW5nX3NpemUpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgJiM0MzsmIzQzO2kpXG4mIzQzO1x0XHR2Y3B1c1tpXSA9IHZtX3ZjcHVfYWRkKHZtLCBpLCBndWVzdF9jb2RlKTtcbiYjNDM7XG4mIzQzO1x0a3ZtX2FyY2hfdm1fZmluYWxpemVfdmNwdXModm0pO1xuJiM0MztcdHJldHVybiB2bTtcbiYjNDM7fVxuJiM0MztcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXG4gXHRcdFx0XHQgICB1NjQgdmNwdV9tZW1vcnlfYnl0ZXMsIGludCBzbG90cyxcbiBcdFx0XHRcdCAgIGVudW0gdm1fbWVtX2JhY2tpbmdfc3JjX3R5cGUgYmFja2luZ19zcmMsXG4tXHRcdFx0XHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpXG4mIzQzO1x0XHRcdFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLFxuJiM0MztcdFx0XHRcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXG4ge1xuIFx0c3RydWN0IG1lbXN0cmVzc19hcmdzICphcmdzID0gXHUwMDI2bWVtc3RyZXNzX2FyZ3M7XG4gXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbkBAIC0xNjcsOSAmIzQzOzE5MiwxMCBAQCBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXG4gXHQgKiBUaGUgbWVtb3J5IGlzIGFsc28gYWRkZWQgdG8gbWVtc2xvdCAwLCBidXQgdGhhdCYjMzk7cyBhIGJlbmlnbiBzaWRlXG4gXHQgKiBlZmZlY3QgYXMgS1ZNIGFsbG93cyBhbGlhc2luZyBIVkFzIGluIG1lc2xvdHMuXG4gXHQgKi9cbi1cdHZtID0gX192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXG4tXHRcdFx0XHQgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLFxuLVx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyk7XG4mIzQzO1x0dm0gPSBtZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoVk1fU0hBUEUobW9kZSksIG5yX3ZjcHVzLFxuJiM0MztcdFx0XHRcdFx0ICAgIHNsb3QwX3BhZ2VzICYjNDM7IGd1ZXN0X251bV9wYWdlcyxcbiYjNDM7XHRcdFx0XHRcdCAgICBtZW1zdHJlc3NfZ3Vlc3RfY29kZSwgdmNwdXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgZGlydHlfcmluZ19zaXplKTtcbiBcbiBcdGFyZ3MtXHUwMDNldm0gPSB2bTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXG5pbmRleCA5Yzc1NzhhMDk4YzNlMS4uM2ExYmU5Yjc1ZTAxZGEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcbkBAIC05MCw3ICYjNDM7OTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXG4gXHRcdFx0XHQgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXG4tXHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbiYjNDM7XHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTtcbiAjaWZkZWYgX194ODZfNjRfX1xuIFx0aWYgKHAtXHUwMDNlZGlzYWJsZV9zbG90X3phcF9xdWlyaylcbiBcdFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVNBQkxFX1FVSVJLUzIsIEtWTV9YODZfUVVJUktfU0xPVF9aQVBfQUxMKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcbmluZGV4IDM4OGJhNDEwMWY5NzM2Li42NjFlOWFiZmI0Mzk1ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXG5AQCAtMTAxLDcgJiM0MzsxMDEsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqdW51c2VkKVxuIFx0c3RydWN0IGt2bV9wYWdlX3N0YXRzIHN0YXRzX3JlcG9wdWxhdGVkO1xuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIFZDUFVTLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXG4tXHRcdFx0XHQgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSk7XG4mIzQzO1x0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UsIDApO1xuIFxuIFx0Z3Vlc3RfbnVtX3BhZ2VzID0gKFZDUFVTICogZ3Vlc3RfcGVyY3B1X21lbV9zaXplKSBcdTAwM2VcdTAwM2Ugdm0tXHUwMDNlcGFnZV9zaGlmdDtcbiBcdGd1ZXN0X251bV9wYWdlcyA9IHZtX2FkanVzdF9udW1fZ3Vlc3RfcGFnZXMobW9kZSwgZ3Vlc3RfbnVtX3BhZ2VzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwOTozMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdGhlIHRvb2xzLyBkaXJlY3RvcnkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNGE4ODk5OWZlYjI2NGFhZmQzNjc5NTJkNGRmMDc2NGU0NmFkZDIwYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDkgMDk6MzI6NTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYwppbmRleCA0NDE1Yzk0YjI4NjYwNS4uZjc4ZDU2MjY1ZDg5MzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYwpAQCAtNDA5LDcgJiM0Mzs0MDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWludCBucl92Y3B1cyA9IHBhcmFtcy0mZ3Q7bnJfdmNwdXM7CiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIHBhcmFtcy0mZ3Q7dmNwdV9tZW1vcnlfYnl0ZXMsIDEsCi0JCQkJIHBhcmFtcy0mZ3Q7YmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpOwomIzQzOwkJCQkgcGFyYW1zLSZndDtiYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2VzcywgMCk7CiAKIAkvKgogCSAqIElmIGd1ZXN0X3BhZ2Vfc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgaG9zdCYjMzk7cyBwYWdlIHNpemUsIHRoZQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jCmluZGV4IDMwMmM0OTIzZDA5MzBmLi45MjI0NmUyN2VmNzQ0NyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuYwpAQCAtMTYyLDcgJiM0MzsxNjIsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWludCBpLCBudW1fdWZmZHMgPSAwOwogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsCi0JCQkJIHAtJmd0O3NyY190eXBlLCBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3NyY190eXBlLCBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzLCAwKTsKIAogCWRlbWFuZF9wYWdpbmdfc2l6ZSA9IGdldF9iYWNraW5nX3NyY19wYWdlc3oocC0mZ3Q7c3JjX3R5cGUpOwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYwppbmRleCBlZjc3OWZhOTE4MjdjOS4uMTgxZjUyMWM5YmU5NjEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kaXJ0eV9sb2dfcGVyZl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuYwpAQCAtMTMsNiAmIzQzOzEzLDcgQEAKICNpbmNsdWRlICZsdDt0aW1lLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7cHRocmVhZC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG1hcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vYmFycmllci5oJmd0OwogCiAjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwogI2luY2x1ZGUgJiMzNDt0ZXN0X3V0aWwuaCYjMzQ7CkBAIC0yOSw5ICYjNDM7MzAsNTMgQEAgc3RhdGljIGJvb2wgcnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nOwogCiAvKiBIb3N0IHZhcmlhYmxlcyAqLwogc3RhdGljIHU2NCBkaXJ0eV9sb2dfbWFudWFsX2NhcHM7CiYjNDM7c3RhdGljIHUzMiBkaXJ0eV9yaW5nX3NpemU7CiBzdGF0aWMgYm9vbCBob3N0X3F1aXQ7CiBzdGF0aWMgaW50IGl0ZXJhdGlvbjsKIHN0YXRpYyBpbnQgdmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25bS1ZNX01BWF9WQ1BVU107CiYjNDM7c3RhdGljIHN0cnVjdCB0aW1lc3BlYyB2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtLVk1fTUFYX1ZDUFVTXTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkaXJ0eV9yaW5nX2NvbGxlY3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKnJpbmdfaWR4LAomIzQzOwkJCQlzdHJ1Y3QgdGltZXNwZWMgKnRzKQomIzQzO3sKJiM0MzsJc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBjb2xsZWN0ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKJiM0MzsJc3RydWN0IHRpbWVzcGVjIHN0YXJ0OwomIzQzOwlzdHJ1Y3Qga3ZtX2RpcnR5X2dmbiAqZGlydHlfZ2ZucyA9IHZjcHVfbWFwX2RpcnR5X3JpbmcodmNwdSk7CiYjNDM7CXUzMiBpZHggPSAqcmluZ19pZHg7CiYjNDM7CXUzMiByaW5nX3NpemUgPSB2Y3B1LSZndDt2bS0mZ3Q7ZGlydHlfcmluZ19zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKTsKJiM0MzsJaW50IGNsZWFyZWQsIGNvdW50OwomIzQzOwomIzQzOwlwdGhyZWFkX211dGV4X2xvY2soJmFtcDtjb2xsZWN0KTsKJiM0MzsKJiM0MzsJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7c3RhcnQpOwomIzQzOwomIzQzOwl3aGlsZSAodHJ1ZSkgewomIzQzOwkJc3RydWN0IGt2bV9kaXJ0eV9nZm4gKmN1cjsKJiM0MzsKJiM0MzsJCWN1ciA9ICZhbXA7ZGlydHlfZ2Zuc1tpZHggJSByaW5nX3NpemVdOwomIzQzOwkJaWYgKHNtcF9sb2FkX2FjcXVpcmUoJmFtcDtjdXItJmd0O2ZsYWdzKSAhPSBLVk1fRElSVFlfR0ZOX0ZfRElSVFkpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CiYjNDM7CQlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO2N1ci0mZ3Q7ZmxhZ3MsIEtWTV9ESVJUWV9HRk5fRl9SRVNFVCk7CiYjNDM7CQlpZHgmIzQzOyYjNDM7OwomIzQzOwl9CiYjNDM7CiYjNDM7CWNvdW50ID0gaWR4IC0gKnJpbmdfaWR4OwomIzQzOwkqcmluZ19pZHggPSBpZHg7CiYjNDM7CiYjNDM7CWNsZWFyZWQgPSBrdm1fdm1fcmVzZXRfZGlydHlfcmluZyh2Y3B1LSZndDt2bSk7CiYjNDM7CiYjNDM7CS8qIENsZWFyZWQgcGFnZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbGxlY3RlZCwgYXMgS1ZNIGlzIHN1cHBvc2VkIHRvCiYjNDM7CSAqIGNsZWFyIG9ubHkgdGhlIGVudHJpZXMgdGhhdCBoYXZlIGJlZW4gaGFydmVzdGVkLCBhbmQgYSBzaW5nbGUgdmNwdSB3aWxsCiYjNDM7CSAqIGhhcnZlc3QgYXQgdGltZS4KJiM0MzsJICovCiYjNDM7CVRFU1RfQVNTRVJUKGNsZWFyZWQgPT0gY291bnQsICYjMzQ7UmVzZXQgZGlydHkgcGFnZXMgKCV1KSBtaXNtYXRjaCAmIzM0OwomIzQzOwkJICAgICYjMzQ7d2l0aCBjb2xsZWN0ZWQgKCV1KSYjMzQ7LCBjbGVhcmVkLCBjb3VudCk7CiYjNDM7CiYjNDM7CSp0cyA9IHRpbWVzcGVjX2FkZCgqdHMsIHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpKTsKJiM0MzsKJiM0MzsJcHRocmVhZF9tdXRleF91bmxvY2soJmFtcDtjb2xsZWN0KTsKJiM0Mzt9CiAKIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpCiB7CkBAIC00MywxNyAmIzQzOzg4LDMzIEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpCiAJc3RydWN0IHRpbWVzcGVjIHRzX2RpZmY7CiAJc3RydWN0IHRpbWVzcGVjIHRvdGFsID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07CiAJc3RydWN0IHRpbWVzcGVjIGF2ZzsKJiM0MzsJYm9vbCB1c2VfZGlydHlfcmluZyA9ICEhdmNwdS0mZ3Q7dm0tJmd0O2RpcnR5X3Jpbmdfc2l6ZTsKJiM0MzsJdTMyIHJpbmdfaWR4ID0gMDsKIAlpbnQgcmV0OwogCiAJcnVuID0gdmNwdS0mZ3Q7cnVuOwogCiAJd2hpbGUgKCFSRUFEX09OQ0UoaG9zdF9xdWl0KSkgewogCQlpbnQgY3VycmVudF9pdGVyYXRpb24gPSBSRUFEX09OQ0UoaXRlcmF0aW9uKTsKJiM0MzsJCXN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07CiAKIAkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZhbXA7c3RhcnQpOwotCQlyZXQgPSBfdmNwdV9ydW4odmNwdSk7CiYjNDM7CiYjNDM7CQlkbyB7CiYjNDM7CQkJcmV0ID0gX3ZjcHVfcnVuKHZjcHUpOwomIzQzOwkJCWlmICghdXNlX2RpcnR5X3JpbmcpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCWRpcnR5X3JpbmdfY29sbGVjdCh2Y3B1LCAmYW1wO3JpbmdfaWR4LCAmYW1wO2NvbGxlY3QpOwomIzQzOwkJfSB3aGlsZSAocnVuLSZndDtleGl0X3JlYXNvbiA9PSBLVk1fRVhJVF9ESVJUWV9SSU5HX0ZVTEwpOwomIzQzOwogCQl0c19kaWZmID0gdGltZXNwZWNfZWxhcHNlZChzdGFydCk7CiAKJiM0MzsJCWlmICh1c2VfZGlydHlfcmluZykgewomIzQzOwkJCXRzX2RpZmYgPSB0aW1lc3BlY19zdWIodHNfZGlmZiwgY29sbGVjdCk7CiYjNDM7CQkJdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbdmNwdV9pZHhdID0gY29sbGVjdDsKJiM0MzsJCX0KJiM0MzsKIAkJVEVTVF9BU1NFUlQocmV0ID09IDAsICYjMzQ7dmNwdV9ydW4gZmFpbGVkOiAlZCYjMzQ7LCByZXQpOwogCQlURVNUX0FTU0VSVChnZXRfdWNhbGwodmNwdSwgTlVMTCkgPT0gVUNBTExfU1lOQywKIAkJCSAgICAmIzM0O0ludmFsaWQgZ3Vlc3Qgc3luYyBzdGF0dXM6IGV4aXRfcmVhc29uPSVzJiMzNDssCkBAIC0xMTksNyAmIzQzOzE4MCw4IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpCiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgbnJfdmNwdXMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwKIAkJCQkgcC0mZ3Q7c2xvdHMsIHAtJmd0O2JhY2tpbmdfc3JjLAotCQkJCSBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3BhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsCiYjNDM7CQkJCSBkaXJ0eV9yaW5nX3NpemUpOwogCiAJbWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHZtLCBwLSZndDt3cml0ZV9wZXJjZW50KTsKIApAQCAtMTM5LDggJiM0MzsyMDEsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZykKIAlob3N0X3F1aXQgPSBmYWxzZTsKIAogCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmYW1wO3N0YXJ0KTsKLQlmb3IgKGkgPSAwOyBpICZsdDsgbnJfdmNwdXM7IGkmIzQzOyYjNDM7KQomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbnJfdmNwdXM7IGkmIzQzOyYjNDM7KSB7CiAJCXZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW2ldID0gLTE7CiYjNDM7CQl2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtpXSA9IChzdHJ1Y3QgdGltZXNwZWMpezB9OwomIzQzOwl9CiAKIAkvKgogCSAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbApAQCAtMTk1LDYgJiM0MzsyNTksMjEgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZykKIAkJcHJfaW5mbygmIzM0O0l0ZXJhdGlvbiAlZCBkaXJ0eSBtZW1vcnkgdGltZTogJWxkLiUuOWxkc1xuJiMzNDssCiAJCQlpdGVyYXRpb24sIHRzX2RpZmYudHZfc2VjLCB0c19kaWZmLnR2X25zZWMpOwogCiYjNDM7CQlpZiAoZGlydHlfcmluZ19zaXplKSB7CiYjNDM7CQkJc3RydWN0IHRpbWVzcGVjIGl0ZXJhdGlvbl9zdW0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTsKJiM0MzsKJiM0MzsJCQlmb3IgKGkgPSAwOyBpICZsdDsgbnJfdmNwdXM7IGkmIzQzOyYjNDM7KQomIzQzOwkJCQlpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sCiYjNDM7CQkJCQkJCSAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pOwomIzQzOwomIzQzOwkJCXByX2luZm8oJiMzNDtJdGVyYXRpb24gJWQgY2xlYXIgZGlydHkgcmluZyB0aW1lOiAlbGQuJS45bGRzXG4mIzM0OywKJiM0MzsJCQkJaXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTsKJiM0MzsKJiM0MzsJCQljbGVhcl9kaXJ0eV9sb2dfdG90YWwgPSB0aW1lc3BlY19hZGQoY2xlYXJfZGlydHlfbG9nX3RvdGFsLAomIzQzOwkJCQkJCQkgICAgIGl0ZXJhdGlvbl9zdW0pOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQomIzQzOwogCQljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDtzdGFydCk7CiAJCW1lbXN0cmVzc19nZXRfZGlydHlfbG9nKHZtLCBiaXRtYXBzLCBwLSZndDtzbG90cyk7CiAJCXRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTsKQEAgLTIzOCwxMiAmIzQzOzMxNywxNCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCWhvc3RfcXVpdCA9IHRydWU7CiAJbWVtc3RyZXNzX2pvaW5fdmNwdV90aHJlYWRzKG5yX3ZjcHVzKTsKIAotCWF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLSZndDtpdGVyYXRpb25zKTsKLQlwcl9pbmZvKCYjMzQ7R2V0IGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcbiYjMzQ7LAotCQlwLSZndDtpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYywKLQkJZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7CiYjNDM7CWlmICghZGlydHlfcmluZ19zaXplKSB7CiYjNDM7CQlhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC0mZ3Q7aXRlcmF0aW9ucyk7CiYjNDM7CQlwcl9pbmZvKCYjMzQ7R2V0IGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcbiYjMzQ7LAomIzQzOwkJCXAtJmd0O2l0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLAomIzQzOwkJCWdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpOwomIzQzOwl9CiAKLQlpZiAoZGlydHlfbG9nX21hbnVhbF9jYXBzKSB7CiYjNDM7CWlmIChkaXJ0eV9sb2dfbWFudWFsX2NhcHMgfHwgZGlydHlfcmluZ19zaXplKSB7CiAJCWF2ZyA9IHRpbWVzcGVjX2RpdihjbGVhcl9kaXJ0eV9sb2dfdG90YWwsIHAtJmd0O2l0ZXJhdGlvbnMpOwogCQlwcl9pbmZvKCYjMzQ7Q2xlYXIgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxuJiMzNDssCiAJCQlwLSZndDtpdGVyYXRpb25zLCBjbGVhcl9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLApAQCAtMjY0LDYgJiM0MzszNDUsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNoYXIgKm5hbWUpCiAJcHJpbnRmKCYjMzQ7IC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxuJiMzNDspOwogCXByaW50ZigmIzM0OyAtaTogc3BlY2lmeSBpdGVyYXRpb24gY291bnRzIChkZWZhdWx0OiAlJiMzNDtQUkl1NjQmIzM0OylcbiYjMzQ7LAogCSAgICAgICBURVNUX0hPU1RfTE9PUF9OKTsKJiM0MzsJcHJpbnRmKCYjMzQ7IC1kOiBzcGVjaWZ5IHRoZSBzaXplIG9mIGRpcnR5LXJpbmcgZm9yIHRyYWNraW5nIGRpcnR5IHBhZ2VzLlxuJiMzNDsKJiM0MzsJICAgICAgICYjMzQ7ICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxuJiMzNDsKJiM0MzsJICAgICAgICYjMzQ7ICAgICBkaXJ0eS1iaXRtYXAuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uXG4mIzM0Oyk7CiAJcHJpbnRmKCYjMzQ7IC1nOiBEbyBub3QgZW5hYmxlIEtWTV9DQVBfTUFOVUFMX0RJUlRZX0xPR19QUk9URUNUMi4gVGhpc1xuJiMzNDsKIAkgICAgICAgJiMzNDsgICAgIG1ha2VzIEtWTV9HRVRfRElSVFlfTE9HIGNsZWFyIHRoZSBkaXJ0eSBsb2cgKGkuZS5cbiYjMzQ7CiAJICAgICAgICYjMzQ7ICAgICBLVk1fRElSVFlfTE9HX01BTlVBTF9QUk9URUNUX0VOQUJMRSBpcyBub3QgZW5hYmxlZClcbiYjMzQ7CkBAIC0zMjAsNyAmIzQzOzQwNCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlndWVzdF9tb2Rlc19hcHBlbmRfZGVmYXVsdCgpOwogCi0Jd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgJiMzNDthYjpjOmVnaGk6bTpub3A6cjpzOnY6eDp3OiYjMzQ7KSkgIT0gLTEpIHsKJiM0MzsJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgJiMzNDthYjpjOmQ6ZWdoaTptOm5vcDpyOnM6djp4Onc6JiMzNDspKSAhPSAtMSkgewogCQlzd2l0Y2ggKG9wdCkgewogCQljYXNlICYjMzk7YSYjMzk7OgogCQkJcC5yYW5kb21fYWNjZXNzID0gdHJ1ZTsKQEAgLTMzMSw2ICYjNDM7NDE1LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWNhc2UgJiMzOTtjJiMzOTs6CiAJCQlwY3B1X2xpc3QgPSBvcHRhcmc7CiAJCQlicmVhazsKJiM0MzsJCWNhc2UgJiMzOTtkJiMzOTs6CiYjNDM7CQkJZGlydHlfcmluZ19zaXplID0gcGFyc2Vfc2l6ZShvcHRhcmcpOwomIzQzOwkJCWRpcnR5X3Jpbmdfc2l6ZSAqPSBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pOwomIzQzOwkJCWRpcnR5X2xvZ19tYW51YWxfY2FwcyA9IDA7CiYjNDM7CQkJYnJlYWs7CiAJCWNhc2UgJiMzOTtlJiMzOTs6CiAJCQkvKiAmIzM5O2UmIzM5OyBpcyBmb3IgZXZpbC4gKi8KIAkJCXJ1bl92Y3B1c193aGlsZV9kaXNhYmxpbmdfZGlydHlfbG9nZ2luZyA9IHRydWU7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oCmluZGV4IDBkMWQ2MjMwY2MwNTFiLi5lMTdmMzQ0OTc4YWY2NiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmgKQEAgLTU4LDcgJiM0Mzs1OCw4IEBAIGV4dGVybiBzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgbWVtc3RyZXNzX2FyZ3M7CiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsCiAJCQkJICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsCiAJCQkJICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYywKLQkJCQkgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpOwomIzQzOwkJCQkgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsCiYjNDM7CQkJCSAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpOwogdm9pZCBtZW1zdHJlc3NfZGVzdHJveV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSk7CiAKIHZvaWQgbWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgd3JpdGVfcGVyY2VudCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMKaW5kZXggMTk1ZjNmZGFlMWUzOTYuLjRhZTI3YWQ5Zjk0NzNkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jCkBAIC0xNjcsMTAgJiM0MzsxNjcsMjEgQEAgdW5zaWduZWQgaW50IGt2bV9jaGVja19jYXAobG9uZyBjYXApCiAKIHZvaWQgdm1fZW5hYmxlX2RpcnR5X3Jpbmcoc3RydWN0IGt2bV92bSAqdm0sIHUzMiByaW5nX3NpemUpCiB7Ci0JaWYgKHZtX2NoZWNrX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMKSkKLQkJdm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMLCByaW5nX3NpemUpOwotCWVsc2UKLQkJdm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklORywgcmluZ19zaXplKTsKJiM0MzsJbG9uZyBjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw7CiYjNDM7CWludCBtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTsKJiM0MzsKJiM0MzsJaWYgKCFtYXhfc2l6ZSkgewomIzQzOwkJY2FwID0gS1ZNX0NBUF9ESVJUWV9MT0dfUklORzsKJiM0MzsJCW1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApOwomIzQzOwl9CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKG1heF9zaXplICZndDsgMCwgJiMzNDtEaXJ0eS1yaW5nIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBrZXJuZWxcbiYjMzQ7KTsKJiM0MzsJVEVTVF9BU1NFUlQocmluZ19zaXplICZsdDs9IG1heF9zaXplICZhbXA7JmFtcDsgaXNfcG93ZXJfb2ZfMihyaW5nX3NpemUpLAomIzQzOwkJICAgICYjMzQ7SW52YWxpZCBkaXJ0eS1yaW5nIHNpemU6IFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byAmIzM0OwomIzQzOwkJICAgICYjMzQ7Jmx0Oz0gJWx1IGVudHJpZXNcbiYjMzQ7LAomIzQzOwkJICAgIG1heF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKSk7CiYjNDM7CiYjNDM7CXZtX2VuYWJsZV9jYXAodm0sIGNhcCwgcmluZ19zaXplKTsKIAl2bS0mZ3Q7ZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplOwogfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYwppbmRleCA2ZGNkMTU5MTBhMDYwOC4uYzlmODU1MzNmZmZmZGMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuYwpAQCAtMTIxLDEwICYjNDM7MTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsCiAJfQogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUsCiYjNDM7CQkJCQkJICAgICB1MzIgbnJfdmNwdXMsCiYjNDM7CQkJCQkJICAgICB1NjQgZXh0cmFfbWVtX3BhZ2VzLAomIzQzOwkJCQkJCSAgICAgdm9pZCAqZ3Vlc3RfY29kZSwKJiM0MzsJCQkJCQkgICAgIHN0cnVjdCBrdm1fdmNwdSAqdmNwdXNbXSwKJiM0MzsJCQkJCQkgICAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CVRFU1RfQVNTRVJUKCFucl92Y3B1cyB8fCB2Y3B1cywgJiMzNDtNdXN0IHByb3ZpZGUgdkNQVSBhcnJheSYjMzQ7KTsKJiM0MzsKJiM0MzsJdm0gPSBfX3ZtX2NyZWF0ZShzaGFwZSwgbnJfdmNwdXMsIGV4dHJhX21lbV9wYWdlcyk7CiYjNDM7CiYjNDM7CWlmIChkaXJ0eV9yaW5nX3NpemUpCiYjNDM7CQl2bV9lbmFibGVfZGlydHlfcmluZyh2bSwgZGlydHlfcmluZ19zaXplKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5yX3ZjcHVzOyAmIzQzOyYjNDM7aSkKJiM0MzsJCXZjcHVzW2ldID0gdm1fdmNwdV9hZGQodm0sIGksIGd1ZXN0X2NvZGUpOwomIzQzOwomIzQzOwlrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7CiYjNDM7CXJldHVybiB2bTsKJiM0Mzt9CiYjNDM7CiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsCiAJCQkJICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsCiAJCQkJICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYywKLQkJCQkgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpCiYjNDM7CQkJCSAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywKJiM0MzsJCQkJICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSkKIHsKIAlzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgKmFyZ3MgPSAmYW1wO21lbXN0cmVzc19hcmdzOwogCXN0cnVjdCBrdm1fdm0gKnZtOwpAQCAtMTY3LDkgJiM0MzsxOTIsMTAgQEAgc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLAogCSAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0JiMzOTtzIGEgYmVuaWduIHNpZGUKIAkgKiBlZmZlY3QgYXMgS1ZNIGFsbG93cyBhbGlhc2luZyBIVkFzIGluIG1lc2xvdHMuCiAJICovCi0Jdm0gPSBfX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKFZNX1NIQVBFKG1vZGUpLCBucl92Y3B1cywKLQkJCQkgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLAotCQkJCSAgICBtZW1zdHJlc3NfZ3Vlc3RfY29kZSwgdmNwdXMpOwomIzQzOwl2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsCiYjNDM7CQkJCQkgICAgc2xvdDBfcGFnZXMgJiM0MzsgZ3Vlc3RfbnVtX3BhZ2VzLAomIzQzOwkJCQkJICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cywKJiM0MzsJCQkJCSAgICBkaXJ0eV9yaW5nX3NpemUpOwogCiAJYXJncy0mZ3Q7dm0gPSB2bTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuYwppbmRleCA5Yzc1NzhhMDk4YzNlMS4uM2ExYmU5Yjc1ZTAxZGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jCkBAIC05MCw3ICYjNDM7OTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKQogCiAJdm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsCiAJCQkJIFZNX01FTV9TUkNfQU5PTllNT1VTLAotCQkJCSBwLSZndDtwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTsKJiM0MzsJCQkJIHAtJmd0O3BhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApOwogI2lmZGVmIF9feDg2XzY0X18KIAlpZiAocC0mZ3Q7ZGlzYWJsZV9zbG90X3phcF9xdWlyaykKIAkJdm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVNBQkxFX1FVSVJLUzIsIEtWTV9YODZfUVVJUktfU0xPVF9aQVBfQUxMKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYwppbmRleCAzODhiYTQxMDFmOTczNi4uNjYxZTlhYmZiNDM5NWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmMKQEAgLTEwMSw3ICYjNDM7MTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZCkKIAlzdHJ1Y3Qga3ZtX3BhZ2Vfc3RhdHMgc3RhdHNfcmVwb3B1bGF0ZWQ7CiAKIAl2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgVkNQVVMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSwKLQkJCQkgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSk7CiYjNDM7CQkJCSBTTE9UUywgYmFja2luZ19zcmMsIGZhbHNlLCAwKTsKIAogCWd1ZXN0X251bV9wYWdlcyA9IChWQ1BVUyAqIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSkgJmd0OyZndDsgdm0tJmd0O3BhZ2Vfc2hpZnQ7CiAJZ3Vlc3RfbnVtX3BhZ2VzID0gdm1fYWRqdXN0X251bV9ndWVzdF9wYWdlcyhtb2RlLCBndWVzdF9udW1fcGFnZXMpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOSAwOTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjE4CgkJCQkJCQlvdXRwdXQ6IDU5CgkJCQkJCQl0aG91Z2h0czogNTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBmaWxlcyB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gLiBUaGVzZSBhcmUgc2VsZnRlc3RzIOKAkyBub3QgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFueXRoaW5nIHRoYXQgd291bGQgYmUgZGlyZWN0bHkgZXhlY3V0ZWQgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50IG9yLCBjcnVjaWFsbHksIGZ1enplZCBieSBzeXprYWxsZXIuIFN5emthbGxlciYjMzk7cyBqb2IgaXMgdG8gZnV6eiB0aGUga2VybmVsIGl0c2VsZiwgbm90IHRoZSB0ZXN0IHN1aXRlLgoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBtb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBjb2RlIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGNoYW5nZXMgbGlrZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiwgb3IgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDsKCkxldCBtZSBjb25maXJtIHRoZSBmaWxlcyBpbnZvbHZlZDogIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jYCwgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaGAsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY2AsIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jYC4gIFl1cCwgKmFsbCogd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AgZGlyZWN0b3J5LgoKU28sIHNpbmNlIHRoZSBwYXRjaCAqb25seSogdG91Y2hlcyBzZWxmdGVzdHMsIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkga2VybmVsIGNvZGUgdGhhdCBuZWVkcyB0byBiZSBmdXp6ZWQuIEl0JiMzOTtzIGEgdGVzdCBtb2RpZmljYXRpb24sIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcmUtc2NhbiB0aGUgZmlsZSBsaXN0IGFnYWluLiBZZXAsIG5vdGhpbmcga2VybmVsLWZhY2luZy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpczogYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBwYXRjaCBpcyBjb25maW5lZCB0byBLVk0gc2VsZnRlc3RzIHdpdGhpbiB0aGUgdG9vbHMgZGlyZWN0b3J5LCBhbmQgaXQgZG9lc24mIzM5O3QgYWZmZWN0IGFueSBrZXJuZWwgY29kZSB0aGF0IGlzIGRpcmVjdGx5IGV4cG9zZWQgZm9yIGV4ZWN1dGlvbiBvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA5IDA5OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRoZSB0b29scy8gZGlyZWN0b3J5LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0aGUgdG9vbHMvIGRpcmVjdG9yeS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDlUMDk6MzI6NTYuMjA5MzE5ODE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NTY3NDIwMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0aGUgdG9vbHMvIGRpcmVjdG9yeS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOVQwOTozMjo1Ni4yMDkzMjY5MDRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0OTMwOTEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRhODg5OTlmZWIyNjRhYWZkMzY3OTUyZDRkZjA3NjRlNDZhZGQyMGNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgOSAwOTozMjo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuY1xcbmluZGV4IDQ0MTVjOTRiMjg2NjA1Li5mNzhkNTYyNjVkODkzNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYWNjZXNzX3RyYWNraW5nX3BlcmZfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuY1xcbkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFx0aW50IG5yX3ZjcHVzID0gcGFyYW1zLVxcdTAwM2Vucl92Y3B1cztcXG4gXFxuIFxcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgcGFyYW1zLVxcdTAwM2V2Y3B1X21lbW9yeV9ieXRlcywgMSxcXG4tXFx0XFx0XFx0XFx0IHBhcmFtcy1cXHUwMDNlYmFja2luZ19zcmMsICFvdmVybGFwX21lbW9yeV9hY2Nlc3MpO1xcbitcXHRcXHRcXHRcXHQgcGFyYW1zLVxcdTAwM2ViYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2VzcywgMCk7XFxuIFxcbiBcXHQvKlxcbiBcXHQgKiBJZiBndWVzdF9wYWdlX3NpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGhvc3QncyBwYWdlIHNpemUsIHRoZVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcXG5pbmRleCAzMDJjNDkyM2QwOTMwZi4uOTIyNDZlMjdlZjc0NDcgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXFxuQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXHRpbnQgaSwgbnVtX3VmZmRzID0gMDtcXG4gXFxuIFxcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLCAxLFxcbi1cXHRcXHRcXHRcXHQgcC1cXHUwMDNlc3JjX3R5cGUsIHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xcbitcXHRcXHRcXHRcXHQgcC1cXHUwMDNlc3JjX3R5cGUsIHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xcbiBcXG4gXFx0ZGVtYW5kX3BhZ2luZ19zaXplID0gZ2V0X2JhY2tpbmdfc3JjX3BhZ2VzeihwLVxcdTAwM2VzcmNfdHlwZSk7XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xcbmluZGV4IGVmNzc5ZmE5MTgyN2M5Li4xODFmNTIxYzliZTk2MSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xcbkBAIC0xMyw2ICsxMyw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2N0aW1lLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NwdGhyZWFkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRtYXAuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS9iYXJyaWVyLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwia3ZtX3V0aWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3RfdXRpbC5oXFxcIlxcbkBAIC0yOSw5ICszMCw1MyBAQCBzdGF0aWMgYm9vbCBydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmc7XFxuIFxcbiAvKiBIb3N0IHZhcmlhYmxlcyAqL1xcbiBzdGF0aWMgdTY0IGRpcnR5X2xvZ19tYW51YWxfY2FwcztcXG4rc3RhdGljIHUzMiBkaXJ0eV9yaW5nX3NpemU7XFxuIHN0YXRpYyBib29sIGhvc3RfcXVpdDtcXG4gc3RhdGljIGludCBpdGVyYXRpb247XFxuIHN0YXRpYyBpbnQgdmNwdV9sYXN0X2NvbXBsZXRlZF9pdGVyYXRpb25bS1ZNX01BWF9WQ1BVU107XFxuK3N0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbS1ZNX01BWF9WQ1BVU107XFxuK1xcbitzdGF0aWMgdm9pZCBkaXJ0eV9yaW5nX2NvbGxlY3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgKnJpbmdfaWR4LFxcbitcXHRcXHRcXHRcXHRzdHJ1Y3QgdGltZXNwZWMgKnRzKVxcbit7XFxuK1xcdHN0YXRpYyBwdGhyZWFkX211dGV4X3QgY29sbGVjdCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7XFxuK1xcdHN0cnVjdCB0aW1lc3BlYyBzdGFydDtcXG4rXFx0c3RydWN0IGt2bV9kaXJ0eV9nZm4gKmRpcnR5X2dmbnMgPSB2Y3B1X21hcF9kaXJ0eV9yaW5nKHZjcHUpO1xcbitcXHR1MzIgaWR4ID0gKnJpbmdfaWR4O1xcbitcXHR1MzIgcmluZ19zaXplID0gdmNwdS1cXHUwMDNldm0tXFx1MDAzZWRpcnR5X3Jpbmdfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7XFxuK1xcdGludCBjbGVhcmVkLCBjb3VudDtcXG4rXFxuK1xcdHB0aHJlYWRfbXV0ZXhfbG9jayhcXHUwMDI2Y29sbGVjdCk7XFxuK1xcbitcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4rXFxuK1xcdHdoaWxlICh0cnVlKSB7XFxuK1xcdFxcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpjdXI7XFxuK1xcbitcXHRcXHRjdXIgPSBcXHUwMDI2ZGlydHlfZ2Zuc1tpZHggJSByaW5nX3NpemVdO1xcbitcXHRcXHRpZiAoc21wX2xvYWRfYWNxdWlyZShcXHUwMDI2Y3VyLVxcdTAwM2VmbGFncykgIT0gS1ZNX0RJUlRZX0dGTl9GX0RJUlRZKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZjdXItXFx1MDAzZWZsYWdzLCBLVk1fRElSVFlfR0ZOX0ZfUkVTRVQpO1xcbitcXHRcXHRpZHgrKztcXG4rXFx0fVxcbitcXG4rXFx0Y291bnQgPSBpZHggLSAqcmluZ19pZHg7XFxuK1xcdCpyaW5nX2lkeCA9IGlkeDtcXG4rXFxuK1xcdGNsZWFyZWQgPSBrdm1fdm1fcmVzZXRfZGlydHlfcmluZyh2Y3B1LVxcdTAwM2V2bSk7XFxuK1xcbitcXHQvKiBDbGVhcmVkIHBhZ2VzIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBjb2xsZWN0ZWQsIGFzIEtWTSBpcyBzdXBwb3NlZCB0b1xcbitcXHQgKiBjbGVhciBvbmx5IHRoZSBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGhhcnZlc3RlZCwgYW5kIGEgc2luZ2xlIHZjcHUgd2lsbFxcbitcXHQgKiBoYXJ2ZXN0IGF0IHRpbWUuXFxuK1xcdCAqL1xcbitcXHRURVNUX0FTU0VSVChjbGVhcmVkID09IGNvdW50LCBcXFwiUmVzZXQgZGlydHkgcGFnZXMgKCV1KSBtaXNtYXRjaCBcXFwiXFxuK1xcdFxcdCAgICBcXFwid2l0aCBjb2xsZWN0ZWQgKCV1KVxcXCIsIGNsZWFyZWQsIGNvdW50KTtcXG4rXFxuK1xcdCp0cyA9IHRpbWVzcGVjX2FkZCgqdHMsIHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpKTtcXG4rXFxuK1xcdHB0aHJlYWRfbXV0ZXhfdW5sb2NrKFxcdTAwMjZjb2xsZWN0KTtcXG4rfVxcbiBcXG4gc3RhdGljIHZvaWQgdmNwdV93b3JrZXIoc3RydWN0IG1lbXN0cmVzc192Y3B1X2FyZ3MgKnZjcHVfYXJncylcXG4ge1xcbkBAIC00MywxNyArODgsMzMgQEAgc3RhdGljIHZvaWQgdmNwdV93b3JrZXIoc3RydWN0IG1lbXN0cmVzc192Y3B1X2FyZ3MgKnZjcHVfYXJncylcXG4gXFx0c3RydWN0IHRpbWVzcGVjIHRzX2RpZmY7XFxuIFxcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xcbiBcXHRzdHJ1Y3QgdGltZXNwZWMgYXZnO1xcbitcXHRib29sIHVzZV9kaXJ0eV9yaW5nID0gISF2Y3B1LVxcdTAwM2V2bS1cXHUwMDNlZGlydHlfcmluZ19zaXplO1xcbitcXHR1MzIgcmluZ19pZHggPSAwO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0cnVuID0gdmNwdS1cXHUwMDNlcnVuO1xcbiBcXG4gXFx0d2hpbGUgKCFSRUFEX09OQ0UoaG9zdF9xdWl0KSkge1xcbiBcXHRcXHRpbnQgY3VycmVudF9pdGVyYXRpb24gPSBSRUFEX09OQ0UoaXRlcmF0aW9uKTtcXG4rXFx0XFx0c3RydWN0IHRpbWVzcGVjIGNvbGxlY3QgPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcXG4gXFxuIFxcdFxcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcXHUwMDI2c3RhcnQpO1xcbi1cXHRcXHRyZXQgPSBfdmNwdV9ydW4odmNwdSk7XFxuK1xcbitcXHRcXHRkbyB7XFxuK1xcdFxcdFxcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcXG4rXFx0XFx0XFx0aWYgKCF1c2VfZGlydHlfcmluZylcXG4rXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRcXHRkaXJ0eV9yaW5nX2NvbGxlY3QodmNwdSwgXFx1MDAyNnJpbmdfaWR4LCBcXHUwMDI2Y29sbGVjdCk7XFxuK1xcdFxcdH0gd2hpbGUgKHJ1bi1cXHUwMDNlZXhpdF9yZWFzb24gPT0gS1ZNX0VYSVRfRElSVFlfUklOR19GVUxMKTtcXG4rXFxuIFxcdFxcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcXG4gXFxuK1xcdFxcdGlmICh1c2VfZGlydHlfcmluZykge1xcbitcXHRcXHRcXHR0c19kaWZmID0gdGltZXNwZWNfc3ViKHRzX2RpZmYsIGNvbGxlY3QpO1xcbitcXHRcXHRcXHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRURVNUX0FTU0VSVChyZXQgPT0gMCwgXFxcInZjcHVfcnVuIGZhaWxlZDogJWRcXFwiLCByZXQpO1xcbiBcXHRcXHRURVNUX0FTU0VSVChnZXRfdWNhbGwodmNwdSwgTlVMTCkgPT0gVUNBTExfU1lOQyxcXG4gXFx0XFx0XFx0ICAgIFxcXCJJbnZhbGlkIGd1ZXN0IHN5bmMgc3RhdHVzOiBleGl0X3JlYXNvbj0lc1xcXCIsXFxuQEAgLTExOSw3ICsxODAsOCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXG4gXFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsXFxuIFxcdFxcdFxcdFxcdCBwLVxcdTAwM2VzbG90cywgcC1cXHUwMDNlYmFja2luZ19zcmMsXFxuLVxcdFxcdFxcdFxcdCBwLVxcdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcXG4rXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXFxuK1xcdFxcdFxcdFxcdCBkaXJ0eV9yaW5nX3NpemUpO1xcbiBcXG4gXFx0bWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHZtLCBwLVxcdTAwM2V3cml0ZV9wZXJjZW50KTtcXG4gXFxuQEAgLTEzOSw4ICsyMDEsMTAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcXG4gXFx0aG9zdF9xdWl0ID0gZmFsc2U7XFxuIFxcbiBcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX3ZjcHVzOyBpKyspXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgaSsrKSB7XFxuIFxcdFxcdHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW2ldID0gLTE7XFxuK1xcdFxcdHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XFxuK1xcdH1cXG4gXFxuIFxcdC8qXFxuIFxcdCAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbFxcbkBAIC0xOTUsNiArMjU5LDIxIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXFxuIFxcdFxcdHByX2luZm8oXFxcIkl0ZXJhdGlvbiAlZCBkaXJ0eSBtZW1vcnkgdGltZTogJWxkLiUuOWxkc1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0aXRlcmF0aW9uLCB0c19kaWZmLnR2X3NlYywgdHNfZGlmZi50dl9uc2VjKTtcXG4gXFxuK1xcdFxcdGlmIChkaXJ0eV9yaW5nX3NpemUpIHtcXG4rXFx0XFx0XFx0c3RydWN0IHRpbWVzcGVjIGl0ZXJhdGlvbl9zdW0gPSAoc3RydWN0IHRpbWVzcGVjKXswfTtcXG4rXFxuK1xcdFxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgaSsrKVxcbitcXHRcXHRcXHRcXHRpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbaV0pO1xcbitcXG4rXFx0XFx0XFx0cHJfaW5mbyhcXFwiSXRlcmF0aW9uICVkIGNsZWFyIGRpcnR5IHJpbmcgdGltZTogJWxkLiUuOWxkc1xcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0aXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTtcXG4rXFxuK1xcdFxcdFxcdGNsZWFyX2RpcnR5X2xvZ190b3RhbCA9IHRpbWVzcGVjX2FkZChjbGVhcl9kaXJ0eV9sb2dfdG90YWwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgaXRlcmF0aW9uX3N1bSk7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXFx1MDAyNnN0YXJ0KTtcXG4gXFx0XFx0bWVtc3RyZXNzX2dldF9kaXJ0eV9sb2codm0sIGJpdG1hcHMsIHAtXFx1MDAzZXNsb3RzKTtcXG4gXFx0XFx0dHNfZGlmZiA9IHRpbWVzcGVjX2VsYXBzZWQoc3RhcnQpO1xcbkBAIC0yMzgsMTIgKzMxNywxNCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXHRob3N0X3F1aXQgPSB0cnVlO1xcbiBcXHRtZW1zdHJlc3Nfam9pbl92Y3B1X3RocmVhZHMobnJfdmNwdXMpO1xcbiBcXG4tXFx0YXZnID0gdGltZXNwZWNfZGl2KGdldF9kaXJ0eV9sb2dfdG90YWwsIHAtXFx1MDAzZWl0ZXJhdGlvbnMpO1xcbi1cXHRwcl9pbmZvKFxcXCJHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcXFxuXFxcIixcXG4tXFx0XFx0cC1cXHUwMDNlaXRlcmF0aW9ucywgZ2V0X2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXFxuLVxcdFxcdGdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpO1xcbitcXHRpZiAoIWRpcnR5X3Jpbmdfc2l6ZSkge1xcbitcXHRcXHRhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC1cXHUwMDNlaXRlcmF0aW9ucyk7XFxuK1xcdFxcdHByX2luZm8oXFxcIkdldCBkaXJ0eSBsb2cgb3ZlciAlbHUgaXRlcmF0aW9ucyB0b29rICVsZC4lLjlsZHMuIChBdmcgJWxkLiUuOWxkcy9pdGVyYXRpb24pXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRwLVxcdTAwM2VpdGVyYXRpb25zLCBnZXRfZGlydHlfbG9nX3RvdGFsLnR2X3NlYyxcXG4rXFx0XFx0XFx0Z2V0X2RpcnR5X2xvZ190b3RhbC50dl9uc2VjLCBhdmcudHZfc2VjLCBhdmcudHZfbnNlYyk7XFxuK1xcdH1cXG4gXFxuLVxcdGlmIChkaXJ0eV9sb2dfbWFudWFsX2NhcHMpIHtcXG4rXFx0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcyB8fCBkaXJ0eV9yaW5nX3NpemUpIHtcXG4gXFx0XFx0YXZnID0gdGltZXNwZWNfZGl2KGNsZWFyX2RpcnR5X2xvZ190b3RhbCwgcC1cXHUwMDNlaXRlcmF0aW9ucyk7XFxuIFxcdFxcdHByX2luZm8oXFxcIkNsZWFyIGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcXFxcblxcXCIsXFxuIFxcdFxcdFxcdHAtXFx1MDAzZWl0ZXJhdGlvbnMsIGNsZWFyX2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXFxuQEAgLTI2NCw2ICszNDUsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNoYXIgKm5hbWUpXFxuIFxcdHByaW50ZihcXFwiIC1hOiBhY2Nlc3MgbWVtb3J5IHJhbmRvbWx5IHJhdGhlciB0aGFuIGluIG9yZGVyLlxcXFxuXFxcIik7XFxuIFxcdHByaW50ZihcXFwiIC1pOiBzcGVjaWZ5IGl0ZXJhdGlvbiBjb3VudHMgKGRlZmF1bHQ6ICVcXFwiUFJJdTY0XFxcIilcXFxcblxcXCIsXFxuIFxcdCAgICAgICBURVNUX0hPU1RfTE9PUF9OKTtcXG4rXFx0cHJpbnRmKFxcXCIgLWQ6IHNwZWNpZnkgdGhlIHNpemUgb2YgZGlydHktcmluZyBmb3IgdHJhY2tpbmcgZGlydHkgcGFnZXMuXFxcXG5cXFwiXFxuK1xcdCAgICAgICBcXFwiICAgICBJZiBub24temVybywgd2lsbCBjYXVzZSBkaXJ0eS1yaW5nIHRvIGJlIHVzZWQgaW5zdGVhZCBvZlxcXFxuXFxcIlxcbitcXHQgICAgICAgXFxcIiAgICAgZGlydHktYml0bWFwLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLlxcXFxuXFxcIik7XFxuIFxcdHByaW50ZihcXFwiIC1nOiBEbyBub3QgZW5hYmxlIEtWTV9DQVBfTUFOVUFMX0RJUlRZX0xPR19QUk9URUNUMi4gVGhpc1xcXFxuXFxcIlxcbiBcXHQgICAgICAgXFxcIiAgICAgbWFrZXMgS1ZNX0dFVF9ESVJUWV9MT0cgY2xlYXIgdGhlIGRpcnR5IGxvZyAoaS5lLlxcXFxuXFxcIlxcbiBcXHQgICAgICAgXFxcIiAgICAgS1ZNX0RJUlRZX0xPR19NQU5VQUxfUFJPVEVDVF9FTkFCTEUgaXMgbm90IGVuYWJsZWQpXFxcXG5cXFwiXFxuQEAgLTMyMCw3ICs0MDQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXG4gXFx0Z3Vlc3RfbW9kZXNfYXBwZW5kX2RlZmF1bHQoKTtcXG4gXFxuLVxcdHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFxcXCJhYjpjOmVnaGk6bTpub3A6cjpzOnY6eDp3OlxcXCIpKSAhPSAtMSkge1xcbitcXHR3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCBcXFwiYWI6YzpkOmVnaGk6bTpub3A6cjpzOnY6eDp3OlxcXCIpKSAhPSAtMSkge1xcbiBcXHRcXHRzd2l0Y2ggKG9wdCkge1xcbiBcXHRcXHRjYXNlICdhJzpcXG4gXFx0XFx0XFx0cC5yYW5kb21fYWNjZXNzID0gdHJ1ZTtcXG5AQCAtMzMxLDYgKzQxNSwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRcXHRjYXNlICdjJzpcXG4gXFx0XFx0XFx0cGNwdV9saXN0ID0gb3B0YXJnO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSAnZCc6XFxuK1xcdFxcdFxcdGRpcnR5X3Jpbmdfc2l6ZSA9IHBhcnNlX3NpemUob3B0YXJnKTtcXG4rXFx0XFx0XFx0ZGlydHlfcmluZ19zaXplICo9IHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbik7XFxuK1xcdFxcdFxcdGRpcnR5X2xvZ19tYW51YWxfY2FwcyA9IDA7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlICdlJzpcXG4gXFx0XFx0XFx0LyogJ2UnIGlzIGZvciBldmlsLiAqL1xcbiBcXHRcXHRcXHRydW5fdmNwdXNfd2hpbGVfZGlzYWJsaW5nX2RpcnR5X2xvZ2dpbmcgPSB0cnVlO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXFxuaW5kZXggMGQxZDYyMzBjYzA1MWIuLmUxN2YzNDQ5NzhhZjY2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcXG5AQCAtNTgsNyArNTgsOCBAQCBleHRlcm4gc3RydWN0IG1lbXN0cmVzc19hcmdzIG1lbXN0cmVzc19hcmdzO1xcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXFxuIFxcdFxcdFxcdFxcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxcbiBcXHRcXHRcXHRcXHQgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLFxcbi1cXHRcXHRcXHRcXHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xcbitcXHRcXHRcXHRcXHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXFxuK1xcdFxcdFxcdFxcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpO1xcbiB2b2lkIG1lbXN0cmVzc19kZXN0cm95X3ZtKHN0cnVjdCBrdm1fdm0gKnZtKTtcXG4gXFxuIHZvaWQgbWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgd3JpdGVfcGVyY2VudCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xcbmluZGV4IDE5NWYzZmRhZTFlMzk2Li40YWUyN2FkOWY5NDczZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcXG5AQCAtMTY3LDEwICsxNjcsMjEgQEAgdW5zaWduZWQgaW50IGt2bV9jaGVja19jYXAobG9uZyBjYXApXFxuIFxcbiB2b2lkIHZtX2VuYWJsZV9kaXJ0eV9yaW5nKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgcmluZ19zaXplKVxcbiB7XFxuLVxcdGlmICh2bV9jaGVja19jYXAodm0sIEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTCkpXFxuLVxcdFxcdHZtX2VuYWJsZV9jYXAodm0sIEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTCwgcmluZ19zaXplKTtcXG4tXFx0ZWxzZVxcbi1cXHRcXHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HLCByaW5nX3NpemUpO1xcbitcXHRsb25nIGNhcCA9IEtWTV9DQVBfRElSVFlfTE9HX1JJTkdfQUNRX1JFTDtcXG4rXFx0aW50IG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApO1xcbitcXG4rXFx0aWYgKCFtYXhfc2l6ZSkge1xcbitcXHRcXHRjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HO1xcbitcXHRcXHRtYXhfc2l6ZSA9IHZtX2NoZWNrX2NhcCh2bSwgY2FwKTtcXG4rXFx0fVxcbitcXG4rXFx0VEVTVF9BU1NFUlQobWF4X3NpemUgXFx1MDAzZSAwLCBcXFwiRGlydHktcmluZyBub3Qgc3VwcG9ydGVkIGluIHRoaXMga2VybmVsXFxcXG5cXFwiKTtcXG4rXFx0VEVTVF9BU1NFUlQocmluZ19zaXplIFxcdTAwM2M9IG1heF9zaXplIFxcdTAwMjZcXHUwMDI2IGlzX3Bvd2VyX29mXzIocmluZ19zaXplKSxcXG4rXFx0XFx0ICAgIFxcXCJJbnZhbGlkIGRpcnR5LXJpbmcgc2l6ZTogU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvIFxcXCJcXG4rXFx0XFx0ICAgIFxcXCJcXHUwMDNjPSAlbHUgZW50cmllc1xcXFxuXFxcIixcXG4rXFx0XFx0ICAgIG1heF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKSk7XFxuK1xcbitcXHR2bV9lbmFibGVfY2FwKHZtLCBjYXAsIHJpbmdfc2l6ZSk7XFxuIFxcdHZtLVxcdTAwM2VkaXJ0eV9yaW5nX3NpemUgPSByaW5nX3NpemU7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXFxuaW5kZXggNmRjZDE1OTEwYTA2MDguLmM5Zjg1NTMzZmZmZmRjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jXFxuQEAgLTEyMSwxMCArMTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsXFxuIFxcdH1cXG4gfVxcbiBcXG4rc3RhdGljIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhzdHJ1Y3Qgdm1fc2hhcGUgc2hhcGUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIG5yX3ZjcHVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHU2NCBleHRyYV9tZW1fcGFnZXMsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgdm9pZCAqZ3Vlc3RfY29kZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHVzW10sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSlcXG4re1xcbitcXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcXG4rXFx0aW50IGk7XFxuK1xcbitcXHRURVNUX0FTU0VSVCghbnJfdmNwdXMgfHwgdmNwdXMsIFxcXCJNdXN0IHByb3ZpZGUgdkNQVSBhcnJheVxcXCIpO1xcbitcXG4rXFx0dm0gPSBfX3ZtX2NyZWF0ZShzaGFwZSwgbnJfdmNwdXMsIGV4dHJhX21lbV9wYWdlcyk7XFxuK1xcbitcXHRpZiAoZGlydHlfcmluZ19zaXplKVxcbitcXHRcXHR2bV9lbmFibGVfZGlydHlfcmluZyh2bSwgZGlydHlfcmluZ19zaXplKTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl92Y3B1czsgKytpKVxcbitcXHRcXHR2Y3B1c1tpXSA9IHZtX3ZjcHVfYWRkKHZtLCBpLCBndWVzdF9jb2RlKTtcXG4rXFxuK1xcdGt2bV9hcmNoX3ZtX2ZpbmFsaXplX3ZjcHVzKHZtKTtcXG4rXFx0cmV0dXJuIHZtO1xcbit9XFxuK1xcbiBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3NfY3JlYXRlX3ZtKGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCBpbnQgbnJfdmNwdXMsXFxuIFxcdFxcdFxcdFxcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxcbiBcXHRcXHRcXHRcXHQgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLFxcbi1cXHRcXHRcXHRcXHQgICBib29sIHBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpXFxuK1xcdFxcdFxcdFxcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcXG4rXFx0XFx0XFx0XFx0ICAgdTMyIGRpcnR5X3Jpbmdfc2l6ZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgKmFyZ3MgPSBcXHUwMDI2bWVtc3RyZXNzX2FyZ3M7XFxuIFxcdHN0cnVjdCBrdm1fdm0gKnZtO1xcbkBAIC0xNjcsOSArMTkyLDEwIEBAIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcXG4gXFx0ICogVGhlIG1lbW9yeSBpcyBhbHNvIGFkZGVkIHRvIG1lbXNsb3QgMCwgYnV0IHRoYXQncyBhIGJlbmlnbiBzaWRlXFxuIFxcdCAqIGVmZmVjdCBhcyBLVk0gYWxsb3dzIGFsaWFzaW5nIEhWQXMgaW4gbWVzbG90cy5cXG4gXFx0ICovXFxuLVxcdHZtID0gX192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXFxuLVxcdFxcdFxcdFxcdCAgICBzbG90MF9wYWdlcyArIGd1ZXN0X251bV9wYWdlcyxcXG4tXFx0XFx0XFx0XFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyk7XFxuK1xcdHZtID0gbWVtc3RyZXNzX3ZtX2NyZWF0ZV93aXRoX3ZjcHVzKFZNX1NIQVBFKG1vZGUpLCBucl92Y3B1cyxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHNsb3QwX3BhZ2VzICsgZ3Vlc3RfbnVtX3BhZ2VzLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgbWVtc3RyZXNzX2d1ZXN0X2NvZGUsIHZjcHVzLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgZGlydHlfcmluZ19zaXplKTtcXG4gXFxuIFxcdGFyZ3MtXFx1MDAzZXZtID0gdm07XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXFxuaW5kZXggOWM3NTc4YTA5OGMzZTEuLjNhMWJlOWI3NWUwMWRhIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcXG5AQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxcbiBcXG4gXFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXFxuIFxcdFxcdFxcdFxcdCBWTV9NRU1fU1JDX0FOT05ZTU9VUyxcXG4tXFx0XFx0XFx0XFx0IHAtXFx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MpO1xcbitcXHRcXHRcXHRcXHQgcC1cXHUwMDNlcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcywgMCk7XFxuICNpZmRlZiBfX3g4Nl82NF9fXFxuIFxcdGlmIChwLVxcdTAwM2VkaXNhYmxlX3Nsb3RfemFwX3F1aXJrKVxcbiBcXHRcXHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJU0FCTEVfUVVJUktTMiwgS1ZNX1g4Nl9RVUlSS19TTE9UX1pBUF9BTEwpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcXG5pbmRleCAzODhiYTQxMDFmOTczNi4uNjYxZTlhYmZiNDM5NWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXFxuQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqdW51c2VkKVxcbiBcXHRzdHJ1Y3Qga3ZtX3BhZ2Vfc3RhdHMgc3RhdHNfcmVwb3B1bGF0ZWQ7XFxuIFxcbiBcXHR2bSA9IG1lbXN0cmVzc19jcmVhdGVfdm0obW9kZSwgVkNQVVMsIGd1ZXN0X3BlcmNwdV9tZW1fc2l6ZSxcXG4tXFx0XFx0XFx0XFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UpO1xcbitcXHRcXHRcXHRcXHQgU0xPVFMsIGJhY2tpbmdfc3JjLCBmYWxzZSwgMCk7XFxuIFxcbiBcXHRndWVzdF9udW1fcGFnZXMgPSAoVkNQVVMgKiBndWVzdF9wZXJjcHVfbWVtX3NpemUpIFxcdTAwM2VcXHUwMDNlIHZtLVxcdTAwM2VwYWdlX3NoaWZ0O1xcbiBcXHRndWVzdF9udW1fcGFnZXMgPSB2bV9hZGp1c3RfbnVtX2d1ZXN0X3BhZ2VzKG1vZGUsIGd1ZXN0X251bV9wYWdlcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA5OjMyOjU3LjA1OTUxMTIwMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5MDY1NDI0NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyBpbiB0aGUgdG9vbHMvIGRpcmVjdG9yeS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRhODg5OTlmZWIyNjRhYWZkMzY3OTUyZDRkZjA3NjRlNDZhZGQyMGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCA5IDA5OjMyOjU0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbmluZGV4IDQ0MTVjOTRiMjg2NjA1Li5mNzhkNTYyNjVkODkzNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hY2Nlc3NfdHJhY2tpbmdfcGVyZl90ZXN0LmNcbkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGludCBucl92Y3B1cyA9IHBhcmFtcy1cdTAwM2Vucl92Y3B1cztcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgcGFyYW1zLVx1MDAzZXZjcHVfbWVtb3J5X2J5dGVzLCAxLFxuLVx0XHRcdFx0IHBhcmFtcy1cdTAwM2ViYWNraW5nX3NyYywgIW92ZXJsYXBfbWVtb3J5X2FjY2Vzcyk7XG4rXHRcdFx0XHQgcGFyYW1zLVx1MDAzZWJhY2tpbmdfc3JjLCAhb3ZlcmxhcF9tZW1vcnlfYWNjZXNzLCAwKTtcbiBcbiBcdC8qXG4gXHQgKiBJZiBndWVzdF9wYWdlX3NpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGhvc3QncyBwYWdlIHNpemUsIHRoZVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9kZW1hbmRfcGFnaW5nX3Rlc3QuY1xuaW5kZXggMzAyYzQ5MjNkMDkzMGYuLjkyMjQ2ZTI3ZWY3NDQ3IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RlbWFuZF9wYWdpbmdfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNcbkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdGludCBpLCBudW1fdWZmZHMgPSAwO1xuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXG4tXHRcdFx0XHQgcC1cdTAwM2VzcmNfdHlwZSwgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCBwLVx1MDAzZXNyY190eXBlLCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuIFxuIFx0ZGVtYW5kX3BhZ2luZ19zaXplID0gZ2V0X2JhY2tpbmdfc3JjX3BhZ2VzeihwLVx1MDAzZXNyY190eXBlKTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGlydHlfbG9nX3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuaW5kZXggZWY3NzlmYTkxODI3YzkuLjE4MWY1MjFjOWJlOTYxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY1xuQEAgLTEzLDYgKzEzLDcgQEBcbiAjaW5jbHVkZSBcdTAwM2N0aW1lLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NwdGhyZWFkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2FzbS9iYXJyaWVyLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcImt2bV91dGlsLmhcIlxuICNpbmNsdWRlIFwidGVzdF91dGlsLmhcIlxuQEAgLTI5LDkgKzMwLDUzIEBAIHN0YXRpYyBib29sIHJ1bl92Y3B1c193aGlsZV9kaXNhYmxpbmdfZGlydHlfbG9nZ2luZztcbiBcbiAvKiBIb3N0IHZhcmlhYmxlcyAqL1xuIHN0YXRpYyB1NjQgZGlydHlfbG9nX21hbnVhbF9jYXBzO1xuK3N0YXRpYyB1MzIgZGlydHlfcmluZ19zaXplO1xuIHN0YXRpYyBib29sIGhvc3RfcXVpdDtcbiBzdGF0aWMgaW50IGl0ZXJhdGlvbjtcbiBzdGF0aWMgaW50IHZjcHVfbGFzdF9jb21wbGV0ZWRfaXRlcmF0aW9uW0tWTV9NQVhfVkNQVVNdO1xuK3N0YXRpYyBzdHJ1Y3QgdGltZXNwZWMgdmNwdV9kaXJ0eV9yaW5nX2NvbGxlY3RbS1ZNX01BWF9WQ1BVU107XG4rXG4rc3RhdGljIHZvaWQgZGlydHlfcmluZ19jb2xsZWN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyICpyaW5nX2lkeCxcbitcdFx0XHRcdHN0cnVjdCB0aW1lc3BlYyAqdHMpXG4re1xuK1x0c3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBjb2xsZWN0ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjtcbitcdHN0cnVjdCB0aW1lc3BlYyBzdGFydDtcbitcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpkaXJ0eV9nZm5zID0gdmNwdV9tYXBfZGlydHlfcmluZyh2Y3B1KTtcbitcdHUzMiBpZHggPSAqcmluZ19pZHg7XG4rXHR1MzIgcmluZ19zaXplID0gdmNwdS1cdTAwM2V2bS1cdTAwM2VkaXJ0eV9yaW5nX3NpemUgLyBzaXplb2Yoc3RydWN0IGt2bV9kaXJ0eV9nZm4pO1xuK1x0aW50IGNsZWFyZWQsIGNvdW50O1xuK1xuK1x0cHRocmVhZF9tdXRleF9sb2NrKFx1MDAyNmNvbGxlY3QpO1xuK1xuK1x0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnN0YXJ0KTtcbitcbitcdHdoaWxlICh0cnVlKSB7XG4rXHRcdHN0cnVjdCBrdm1fZGlydHlfZ2ZuICpjdXI7XG4rXG4rXHRcdGN1ciA9IFx1MDAyNmRpcnR5X2dmbnNbaWR4ICUgcmluZ19zaXplXTtcbitcdFx0aWYgKHNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2Y3VyLVx1MDAzZWZsYWdzKSAhPSBLVk1fRElSVFlfR0ZOX0ZfRElSVFkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNmN1ci1cdTAwM2VmbGFncywgS1ZNX0RJUlRZX0dGTl9GX1JFU0VUKTtcbitcdFx0aWR4Kys7XG4rXHR9XG4rXG4rXHRjb3VudCA9IGlkeCAtICpyaW5nX2lkeDtcbitcdCpyaW5nX2lkeCA9IGlkeDtcbitcbitcdGNsZWFyZWQgPSBrdm1fdm1fcmVzZXRfZGlydHlfcmluZyh2Y3B1LVx1MDAzZXZtKTtcbitcbitcdC8qIENsZWFyZWQgcGFnZXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGNvbGxlY3RlZCwgYXMgS1ZNIGlzIHN1cHBvc2VkIHRvXG4rXHQgKiBjbGVhciBvbmx5IHRoZSBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGhhcnZlc3RlZCwgYW5kIGEgc2luZ2xlIHZjcHUgd2lsbFxuK1x0ICogaGFydmVzdCBhdCB0aW1lLlxuK1x0ICovXG4rXHRURVNUX0FTU0VSVChjbGVhcmVkID09IGNvdW50LCBcIlJlc2V0IGRpcnR5IHBhZ2VzICgldSkgbWlzbWF0Y2ggXCJcbitcdFx0ICAgIFwid2l0aCBjb2xsZWN0ZWQgKCV1KVwiLCBjbGVhcmVkLCBjb3VudCk7XG4rXG4rXHQqdHMgPSB0aW1lc3BlY19hZGQoKnRzLCB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KSk7XG4rXG4rXHRwdGhyZWFkX211dGV4X3VubG9jayhcdTAwMjZjb2xsZWN0KTtcbit9XG4gXG4gc3RhdGljIHZvaWQgdmNwdV93b3JrZXIoc3RydWN0IG1lbXN0cmVzc192Y3B1X2FyZ3MgKnZjcHVfYXJncylcbiB7XG5AQCAtNDMsMTcgKzg4LDMzIEBAIHN0YXRpYyB2b2lkIHZjcHVfd29ya2VyKHN0cnVjdCBtZW1zdHJlc3NfdmNwdV9hcmdzICp2Y3B1X2FyZ3MpXG4gXHRzdHJ1Y3QgdGltZXNwZWMgdHNfZGlmZjtcbiBcdHN0cnVjdCB0aW1lc3BlYyB0b3RhbCA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuIFx0c3RydWN0IHRpbWVzcGVjIGF2ZztcbitcdGJvb2wgdXNlX2RpcnR5X3JpbmcgPSAhIXZjcHUtXHUwMDNldm0tXHUwMDNlZGlydHlfcmluZ19zaXplO1xuK1x0dTMyIHJpbmdfaWR4ID0gMDtcbiBcdGludCByZXQ7XG4gXG4gXHRydW4gPSB2Y3B1LVx1MDAzZXJ1bjtcbiBcbiBcdHdoaWxlICghUkVBRF9PTkNFKGhvc3RfcXVpdCkpIHtcbiBcdFx0aW50IGN1cnJlbnRfaXRlcmF0aW9uID0gUkVBRF9PTkNFKGl0ZXJhdGlvbik7XG4rXHRcdHN0cnVjdCB0aW1lc3BlYyBjb2xsZWN0ID0gKHN0cnVjdCB0aW1lc3BlYyl7MH07XG4gXG4gXHRcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbitcbitcdFx0ZG8ge1xuK1x0XHRcdHJldCA9IF92Y3B1X3J1bih2Y3B1KTtcbitcdFx0XHRpZiAoIXVzZV9kaXJ0eV9yaW5nKVxuK1x0XHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0ZGlydHlfcmluZ19jb2xsZWN0KHZjcHUsIFx1MDAyNnJpbmdfaWR4LCBcdTAwMjZjb2xsZWN0KTtcbitcdFx0fSB3aGlsZSAocnVuLVx1MDAzZWV4aXRfcmVhc29uID09IEtWTV9FWElUX0RJUlRZX1JJTkdfRlVMTCk7XG4rXG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbiBcbitcdFx0aWYgKHVzZV9kaXJ0eV9yaW5nKSB7XG4rXHRcdFx0dHNfZGlmZiA9IHRpbWVzcGVjX3N1Yih0c19kaWZmLCBjb2xsZWN0KTtcbitcdFx0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFt2Y3B1X2lkeF0gPSBjb2xsZWN0O1xuK1x0XHR9XG4rXG4gXHRcdFRFU1RfQVNTRVJUKHJldCA9PSAwLCBcInZjcHVfcnVuIGZhaWxlZDogJWRcIiwgcmV0KTtcbiBcdFx0VEVTVF9BU1NFUlQoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpID09IFVDQUxMX1NZTkMsXG4gXHRcdFx0ICAgIFwiSW52YWxpZCBndWVzdCBzeW5jIHN0YXR1czogZXhpdF9yZWFzb249JXNcIixcbkBAIC0xMTksNyArMTgwLDggQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBucl92Y3B1cywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLFxuIFx0XHRcdFx0IHAtXHUwMDNlc2xvdHMsIHAtXHUwMDNlYmFja2luZ19zcmMsXG4tXHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsXG4rXHRcdFx0XHQgZGlydHlfcmluZ19zaXplKTtcbiBcbiBcdG1lbXN0cmVzc19zZXRfd3JpdGVfcGVyY2VudCh2bSwgcC1cdTAwM2V3cml0ZV9wZXJjZW50KTtcbiBcbkBAIC0xMzksOCArMjAxLDEwIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGVudW0gdm1fZ3Vlc3RfbW9kZSBtb2RlLCB2b2lkICphcmcpXG4gXHRob3N0X3F1aXQgPSBmYWxzZTtcbiBcbiBcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZzdGFydCk7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl92Y3B1czsgaSsrKVxuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7IGkrKykge1xuIFx0XHR2Y3B1X2xhc3RfY29tcGxldGVkX2l0ZXJhdGlvbltpXSA9IC0xO1xuK1x0XHR2Y3B1X2RpcnR5X3JpbmdfY29sbGVjdFtpXSA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuK1x0fVxuIFxuIFx0LypcbiBcdCAqIFVzZSAxMDAlIHdyaXRlcyBkdXJpbmcgdGhlIHBvcHVsYXRpb24gcGhhc2UgdG8gZW5zdXJlIGFsbFxuQEAgLTE5NSw2ICsyNTksMjEgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKmFyZylcbiBcdFx0cHJfaW5mbyhcIkl0ZXJhdGlvbiAlZCBkaXJ0eSBtZW1vcnkgdGltZTogJWxkLiUuOWxkc1xcblwiLFxuIFx0XHRcdGl0ZXJhdGlvbiwgdHNfZGlmZi50dl9zZWMsIHRzX2RpZmYudHZfbnNlYyk7XG4gXG4rXHRcdGlmIChkaXJ0eV9yaW5nX3NpemUpIHtcbitcdFx0XHRzdHJ1Y3QgdGltZXNwZWMgaXRlcmF0aW9uX3N1bSA9IChzdHJ1Y3QgdGltZXNwZWMpezB9O1xuK1xuK1x0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX3ZjcHVzOyBpKyspXG4rXHRcdFx0XHRpdGVyYXRpb25fc3VtID0gdGltZXNwZWNfYWRkKGl0ZXJhdGlvbl9zdW0sXG4rXHRcdFx0XHRcdFx0XHQgICAgIHZjcHVfZGlydHlfcmluZ19jb2xsZWN0W2ldKTtcbitcbitcdFx0XHRwcl9pbmZvKFwiSXRlcmF0aW9uICVkIGNsZWFyIGRpcnR5IHJpbmcgdGltZTogJWxkLiUuOWxkc1xcblwiLFxuK1x0XHRcdFx0aXRlcmF0aW9uLCBpdGVyYXRpb25fc3VtLnR2X3NlYywgaXRlcmF0aW9uX3N1bS50dl9uc2VjKTtcbitcbitcdFx0XHRjbGVhcl9kaXJ0eV9sb2dfdG90YWwgPSB0aW1lc3BlY19hZGQoY2xlYXJfZGlydHlfbG9nX3RvdGFsLFxuK1x0XHRcdFx0XHRcdFx0ICAgICBpdGVyYXRpb25fc3VtKTtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuIFx0XHRjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgXHUwMDI2c3RhcnQpO1xuIFx0XHRtZW1zdHJlc3NfZ2V0X2RpcnR5X2xvZyh2bSwgYml0bWFwcywgcC1cdTAwM2VzbG90cyk7XG4gXHRcdHRzX2RpZmYgPSB0aW1lc3BlY19lbGFwc2VkKHN0YXJ0KTtcbkBAIC0yMzgsMTIgKzMxNywxNCBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFx0aG9zdF9xdWl0ID0gdHJ1ZTtcbiBcdG1lbXN0cmVzc19qb2luX3ZjcHVfdGhyZWFkcyhucl92Y3B1cyk7XG4gXG4tXHRhdmcgPSB0aW1lc3BlY19kaXYoZ2V0X2RpcnR5X2xvZ190b3RhbCwgcC1cdTAwM2VpdGVyYXRpb25zKTtcbi1cdHByX2luZm8oXCJHZXQgZGlydHkgbG9nIG92ZXIgJWx1IGl0ZXJhdGlvbnMgdG9vayAlbGQuJS45bGRzLiAoQXZnICVsZC4lLjlsZHMvaXRlcmF0aW9uKVxcblwiLFxuLVx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLFxuLVx0XHRnZXRfZGlydHlfbG9nX3RvdGFsLnR2X25zZWMsIGF2Zy50dl9zZWMsIGF2Zy50dl9uc2VjKTtcbitcdGlmICghZGlydHlfcmluZ19zaXplKSB7XG4rXHRcdGF2ZyA9IHRpbWVzcGVjX2RpdihnZXRfZGlydHlfbG9nX3RvdGFsLCBwLVx1MDAzZWl0ZXJhdGlvbnMpO1xuK1x0XHRwcl9pbmZvKFwiR2V0IGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcXG5cIixcbitcdFx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGdldF9kaXJ0eV9sb2dfdG90YWwudHZfc2VjLFxuK1x0XHRcdGdldF9kaXJ0eV9sb2dfdG90YWwudHZfbnNlYywgYXZnLnR2X3NlYywgYXZnLnR2X25zZWMpO1xuK1x0fVxuIFxuLVx0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2Fwcykge1xuK1x0aWYgKGRpcnR5X2xvZ19tYW51YWxfY2FwcyB8fCBkaXJ0eV9yaW5nX3NpemUpIHtcbiBcdFx0YXZnID0gdGltZXNwZWNfZGl2KGNsZWFyX2RpcnR5X2xvZ190b3RhbCwgcC1cdTAwM2VpdGVyYXRpb25zKTtcbiBcdFx0cHJfaW5mbyhcIkNsZWFyIGRpcnR5IGxvZyBvdmVyICVsdSBpdGVyYXRpb25zIHRvb2sgJWxkLiUuOWxkcy4gKEF2ZyAlbGQuJS45bGRzL2l0ZXJhdGlvbilcXG5cIixcbiBcdFx0XHRwLVx1MDAzZWl0ZXJhdGlvbnMsIGNsZWFyX2RpcnR5X2xvZ190b3RhbC50dl9zZWMsXG5AQCAtMjY0LDYgKzM0NSw5IEBAIHN0YXRpYyB2b2lkIGhlbHAoY2hhciAqbmFtZSlcbiBcdHByaW50ZihcIiAtYTogYWNjZXNzIG1lbW9yeSByYW5kb21seSByYXRoZXIgdGhhbiBpbiBvcmRlci5cXG5cIik7XG4gXHRwcmludGYoXCIgLWk6IHNwZWNpZnkgaXRlcmF0aW9uIGNvdW50cyAoZGVmYXVsdDogJVwiUFJJdTY0XCIpXFxuXCIsXG4gXHQgICAgICAgVEVTVF9IT1NUX0xPT1BfTik7XG4rXHRwcmludGYoXCIgLWQ6IHNwZWNpZnkgdGhlIHNpemUgb2YgZGlydHktcmluZyBmb3IgdHJhY2tpbmcgZGlydHkgcGFnZXMuXFxuXCJcbitcdCAgICAgICBcIiAgICAgSWYgbm9uLXplcm8sIHdpbGwgY2F1c2UgZGlydHktcmluZyB0byBiZSB1c2VkIGluc3RlYWQgb2ZcXG5cIlxuK1x0ICAgICAgIFwiICAgICBkaXJ0eS1iaXRtYXAuIE11c3QgYmUgYSBwb3dlciBvZiB0d28uXFxuXCIpO1xuIFx0cHJpbnRmKFwiIC1nOiBEbyBub3QgZW5hYmxlIEtWTV9DQVBfTUFOVUFMX0RJUlRZX0xPR19QUk9URUNUMi4gVGhpc1xcblwiXG4gXHQgICAgICAgXCIgICAgIG1ha2VzIEtWTV9HRVRfRElSVFlfTE9HIGNsZWFyIHRoZSBkaXJ0eSBsb2cgKGkuZS5cXG5cIlxuIFx0ICAgICAgIFwiICAgICBLVk1fRElSVFlfTE9HX01BTlVBTF9QUk9URUNUX0VOQUJMRSBpcyBub3QgZW5hYmxlZClcXG5cIlxuQEAgLTMyMCw3ICs0MDQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0Z3Vlc3RfbW9kZXNfYXBwZW5kX2RlZmF1bHQoKTtcbiBcbi1cdHdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIFwiYWI6YzplZ2hpOm06bm9wOnI6czp2Ong6dzpcIikpICE9IC0xKSB7XG4rXHR3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCBcImFiOmM6ZDplZ2hpOm06bm9wOnI6czp2Ong6dzpcIikpICE9IC0xKSB7XG4gXHRcdHN3aXRjaCAob3B0KSB7XG4gXHRcdGNhc2UgJ2EnOlxuIFx0XHRcdHAucmFuZG9tX2FjY2VzcyA9IHRydWU7XG5AQCAtMzMxLDYgKzQxNSwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHRjYXNlICdjJzpcbiBcdFx0XHRwY3B1X2xpc3QgPSBvcHRhcmc7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgJ2QnOlxuK1x0XHRcdGRpcnR5X3Jpbmdfc2l6ZSA9IHBhcnNlX3NpemUob3B0YXJnKTtcbitcdFx0XHRkaXJ0eV9yaW5nX3NpemUgKj0gc2l6ZW9mKHN0cnVjdCBrdm1fZGlydHlfZ2ZuKTtcbitcdFx0XHRkaXJ0eV9sb2dfbWFudWFsX2NhcHMgPSAwO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlICdlJzpcbiBcdFx0XHQvKiAnZScgaXMgZm9yIGV2aWwuICovXG4gXHRcdFx0cnVuX3ZjcHVzX3doaWxlX2Rpc2FibGluZ19kaXJ0eV9sb2dnaW5nID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL21lbXN0cmVzcy5oXG5pbmRleCAwZDFkNjIzMGNjMDUxYi4uZTE3ZjM0NDk3OGFmNjYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9tZW1zdHJlc3MuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhcbkBAIC01OCw3ICs1OCw4IEBAIGV4dGVybiBzdHJ1Y3QgbWVtc3RyZXNzX2FyZ3MgbWVtc3RyZXNzX2FyZ3M7XG4gc3RydWN0IGt2bV92bSAqbWVtc3RyZXNzX2NyZWF0ZV92bShlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgaW50IG5yX3ZjcHVzLFxuIFx0XHRcdFx0ICAgdTY0IHZjcHVfbWVtb3J5X2J5dGVzLCBpbnQgc2xvdHMsXG4gXHRcdFx0XHQgICBlbnVtIHZtX21lbV9iYWNraW5nX3NyY190eXBlIGJhY2tpbmdfc3JjLFxuLVx0XHRcdFx0ICAgYm9vbCBwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbitcdFx0XHRcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpO1xuIHZvaWQgbWVtc3RyZXNzX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bV92bSAqdm0pO1xuIFxuIHZvaWQgbWVtc3RyZXNzX3NldF93cml0ZV9wZXJjZW50KHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgd3JpdGVfcGVyY2VudCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jXG5pbmRleCAxOTVmM2ZkYWUxZTM5Ni4uNGFlMjdhZDlmOTQ3M2QgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL2t2bV91dGlsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIva3ZtX3V0aWwuY1xuQEAgLTE2NywxMCArMTY3LDIxIEBAIHVuc2lnbmVkIGludCBrdm1fY2hlY2tfY2FwKGxvbmcgY2FwKVxuIFxuIHZvaWQgdm1fZW5hYmxlX2RpcnR5X3Jpbmcoc3RydWN0IGt2bV92bSAqdm0sIHUzMiByaW5nX3NpemUpXG4ge1xuLVx0aWYgKHZtX2NoZWNrX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMKSlcbi1cdFx0dm1fZW5hYmxlX2NhcCh2bSwgS1ZNX0NBUF9ESVJUWV9MT0dfUklOR19BQ1FfUkVMLCByaW5nX3NpemUpO1xuLVx0ZWxzZVxuLVx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HLCByaW5nX3NpemUpO1xuK1x0bG9uZyBjYXAgPSBLVk1fQ0FQX0RJUlRZX0xPR19SSU5HX0FDUV9SRUw7XG4rXHRpbnQgbWF4X3NpemUgPSB2bV9jaGVja19jYXAodm0sIGNhcCk7XG4rXG4rXHRpZiAoIW1heF9zaXplKSB7XG4rXHRcdGNhcCA9IEtWTV9DQVBfRElSVFlfTE9HX1JJTkc7XG4rXHRcdG1heF9zaXplID0gdm1fY2hlY2tfY2FwKHZtLCBjYXApO1xuK1x0fVxuK1xuK1x0VEVTVF9BU1NFUlQobWF4X3NpemUgXHUwMDNlIDAsIFwiRGlydHktcmluZyBub3Qgc3VwcG9ydGVkIGluIHRoaXMga2VybmVsXFxuXCIpO1xuK1x0VEVTVF9BU1NFUlQocmluZ19zaXplIFx1MDAzYz0gbWF4X3NpemUgXHUwMDI2XHUwMDI2IGlzX3Bvd2VyX29mXzIocmluZ19zaXplKSxcbitcdFx0ICAgIFwiSW52YWxpZCBkaXJ0eS1yaW5nIHNpemU6IFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byBcIlxuK1x0XHQgICAgXCJcdTAwM2M9ICVsdSBlbnRyaWVzXFxuXCIsXG4rXHRcdCAgICBtYXhfc2l6ZSAvIHNpemVvZihzdHJ1Y3Qga3ZtX2RpcnR5X2dmbikpO1xuK1xuK1x0dm1fZW5hYmxlX2NhcCh2bSwgY2FwLCByaW5nX3NpemUpO1xuIFx0dm0tXHUwMDNlZGlydHlfcmluZ19zaXplID0gcmluZ19zaXplO1xuIH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL21lbXN0cmVzcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuaW5kZXggNmRjZDE1OTEwYTA2MDguLmM5Zjg1NTMzZmZmZmRjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9tZW1zdHJlc3MuY1xuQEAgLTEyMSwxMCArMTIxLDM1IEBAIHZvaWQgbWVtc3RyZXNzX3NldHVwX3ZjcHVzKHN0cnVjdCBrdm1fdm0gKnZtLCBpbnQgbnJfdmNwdXMsXG4gXHR9XG4gfVxuIFxuK3N0YXRpYyBzdHJ1Y3Qga3ZtX3ZtICptZW1zdHJlc3Nfdm1fY3JlYXRlX3dpdGhfdmNwdXMoc3RydWN0IHZtX3NoYXBlIHNoYXBlLFxuK1x0XHRcdFx0XHRcdCAgICAgdTMyIG5yX3ZjcHVzLFxuK1x0XHRcdFx0XHRcdCAgICAgdTY0IGV4dHJhX21lbV9wYWdlcyxcbitcdFx0XHRcdFx0XHQgICAgIHZvaWQgKmd1ZXN0X2NvZGUsXG4rXHRcdFx0XHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHVzW10sXG4rXHRcdFx0XHRcdFx0ICAgICB1MzIgZGlydHlfcmluZ19zaXplKVxuK3tcbitcdHN0cnVjdCBrdm1fdm0gKnZtO1xuK1x0aW50IGk7XG4rXG4rXHRURVNUX0FTU0VSVCghbnJfdmNwdXMgfHwgdmNwdXMsIFwiTXVzdCBwcm92aWRlIHZDUFUgYXJyYXlcIik7XG4rXG4rXHR2bSA9IF9fdm1fY3JlYXRlKHNoYXBlLCBucl92Y3B1cywgZXh0cmFfbWVtX3BhZ2VzKTtcbitcbitcdGlmIChkaXJ0eV9yaW5nX3NpemUpXG4rXHRcdHZtX2VuYWJsZV9kaXJ0eV9yaW5nKHZtLCBkaXJ0eV9yaW5nX3NpemUpO1xuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfdmNwdXM7ICsraSlcbitcdFx0dmNwdXNbaV0gPSB2bV92Y3B1X2FkZCh2bSwgaSwgZ3Vlc3RfY29kZSk7XG4rXG4rXHRrdm1fYXJjaF92bV9maW5hbGl6ZV92Y3B1cyh2bSk7XG4rXHRyZXR1cm4gdm07XG4rfVxuK1xuIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdFx0XHRcdCAgIHU2NCB2Y3B1X21lbW9yeV9ieXRlcywgaW50IHNsb3RzLFxuIFx0XHRcdFx0ICAgZW51bSB2bV9tZW1fYmFja2luZ19zcmNfdHlwZSBiYWNraW5nX3NyYyxcbi1cdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcylcbitcdFx0XHRcdCAgIGJvb2wgcGFydGl0aW9uX3ZjcHVfbWVtb3J5X2FjY2VzcyxcbitcdFx0XHRcdCAgIHUzMiBkaXJ0eV9yaW5nX3NpemUpXG4ge1xuIFx0c3RydWN0IG1lbXN0cmVzc19hcmdzICphcmdzID0gXHUwMDI2bWVtc3RyZXNzX2FyZ3M7XG4gXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbkBAIC0xNjcsOSArMTkyLDEwIEBAIHN0cnVjdCBrdm1fdm0gKm1lbXN0cmVzc19jcmVhdGVfdm0oZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIGludCBucl92Y3B1cyxcbiBcdCAqIFRoZSBtZW1vcnkgaXMgYWxzbyBhZGRlZCB0byBtZW1zbG90IDAsIGJ1dCB0aGF0J3MgYSBiZW5pZ24gc2lkZVxuIFx0ICogZWZmZWN0IGFzIEtWTSBhbGxvd3MgYWxpYXNpbmcgSFZBcyBpbiBtZXNsb3RzLlxuIFx0ICovXG4tXHR2bSA9IF9fdm1fY3JlYXRlX3dpdGhfdmNwdXMoVk1fU0hBUEUobW9kZSksIG5yX3ZjcHVzLFxuLVx0XHRcdFx0ICAgIHNsb3QwX3BhZ2VzICsgZ3Vlc3RfbnVtX3BhZ2VzLFxuLVx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyk7XG4rXHR2bSA9IG1lbXN0cmVzc192bV9jcmVhdGVfd2l0aF92Y3B1cyhWTV9TSEFQRShtb2RlKSwgbnJfdmNwdXMsXG4rXHRcdFx0XHRcdCAgICBzbG90MF9wYWdlcyArIGd1ZXN0X251bV9wYWdlcyxcbitcdFx0XHRcdFx0ICAgIG1lbXN0cmVzc19ndWVzdF9jb2RlLCB2Y3B1cyxcbitcdFx0XHRcdFx0ICAgIGRpcnR5X3Jpbmdfc2l6ZSk7XG4gXG4gXHRhcmdzLVx1MDAzZXZtID0gdm07XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9tb2RpZmljYXRpb25fc3RyZXNzX3Rlc3QuY1xuaW5kZXggOWM3NTc4YTA5OGMzZTEuLjNhMWJlOWI3NWUwMWRhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X21vZGlmaWNhdGlvbl9zdHJlc3NfdGVzdC5jXG5AQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChlbnVtIHZtX2d1ZXN0X21vZGUgbW9kZSwgdm9pZCAqYXJnKVxuIFxuIFx0dm0gPSBtZW1zdHJlc3NfY3JlYXRlX3ZtKG1vZGUsIG5yX3ZjcHVzLCBndWVzdF9wZXJjcHVfbWVtX3NpemUsIDEsXG4gXHRcdFx0XHQgVk1fTUVNX1NSQ19BTk9OWU1PVVMsXG4tXHRcdFx0XHQgcC1cdTAwM2VwYXJ0aXRpb25fdmNwdV9tZW1vcnlfYWNjZXNzKTtcbitcdFx0XHRcdCBwLVx1MDAzZXBhcnRpdGlvbl92Y3B1X21lbW9yeV9hY2Nlc3MsIDApO1xuICNpZmRlZiBfX3g4Nl82NF9fXG4gXHRpZiAocC1cdTAwM2VkaXNhYmxlX3Nsb3RfemFwX3F1aXJrKVxuIFx0XHR2bV9lbmFibGVfY2FwKHZtLCBLVk1fQ0FQX0RJU0FCTEVfUVVJUktTMiwgS1ZNX1g4Nl9RVUlSS19TTE9UX1pBUF9BTEwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY1xuaW5kZXggMzg4YmE0MTAxZjk3MzYuLjY2MWU5YWJmYjQzOTVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9kaXJ0eV9sb2dfcGFnZV9zcGxpdHRpbmdfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2RpcnR5X2xvZ19wYWdlX3NwbGl0dGluZ190ZXN0LmNcbkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QoZW51bSB2bV9ndWVzdF9tb2RlIG1vZGUsIHZvaWQgKnVudXNlZClcbiBcdHN0cnVjdCBrdm1fcGFnZV9zdGF0cyBzdGF0c19yZXBvcHVsYXRlZDtcbiBcbiBcdHZtID0gbWVtc3RyZXNzX2NyZWF0ZV92bShtb2RlLCBWQ1BVUywgZ3Vlc3RfcGVyY3B1X21lbV9zaXplLFxuLVx0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UpO1xuK1x0XHRcdFx0IFNMT1RTLCBiYWNraW5nX3NyYywgZmFsc2UsIDApO1xuIFxuIFx0Z3Vlc3RfbnVtX3BhZ2VzID0gKFZDUFVTICogZ3Vlc3RfcGVyY3B1X21lbV9zaXplKSBcdTAwM2VcdTAwM2Ugdm0tXHUwMDNlcGFnZV9zaGlmdDtcbiBcdGd1ZXN0X251bV9wYWdlcyA9IHZtX2FkanVzdF9udW1fZ3Vlc3RfcGFnZXMobW9kZSwgZ3Vlc3RfbnVtX3BhZ2VzKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA5VDA5OjMyOjU3LjA1OTUxMjk1MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwOTA2NTA0MDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYC4gVGhlc2UgYXJlIHNlbGZ0ZXN0cyDigJMgbm90IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhbnl0aGluZyB0aGF0IHdvdWxkIGJlIGRpcmVjdGx5IGV4ZWN1dGVkIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCBvciwgY3J1Y2lhbGx5LCBmdXp6ZWQgYnkgc3l6a2FsbGVyLiBTeXprYWxsZXIncyBqb2IgaXMgdG8gZnV6eiB0aGUga2VybmVsIGl0c2VsZiwgbm90IHRoZSB0ZXN0IHN1aXRlLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIGNvZGUgY29tbWVudHMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHdpdGhvdXQgZnVuY3Rpb25hbCBhbHRlcmF0aW9uLCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIlxuXG5MZXQgbWUgY29uZmlybSB0aGUgZmlsZXMgaW52b2x2ZWQ6ICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FjY2Vzc190cmFja2luZ19wZXJmX3Rlc3QuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vZGVtYW5kX3BhZ2luZ190ZXN0LmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2RpcnR5X2xvZ19wZXJmX3Rlc3QuY2AsICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvbWVtc3RyZXNzLmhgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9rdm1fdXRpbC5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvbWVtc3RyZXNzLmNgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfbW9kaWZpY2F0aW9uX3N0cmVzc190ZXN0LmNgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvZGlydHlfbG9nX3BhZ2Vfc3BsaXR0aW5nX3Rlc3QuY2AuICBZdXAsICphbGwqIHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9gIGRpcmVjdG9yeS5cblxuU28sIHNpbmNlIHRoZSBwYXRjaCAqb25seSogdG91Y2hlcyBzZWxmdGVzdHMsIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoaXMgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IGtlcm5lbCBjb2RlIHRoYXQgbmVlZHMgdG8gYmUgZnV6emVkLiBJdCdzIGEgdGVzdCBtb2RpZmljYXRpb24sIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCByZS1zY2FuIHRoZSBmaWxlIGxpc3QgYWdhaW4uIFllcCwgbm90aGluZyBrZXJuZWwtZmFjaW5nLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXM6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIGNsZWFyOiB0aGUgcGF0Y2ggaXMgY29uZmluZWQgdG8gS1ZNIHNlbGZ0ZXN0cyB3aXRoaW4gdGhlIHRvb2xzIGRpcmVjdG9yeSwgYW5kIGl0IGRvZXNuJ3QgYWZmZWN0IGFueSBrZXJuZWwgY29kZSB0aGF0IGlzIGRpcmVjdGx5IGV4cG9zZWQgZm9yIGV4ZWN1dGlvbiBvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjE4LCJPdXRwdXRUb2tlbnMiOjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDlUMDk6MzM6MDcuOTY2MDIwNzEyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgaW4gdGhlIHRvb2xzLyBkaXJlY3RvcnkuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzIGluIHRoZSB0b29scy8gZGlyZWN0b3J5LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmb4gm[1] Phase: Running StartedAt: 2026-07-09 09:33:37 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4gm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-09 09:33:37 +0000 UTC FinishedAt: 2026-07-09 09:33:47 +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,}