Name: series-workflowl2cvs Phase: Failed StartedAt: 2026-08-28 04:38:32 +0000 UTC FinishedAt: 2026-08-28 04:53:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl2cvs[0] Phase: Succeeded StartedAt: 2026-08-28 04:38:32 +0000 UTC FinishedAt: 2026-08-28 04:53:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl2cvs[0].run-triage Phase: Succeeded StartedAt: 2026-08-28 04:38:32 +0000 UTC FinishedAt: 2026-08-28 04:53:07 +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+CgkJCTx0ZD4yMDI2LzA4LzI4IDA0OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgc2VsZnRlc3Qga2VybmVsIG1vZHVsZSB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBpbnRyb2R1Y2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIGtlcm5lbCBjb2RlIG9yIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDA0OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmY2YmQyMzM0MDdkMzFiNzU4ZmMzMTk2MDdjYWNhNGMwZmM4MTA0OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDI4IDA0OjUxOjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc190cmFtcG9saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNWEyMWFlZGQwMmZjNVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xuQEAgLTAsMCAmIzQzOzEsNDEgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdGVzdF9wcm9ncy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O3N0cnVjdF9vcHNfdHJhbXBvbGluZS5za2VsLmhcJiMzNDtcbiYjNDM7XG4mIzQzOyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdilcbiYjNDM7c3RhdGljIHZvaWQgcnVuX3N0cnVjdF9vcHNfdHJhbXBvbGluZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHN0cnVjdF9vcHNfdHJhbXBvbGluZSAqc2tlbDtcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHN0cnVjdF9vcHNfdHJhbXBvbGluZV9fb3BlbigpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX29wZW5cJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX2xvYWQoc2tlbCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoc2tlbC1cdTAwM2VtYXBzLnRlc3Rtb2RfdHJhbXBvbGluZSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaF9zdHJ1Y3Rfb3BzXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX09LKHRyaWdnZXJfbW9kdWxlX3Rlc3RfcmVhZCgyNTYpLCBcJiMzNDt0cmlnZ2VyX3JlYWRcJiMzNDspO1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZ290X2FyZzksIDk5OTksIFwmIzM0O2NoZWNrX3N0YWNrX3Bhc3NlZF9hcmc5XCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0c3RydWN0X29wc190cmFtcG9saW5lX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7dm9pZCB0ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZSh2b2lkKVxuJiM0Mzt7XG4mIzQzOyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdilcbiYjNDM7XHRydW5fc3RydWN0X29wc190cmFtcG9saW5lKCk7XG4mIzQzOyNlbHNlXG4mIzQzO1x0dGVzdF9fc2tpcCgpO1xuJiM0MzsjZW5kaWZcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmIwZmMxOWEyYTBjNTNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xuQEAgLTAsMCAmIzQzOzEsMjQgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7X191NjQgZ290X2FyZzkgPSAwO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3N0cnVjdF9vcHMvdGVzdF90cmFtcG9saW5lXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0codGVzdF90cmFtcG9saW5lLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxuJiM0MztcdFx0XHQgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxuJiM0MztcdFx0XHQgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KVxuJiM0Mzt7XG4mIzQzO1x0Z290X2FyZzkgPSBhcmc5O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmtcJiMzNDspXG4mIzQzO3N0cnVjdCBicGZfdGVzdG1vZF9vcHMgdGVzdG1vZF90cmFtcG9saW5lID0ge1xuJiM0MztcdC50ZXN0X3RyYW1wb2xpbmUgPSAodm9pZCAqKXRlc3RfdHJhbXBvbGluZSxcbiYjNDM7fTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuaW5kZXggODUwY2Y0ZjgzMGM0OC4uYmU5NmJiYzFiN2MwNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbkBAIC01ODksNiAmIzQzOzU4OSw5IEBAIG5vaW5saW5lIGludCBicGZfdGVzdG1vZF90cmFtcG9saW5lX2NvdW50X3Rlc3Qodm9pZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RydWN0IGJwZl90ZXN0bW9kX29wcztcbiYjNDM7c3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKnN0X29wc190cmFtcG9saW5lO1xuJiM0MztcbiBub2lubGluZSBzc2l6ZV90XG4gYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbiBcdFx0ICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmJpbl9hdHRyLFxuQEAgLTYzNyw2ICYjNDM7NjQwLDkgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbiBcbiBcdGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X29wczMoKTtcbiBcbiYjNDM7XHRpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgXHUwMDI2XHUwMDI2IHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZSlcbiYjNDM7XHRcdHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZSgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5OTk5KTtcbiYjNDM7XG4gXHRzdHJ1Y3RfYXJnMyA9IGttYWxsb2MoKHNpemVvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfc3RydWN0X2FyZ18zKSAmIzQzO1xuIFx0XHRcdFx0c2l6ZW9mKGludCkpLCBHRlBfS0VSTkVMKTtcbiBcdGlmIChzdHJ1Y3RfYXJnMyAhPSBOVUxMKSB7XG5AQCAtMTYxOSw2ICYjNDM7MTYyNSwxMCBAQCBzdGF0aWMgaW50IGJwZl90ZXN0bW9kX29wc19pbml0X21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4gXHRcdCgoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKS1cdTAwM2VkYXRhID0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopdWRhdGEpLVx1MDAzZWRhdGE7XG4gXHRcdHJldHVybiAxO1xuIFx0fVxuJiM0MztcbiYjNDM7XHRpZiAobWVtYmVyLVx1MDAzZW9mZnNldCA9PSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzLCB0ZXN0X3RyYW1wb2xpbmUpICogOClcbiYjNDM7XHRcdHN0X29wc190cmFtcG9saW5lID0gKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMTY5NCw2ICYjNDM7MTcwNCwxMyBAQCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcbiYjNDM7XHRcdFx0XHRcdCAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxuJiM0MztcdFx0XHRcdFx0ICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYXJnOTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcbiBcdC50ZXN0XzEgPSBicGZfdGVzdG1vZF90ZXN0XzEsXG4gXHQudGVzdF8yID0gYnBmX3Rlc3Rtb2RfdGVzdF8yLFxuQEAgLTE3MDEsNiAmIzQzOzE3MTgsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcbiBcdC50ZXN0X3JlZmNvdW50ZWQgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZCxcbiBcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZF9tdWx0aSxcbiBcdC50ZXN0X3JldHVybl9yZWZfa3B0ciA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIsXG4mIzQzO1x0LnRlc3RfdHJhbXBvbGluZSA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF90cmFtcG9saW5lLFxuIH07XG4gXG4gc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzIGJwZl9icGZfdGVzdG1vZF9vcHMgPSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcbmluZGV4IDIxMGI5MTkyOTBjYzIuLmE1MzQ5ZDA5Y2U1NWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG5AQCAtNDYsNiAmIzQzOzQ2LDExIEBAIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMge1xuIFx0c3RydWN0IHRhc2tfc3RydWN0ICooKnRlc3RfcmV0dXJuX3JlZl9rcHRyKShpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IGNncm91cCAqY2dycCk7XG4gXG4mIzQzO1x0LyogVXNlZCB0byB0ZXN0IGluZGlyZWN0IHN0cnVjdF9vcHMgdHJhbXBvbGluZXMgc3RhY2stcGFzc2VkIGFyZ3VtZW50cyAoXHUwMDNlOCBhcmdzKS4gKi9cbiYjNDM7XHRpbnQgKCp0ZXN0X3RyYW1wb2xpbmUpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4mIzQzO1x0XHRcdCAgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxuJiM0MztcdFx0XHQgICAgICAgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSk7XG4mIzQzO1xuIFx0LyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gdGVzdCBzaGFkb3cgY29waWVzLiAqL1xuIFx0Y2hhciBvbmVieXRlO1xuIFx0c3RydWN0IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAwNDo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSBzZWxmdGVzdCBrZXJuZWwgbW9kdWxlIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGludHJvZHVjZXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGNvZGUgb3IgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2ZjZiZDIzMzQwN2QzMWI3NThmYzMxOTYwN2NhY2E0YzBmYzgxMDQ5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjggMDQ6NTE6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41YTIxYWVkZDAyZmM1Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYwpAQCAtMCwwICYjNDM7MSw0MSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O3N0cnVjdF9vcHNfdHJhbXBvbGluZS5za2VsLmgmIzM0OwomIzQzOwomIzQzOyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdikKJiM0MztzdGF0aWMgdm9pZCBydW5fc3RydWN0X29wc190cmFtcG9saW5lKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3RydWN0X29wc190cmFtcG9saW5lICpza2VsOwomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CXNrZWwgPSBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX29wZW4oKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7c3RydWN0X29wc190cmFtcG9saW5lX19vcGVuJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwllcnIgPSBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX2xvYWQoc2tlbCk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDtzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX2xvYWQmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyhza2VsLSZndDttYXBzLnRlc3Rtb2RfdHJhbXBvbGluZSk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihsaW5rLCAmIzM0O2F0dGFjaF9zdHJ1Y3Rfb3BzJiMzNDspKQomIzQzOwkJZ290byBjbGVhbnVwOwomIzQzOwomIzQzOwlBU1NFUlRfT0sodHJpZ2dlcl9tb2R1bGVfdGVzdF9yZWFkKDI1NiksICYjMzQ7dHJpZ2dlcl9yZWFkJiMzNDspOwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtnb3RfYXJnOSwgOTk5OSwgJiMzNDtjaGVja19zdGFja19wYXNzZWRfYXJnOSYjMzQ7KTsKJiM0MzsKJiM0MzsJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7Y2xlYW51cDoKJiM0MzsJc3RydWN0X29wc190cmFtcG9saW5lX19kZXN0cm95KHNrZWwpOwomIzQzO30KJiM0MzsjZW5kaWYKJiM0MzsKJiM0Mzt2b2lkIHRlc3Rfc3RydWN0X29wc190cmFtcG9saW5lKHZvaWQpCiYjNDM7ewomIzQzOyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdikKJiM0MzsJcnVuX3N0cnVjdF9vcHNfdHJhbXBvbGluZSgpOwomIzQzOyNlbHNlCiYjNDM7CXRlc3RfX3NraXAoKTsKJiM0MzsjZW5kaWYKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYjBmYzE5YTJhMGM1MwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYwpAQCAtMCwwICYjNDM7MSwyNCBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzO19fdTY0IGdvdF9hcmc5ID0gMDsKJiM0MzsKJiM0MztTRUMoJiMzNDtzdHJ1Y3Rfb3BzL3Rlc3RfdHJhbXBvbGluZSYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyh0ZXN0X3RyYW1wb2xpbmUsIGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsCiYjNDM7CQkJICAgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNiwKJiM0MzsJCQkgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KQomIzQzO3sKJiM0MzsJZ290X2FyZzkgPSBhcmc5OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7LnN0cnVjdF9vcHMubGluayYjMzQ7KQomIzQzO3N0cnVjdCBicGZfdGVzdG1vZF9vcHMgdGVzdG1vZF90cmFtcG9saW5lID0gewomIzQzOwkudGVzdF90cmFtcG9saW5lID0gKHZvaWQgKil0ZXN0X3RyYW1wb2xpbmUsCiYjNDM7fTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCmluZGV4IDg1MGNmNGY4MzBjNDguLmJlOTZiYmMxYjdjMDQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYwpAQCAtNTg5LDYgJiM0Mzs1ODksOSBAQCBub2lubGluZSBpbnQgYnBmX3Rlc3Rtb2RfdHJhbXBvbGluZV9jb3VudF90ZXN0KHZvaWQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICpzdF9vcHNfdHJhbXBvbGluZTsKJiM0MzsKIG5vaW5saW5lIHNzaXplX3QKIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosCiAJCSAgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICpiaW5fYXR0ciwKQEAgLTYzNyw2ICYjNDM7NjQwLDkgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaiwKIAogCWJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X29wczMoKTsKIAomIzQzOwlpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgJmFtcDsmYW1wOyBzdF9vcHNfdHJhbXBvbGluZS0mZ3Q7dGVzdF90cmFtcG9saW5lKQomIzQzOwkJc3Rfb3BzX3RyYW1wb2xpbmUtJmd0O3Rlc3RfdHJhbXBvbGluZSgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5OTk5KTsKJiM0MzsKIAlzdHJ1Y3RfYXJnMyA9IGttYWxsb2MoKHNpemVvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfc3RydWN0X2FyZ18zKSAmIzQzOwogCQkJCXNpemVvZihpbnQpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHN0cnVjdF9hcmczICE9IE5VTEwpIHsKQEAgLTE2MTksNiAmIzQzOzE2MjUsMTAgQEAgc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LAogCQkoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YSktJmd0O2RhdGEgPSAoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKil1ZGF0YSktJmd0O2RhdGE7CiAJCXJldHVybiAxOwogCX0KJiM0MzsKJiM0MzsJaWYgKG1lbWJlci0mZ3Q7b2Zmc2V0ID09IG9mZnNldG9mKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMsIHRlc3RfdHJhbXBvbGluZSkgKiA4KQomIzQzOwkJc3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhOwomIzQzOwogCXJldHVybiAwOwogfQogCkBAIC0xNjk0LDYgJiM0MzsxNzA0LDEzIEBAIGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2tfX3JlZiwKIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMywKJiM0MzsJCQkJCSAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LAomIzQzOwkJCQkJICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpCiYjNDM7ewomIzQzOwlyZXR1cm4gYXJnOTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHsKIAkudGVzdF8xID0gYnBmX3Rlc3Rtb2RfdGVzdF8xLAogCS50ZXN0XzIgPSBicGZfdGVzdG1vZF90ZXN0XzIsCkBAIC0xNzAxLDYgJiM0MzsxNzE4LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7CiAJLnRlc3RfcmVmY291bnRlZCA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZWZjb3VudGVkLAogCS50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZF9tdWx0aSwKIAkudGVzdF9yZXR1cm5fcmVmX2twdHIgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyLAomIzQzOwkudGVzdF90cmFtcG9saW5lID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUsCiB9OwogCiBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgYnBmX2JwZl90ZXN0bW9kX29wcyA9IHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oCmluZGV4IDIxMGI5MTkyOTBjYzIuLmE1MzQ5ZDA5Y2U1NWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaApAQCAtNDYsNiAmIzQzOzQ2LDExIEBAIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqKCp0ZXN0X3JldHVybl9yZWZfa3B0cikoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCiAJCQkJCQkgICAgc3RydWN0IGNncm91cCAqY2dycCk7CiAKJiM0MzsJLyogVXNlZCB0byB0ZXN0IGluZGlyZWN0IHN0cnVjdF9vcHMgdHJhbXBvbGluZXMgc3RhY2stcGFzc2VkIGFyZ3VtZW50cyAoJmd0OzggYXJncykuICovCiYjNDM7CWludCAoKnRlc3RfdHJhbXBvbGluZSkoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMywKJiM0MzsJCQkgICAgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNiwKJiM0MzsJCQkgICAgICAgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSk7CiYjNDM7CiAJLyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gdGVzdCBzaGFkb3cgY29waWVzLiAqLwogCWNoYXIgb25lYnl0ZTsKIAlzdHJ1Y3Qgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAwNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDUzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNjE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIFBhdGNoOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFuYWx5emUgdGhlIGZpbGUgY2hhbmdlcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZyBwb3RlbnRpYWwuIEZyb20gd2hhdCBJIHNlZSwgaXQgbG9va3MgbGlrZSB0aGlzIGNvbW1pdCBwcmltYXJpbHkgbW9kaWZpZXMgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBjaGFuZ2VzIHRvIGB0ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZS5jYCwgYHN0cnVjdF9vcHNfdHJhbXBvbGluZS5jYCwgYGJwZl90ZXN0bW9kLmNgLCBhbmQgYGJwZl90ZXN0bW9kLmhgLiBBbGwgb2Ygd2hpY2ggYXJlIHVuZGVyIHRoYXQgc2VsZi10ZXN0cyBkaXJlY3RvcnkuCgpUaGUgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHZlcmlmeSB0aGlzIGlzIHRoZSAqb25seSogcGxhY2UgdGhlIG1vZGlmaWNhdGlvbnMgZXhpc3QsIHRvIHJ1bGUgb3V0IGFueSBwb3RlbnRpYWwgc3VycHJpc2VzIGVsc2V3aGVyZS4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoaXMgdXNpbmcgZWl0aGVyIGBnaXRgIGRpcmVjdGx5IG9yIGEgcXVpY2sgc2NhbiBvZiB0aGUgZGlmZiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEEgZ29vZCBoYWJpdCEgWWVwLCB0aGUgZGlmZiBjb25maXJtcyBhbGwgdGhlIGNoYW5nZXMgYXJlIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuCgpOb3csIGxldCBtZSBjbGFyaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgYGJwZl90ZXN0bW9kYC4gSXQmIzM5O3MgYSB0ZXN0IG1vZHVsZSwgcmVzaWRpbmcgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2AuIFRoZSBrZXkgaGVyZSBpcyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGlzIGFuZCBjb3JlIGtlcm5lbCBjb2RlLiBTZWxmLXRlc3RzIGFyZSBwcmltYXJpbHkgdXNlcnNwYWNlIHRlc3Qgc3VpdGVzIGFuZCBvdXQtb2YtdHJlZSB0ZXN0IGtlcm5lbCBtb2R1bGVzIGZvciB0aGVzZSB0ZXN0cy4gSXQmIzM5O3MgKm5vdCogY29kZSB0aGF0JiMzOTtzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIHZtbGludXggb3IgaW50byBjb3JlIGtlcm5lbCBkcml2ZXJzLgoKR2l2ZW4gdGhpcyBjb250ZXh0LCBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGZ1enppbmcuIEkgaGF2ZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZ3VpZGVsaW5lcy4gUGF0Y2hlcyB0aGF0ICpvbmx5KiBjaGFuZ2UgRG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cyBkb24mIzM5O3Qgd2FycmFudCBmdXp6aW5nLiBNb3JlIGltcG9ydGFudGx5LCB0aG9zZSB0aGF0IGRvICpub3QqIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMgZG9uJiMzOTt0IHR5cGljYWxseSB3YXJyYW50IGl0LCBlaXRoZXIuCgpJbiB0aGlzIGNhc2UsIHNpbmNlIHRoaXMgcGF0Y2ggZGVhbHMgZXhjbHVzaXZlbHkgd2l0aCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYCwgaXQgZG9lc24mIzM5O3QgcmVwcmVzZW50IGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYsIGFuZCB0aGVyZWZvcmUsIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4gSXQmIzM5O3MgY29udGFpbmVkIHdpdGhpbiB0aGUgdGVzdGluZyBmcmFtZXdvcmsuCgpUbyBiZSBleHRyYSB0aG9yb3VnaCwgSSYjMzk7bGwgcGVyZm9ybSBhIHF1aWNrIGNoZWNrLCBtYXliZSB3aXRoIGBncmVwcGVyYCwgdG8gY29uZmlybSB0aGF0IHRoZSBkaWZmIGlzIGluZGVlZCBjb21wcmVoZW5zaXZlLiBKdXN0IHRvIGJlIHN1cmUuIFVsdGltYXRlbHksIGJhc2VkIG9uIG15IGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBub24tZnV6emFibGUgcGF0Y2ggZnJvbSBhIGNvcmUga2VybmVsIHBlcnNwZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90ZXN0bW9kX29wc19fdGVzdF90cmFtcG9saW5lJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM9MTcwMT1icGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNzA2LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzoxNzA3OnN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcwOC1cdFx0XHRcdFx0ICAgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYz0xNzE0PXN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcyMC1cdC50ZXN0X3JldHVybl9yZWZfa3B0ciA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jOjE3MjE6XHQudGVzdF90cmFtcG9saW5lID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jLTE3MjItfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAwNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTgwCgkJCQkJCQlvdXRwdXQ6IDcwCgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBwYXRjaCwgYW5kIHRoZSBzY29wZSBpcyByZWFzc3VyaW5nbHkgbmFycm93LiBJdCYjMzk7cyBjb25maW5lZCBzb2xlbHkgdG8gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCBkaXJlY3RvcnkuIE5vIGtlcm5lbCBzb3VyY2UgZmlsZXMgb3V0c2lkZSBvZiBgdG9vbHMvYCBhcmUgZXZlbiB0b3VjaGVkLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCBJIGxpa2UgdG8gc2VlLiBUaGVzZSBhcmUgc2VsZnRlc3QgYWRkaXRpb25zIGFuZCBtb2RpZmljYXRpb25zOyB0aGV5JiMzOTtyZSAqbm90KiBnb2luZyB0byBibGVlZCBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIG9yIGFsdGVyIGl0cyBiZWhhdmlvciBpbiBhbnkgd2F5LiBHaXZlbiB0aGF0LCAqKmBXb3J0aEZ1enppbmdgKiogaXMgdW5lcXVpdm9jYWxseSAqKmBmYWxzZWAqKi4gV2UmIzM5O3JlIG5vdCBkZWFsaW5nIHdpdGggYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBoZXJlOyBpdCYjMzk7cyBjb250YWluZWQgd2l0aGluIHRoZSB0ZXN0aW5nIGZyYW1ld29yay4KCk5vdywgbGV0JiMzOTtzIG1ha2UgZG91Ymx5IHN1cmUgZXZlcnl0aGluZyBpcyBzZXQgY29ycmVjdGx5IGZvciBgc2V0LXJlc3VsdHNgLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGFuZCBgRm9jdXNTeW1ib2xzYCBhcmUgbnVsbCBvciBlbXB0eSDigJMgdGhhdCYjMzk7cyBleHBlY3RlZCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIGBSZWFzb25pbmdgIHNob3VsZCBzdWNjaW5jdGx5IHJlZmxlY3QgdGhhdCB0aGlzIHBhdGNoIGlzIGlzb2xhdGVkIHRvIEJQRiBzZWxmdGVzdHMgYW5kIGBicGZfdGVzdG1vZGAgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGFuZCB0aGF0IGl0IGRvZXMgKm5vdCogdG91Y2ggdGhlIGZ1bmN0aW9uYWwgYXNwZWN0cyBvZiB0aGUgTGludXgga2VybmVsLiBJdCYjMzk7cyB0aW1lIHRvIGludm9rZSBgc2V0LXJlc3VsdHNgIHdpdGggdGhpcyBzb2xpZCBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgc2VsZnRlc3Qga2VybmVsIG1vZHVsZSB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBpbnRyb2R1Y2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIGtlcm5lbCBjb2RlIG9yIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSBzZWxmdGVzdCBrZXJuZWwgbW9kdWxlIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGludHJvZHVjZXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGNvZGUgb3IgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMDQ6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDA0OjUxOjU3LjIxNjIyMTMyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDQ4OTk1NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgc2VsZnRlc3Qga2VybmVsIG1vZHVsZSB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBpbnRyb2R1Y2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIGtlcm5lbCBjb2RlIG9yIGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQwNDo1MTo1Ny4yMTYyMjY1OTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2Mjg4NTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZmNmJkMjMzNDA3ZDMxYjc1OGZjMzE5NjA3Y2FjYTRjMGZjODEwNDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMjggMDQ6NTE6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc190cmFtcG9saW5lLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjVhMjFhZWRkMDJmYzVcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xcbkBAIC0wLDAgKzEsNDEgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI2luY2x1ZGUgXFx1MDAzY3Rlc3RfcHJvZ3MuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcInN0cnVjdF9vcHNfdHJhbXBvbGluZS5za2VsLmhcXFwiXFxuK1xcbisjaWYgZGVmaW5lZChfX2xvb25nYXJjaF9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpXFxuK3N0YXRpYyB2b2lkIHJ1bl9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUodm9pZClcXG4re1xcbitcXHRzdHJ1Y3Qgc3RydWN0X29wc190cmFtcG9saW5lICpza2VsO1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRza2VsID0gc3RydWN0X29wc190cmFtcG9saW5lX19vcGVuKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwic3RydWN0X29wc190cmFtcG9saW5lX19vcGVuXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGVyciA9IHN0cnVjdF9vcHNfdHJhbXBvbGluZV9fbG9hZChza2VsKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwic3RydWN0X29wc190cmFtcG9saW5lX19sb2FkXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFxuK1xcdGxpbmsgPSBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyhza2VsLVxcdTAwM2VtYXBzLnRlc3Rtb2RfdHJhbXBvbGluZSk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihsaW5rLCBcXFwiYXR0YWNoX3N0cnVjdF9vcHNcXFwiKSlcXG4rXFx0XFx0Z290byBjbGVhbnVwO1xcbitcXG4rXFx0QVNTRVJUX09LKHRyaWdnZXJfbW9kdWxlX3Rlc3RfcmVhZCgyNTYpLCBcXFwidHJpZ2dlcl9yZWFkXFxcIik7XFxuK1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vnb3RfYXJnOSwgOTk5OSwgXFxcImNoZWNrX3N0YWNrX3Bhc3NlZF9hcmc5XFxcIik7XFxuK1xcbitcXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcXG4rY2xlYW51cDpcXG4rXFx0c3RydWN0X29wc190cmFtcG9saW5lX19kZXN0cm95KHNrZWwpO1xcbit9XFxuKyNlbmRpZlxcbitcXG4rdm9pZCB0ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZSh2b2lkKVxcbit7XFxuKyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdilcXG4rXFx0cnVuX3N0cnVjdF9vcHNfdHJhbXBvbGluZSgpO1xcbisjZWxzZVxcbitcXHR0ZXN0X19za2lwKCk7XFxuKyNlbmRpZlxcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYjBmYzE5YTJhMGM1M1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmNcXG5AQCAtMCwwICsxLDI0IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcXCJcXG4rI2luY2x1ZGUgXFxcImJwZl9taXNjLmhcXFwiXFxuK1xcbitjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuK19fdTY0IGdvdF9hcmc5ID0gMDtcXG4rXFxuK1NFQyhcXFwic3RydWN0X29wcy90ZXN0X3RyYW1wb2xpbmVcXFwiKVxcbitpbnQgQlBGX1BST0codGVzdF90cmFtcG9saW5lLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxcbitcXHRcXHRcXHQgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxcbitcXHRcXHRcXHQgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KVxcbit7XFxuK1xcdGdvdF9hcmc5ID0gYXJnOTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcIi5zdHJ1Y3Rfb3BzLmxpbmtcXFwiKVxcbitzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHRlc3Rtb2RfdHJhbXBvbGluZSA9IHtcXG4rXFx0LnRlc3RfdHJhbXBvbGluZSA9ICh2b2lkICopdGVzdF90cmFtcG9saW5lLFxcbit9O1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xcbmluZGV4IDg1MGNmNGY4MzBjNDguLmJlOTZiYmMxYjdjMDQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG5AQCAtNTg5LDYgKzU4OSw5IEBAIG5vaW5saW5lIGludCBicGZfdGVzdG1vZF90cmFtcG9saW5lX2NvdW50X3Rlc3Qodm9pZClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0cnVjdCBicGZfdGVzdG1vZF9vcHM7XFxuK3N0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICpzdF9vcHNfdHJhbXBvbGluZTtcXG4rXFxuIG5vaW5saW5lIHNzaXplX3RcXG4gYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4gXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmJpbl9hdHRyLFxcbkBAIC02MzcsNiArNjQwLDkgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4gXFxuIFxcdGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X29wczMoKTtcXG4gXFxuK1xcdGlmIChzdF9vcHNfdHJhbXBvbGluZSBcXHUwMDI2XFx1MDAyNiBzdF9vcHNfdHJhbXBvbGluZS1cXHUwMDNldGVzdF90cmFtcG9saW5lKVxcbitcXHRcXHRzdF9vcHNfdHJhbXBvbGluZS1cXHUwMDNldGVzdF90cmFtcG9saW5lKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDk5OTkpO1xcbitcXG4gXFx0c3RydWN0X2FyZzMgPSBrbWFsbG9jKChzaXplb2Yoc3RydWN0IGJwZl90ZXN0bW9kX3N0cnVjdF9hcmdfMykgK1xcbiBcXHRcXHRcXHRcXHRzaXplb2YoaW50KSksIEdGUF9LRVJORUwpO1xcbiBcXHRpZiAoc3RydWN0X2FyZzMgIT0gTlVMTCkge1xcbkBAIC0xNjE5LDYgKzE2MjUsMTAgQEAgc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbiBcXHRcXHQoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YSktXFx1MDAzZWRhdGEgPSAoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKil1ZGF0YSktXFx1MDAzZWRhdGE7XFxuIFxcdFxcdHJldHVybiAxO1xcbiBcXHR9XFxuK1xcbitcXHRpZiAobWVtYmVyLVxcdTAwM2VvZmZzZXQgPT0gb2Zmc2V0b2Yoc3RydWN0IGJwZl90ZXN0bW9kX29wcywgdGVzdF90cmFtcG9saW5lKSAqIDgpXFxuK1xcdFxcdHN0X29wc190cmFtcG9saW5lID0gKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0xNjk0LDYgKzE3MDQsMTMgQEAgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JldHVybl9yZWZfa3B0cihpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFza19fcmVmLFxcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZShpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXFxuK3tcXG4rXFx0cmV0dXJuIGFyZzk7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xcbiBcXHQudGVzdF8xID0gYnBmX3Rlc3Rtb2RfdGVzdF8xLFxcbiBcXHQudGVzdF8yID0gYnBmX3Rlc3Rtb2RfdGVzdF8yLFxcbkBAIC0xNzAxLDYgKzE3MTgsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcXG4gXFx0LnRlc3RfcmVmY291bnRlZCA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZWZjb3VudGVkLFxcbiBcXHQudGVzdF9yZWZjb3VudGVkX211bHRpID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWRfbXVsdGksXFxuIFxcdC50ZXN0X3JldHVybl9yZWZfa3B0ciA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIsXFxuK1xcdC50ZXN0X3RyYW1wb2xpbmUgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZSxcXG4gfTtcXG4gXFxuIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcbmluZGV4IDIxMGI5MTkyOTBjYzIuLmE1MzQ5ZDA5Y2U1NWEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcXG5AQCAtNDYsNiArNDYsMTEgQEAgc3RydWN0IGJwZl90ZXN0bW9kX29wcyB7XFxuIFxcdHN0cnVjdCB0YXNrX3N0cnVjdCAqKCp0ZXN0X3JldHVybl9yZWZfa3B0cikoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgY2dyb3VwICpjZ3JwKTtcXG4gXFxuK1xcdC8qIFVzZWQgdG8gdGVzdCBpbmRpcmVjdCBzdHJ1Y3Rfb3BzIHRyYW1wb2xpbmVzIHN0YWNrLXBhc3NlZCBhcmd1bWVudHMgKFxcdTAwM2U4IGFyZ3MpLiAqL1xcbitcXHRpbnQgKCp0ZXN0X3RyYW1wb2xpbmUpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXFxuK1xcdFxcdFxcdCAgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxcbitcXHRcXHRcXHQgICAgICAgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSk7XFxuK1xcbiBcXHQvKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgdXNlZCB0byB0ZXN0IHNoYWRvdyBjb3BpZXMuICovXFxuIFxcdGNoYXIgb25lYnl0ZTtcXG4gXFx0c3RydWN0IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMDQ6NTE6NTcuNTc5Nzg2MzcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1OTA4NTQxNjI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgc2VsZnRlc3Qga2VybmVsIG1vZHVsZSB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBpbnRyb2R1Y2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIGtlcm5lbCBjb2RlIG9yIGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2ZjZiZDIzMzQwN2QzMWI3NThmYzMxOTYwN2NhY2E0YzBmYzgxMDQ5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjggMDQ6NTE6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjVhMjFhZWRkMDJmYzVcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc190cmFtcG9saW5lLmNcbkBAIC0wLDAgKzEsNDEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFwic3RydWN0X29wc190cmFtcG9saW5lLnNrZWwuaFwiXG4rXG4rI2lmIGRlZmluZWQoX19sb29uZ2FyY2hfXykgfHwgZGVmaW5lZChfX3Jpc2N2KVxuK3N0YXRpYyB2b2lkIHJ1bl9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUodm9pZClcbit7XG4rXHRzdHJ1Y3Qgc3RydWN0X29wc190cmFtcG9saW5lICpza2VsO1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1x0aW50IGVycjtcbitcbitcdHNrZWwgPSBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX29wZW4oKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcInN0cnVjdF9vcHNfdHJhbXBvbGluZV9fb3BlblwiKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0ZXJyID0gc3RydWN0X29wc190cmFtcG9saW5lX19sb2FkKHNrZWwpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcInN0cnVjdF9vcHNfdHJhbXBvbGluZV9fbG9hZFwiKSlcbitcdFx0Z290byBjbGVhbnVwO1xuK1xuK1x0bGluayA9IGJwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzKHNrZWwtXHUwMDNlbWFwcy50ZXN0bW9kX3RyYW1wb2xpbmUpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFwiYXR0YWNoX3N0cnVjdF9vcHNcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdEFTU0VSVF9PSyh0cmlnZ2VyX21vZHVsZV90ZXN0X3JlYWQoMjU2KSwgXCJ0cmlnZ2VyX3JlYWRcIik7XG4rXG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZ290X2FyZzksIDk5OTksIFwiY2hlY2tfc3RhY2tfcGFzc2VkX2FyZzlcIik7XG4rXG4rXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbitjbGVhbnVwOlxuK1x0c3RydWN0X29wc190cmFtcG9saW5lX19kZXN0cm95KHNrZWwpO1xuK31cbisjZW5kaWZcbitcbit2b2lkIHRlc3Rfc3RydWN0X29wc190cmFtcG9saW5lKHZvaWQpXG4re1xuKyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdilcbitcdHJ1bl9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUoKTtcbisjZWxzZVxuK1x0dGVzdF9fc2tpcCgpO1xuKyNlbmRpZlxuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5iMGZjMTlhMmEwYzUzXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmNcbkBAIC0wLDAgKzEsMjQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcIlxuKyNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuK19fdTY0IGdvdF9hcmc5ID0gMDtcbitcbitTRUMoXCJzdHJ1Y3Rfb3BzL3Rlc3RfdHJhbXBvbGluZVwiKVxuK2ludCBCUEZfUFJPRyh0ZXN0X3RyYW1wb2xpbmUsIGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4rXHRcdFx0ICAgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbitcdFx0XHQgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KVxuK3tcbitcdGdvdF9hcmc5ID0gYXJnOTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCIuc3RydWN0X29wcy5saW5rXCIpXG4rc3RydWN0IGJwZl90ZXN0bW9kX29wcyB0ZXN0bW9kX3RyYW1wb2xpbmUgPSB7XG4rXHQudGVzdF90cmFtcG9saW5lID0gKHZvaWQgKil0ZXN0X3RyYW1wb2xpbmUsXG4rfTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuaW5kZXggODUwY2Y0ZjgzMGM0OC4uYmU5NmJiYzFiN2MwNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbkBAIC01ODksNiArNTg5LDkgQEAgbm9pbmxpbmUgaW50IGJwZl90ZXN0bW9kX3RyYW1wb2xpbmVfY291bnRfdGVzdCh2b2lkKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0cnVjdCBicGZfdGVzdG1vZF9vcHM7XG4rc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKnN0X29wc190cmFtcG9saW5lO1xuK1xuIG5vaW5saW5lIHNzaXplX3RcbiBicGZfdGVzdG1vZF90ZXN0X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuIFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYmluX2F0dHIsXG5AQCAtNjM3LDYgKzY0MCw5IEBAIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXG4gXHRicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9vcHMzKCk7XG4gXG4rXHRpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgXHUwMDI2XHUwMDI2IHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZSlcbitcdFx0c3Rfb3BzX3RyYW1wb2xpbmUtXHUwMDNldGVzdF90cmFtcG9saW5lKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDk5OTkpO1xuK1xuIFx0c3RydWN0X2FyZzMgPSBrbWFsbG9jKChzaXplb2Yoc3RydWN0IGJwZl90ZXN0bW9kX3N0cnVjdF9hcmdfMykgK1xuIFx0XHRcdFx0c2l6ZW9mKGludCkpLCBHRlBfS0VSTkVMKTtcbiBcdGlmIChzdHJ1Y3RfYXJnMyAhPSBOVUxMKSB7XG5AQCAtMTYxOSw2ICsxNjI1LDEwIEBAIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0KChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopa2RhdGEpLVx1MDAzZWRhdGEgPSAoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKil1ZGF0YSktXHUwMDNlZGF0YTtcbiBcdFx0cmV0dXJuIDE7XG4gXHR9XG4rXG4rXHRpZiAobWVtYmVyLVx1MDAzZW9mZnNldCA9PSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzLCB0ZXN0X3RyYW1wb2xpbmUpICogOClcbitcdFx0c3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE2OTQsNiArMTcwNCwxMyBAQCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZShpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxuK1x0XHRcdFx0XHQgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbitcdFx0XHRcdFx0ICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4re1xuK1x0cmV0dXJuIGFyZzk7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuIFx0LnRlc3RfMSA9IGJwZl90ZXN0bW9kX3Rlc3RfMSxcbiBcdC50ZXN0XzIgPSBicGZfdGVzdG1vZF90ZXN0XzIsXG5AQCAtMTcwMSw2ICsxNzE4LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7XG4gXHQudGVzdF9yZWZjb3VudGVkID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWQsXG4gXHQudGVzdF9yZWZjb3VudGVkX211bHRpID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWRfbXVsdGksXG4gXHQudGVzdF9yZXR1cm5fcmVmX2twdHIgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyLFxuK1x0LnRlc3RfdHJhbXBvbGluZSA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF90cmFtcG9saW5lLFxuIH07XG4gXG4gc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzIGJwZl9icGZfdGVzdG1vZF9vcHMgPSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcbmluZGV4IDIxMGI5MTkyOTBjYzIuLmE1MzQ5ZDA5Y2U1NWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG5AQCAtNDYsNiArNDYsMTEgQEAgc3RydWN0IGJwZl90ZXN0bW9kX29wcyB7XG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKigqdGVzdF9yZXR1cm5fcmVmX2twdHIpKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLFxuIFx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgY2dyb3VwICpjZ3JwKTtcbiBcbitcdC8qIFVzZWQgdG8gdGVzdCBpbmRpcmVjdCBzdHJ1Y3Rfb3BzIHRyYW1wb2xpbmVzIHN0YWNrLXBhc3NlZCBhcmd1bWVudHMgKFx1MDAzZTggYXJncykuICovXG4rXHRpbnQgKCp0ZXN0X3RyYW1wb2xpbmUpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4rXHRcdFx0ICAgICAgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXG4rXHRcdFx0ICAgICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpO1xuK1xuIFx0LyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gdGVzdCBzaGFkb3cgY29waWVzLiAqL1xuIFx0Y2hhciBvbmVieXRlO1xuIFx0c3RydWN0IHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDA0OjUxOjU3LjU3OTc4NzczMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwNjA0ODEzOTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUaGlzIFBhdGNoOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhbmFseXplIHRoZSBmaWxlIGNoYW5nZXMgd2l0aGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcgcG90ZW50aWFsLiBGcm9tIHdoYXQgSSBzZWUsIGl0IGxvb2tzIGxpa2UgdGhpcyBjb21taXQgcHJpbWFyaWx5IG1vZGlmaWVzIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFNwZWNpZmljYWxseSwgSSBzZWUgY2hhbmdlcyB0byBgdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY2AsIGBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY2AsIGBicGZfdGVzdG1vZC5jYCwgYW5kIGBicGZfdGVzdG1vZC5oYC4gQWxsIG9mIHdoaWNoIGFyZSB1bmRlciB0aGF0IHNlbGYtdGVzdHMgZGlyZWN0b3J5LlxuXG5UaGUgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHZlcmlmeSB0aGlzIGlzIHRoZSAqb25seSogcGxhY2UgdGhlIG1vZGlmaWNhdGlvbnMgZXhpc3QsIHRvIHJ1bGUgb3V0IGFueSBwb3RlbnRpYWwgc3VycHJpc2VzIGVsc2V3aGVyZS4gSSdsbCBkb3VibGUtY2hlY2sgdGhpcyB1c2luZyBlaXRoZXIgYGdpdGAgZGlyZWN0bHkgb3IgYSBxdWljayBzY2FuIG9mIHRoZSBkaWZmLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4gQSBnb29kIGhhYml0ISBZZXAsIHRoZSBkaWZmIGNvbmZpcm1zIGFsbCB0aGUgY2hhbmdlcyBhcmUgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC5cblxuTm93LCBsZXQgbWUgY2xhcmlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIGBicGZfdGVzdG1vZGAuIEl0J3MgYSB0ZXN0IG1vZHVsZSwgcmVzaWRpbmcgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2AuIFRoZSBrZXkgaGVyZSBpcyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGlzIGFuZCBjb3JlIGtlcm5lbCBjb2RlLiBTZWxmLXRlc3RzIGFyZSBwcmltYXJpbHkgdXNlcnNwYWNlIHRlc3Qgc3VpdGVzIGFuZCBvdXQtb2YtdHJlZSB0ZXN0IGtlcm5lbCBtb2R1bGVzIGZvciB0aGVzZSB0ZXN0cy4gSXQncyAqbm90KiBjb2RlIHRoYXQncyBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSB2bWxpbnV4IG9yIGludG8gY29yZSBrZXJuZWwgZHJpdmVycy5cblxuR2l2ZW4gdGhpcyBjb250ZXh0LCBJJ2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgZnV6emluZy4gSSBoYXZlIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBndWlkZWxpbmVzLiBQYXRjaGVzIHRoYXQgKm9ubHkqIGNoYW5nZSBEb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzIGRvbid0IHdhcnJhbnQgZnV6emluZy4gTW9yZSBpbXBvcnRhbnRseSwgdGhvc2UgdGhhdCBkbyAqbm90KiBtb2RpZnkgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzIGRvbid0IHR5cGljYWxseSB3YXJyYW50IGl0LCBlaXRoZXIuXG5cbkluIHRoaXMgY2FzZSwgc2luY2UgdGhpcyBwYXRjaCBkZWFscyBleGNsdXNpdmVseSB3aXRoIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLCBpdCBkb2Vzbid0IHJlcHJlc2VudCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLCBhbmQgdGhlcmVmb3JlLCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuIEl0J3MgY29udGFpbmVkIHdpdGhpbiB0aGUgdGVzdGluZyBmcmFtZXdvcmsuXG5cblRvIGJlIGV4dHJhIHRob3JvdWdoLCBJJ2xsIHBlcmZvcm0gYSBxdWljayBjaGVjaywgbWF5YmUgd2l0aCBgZ3JlcHBlcmAsIHRvIGNvbmZpcm0gdGhhdCB0aGUgZGlmZiBpcyBpbmRlZWQgY29tcHJlaGVuc2l2ZS4gSnVzdCB0byBiZSBzdXJlLiBVbHRpbWF0ZWx5LCBiYXNlZCBvbiBteSBhbmFseXNpcywgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBub24tZnV6emFibGUgcGF0Y2ggZnJvbSBhIGNvcmUga2VybmVsIHBlcnNwZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDUzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMDQ6NTI6NDguMTg0NjA0NTM2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDcyNzA0NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYz0xNzAxPWJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2tfX3JlZixcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcwNi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jOjE3MDc6c3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZShpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcwOC1cXHRcXHRcXHRcXHRcXHQgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM9MTcxND1zdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcyMC1cXHQudGVzdF9yZXR1cm5fcmVmX2twdHIgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTcyMTpcXHQudGVzdF90cmFtcG9saW5lID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNzIyLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDA0OjUyOjQ5LjkzMTg4MTE1MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3MzMyOTY3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBhbmQgdGhlIHNjb3BlIGlzIHJlYXNzdXJpbmdseSBuYXJyb3cuIEl0J3MgY29uZmluZWQgc29sZWx5IHRvIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LiBObyBrZXJuZWwgc291cmNlIGZpbGVzIG91dHNpZGUgb2YgYHRvb2xzL2AgYXJlIGV2ZW4gdG91Y2hlZCwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgSSBsaWtlIHRvIHNlZS4gVGhlc2UgYXJlIHNlbGZ0ZXN0IGFkZGl0aW9ucyBhbmQgbW9kaWZpY2F0aW9uczsgdGhleSdyZSAqbm90KiBnb2luZyB0byBibGVlZCBpbnRvIHRoZSBrZXJuZWwncyBleGVjdXRpb24gb3IgYWx0ZXIgaXRzIGJlaGF2aW9yIGluIGFueSB3YXkuIEdpdmVuIHRoYXQsICoqYFdvcnRoRnV6emluZ2AqKiBpcyB1bmVxdWl2b2NhbGx5ICoqYGZhbHNlYCoqLiBXZSdyZSBub3QgZGVhbGluZyB3aXRoIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgaGVyZTsgaXQncyBjb250YWluZWQgd2l0aGluIHRoZSB0ZXN0aW5nIGZyYW1ld29yay5cblxuTm93LCBsZXQncyBtYWtlIGRvdWJseSBzdXJlIGV2ZXJ5dGhpbmcgaXMgc2V0IGNvcnJlY3RseSBmb3IgYHNldC1yZXN1bHRzYC4gVGhlIGBFbmFibGVDb25maWdzYCBhbmQgYEZvY3VzU3ltYm9sc2AgYXJlIG51bGwgb3IgZW1wdHkg4oCTIHRoYXQncyBleHBlY3RlZCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIGBSZWFzb25pbmdgIHNob3VsZCBzdWNjaW5jdGx5IHJlZmxlY3QgdGhhdCB0aGlzIHBhdGNoIGlzIGlzb2xhdGVkIHRvIEJQRiBzZWxmdGVzdHMgYW5kIGBicGZfdGVzdG1vZGAgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGFuZCB0aGF0IGl0IGRvZXMgKm5vdCogdG91Y2ggdGhlIGZ1bmN0aW9uYWwgYXNwZWN0cyBvZiB0aGUgTGludXgga2VybmVsLiBJdCdzIHRpbWUgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIHNvbGlkIGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODAsIk91dHB1dFRva2VucyI6NzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMDQ6NTI6NTYuNjY1MTgwNTM3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSBzZWxmdGVzdCBrZXJuZWwgbW9kdWxlIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGludHJvZHVjZXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGNvZGUgb3IgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBhbmQgdGhlIHNlbGZ0ZXN0IGtlcm5lbCBtb2R1bGUgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgaW50cm9kdWNlcyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBrZXJuZWwgY29kZSBvciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMDQ6NTI6NTYuNjY1MjA0NDk3WiIsIlNlcSI6NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl2cvs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-28 04:38:32 +0000 UTC FinishedAt: 2026-08-28 04:52:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDA0OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgc2VsZnRlc3Qga2VybmVsIG1vZHVsZSB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBpbnRyb2R1Y2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIGtlcm5lbCBjb2RlIG9yIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDA0OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNmY2YmQyMzM0MDdkMzFiNzU4ZmMzMTk2MDdjYWNhNGMwZmM4MTA0OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDI4IDA0OjUxOjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc190cmFtcG9saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNWEyMWFlZGQwMmZjNVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xuQEAgLTAsMCAmIzQzOzEsNDEgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdGVzdF9wcm9ncy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O3N0cnVjdF9vcHNfdHJhbXBvbGluZS5za2VsLmhcJiMzNDtcbiYjNDM7XG4mIzQzOyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdilcbiYjNDM7c3RhdGljIHZvaWQgcnVuX3N0cnVjdF9vcHNfdHJhbXBvbGluZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHN0cnVjdF9vcHNfdHJhbXBvbGluZSAqc2tlbDtcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4mIzQzO1x0aW50IGVycjtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHN0cnVjdF9vcHNfdHJhbXBvbGluZV9fb3BlbigpO1xuJiM0MztcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcJiMzNDtzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX29wZW5cJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX2xvYWQoc2tlbCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcJiMzNDtzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRsaW5rID0gYnBmX21hcF9fYXR0YWNoX3N0cnVjdF9vcHMoc2tlbC1cdTAwM2VtYXBzLnRlc3Rtb2RfdHJhbXBvbGluZSk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFwmIzM0O2F0dGFjaF9zdHJ1Y3Rfb3BzXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gY2xlYW51cDtcbiYjNDM7XG4mIzQzO1x0QVNTRVJUX09LKHRyaWdnZXJfbW9kdWxlX3Rlc3RfcmVhZCgyNTYpLCBcJiMzNDt0cmlnZ2VyX3JlYWRcJiMzNDspO1xuJiM0MztcbiYjNDM7XHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZ290X2FyZzksIDk5OTksIFwmIzM0O2NoZWNrX3N0YWNrX3Bhc3NlZF9hcmc5XCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0YnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0c3RydWN0X29wc190cmFtcG9saW5lX19kZXN0cm95KHNrZWwpO1xuJiM0Mzt9XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7dm9pZCB0ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZSh2b2lkKVxuJiM0Mzt7XG4mIzQzOyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdilcbiYjNDM7XHRydW5fc3RydWN0X29wc190cmFtcG9saW5lKCk7XG4mIzQzOyNlbHNlXG4mIzQzO1x0dGVzdF9fc2tpcCgpO1xuJiM0MzsjZW5kaWZcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmIwZmMxOWEyYTBjNTNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xuQEAgLTAsMCAmIzQzOzEsMjQgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjdm1saW51eC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfbWlzYy5oXCYjMzQ7XG4mIzQzO1xuJiM0MztjaGFyIF9saWNlbnNlW10gU0VDKFwmIzM0O2xpY2Vuc2VcJiMzNDspID0gXCYjMzQ7R1BMXCYjMzQ7O1xuJiM0MztcbiYjNDM7X191NjQgZ290X2FyZzkgPSAwO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O3N0cnVjdF9vcHMvdGVzdF90cmFtcG9saW5lXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0codGVzdF90cmFtcG9saW5lLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxuJiM0MztcdFx0XHQgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxuJiM0MztcdFx0XHQgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KVxuJiM0Mzt7XG4mIzQzO1x0Z290X2FyZzkgPSBhcmc5O1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmtcJiMzNDspXG4mIzQzO3N0cnVjdCBicGZfdGVzdG1vZF9vcHMgdGVzdG1vZF90cmFtcG9saW5lID0ge1xuJiM0MztcdC50ZXN0X3RyYW1wb2xpbmUgPSAodm9pZCAqKXRlc3RfdHJhbXBvbGluZSxcbiYjNDM7fTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuaW5kZXggODUwY2Y0ZjgzMGM0OC4uYmU5NmJiYzFiN2MwNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbkBAIC01ODksNiAmIzQzOzU4OSw5IEBAIG5vaW5saW5lIGludCBicGZfdGVzdG1vZF90cmFtcG9saW5lX2NvdW50X3Rlc3Qodm9pZClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RydWN0IGJwZl90ZXN0bW9kX29wcztcbiYjNDM7c3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKnN0X29wc190cmFtcG9saW5lO1xuJiM0MztcbiBub2lubGluZSBzc2l6ZV90XG4gYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbiBcdFx0ICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmJpbl9hdHRyLFxuQEAgLTYzNyw2ICYjNDM7NjQwLDkgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbiBcbiBcdGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X29wczMoKTtcbiBcbiYjNDM7XHRpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgXHUwMDI2XHUwMDI2IHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZSlcbiYjNDM7XHRcdHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZSgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5OTk5KTtcbiYjNDM7XG4gXHRzdHJ1Y3RfYXJnMyA9IGttYWxsb2MoKHNpemVvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfc3RydWN0X2FyZ18zKSAmIzQzO1xuIFx0XHRcdFx0c2l6ZW9mKGludCkpLCBHRlBfS0VSTkVMKTtcbiBcdGlmIChzdHJ1Y3RfYXJnMyAhPSBOVUxMKSB7XG5AQCAtMTYxOSw2ICYjNDM7MTYyNSwxMCBAQCBzdGF0aWMgaW50IGJwZl90ZXN0bW9kX29wc19pbml0X21lbWJlcihjb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsXG4gXHRcdCgoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhKS1cdTAwM2VkYXRhID0gKChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopdWRhdGEpLVx1MDAzZWRhdGE7XG4gXHRcdHJldHVybiAxO1xuIFx0fVxuJiM0MztcbiYjNDM7XHRpZiAobWVtYmVyLVx1MDAzZW9mZnNldCA9PSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzLCB0ZXN0X3RyYW1wb2xpbmUpICogOClcbiYjNDM7XHRcdHN0X29wc190cmFtcG9saW5lID0gKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMTY5NCw2ICYjNDM7MTcwNCwxMyBAQCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcbiYjNDM7XHRcdFx0XHRcdCAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxuJiM0MztcdFx0XHRcdFx0ICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gYXJnOTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcbiBcdC50ZXN0XzEgPSBicGZfdGVzdG1vZF90ZXN0XzEsXG4gXHQudGVzdF8yID0gYnBmX3Rlc3Rtb2RfdGVzdF8yLFxuQEAgLTE3MDEsNiAmIzQzOzE3MTgsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcbiBcdC50ZXN0X3JlZmNvdW50ZWQgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZCxcbiBcdC50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZF9tdWx0aSxcbiBcdC50ZXN0X3JldHVybl9yZWZfa3B0ciA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIsXG4mIzQzO1x0LnRlc3RfdHJhbXBvbGluZSA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF90cmFtcG9saW5lLFxuIH07XG4gXG4gc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzIGJwZl9icGZfdGVzdG1vZF9vcHMgPSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcbmluZGV4IDIxMGI5MTkyOTBjYzIuLmE1MzQ5ZDA5Y2U1NWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG5AQCAtNDYsNiAmIzQzOzQ2LDExIEBAIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMge1xuIFx0c3RydWN0IHRhc2tfc3RydWN0ICooKnRlc3RfcmV0dXJuX3JlZl9rcHRyKShpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayxcbiBcdFx0XHRcdFx0XHQgICAgc3RydWN0IGNncm91cCAqY2dycCk7XG4gXG4mIzQzO1x0LyogVXNlZCB0byB0ZXN0IGluZGlyZWN0IHN0cnVjdF9vcHMgdHJhbXBvbGluZXMgc3RhY2stcGFzc2VkIGFyZ3VtZW50cyAoXHUwMDNlOCBhcmdzKS4gKi9cbiYjNDM7XHRpbnQgKCp0ZXN0X3RyYW1wb2xpbmUpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4mIzQzO1x0XHRcdCAgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxuJiM0MztcdFx0XHQgICAgICAgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSk7XG4mIzQzO1xuIFx0LyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gdGVzdCBzaGFkb3cgY29waWVzLiAqL1xuIFx0Y2hhciBvbmVieXRlO1xuIFx0c3RydWN0IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAwNDo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSBzZWxmdGVzdCBrZXJuZWwgbW9kdWxlIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGludHJvZHVjZXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGNvZGUgb3IgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2ZjZiZDIzMzQwN2QzMWI3NThmYzMxOTYwN2NhY2E0YzBmYzgxMDQ5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjggMDQ6NTE6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi41YTIxYWVkZDAyZmM1Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYwpAQCAtMCwwICYjNDM7MSw0MSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O3Rlc3RfcHJvZ3MuaCZndDsKJiM0MzsjaW5jbHVkZSAmIzM0O3N0cnVjdF9vcHNfdHJhbXBvbGluZS5za2VsLmgmIzM0OwomIzQzOwomIzQzOyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdikKJiM0MztzdGF0aWMgdm9pZCBydW5fc3RydWN0X29wc190cmFtcG9saW5lKHZvaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3RydWN0X29wc190cmFtcG9saW5lICpza2VsOwomIzQzOwlzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CXNrZWwgPSBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX29wZW4oKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7c3RydWN0X29wc190cmFtcG9saW5lX19vcGVuJiMzNDspKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwllcnIgPSBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX2xvYWQoc2tlbCk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDtzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX2xvYWQmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CWxpbmsgPSBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyhza2VsLSZndDttYXBzLnRlc3Rtb2RfdHJhbXBvbGluZSk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihsaW5rLCAmIzM0O2F0dGFjaF9zdHJ1Y3Rfb3BzJiMzNDspKQomIzQzOwkJZ290byBjbGVhbnVwOwomIzQzOwomIzQzOwlBU1NFUlRfT0sodHJpZ2dlcl9tb2R1bGVfdGVzdF9yZWFkKDI1NiksICYjMzQ7dHJpZ2dlcl9yZWFkJiMzNDspOwomIzQzOwomIzQzOwlBU1NFUlRfRVEoc2tlbC0mZ3Q7YnNzLSZndDtnb3RfYXJnOSwgOTk5OSwgJiMzNDtjaGVja19zdGFja19wYXNzZWRfYXJnOSYjMzQ7KTsKJiM0MzsKJiM0MzsJYnBmX2xpbmtfX2Rlc3Ryb3kobGluayk7CiYjNDM7Y2xlYW51cDoKJiM0MzsJc3RydWN0X29wc190cmFtcG9saW5lX19kZXN0cm95KHNrZWwpOwomIzQzO30KJiM0MzsjZW5kaWYKJiM0MzsKJiM0Mzt2b2lkIHRlc3Rfc3RydWN0X29wc190cmFtcG9saW5lKHZvaWQpCiYjNDM7ewomIzQzOyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdikKJiM0MzsJcnVuX3N0cnVjdF9vcHNfdHJhbXBvbGluZSgpOwomIzQzOyNlbHNlCiYjNDM7CXRlc3RfX3NraXAoKTsKJiM0MzsjZW5kaWYKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYjBmYzE5YTJhMGM1MwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYwpAQCAtMCwwICYjNDM7MSwyNCBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJmx0O3ZtbGludXguaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJiMzNDsuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX21pc2MuaCYjMzQ7CiYjNDM7CiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7OwomIzQzOwomIzQzO19fdTY0IGdvdF9hcmc5ID0gMDsKJiM0MzsKJiM0MztTRUMoJiMzNDtzdHJ1Y3Rfb3BzL3Rlc3RfdHJhbXBvbGluZSYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyh0ZXN0X3RyYW1wb2xpbmUsIGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsCiYjNDM7CQkJICAgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNiwKJiM0MzsJCQkgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KQomIzQzO3sKJiM0MzsJZ290X2FyZzkgPSBhcmc5OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7U0VDKCYjMzQ7LnN0cnVjdF9vcHMubGluayYjMzQ7KQomIzQzO3N0cnVjdCBicGZfdGVzdG1vZF9vcHMgdGVzdG1vZF90cmFtcG9saW5lID0gewomIzQzOwkudGVzdF90cmFtcG9saW5lID0gKHZvaWQgKil0ZXN0X3RyYW1wb2xpbmUsCiYjNDM7fTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jCmluZGV4IDg1MGNmNGY4MzBjNDguLmJlOTZiYmMxYjdjMDQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYwpAQCAtNTg5LDYgJiM0Mzs1ODksOSBAQCBub2lubGluZSBpbnQgYnBmX3Rlc3Rtb2RfdHJhbXBvbGluZV9jb3VudF90ZXN0KHZvaWQpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzOwomIzQzO3N0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICpzdF9vcHNfdHJhbXBvbGluZTsKJiM0MzsKIG5vaW5saW5lIHNzaXplX3QKIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosCiAJCSAgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICpiaW5fYXR0ciwKQEAgLTYzNyw2ICYjNDM7NjQwLDkgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaiwKIAogCWJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X29wczMoKTsKIAomIzQzOwlpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgJmFtcDsmYW1wOyBzdF9vcHNfdHJhbXBvbGluZS0mZ3Q7dGVzdF90cmFtcG9saW5lKQomIzQzOwkJc3Rfb3BzX3RyYW1wb2xpbmUtJmd0O3Rlc3RfdHJhbXBvbGluZSgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5OTk5KTsKJiM0MzsKIAlzdHJ1Y3RfYXJnMyA9IGttYWxsb2MoKHNpemVvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfc3RydWN0X2FyZ18zKSAmIzQzOwogCQkJCXNpemVvZihpbnQpKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHN0cnVjdF9hcmczICE9IE5VTEwpIHsKQEAgLTE2MTksNiAmIzQzOzE2MjUsMTAgQEAgc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LAogCQkoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YSktJmd0O2RhdGEgPSAoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKil1ZGF0YSktJmd0O2RhdGE7CiAJCXJldHVybiAxOwogCX0KJiM0MzsKJiM0MzsJaWYgKG1lbWJlci0mZ3Q7b2Zmc2V0ID09IG9mZnNldG9mKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMsIHRlc3RfdHJhbXBvbGluZSkgKiA4KQomIzQzOwkJc3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhOwomIzQzOwogCXJldHVybiAwOwogfQogCkBAIC0xNjk0LDYgJiM0MzsxNzA0LDEzIEBAIGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2tfX3JlZiwKIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzO3N0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMywKJiM0MzsJCQkJCSAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LAomIzQzOwkJCQkJICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpCiYjNDM7ewomIzQzOwlyZXR1cm4gYXJnOTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHsKIAkudGVzdF8xID0gYnBmX3Rlc3Rtb2RfdGVzdF8xLAogCS50ZXN0XzIgPSBicGZfdGVzdG1vZF90ZXN0XzIsCkBAIC0xNzAxLDYgJiM0MzsxNzE4LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7CiAJLnRlc3RfcmVmY291bnRlZCA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZWZjb3VudGVkLAogCS50ZXN0X3JlZmNvdW50ZWRfbXVsdGkgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmVmY291bnRlZF9tdWx0aSwKIAkudGVzdF9yZXR1cm5fcmVmX2twdHIgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyLAomIzQzOwkudGVzdF90cmFtcG9saW5lID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUsCiB9OwogCiBzdHJ1Y3QgYnBmX3N0cnVjdF9vcHMgYnBmX2JwZl90ZXN0bW9kX29wcyA9IHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oCmluZGV4IDIxMGI5MTkyOTBjYzIuLmE1MzQ5ZDA5Y2U1NWEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaApAQCAtNDYsNiAmIzQzOzQ2LDExIEBAIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqKCp0ZXN0X3JldHVybl9yZWZfa3B0cikoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCiAJCQkJCQkgICAgc3RydWN0IGNncm91cCAqY2dycCk7CiAKJiM0MzsJLyogVXNlZCB0byB0ZXN0IGluZGlyZWN0IHN0cnVjdF9vcHMgdHJhbXBvbGluZXMgc3RhY2stcGFzc2VkIGFyZ3VtZW50cyAoJmd0OzggYXJncykuICovCiYjNDM7CWludCAoKnRlc3RfdHJhbXBvbGluZSkoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMywKJiM0MzsJCQkgICAgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNiwKJiM0MzsJCQkgICAgICAgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSk7CiYjNDM7CiAJLyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gdGVzdCBzaGFkb3cgY29waWVzLiAqLwogCWNoYXIgb25lYnl0ZTsKIAlzdHJ1Y3Qgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAwNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDUzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNjE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUaGlzIFBhdGNoOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFuYWx5emUgdGhlIGZpbGUgY2hhbmdlcyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZyBwb3RlbnRpYWwuIEZyb20gd2hhdCBJIHNlZSwgaXQgbG9va3MgbGlrZSB0aGlzIGNvbW1pdCBwcmltYXJpbHkgbW9kaWZpZXMgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gU3BlY2lmaWNhbGx5LCBJIHNlZSBjaGFuZ2VzIHRvIGB0ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZS5jYCwgYHN0cnVjdF9vcHNfdHJhbXBvbGluZS5jYCwgYGJwZl90ZXN0bW9kLmNgLCBhbmQgYGJwZl90ZXN0bW9kLmhgLiBBbGwgb2Ygd2hpY2ggYXJlIHVuZGVyIHRoYXQgc2VsZi10ZXN0cyBkaXJlY3RvcnkuCgpUaGUgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHZlcmlmeSB0aGlzIGlzIHRoZSAqb25seSogcGxhY2UgdGhlIG1vZGlmaWNhdGlvbnMgZXhpc3QsIHRvIHJ1bGUgb3V0IGFueSBwb3RlbnRpYWwgc3VycHJpc2VzIGVsc2V3aGVyZS4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoaXMgdXNpbmcgZWl0aGVyIGBnaXRgIGRpcmVjdGx5IG9yIGEgcXVpY2sgc2NhbiBvZiB0aGUgZGlmZiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEEgZ29vZCBoYWJpdCEgWWVwLCB0aGUgZGlmZiBjb25maXJtcyBhbGwgdGhlIGNoYW5nZXMgYXJlIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuCgpOb3csIGxldCBtZSBjbGFyaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgYGJwZl90ZXN0bW9kYC4gSXQmIzM5O3MgYSB0ZXN0IG1vZHVsZSwgcmVzaWRpbmcgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2AuIFRoZSBrZXkgaGVyZSBpcyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGlzIGFuZCBjb3JlIGtlcm5lbCBjb2RlLiBTZWxmLXRlc3RzIGFyZSBwcmltYXJpbHkgdXNlcnNwYWNlIHRlc3Qgc3VpdGVzIGFuZCBvdXQtb2YtdHJlZSB0ZXN0IGtlcm5lbCBtb2R1bGVzIGZvciB0aGVzZSB0ZXN0cy4gSXQmIzM5O3MgKm5vdCogY29kZSB0aGF0JiMzOTtzIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIHZtbGludXggb3IgaW50byBjb3JlIGtlcm5lbCBkcml2ZXJzLgoKR2l2ZW4gdGhpcyBjb250ZXh0LCBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGZ1enppbmcuIEkgaGF2ZSBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgZ3VpZGVsaW5lcy4gUGF0Y2hlcyB0aGF0ICpvbmx5KiBjaGFuZ2UgRG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cyBkb24mIzM5O3Qgd2FycmFudCBmdXp6aW5nLiBNb3JlIGltcG9ydGFudGx5LCB0aG9zZSB0aGF0IGRvICpub3QqIG1vZGlmeSByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMgZG9uJiMzOTt0IHR5cGljYWxseSB3YXJyYW50IGl0LCBlaXRoZXIuCgpJbiB0aGlzIGNhc2UsIHNpbmNlIHRoaXMgcGF0Y2ggZGVhbHMgZXhjbHVzaXZlbHkgd2l0aCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYCwgaXQgZG9lc24mIzM5O3QgcmVwcmVzZW50IGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYsIGFuZCB0aGVyZWZvcmUsIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4gSXQmIzM5O3MgY29udGFpbmVkIHdpdGhpbiB0aGUgdGVzdGluZyBmcmFtZXdvcmsuCgpUbyBiZSBleHRyYSB0aG9yb3VnaCwgSSYjMzk7bGwgcGVyZm9ybSBhIHF1aWNrIGNoZWNrLCBtYXliZSB3aXRoIGBncmVwcGVyYCwgdG8gY29uZmlybSB0aGF0IHRoZSBkaWZmIGlzIGluZGVlZCBjb21wcmVoZW5zaXZlLiBKdXN0IHRvIGJlIHN1cmUuIFVsdGltYXRlbHksIGJhc2VkIG9uIG15IGFuYWx5c2lzLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBub24tZnV6emFibGUgcGF0Y2ggZnJvbSBhIGNvcmUga2VybmVsIHBlcnNwZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90ZXN0bW9kX29wc19fdGVzdF90cmFtcG9saW5lJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM9MTcwMT1icGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNzA2LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzoxNzA3OnN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUoaW50IGFyZzEsIGludCBhcmcyLCBpbnQgYXJnMyxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcwOC1cdFx0XHRcdFx0ICAgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYz0xNzE0PXN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcyMC1cdC50ZXN0X3JldHVybl9yZWZfa3B0ciA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jOjE3MjE6XHQudGVzdF90cmFtcG9saW5lID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jLTE3MjItfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yOCAwNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTgwCgkJCQkJCQlvdXRwdXQ6IDcwCgkJCQkJCQl0aG91Z2h0czogMTU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBwYXRjaCwgYW5kIHRoZSBzY29wZSBpcyByZWFzc3VyaW5nbHkgbmFycm93LiBJdCYjMzk7cyBjb25maW5lZCBzb2xlbHkgdG8gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCBkaXJlY3RvcnkuIE5vIGtlcm5lbCBzb3VyY2UgZmlsZXMgb3V0c2lkZSBvZiBgdG9vbHMvYCBhcmUgZXZlbiB0b3VjaGVkLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCBJIGxpa2UgdG8gc2VlLiBUaGVzZSBhcmUgc2VsZnRlc3QgYWRkaXRpb25zIGFuZCBtb2RpZmljYXRpb25zOyB0aGV5JiMzOTtyZSAqbm90KiBnb2luZyB0byBibGVlZCBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIG9yIGFsdGVyIGl0cyBiZWhhdmlvciBpbiBhbnkgd2F5LiBHaXZlbiB0aGF0LCAqKmBXb3J0aEZ1enppbmdgKiogaXMgdW5lcXVpdm9jYWxseSAqKmBmYWxzZWAqKi4gV2UmIzM5O3JlIG5vdCBkZWFsaW5nIHdpdGggYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBoZXJlOyBpdCYjMzk7cyBjb250YWluZWQgd2l0aGluIHRoZSB0ZXN0aW5nIGZyYW1ld29yay4KCk5vdywgbGV0JiMzOTtzIG1ha2UgZG91Ymx5IHN1cmUgZXZlcnl0aGluZyBpcyBzZXQgY29ycmVjdGx5IGZvciBgc2V0LXJlc3VsdHNgLiBUaGUgYEVuYWJsZUNvbmZpZ3NgIGFuZCBgRm9jdXNTeW1ib2xzYCBhcmUgbnVsbCBvciBlbXB0eSDigJMgdGhhdCYjMzk7cyBleHBlY3RlZCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIGBSZWFzb25pbmdgIHNob3VsZCBzdWNjaW5jdGx5IHJlZmxlY3QgdGhhdCB0aGlzIHBhdGNoIGlzIGlzb2xhdGVkIHRvIEJQRiBzZWxmdGVzdHMgYW5kIGBicGZfdGVzdG1vZGAgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGFuZCB0aGF0IGl0IGRvZXMgKm5vdCogdG91Y2ggdGhlIGZ1bmN0aW9uYWwgYXNwZWN0cyBvZiB0aGUgTGludXgga2VybmVsLiBJdCYjMzk7cyB0aW1lIHRvIGludm9rZSBgc2V0LXJlc3VsdHNgIHdpdGggdGhpcyBzb2xpZCBhc3Nlc3NtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI4IDA0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgc2VsZnRlc3Qga2VybmVsIG1vZHVsZSB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBpbnRyb2R1Y2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIGtlcm5lbCBjb2RlIG9yIGRyaXZlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSBzZWxmdGVzdCBrZXJuZWwgbW9kdWxlIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGludHJvZHVjZXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGNvZGUgb3IgZHJpdmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjggMDQ6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDA0OjUxOjU3LjIxNjIyMTMyNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDQ4OTk1NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgc2VsZnRlc3Qga2VybmVsIG1vZHVsZSB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBpbnRyb2R1Y2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIGtlcm5lbCBjb2RlIG9yIGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yOFQwNDo1MTo1Ny4yMTYyMjY1OTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2Mjg4NTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZmNmJkMjMzNDA3ZDMxYjc1OGZjMzE5NjA3Y2FjYTRjMGZjODEwNDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMjggMDQ6NTE6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc190cmFtcG9saW5lLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjVhMjFhZWRkMDJmYzVcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xcbkBAIC0wLDAgKzEsNDEgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI2luY2x1ZGUgXFx1MDAzY3Rlc3RfcHJvZ3MuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcInN0cnVjdF9vcHNfdHJhbXBvbGluZS5za2VsLmhcXFwiXFxuK1xcbisjaWYgZGVmaW5lZChfX2xvb25nYXJjaF9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpXFxuK3N0YXRpYyB2b2lkIHJ1bl9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUodm9pZClcXG4re1xcbitcXHRzdHJ1Y3Qgc3RydWN0X29wc190cmFtcG9saW5lICpza2VsO1xcbitcXHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRza2VsID0gc3RydWN0X29wc190cmFtcG9saW5lX19vcGVuKCk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcXFwic3RydWN0X29wc190cmFtcG9saW5lX19vcGVuXFxcIikpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGVyciA9IHN0cnVjdF9vcHNfdHJhbXBvbGluZV9fbG9hZChza2VsKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0soZXJyLCBcXFwic3RydWN0X29wc190cmFtcG9saW5lX19sb2FkXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFxuK1xcdGxpbmsgPSBicGZfbWFwX19hdHRhY2hfc3RydWN0X29wcyhza2VsLVxcdTAwM2VtYXBzLnRlc3Rtb2RfdHJhbXBvbGluZSk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihsaW5rLCBcXFwiYXR0YWNoX3N0cnVjdF9vcHNcXFwiKSlcXG4rXFx0XFx0Z290byBjbGVhbnVwO1xcbitcXG4rXFx0QVNTRVJUX09LKHRyaWdnZXJfbW9kdWxlX3Rlc3RfcmVhZCgyNTYpLCBcXFwidHJpZ2dlcl9yZWFkXFxcIik7XFxuK1xcbitcXHRBU1NFUlRfRVEoc2tlbC1cXHUwMDNlYnNzLVxcdTAwM2Vnb3RfYXJnOSwgOTk5OSwgXFxcImNoZWNrX3N0YWNrX3Bhc3NlZF9hcmc5XFxcIik7XFxuK1xcbitcXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcXG4rY2xlYW51cDpcXG4rXFx0c3RydWN0X29wc190cmFtcG9saW5lX19kZXN0cm95KHNrZWwpO1xcbit9XFxuKyNlbmRpZlxcbitcXG4rdm9pZCB0ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZSh2b2lkKVxcbit7XFxuKyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdilcXG4rXFx0cnVuX3N0cnVjdF9vcHNfdHJhbXBvbGluZSgpO1xcbisjZWxzZVxcbitcXHR0ZXN0X19za2lwKCk7XFxuKyNlbmRpZlxcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uYjBmYzE5YTJhMGM1M1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmNcXG5AQCAtMCwwICsxLDI0IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcdTAwM2N2bWxpbnV4LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFxcIi4uL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcXCJcXG4rI2luY2x1ZGUgXFxcImJwZl9taXNjLmhcXFwiXFxuK1xcbitjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuK19fdTY0IGdvdF9hcmc5ID0gMDtcXG4rXFxuK1NFQyhcXFwic3RydWN0X29wcy90ZXN0X3RyYW1wb2xpbmVcXFwiKVxcbitpbnQgQlBGX1BST0codGVzdF90cmFtcG9saW5lLCBpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxcbitcXHRcXHRcXHQgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxcbitcXHRcXHRcXHQgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KVxcbit7XFxuK1xcdGdvdF9hcmc5ID0gYXJnOTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitTRUMoXFxcIi5zdHJ1Y3Rfb3BzLmxpbmtcXFwiKVxcbitzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIHRlc3Rtb2RfdHJhbXBvbGluZSA9IHtcXG4rXFx0LnRlc3RfdHJhbXBvbGluZSA9ICh2b2lkICopdGVzdF90cmFtcG9saW5lLFxcbit9O1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xcbmluZGV4IDg1MGNmNGY4MzBjNDguLmJlOTZiYmMxYjdjMDQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcXG5AQCAtNTg5LDYgKzU4OSw5IEBAIG5vaW5saW5lIGludCBicGZfdGVzdG1vZF90cmFtcG9saW5lX2NvdW50X3Rlc3Qodm9pZClcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0cnVjdCBicGZfdGVzdG1vZF9vcHM7XFxuK3N0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICpzdF9vcHNfdHJhbXBvbGluZTtcXG4rXFxuIG5vaW5saW5lIHNzaXplX3RcXG4gYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4gXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmJpbl9hdHRyLFxcbkBAIC02MzcsNiArNjQwLDkgQEAgYnBmX3Rlc3Rtb2RfdGVzdF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4gXFxuIFxcdGJwZl90ZXN0bW9kX3Rlc3Rfc3RydWN0X29wczMoKTtcXG4gXFxuK1xcdGlmIChzdF9vcHNfdHJhbXBvbGluZSBcXHUwMDI2XFx1MDAyNiBzdF9vcHNfdHJhbXBvbGluZS1cXHUwMDNldGVzdF90cmFtcG9saW5lKVxcbitcXHRcXHRzdF9vcHNfdHJhbXBvbGluZS1cXHUwMDNldGVzdF90cmFtcG9saW5lKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDk5OTkpO1xcbitcXG4gXFx0c3RydWN0X2FyZzMgPSBrbWFsbG9jKChzaXplb2Yoc3RydWN0IGJwZl90ZXN0bW9kX3N0cnVjdF9hcmdfMykgK1xcbiBcXHRcXHRcXHRcXHRzaXplb2YoaW50KSksIEdGUF9LRVJORUwpO1xcbiBcXHRpZiAoc3RydWN0X2FyZzMgIT0gTlVMTCkge1xcbkBAIC0xNjE5LDYgKzE2MjUsMTAgQEAgc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfaW5pdF9tZW1iZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LFxcbiBcXHRcXHQoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YSktXFx1MDAzZWRhdGEgPSAoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKil1ZGF0YSktXFx1MDAzZWRhdGE7XFxuIFxcdFxcdHJldHVybiAxO1xcbiBcXHR9XFxuK1xcbitcXHRpZiAobWVtYmVyLVxcdTAwM2VvZmZzZXQgPT0gb2Zmc2V0b2Yoc3RydWN0IGJwZl90ZXN0bW9kX29wcywgdGVzdF90cmFtcG9saW5lKSAqIDgpXFxuK1xcdFxcdHN0X29wc190cmFtcG9saW5lID0gKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKilrZGF0YTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0xNjk0LDYgKzE3MDQsMTMgQEAgYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JldHVybl9yZWZfa3B0cihpbnQgZHVtbXksIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFza19fcmVmLFxcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZShpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXFxuK3tcXG4rXFx0cmV0dXJuIGFyZzk7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xcbiBcXHQudGVzdF8xID0gYnBmX3Rlc3Rtb2RfdGVzdF8xLFxcbiBcXHQudGVzdF8yID0gYnBmX3Rlc3Rtb2RfdGVzdF8yLFxcbkBAIC0xNzAxLDYgKzE3MTgsNyBAQCBzdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcXG4gXFx0LnRlc3RfcmVmY291bnRlZCA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZWZjb3VudGVkLFxcbiBcXHQudGVzdF9yZWZjb3VudGVkX211bHRpID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWRfbXVsdGksXFxuIFxcdC50ZXN0X3JldHVybl9yZWZfa3B0ciA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIsXFxuK1xcdC50ZXN0X3RyYW1wb2xpbmUgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZSxcXG4gfTtcXG4gXFxuIHN0cnVjdCBicGZfc3RydWN0X29wcyBicGZfYnBmX3Rlc3Rtb2Rfb3BzID0ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcbmluZGV4IDIxMGI5MTkyOTBjYzIuLmE1MzQ5ZDA5Y2U1NWEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcXG5AQCAtNDYsNiArNDYsMTEgQEAgc3RydWN0IGJwZl90ZXN0bW9kX29wcyB7XFxuIFxcdHN0cnVjdCB0YXNrX3N0cnVjdCAqKCp0ZXN0X3JldHVybl9yZWZfa3B0cikoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgY2dyb3VwICpjZ3JwKTtcXG4gXFxuK1xcdC8qIFVzZWQgdG8gdGVzdCBpbmRpcmVjdCBzdHJ1Y3Rfb3BzIHRyYW1wb2xpbmVzIHN0YWNrLXBhc3NlZCBhcmd1bWVudHMgKFxcdTAwM2U4IGFyZ3MpLiAqL1xcbitcXHRpbnQgKCp0ZXN0X3RyYW1wb2xpbmUpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXFxuK1xcdFxcdFxcdCAgICAgICBpbnQgYXJnNCwgaW50IGFyZzUsIGludCBhcmc2LFxcbitcXHRcXHRcXHQgICAgICAgaW50IGFyZzcsIGludCBhcmc4LCBpbnQgYXJnOSk7XFxuK1xcbiBcXHQvKiBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgdXNlZCB0byB0ZXN0IHNoYWRvdyBjb3BpZXMuICovXFxuIFxcdGNoYXIgb25lYnl0ZTtcXG4gXFx0c3RydWN0IHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMDQ6NTE6NTcuNTc5Nzg2MzcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1OTA4NTQxNjI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGFuZCB0aGUgc2VsZnRlc3Qga2VybmVsIG1vZHVsZSB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBpbnRyb2R1Y2VzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIGtlcm5lbCBjb2RlIG9yIGRyaXZlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2ZjZiZDIzMzQwN2QzMWI3NThmYzMxOTYwN2NhY2E0YzBmYzgxMDQ5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMjggMDQ6NTE6NTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3N0cnVjdF9vcHNfdHJhbXBvbGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjVhMjFhZWRkMDJmYzVcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3Rfc3RydWN0X29wc190cmFtcG9saW5lLmNcbkBAIC0wLDAgKzEsNDEgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY3Rlc3RfcHJvZ3MuaFx1MDAzZVxuKyNpbmNsdWRlIFwic3RydWN0X29wc190cmFtcG9saW5lLnNrZWwuaFwiXG4rXG4rI2lmIGRlZmluZWQoX19sb29uZ2FyY2hfXykgfHwgZGVmaW5lZChfX3Jpc2N2KVxuK3N0YXRpYyB2b2lkIHJ1bl9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUodm9pZClcbit7XG4rXHRzdHJ1Y3Qgc3RydWN0X29wc190cmFtcG9saW5lICpza2VsO1xuK1x0c3RydWN0IGJwZl9saW5rICpsaW5rO1xuK1x0aW50IGVycjtcbitcbitcdHNrZWwgPSBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmVfX29wZW4oKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcInN0cnVjdF9vcHNfdHJhbXBvbGluZV9fb3BlblwiKSlcbitcdFx0cmV0dXJuO1xuK1xuK1x0ZXJyID0gc3RydWN0X29wc190cmFtcG9saW5lX19sb2FkKHNrZWwpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcInN0cnVjdF9vcHNfdHJhbXBvbGluZV9fbG9hZFwiKSlcbitcdFx0Z290byBjbGVhbnVwO1xuK1xuK1x0bGluayA9IGJwZl9tYXBfX2F0dGFjaF9zdHJ1Y3Rfb3BzKHNrZWwtXHUwMDNlbWFwcy50ZXN0bW9kX3RyYW1wb2xpbmUpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKGxpbmssIFwiYXR0YWNoX3N0cnVjdF9vcHNcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdEFTU0VSVF9PSyh0cmlnZ2VyX21vZHVsZV90ZXN0X3JlYWQoMjU2KSwgXCJ0cmlnZ2VyX3JlYWRcIik7XG4rXG4rXHRBU1NFUlRfRVEoc2tlbC1cdTAwM2Vic3MtXHUwMDNlZ290X2FyZzksIDk5OTksIFwiY2hlY2tfc3RhY2tfcGFzc2VkX2FyZzlcIik7XG4rXG4rXHRicGZfbGlua19fZGVzdHJveShsaW5rKTtcbitjbGVhbnVwOlxuK1x0c3RydWN0X29wc190cmFtcG9saW5lX19kZXN0cm95KHNrZWwpO1xuK31cbisjZW5kaWZcbitcbit2b2lkIHRlc3Rfc3RydWN0X29wc190cmFtcG9saW5lKHZvaWQpXG4re1xuKyNpZiBkZWZpbmVkKF9fbG9vbmdhcmNoX18pIHx8IGRlZmluZWQoX19yaXNjdilcbitcdHJ1bl9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUoKTtcbisjZWxzZVxuK1x0dGVzdF9fc2tpcCgpO1xuKyNlbmRpZlxuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5iMGZjMTlhMmEwYzUzXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RydWN0X29wc190cmFtcG9saW5lLmNcbkBAIC0wLDAgKzEsMjQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY3ZtbGludXguaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXHUwMDNlXG4rI2luY2x1ZGUgXCIuLi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcIlxuKyNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuK19fdTY0IGdvdF9hcmc5ID0gMDtcbitcbitTRUMoXCJzdHJ1Y3Rfb3BzL3Rlc3RfdHJhbXBvbGluZVwiKVxuK2ludCBCUEZfUFJPRyh0ZXN0X3RyYW1wb2xpbmUsIGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4rXHRcdFx0ICAgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbitcdFx0XHQgICAgICBpbnQgYXJnNywgaW50IGFyZzgsIGludCBhcmc5KVxuK3tcbitcdGdvdF9hcmc5ID0gYXJnOTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbitTRUMoXCIuc3RydWN0X29wcy5saW5rXCIpXG4rc3RydWN0IGJwZl90ZXN0bW9kX29wcyB0ZXN0bW9kX3RyYW1wb2xpbmUgPSB7XG4rXHQudGVzdF90cmFtcG9saW5lID0gKHZvaWQgKil0ZXN0X3RyYW1wb2xpbmUsXG4rfTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuY1xuaW5kZXggODUwY2Y0ZjgzMGM0OC4uYmU5NmJiYzFiN2MwNCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmNcbkBAIC01ODksNiArNTg5LDkgQEAgbm9pbmxpbmUgaW50IGJwZl90ZXN0bW9kX3RyYW1wb2xpbmVfY291bnRfdGVzdCh2b2lkKVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK3N0cnVjdCBicGZfdGVzdG1vZF9vcHM7XG4rc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKnN0X29wc190cmFtcG9saW5lO1xuK1xuIG5vaW5saW5lIHNzaXplX3RcbiBicGZfdGVzdG1vZF90ZXN0X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuIFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYmluX2F0dHIsXG5AQCAtNjM3LDYgKzY0MCw5IEBAIGJwZl90ZXN0bW9kX3Rlc3RfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXG4gXHRicGZfdGVzdG1vZF90ZXN0X3N0cnVjdF9vcHMzKCk7XG4gXG4rXHRpZiAoc3Rfb3BzX3RyYW1wb2xpbmUgXHUwMDI2XHUwMDI2IHN0X29wc190cmFtcG9saW5lLVx1MDAzZXRlc3RfdHJhbXBvbGluZSlcbitcdFx0c3Rfb3BzX3RyYW1wb2xpbmUtXHUwMDNldGVzdF90cmFtcG9saW5lKDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDk5OTkpO1xuK1xuIFx0c3RydWN0X2FyZzMgPSBrbWFsbG9jKChzaXplb2Yoc3RydWN0IGJwZl90ZXN0bW9kX3N0cnVjdF9hcmdfMykgK1xuIFx0XHRcdFx0c2l6ZW9mKGludCkpLCBHRlBfS0VSTkVMKTtcbiBcdGlmIChzdHJ1Y3RfYXJnMyAhPSBOVUxMKSB7XG5AQCAtMTYxOSw2ICsxNjI1LDEwIEBAIHN0YXRpYyBpbnQgYnBmX3Rlc3Rtb2Rfb3BzX2luaXRfbWVtYmVyKGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdCxcbiBcdFx0KChzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzICopa2RhdGEpLVx1MDAzZWRhdGEgPSAoKHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgKil1ZGF0YSktXHUwMDNlZGF0YTtcbiBcdFx0cmV0dXJuIDE7XG4gXHR9XG4rXG4rXHRpZiAobWVtYmVyLVx1MDAzZW9mZnNldCA9PSBvZmZzZXRvZihzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzLCB0ZXN0X3RyYW1wb2xpbmUpICogOClcbitcdFx0c3Rfb3BzX3RyYW1wb2xpbmUgPSAoc3RydWN0IGJwZl90ZXN0bW9kX29wcyAqKWtkYXRhO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE2OTQsNiArMTcwNCwxMyBAQCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrX19yZWYsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZShpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxuK1x0XHRcdFx0XHQgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcbitcdFx0XHRcdFx0ICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpXG4re1xuK1x0cmV0dXJuIGFyZzk7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgYnBmX3Rlc3Rtb2Rfb3BzIF9fYnBmX3Rlc3Rtb2Rfb3BzID0ge1xuIFx0LnRlc3RfMSA9IGJwZl90ZXN0bW9kX3Rlc3RfMSxcbiBcdC50ZXN0XzIgPSBicGZfdGVzdG1vZF90ZXN0XzIsXG5AQCAtMTcwMSw2ICsxNzE4LDcgQEAgc3RhdGljIHN0cnVjdCBicGZfdGVzdG1vZF9vcHMgX19icGZfdGVzdG1vZF9vcHMgPSB7XG4gXHQudGVzdF9yZWZjb3VudGVkID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWQsXG4gXHQudGVzdF9yZWZjb3VudGVkX211bHRpID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3JlZmNvdW50ZWRfbXVsdGksXG4gXHQudGVzdF9yZXR1cm5fcmVmX2twdHIgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyLFxuK1x0LnRlc3RfdHJhbXBvbGluZSA9IGJwZl90ZXN0bW9kX29wc19fdGVzdF90cmFtcG9saW5lLFxuIH07XG4gXG4gc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzIGJwZl9icGZfdGVzdG1vZF9vcHMgPSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmhcbmluZGV4IDIxMGI5MTkyOTBjYzIuLmE1MzQ5ZDA5Y2U1NWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5oXG5AQCAtNDYsNiArNDYsMTEgQEAgc3RydWN0IGJwZl90ZXN0bW9kX29wcyB7XG4gXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKigqdGVzdF9yZXR1cm5fcmVmX2twdHIpKGludCBkdW1teSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLFxuIFx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgY2dyb3VwICpjZ3JwKTtcbiBcbitcdC8qIFVzZWQgdG8gdGVzdCBpbmRpcmVjdCBzdHJ1Y3Rfb3BzIHRyYW1wb2xpbmVzIHN0YWNrLXBhc3NlZCBhcmd1bWVudHMgKFx1MDAzZTggYXJncykuICovXG4rXHRpbnQgKCp0ZXN0X3RyYW1wb2xpbmUpKGludCBhcmcxLCBpbnQgYXJnMiwgaW50IGFyZzMsXG4rXHRcdFx0ICAgICAgIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsXG4rXHRcdFx0ICAgICAgIGludCBhcmc3LCBpbnQgYXJnOCwgaW50IGFyZzkpO1xuK1xuIFx0LyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gdGVzdCBzaGFkb3cgY29waWVzLiAqL1xuIFx0Y2hhciBvbmVieXRlO1xuIFx0c3RydWN0IHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDA0OjUxOjU3LjU3OTc4NzczMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUwNjA0ODEzOTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUaGlzIFBhdGNoOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhbmFseXplIHRoZSBmaWxlIGNoYW5nZXMgd2l0aGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcgcG90ZW50aWFsLiBGcm9tIHdoYXQgSSBzZWUsIGl0IGxvb2tzIGxpa2UgdGhpcyBjb21taXQgcHJpbWFyaWx5IG1vZGlmaWVzIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFNwZWNpZmljYWxseSwgSSBzZWUgY2hhbmdlcyB0byBgdGVzdF9zdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY2AsIGBzdHJ1Y3Rfb3BzX3RyYW1wb2xpbmUuY2AsIGBicGZfdGVzdG1vZC5jYCwgYW5kIGBicGZfdGVzdG1vZC5oYC4gQWxsIG9mIHdoaWNoIGFyZSB1bmRlciB0aGF0IHNlbGYtdGVzdHMgZGlyZWN0b3J5LlxuXG5UaGUgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIHZlcmlmeSB0aGlzIGlzIHRoZSAqb25seSogcGxhY2UgdGhlIG1vZGlmaWNhdGlvbnMgZXhpc3QsIHRvIHJ1bGUgb3V0IGFueSBwb3RlbnRpYWwgc3VycHJpc2VzIGVsc2V3aGVyZS4gSSdsbCBkb3VibGUtY2hlY2sgdGhpcyB1c2luZyBlaXRoZXIgYGdpdGAgZGlyZWN0bHkgb3IgYSBxdWljayBzY2FuIG9mIHRoZSBkaWZmLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4gQSBnb29kIGhhYml0ISBZZXAsIHRoZSBkaWZmIGNvbmZpcm1zIGFsbCB0aGUgY2hhbmdlcyBhcmUgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC5cblxuTm93LCBsZXQgbWUgY2xhcmlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIGBicGZfdGVzdG1vZGAuIEl0J3MgYSB0ZXN0IG1vZHVsZSwgcmVzaWRpbmcgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2AuIFRoZSBrZXkgaGVyZSBpcyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGlzIGFuZCBjb3JlIGtlcm5lbCBjb2RlLiBTZWxmLXRlc3RzIGFyZSBwcmltYXJpbHkgdXNlcnNwYWNlIHRlc3Qgc3VpdGVzIGFuZCBvdXQtb2YtdHJlZSB0ZXN0IGtlcm5lbCBtb2R1bGVzIGZvciB0aGVzZSB0ZXN0cy4gSXQncyAqbm90KiBjb2RlIHRoYXQncyBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSB2bWxpbnV4IG9yIGludG8gY29yZSBrZXJuZWwgZHJpdmVycy5cblxuR2l2ZW4gdGhpcyBjb250ZXh0LCBJJ2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgZnV6emluZy4gSSBoYXZlIGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBndWlkZWxpbmVzLiBQYXRjaGVzIHRoYXQgKm9ubHkqIGNoYW5nZSBEb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzIGRvbid0IHdhcnJhbnQgZnV6emluZy4gTW9yZSBpbXBvcnRhbnRseSwgdGhvc2UgdGhhdCBkbyAqbm90KiBtb2RpZnkgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzIGRvbid0IHR5cGljYWxseSB3YXJyYW50IGl0LCBlaXRoZXIuXG5cbkluIHRoaXMgY2FzZSwgc2luY2UgdGhpcyBwYXRjaCBkZWFscyBleGNsdXNpdmVseSB3aXRoIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLCBpdCBkb2Vzbid0IHJlcHJlc2VudCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLCBhbmQgdGhlcmVmb3JlLCBubyBmdW5jdGlvbmFsIGNoYW5nZXMuIEl0J3MgY29udGFpbmVkIHdpdGhpbiB0aGUgdGVzdGluZyBmcmFtZXdvcmsuXG5cblRvIGJlIGV4dHJhIHRob3JvdWdoLCBJJ2xsIHBlcmZvcm0gYSBxdWljayBjaGVjaywgbWF5YmUgd2l0aCBgZ3JlcHBlcmAsIHRvIGNvbmZpcm0gdGhhdCB0aGUgZGlmZiBpcyBpbmRlZWQgY29tcHJlaGVuc2l2ZS4gSnVzdCB0byBiZSBzdXJlLiBVbHRpbWF0ZWx5LCBiYXNlZCBvbiBteSBhbmFseXNpcywgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBub24tZnV6emFibGUgcGF0Y2ggZnJvbSBhIGNvcmUga2VybmVsIHBlcnNwZWN0aXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDUzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjE3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMDQ6NTI6NDguMTg0NjA0NTM2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDcyNzA0NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYz0xNzAxPWJwZl90ZXN0bW9kX29wc19fdGVzdF9yZXR1cm5fcmVmX2twdHIoaW50IGR1bW15LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2tfX3JlZixcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcwNi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jOjE3MDc6c3RhdGljIGludCBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfdHJhbXBvbGluZShpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcwOC1cXHRcXHRcXHRcXHRcXHQgICAgaW50IGFyZzQsIGludCBhcmc1LCBpbnQgYXJnNixcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM9MTcxND1zdGF0aWMgc3RydWN0IGJwZl90ZXN0bW9kX29wcyBfX2JwZl90ZXN0bW9kX29wcyA9IHtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMTcyMC1cXHQudGVzdF9yZXR1cm5fcmVmX2twdHIgPSBicGZfdGVzdG1vZF9vcHNfX3Rlc3RfcmV0dXJuX3JlZl9rcHRyLFxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MTcyMTpcXHQudGVzdF90cmFtcG9saW5lID0gYnBmX3Rlc3Rtb2Rfb3BzX190ZXN0X3RyYW1wb2xpbmUsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYy0xNzIyLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI4VDA0OjUyOjQ5LjkzMTg4MTE1MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjY3MzMyOTY3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBhbmQgdGhlIHNjb3BlIGlzIHJlYXNzdXJpbmdseSBuYXJyb3cuIEl0J3MgY29uZmluZWQgc29sZWx5IHRvIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LiBObyBrZXJuZWwgc291cmNlIGZpbGVzIG91dHNpZGUgb2YgYHRvb2xzL2AgYXJlIGV2ZW4gdG91Y2hlZCwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoYXQgSSBsaWtlIHRvIHNlZS4gVGhlc2UgYXJlIHNlbGZ0ZXN0IGFkZGl0aW9ucyBhbmQgbW9kaWZpY2F0aW9uczsgdGhleSdyZSAqbm90KiBnb2luZyB0byBibGVlZCBpbnRvIHRoZSBrZXJuZWwncyBleGVjdXRpb24gb3IgYWx0ZXIgaXRzIGJlaGF2aW9yIGluIGFueSB3YXkuIEdpdmVuIHRoYXQsICoqYFdvcnRoRnV6emluZ2AqKiBpcyB1bmVxdWl2b2NhbGx5ICoqYGZhbHNlYCoqLiBXZSdyZSBub3QgZGVhbGluZyB3aXRoIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgaGVyZTsgaXQncyBjb250YWluZWQgd2l0aGluIHRoZSB0ZXN0aW5nIGZyYW1ld29yay5cblxuTm93LCBsZXQncyBtYWtlIGRvdWJseSBzdXJlIGV2ZXJ5dGhpbmcgaXMgc2V0IGNvcnJlY3RseSBmb3IgYHNldC1yZXN1bHRzYC4gVGhlIGBFbmFibGVDb25maWdzYCBhbmQgYEZvY3VzU3ltYm9sc2AgYXJlIG51bGwgb3IgZW1wdHkg4oCTIHRoYXQncyBleHBlY3RlZCBnaXZlbiB0aGUgY29udGV4dC4gVGhlIGBSZWFzb25pbmdgIHNob3VsZCBzdWNjaW5jdGx5IHJlZmxlY3QgdGhhdCB0aGlzIHBhdGNoIGlzIGlzb2xhdGVkIHRvIEJQRiBzZWxmdGVzdHMgYW5kIGBicGZfdGVzdG1vZGAgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIGFuZCB0aGF0IGl0IGRvZXMgKm5vdCogdG91Y2ggdGhlIGZ1bmN0aW9uYWwgYXNwZWN0cyBvZiB0aGUgTGludXgga2VybmVsLiBJdCdzIHRpbWUgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGlzIHNvbGlkIGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODAsIk91dHB1dFRva2VucyI6NzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMDQ6NTI6NTYuNjY1MTgwNTM3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYW5kIHRoZSBzZWxmdGVzdCBrZXJuZWwgbW9kdWxlIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8uIEl0IGludHJvZHVjZXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUga2VybmVsIGNvZGUgb3IgZHJpdmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBhbmQgdGhlIHNlbGZ0ZXN0IGtlcm5lbCBtb2R1bGUgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgaW50cm9kdWNlcyBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBrZXJuZWwgY29kZSBvciBkcml2ZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjhUMDQ6NTI6NTYuNjY1MjA0NDk3WiIsIlNlcSI6NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl2cvs[1] Phase: Running StartedAt: 2026-08-28 04:53:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl2cvs[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-28 04:53:07 +0000 UTC FinishedAt: 2026-08-28 04:53:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}