Name: series-workflowm8vd8 Phase: Failed StartedAt: 2026-08-03 19:58:05 +0000 UTC FinishedAt: 2026-08-03 19:59:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8vd8[0] Phase: Succeeded StartedAt: 2026-08-03 19:58:05 +0000 UTC FinishedAt: 2026-08-03 19:59:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8vd8[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 19:58:05 +0000 UTC FinishedAt: 2026-08-03 19:59:48 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cywgcmVwbGFjaW5nIGAodWxvbmcpYCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMjA0ODk2ZDU5MWRlNzJmYjQzMmYxZTNkN2JiNGVmMjA0NGI5NzM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTo1OTozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuY1xuaW5kZXggNWQ5NmNkZjM4MmM0Ny4uOTBkMjJiMmNiNmNjOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmNcbkBAIC0xNjIsNyAmIzQzOzE2Miw3IEBAIHN0cnVjdCBzdF90aW1lIHtcbiBcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHU2NCBzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0U7XG4mIzQzO1x0dTY0IHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFO1xuIFx0dW5zaWduZWQgaW50IGdwYWdlcztcbiBcbiBcdGdwYWdlcyA9IHZtX2NhbGNfbnVtX2d1ZXN0X3BhZ2VzKFZNX01PREVfREVGQVVMVCwgU1RFQUxfVElNRV9TSVpFKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jXG5pbmRleCA0ZDlhZDYxMDRhNmVkLi44ZjI2YjFjZWUwY2QyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfcGVyZl90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jXG5AQCAtMTUyLDcgJiM0MzsxNTIsNyBAQCBzdGF0aWMgdm9pZCAqdmNwdV93b3JrZXIodm9pZCAqX19kYXRhKVxuIFx0XHRjYXNlIFVDQUxMX1NZTkM6XG4gXHRcdFx0VEVTVF9BU1NFUlQodWMuYXJnc1sxXSA9PSAwLFxuIFx0XHRcdFx0XCYjMzQ7VW5leHBlY3RlZCBzeW5jIHVjYWxsLCBnb3QgJWx4XCYjMzQ7LFxuLVx0XHRcdFx0KHVsb25nKXVjLmFyZ3NbMV0pO1xuJiM0MztcdFx0XHRcdCh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRcdHNlbV9wb3N0KFx1MDAyNnZjcHVfcmVhZHkpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRjYXNlIFVDQUxMX05PTkU6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmNcbmluZGV4IDc2ZmNkZDFmZDNjYjQuLmRkM2U1ZDkwZGU1Y2YgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jXG5AQCAtNzMsMTIgJiM0Mzs3MywxMiBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICYjNDM7IGkgKiBTVEVBTF9USU1FX1NJWkUpO1xuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3QodmNwdS1cdTAwM2V2bSwgc3RfZ3ZhW2ldKTtcbiBcbi1cdHZjcHVfc2V0X21zcih2Y3B1LCBNU1JfS1ZNX1NURUFMX1RJTUUsICh1bG9uZylzdF9ndmFbaV0gfCBLVk1fTVNSX0VOQUJMRUQpO1xuJiM0MztcdHZjcHVfc2V0X21zcih2Y3B1LCBNU1JfS1ZNX1NURUFMX1RJTUUsICh1bnNpZ25lZCBsb25nKXN0X2d2YVtpXSB8IEtWTV9NU1JfRU5BQkxFRCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KVxuIHtcbi1cdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1ZDUFUlZDpcXG5cJiMzNDssIHZjcHVfaWR4KTtcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0OyAgICBzdGVhbDogICAgICVsbGRcXG5cJiMzNDssIHN0LVx1MDAzZXN0ZWFsKTtcbkBAIC0xMDIsNyAmIzQzOzEwMiw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3N0ZWFsX3RpbWVfdWFwaSh2b2lkKVxuIFx0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBOVUxMKTtcbiBcbiBcdHJldCA9IF92Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLFxuLVx0XHRcdCAgICAodWxvbmcpU1RfR1BBX0JBU0UgfCBLVk1fU1RFQUxfUkVTRVJWRURfTUFTSyk7XG4mIzQzO1x0XHRcdCAgICAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRSB8IEtWTV9TVEVBTF9SRVNFUlZFRF9NQVNLKTtcbiBcdFRFU1RfQVNTRVJUKHJldCA9PSAwLCBcJiMzNDtCYWQgR1BBIGRpZG4mIzM5O3QgZmFpbFwmIzM0Oyk7XG4gXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG5AQCAtMTUxLDcgJiM0MzsxNTEsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9jb2RlKGludCBjcHUpXG4gXG4gXHRzdGF0dXMgPSBzbWNjYyhQVl9USU1FX1NULCAwKTtcbiBcdEdVRVNUX0FTU0VSVF9ORShzdGF0dXMsIC0xKTtcbi1cdEdVRVNUX0FTU0VSVF9FUShzdGF0dXMsICh1bG9uZylzdF9ndmFbY3B1XSk7XG4mIzQzO1x0R1VFU1RfQVNTRVJUX0VRKHN0YXR1cywgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2NwdV0pO1xuIFxuIFx0c3QgPSAoc3RydWN0IHN0X3RpbWUgKilzdGF0dXM7XG4gXHRHVUVTVF9TWU5DKDApO1xuQEAgLTE5MCwxMyAmIzQzOzE5MCwxMyBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICYjNDM7IGkgKiBTVEVBTF9USU1FX1NJWkUpO1xuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHN0X2d2YVtpXSk7XG4gXG4tXHRzdF9pcGEgPSAodWxvbmcpc3RfZ3ZhW2ldO1xuJiM0MztcdHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKXN0X2d2YVtpXTtcbiBcdHZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpXG4ge1xuLVx0c3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XG4mIzQzO1x0c3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1ZDUFUlZDpcXG5cJiMzNDssIHZjcHVfaWR4KTtcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0OyAgICByZXY6ICAgICAlZFxcblwmIzM0Oywgc3QtXHUwMDNlcmV2KTtcbkBAIC0yMjMsMTEgJiM0MzsyMjMsMTEgQEAgc3RhdGljIHZvaWQgY2hlY2tfc3RlYWxfdGltZV91YXBpKHZvaWQpXG4gXHR2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLCBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7XG4gXHR2aXJ0X21hcCh2bSwgU1RfR1BBX0JBU0UsIFNUX0dQQV9CQVNFLCAxKTtcbiBcbi1cdHN0X2lwYSA9ICh1bG9uZylTVF9HUEFfQkFTRSB8IDE7XG4mIzQzO1x0c3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpU1RfR1BBX0JBU0UgfCAxO1xuIFx0cmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4gXHRURVNUX0FTU0VSVChyZXQgPT0gLTEgXHUwMDI2XHUwMDI2IGVycm5vID09IEVJTlZBTCwgXCYjMzQ7QmFkIElQQSBkaWRuJiMzOTt0IHJlcG9ydCBFSU5WQUxcJiMzNDspO1xuIFxuLVx0c3RfaXBhID0gKHVsb25nKVNUX0dQQV9CQVNFO1xuJiM0MztcdHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFO1xuIFx0dmNwdV9pb2N0bCh2Y3B1LCBLVk1fU0VUX0RFVklDRV9BVFRSLCBcdTAwMjZkZXYpO1xuIFxuIFx0cmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG5AQCAtMzE4LDcgJiM0MzszMTgsNyBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeClcbiB7XG4tXHRzdHJ1Y3Qgc3RhX3N0cnVjdCAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiYjNDM7XHRzdHJ1Y3Qgc3RhX3N0cnVjdCAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xuIFx0aW50IGk7XG4gXG4gXHRwcl9pbmZvKFwmIzM0O1ZDUFUlZDpcXG5cJiMzNDssIHZjcHVfaWR4KTtcbkBAIC00NTUsNyAmIzQzOzQ1NSw3IEBAIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpKVxuIFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KVxuIHtcbi1cdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1ZDUFUlZDpcXG5cJiMzNDssIHZjcHVfaWR4KTtcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0OyAgICBzdGVhbDogICAgICVsbGRcXG5cJiMzNDssIHN0LVx1MDAzZXN0ZWFsKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmNcbmluZGV4IDRlNjNkYTJiMTg4OWMuLjY2YjZlNDQyYzQxYzAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYW14X3Rlc3QuY1xuQEAgLTMyNSw3ICYjNDM7MzI1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0XHRcdHZjcHVfcmVnc19nZXQodmNwdSwgXHUwMDI2cmVnczIpO1xuIFx0XHRcdFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHRcdFx0XHQgICAgXCYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseFwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XG4mIzQzO1x0XHRcdFx0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0XHRcdH1cbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvY3B1aWRfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmNcbmluZGV4IGVmMGRkZDI0MDg4NzQuLmRjZDk5YTA1MDFlZWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmNcbkBAIC0xMjgsNyAmIzQzOzEyOCw3IEBAIHN0YXRpYyB2b2lkIHJ1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHN0YWdlKVxuIFx0XHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXCYjMzQ7aGVsbG9cJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlICYjNDM7IDEsXG4gXHRcdFx0ICAgIFwmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcJiMzNDssXG4tXHRcdFx0ICAgIHN0YWdlICYjNDM7IDEsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0ICAgIHN0YWdlICYjNDM7IDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRyZXR1cm47XG4gXHRjYXNlIFVDQUxMX0RPTkU6XG4gXHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfY2xvY2suY1xuaW5kZXggYzA4M2NlYTU0NmRjZS4uM2RjOWE5YzJhYTU0ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcbkBAIC0yNDgsNyAmIzQzOzI0OCw3IEBAIGludCBtYWluKHZvaWQpXG4gXHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcJiMzNDtoZWxsb1wmIzM0OykgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsXG4gXHRcdFx0ICAgIFwmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcJiMzNDssXG4tXHRcdFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XG4mIzQzO1x0XHRcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XG4gXG4gXHRcdC8qIFJlc2V0IGt2bWNsb2NrIHRyaWdnZXJpbmcgVFNDIHBhZ2UgdXBkYXRlICovXG4gXHRcdGlmIChzdGFnZSA9PSA3IHx8IHN0YWdlID09IDggfHwgc3RhZ2UgPT0gMTApIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9ldm1jcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuY1xuaW5kZXggYzdmYTExNGFlZTIwZi4uMzU4MjFjNjJhMWJkMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcbkBAIC0yMjUsNyAmIzQzOzIyNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3ZtX3ZjcHUgKnNhdmVfcmVzdG9yZV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSxcbiBcdHZjcHVfcmVnc19nZXQodmNwdSwgXHUwMDI2cmVnczIpO1xuIFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHQgICAgXCYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseFwmIzM0Oyxcbi1cdFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XG4mIzQzO1x0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0cmV0dXJuIHZjcHU7XG4gfVxuIFxuQEAgLTI4MSw3ICYjNDM7MjgxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xuIFx0XHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXCYjMzQ7aGVsbG9cJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcJiMzNDtTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCYjMzQ7LFxuLVx0XHRcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuJiM0MztcdFx0XHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFxuIFx0XHR2Y3B1ID0gc2F2ZV9yZXN0b3JlX3ZtKHZtLCB2Y3B1KTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuY1xuaW5kZXggN2E2MmY2YTlkNjA2ZC4uMmNlMmIwMDkyZDQzOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmNcbkBAIC0xOTAsNyAmIzQzOzE5MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdC8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi9cbiBcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwmIzM0O2hlbGxvXCYjMzQ7KSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdWMuYXJnc1sxXSA9PSBzdGFnZSwgXCYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwmIzM0Oyxcbi1cdFx0XHQgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0ICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9ib290X2NwdV9pZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xuaW5kZXggOGUzODk4NjQ2YzY5ZC4uOTA5Y2Q5ZTgzZmRhZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmNcbkBAIC02OSw3ICYjNDM7NjksNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwmIzM0O2hlbGxvXCYjMzQ7KSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdFx0dWMuYXJnc1sxXSA9PSBzdGFnZSAmIzQzOyAxLFxuIFx0XHRcdFx0XHRcJiMzNDtTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCYjMzQ7LFxuLVx0XHRcdFx0XHRzdGFnZSAmIzQzOyAxLCAodWxvbmcpdWMuYXJnc1sxXSk7XG4mIzQzO1x0XHRcdFx0XHRzdGFnZSAmIzQzOyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcdFx0XHR0ZXN0X3NldF9ic3BfYnVzeSh2Y3B1LCBcJiMzNDt3aGlsZSBydW5uaW5nIHZtXCYjMzQ7KTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcbmluZGV4IDQwOWM2Y2M5ZjkyMTQuLjQ2MWZkYjZjY2FkYjEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcbkBAIC0zMDMsNyAmIzQzOzMwMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdC8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi9cbiBcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwmIzM0O2hlbGxvXCYjMzQ7KSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdWMuYXJnc1sxXSA9PSBzdGFnZSwgXCYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwmIzM0Oyxcbi1cdFx0XHQgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0ICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcbiBcdFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XG4gXHRcdG1lbXNldChcdTAwMjZyZWdzMSwgMCwgc2l6ZW9mKHJlZ3MxKSk7XG5AQCAtMzUwLDcgJiM0MzszNTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHR2Y3B1X3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnJlZ3MyKTtcbiBcdFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHRcdCAgICBcJiMzNDtVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4XCYjMzQ7LFxuLVx0XHRcdCAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpO1xuJiM0MztcdFx0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0fVxuIFxuIGRvbmU6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni90c2NfbXNyc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuY1xuaW5kZXggOTE1ODM5NjlhMTRmYi4uNTU3Nzk3NzM2MTRiOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuY1xuQEAgLTc4LDcgJiM0Mzs3OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHN0YWdlKVxuIFx0XHRlbHNlXG4gXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKFxuIFx0XHRcdFx0XCYjMzQ7c3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwmIzM0Oyxcbi1cdFx0XHRcdHN0YWdlICYjNDM7IDEsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0XHRzdGFnZSAmIzQzOyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcdFx0cmV0dXJuO1xuIFx0Y2FzZSBVQ0FMTF9ET05FOlxuIFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7c3RhZ2UgJWQgcGFzc2VkXFxuXCYjMzQ7LCBzdGFnZSAmIzQzOyAxKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmNcbmluZGV4IGYxM2RlZTMxNzM4MzcuLjc5ZmJjNThiOGM1ZTEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xuQEAgLTExMiw3ICYjNDM7MTEyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0fVxuIFxuIFx0XHRURVNUX0FTU0VSVCh1Yy5hcmdzWzFdID09IHN0YWdlLFxuLVx0XHRcdCAgICBcJiMzNDtFeHBlY3RlZCBzdGFnZSAlZCwgZ290IHN0YWdlICVsdVwmIzM0Oywgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O0V4cGVjdGVkIHN0YWdlICVkLCBnb3Qgc3RhZ2UgJWx1XCYjMzQ7LCBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XG4gXHRcdGlmIChzdGFnZSA9PSAxKSB7XG4gXHRcdFx0cHJfaW5mbyhcJiMzNDtMMiBpcyBhY3RpdmU7IHBlcmZvcm1pbmcgc2F2ZS9yZXN0b3JlLlxcblwmIzM0Oyk7XG4gXHRcdFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuY1xuaW5kZXggMWI3YjZiYTIzZGU3Ni4uNjE0MjA3MzViZWExZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuY1xuQEAgLTE5Niw3ICYjNDM7MTk2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xuIFx0XHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXCYjMzQ7aGVsbG9cJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcJiMzNDtTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCYjMzQ7LFxuLVx0XHRcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuJiM0MztcdFx0XHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHQvKlxuIFx0XHQgKiBJZiB0aGlzIHN0YWdlIDIgdGhlbiB3ZSBzaG91bGQgdmVyaWZ5IHRoZSB2bXggcHQgZXhwaXJ5XG4gXHRcdCAqIGlzIGFzIGV4cGVjdGVkLlxuQEAgLTIzNyw3ICYjNDM7MjM3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0dmNwdV9yZWdzX2dldCh2Y3B1LCBcdTAwMjZyZWdzMik7XG4gXHRcdFRFU1RfQVNTRVJUKCFtZW1jbXAoXHUwMDI2cmVnczEsIFx1MDAyNnJlZ3MyLCBzaXplb2YocmVnczIpKSxcbiBcdFx0XHQgICAgXCYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseFwmIzM0Oyxcbi1cdFx0XHQgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTtcbiYjNDM7XHRcdFx0ICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTtcbiBcdH1cbiBcbiBkb25lOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMsIHJlcGxhY2luZyBgKHVsb25nKWAgd2l0aCBgKHVuc2lnbmVkIGxvbmcpYC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjIwNDg5NmQ1OTFkZTcyZmI0MzJmMWUzZDdiYjRlZjIwNDRiOTczOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTk6NTk6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuYwppbmRleCA1ZDk2Y2RmMzgyYzQ3Li45MGQyMmIyY2I2Y2M5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmMKQEAgLTE2Miw3ICYjNDM7MTYyLDcgQEAgc3RydWN0IHN0X3RpbWUgewogCiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXU2NCBzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0U7CiYjNDM7CXU2NCBzdF9pcGEgPSAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRTsKIAl1bnNpZ25lZCBpbnQgZ3BhZ2VzOwogCiAJZ3BhZ2VzID0gdm1fY2FsY19udW1fZ3Vlc3RfcGFnZXMoVk1fTU9ERV9ERUZBVUxULCBTVEVBTF9USU1FX1NJWkUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfcGVyZl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYwppbmRleCA0ZDlhZDYxMDRhNmVkLi44ZjI2YjFjZWUwY2QyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYwpAQCAtMTUyLDcgJiM0MzsxNTIsNyBAQCBzdGF0aWMgdm9pZCAqdmNwdV93b3JrZXIodm9pZCAqX19kYXRhKQogCQljYXNlIFVDQUxMX1NZTkM6CiAJCQlURVNUX0FTU0VSVCh1Yy5hcmdzWzFdID09IDAsCiAJCQkJJiMzNDtVbmV4cGVjdGVkIHN5bmMgdWNhbGwsIGdvdCAlbHgmIzM0OywKLQkJCQkodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJCSh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pOwogCQkJc2VtX3Bvc3QoJmFtcDt2Y3B1X3JlYWR5KTsKIAkJCWNvbnRpbnVlOwogCQljYXNlIFVDQUxMX05PTkU6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuYwppbmRleCA3NmZjZGQxZmQzY2I0Li5kZDNlNWQ5MGRlNWNmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmMKQEAgLTczLDEyICYjNDM7NzMsMTIgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpCiAJc3RfZ3ZhW2ldID0gKHZvaWQgKikoU1RfR1BBX0JBU0UgJiM0MzsgaSAqIFNURUFMX1RJTUVfU0laRSk7CiAJc3luY19nbG9iYWxfdG9fZ3Vlc3QodmNwdS0mZ3Q7dm0sIHN0X2d2YVtpXSk7CiAKLQl2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLCAodWxvbmcpc3RfZ3ZhW2ldIHwgS1ZNX01TUl9FTkFCTEVEKTsKJiM0MzsJdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2ldIHwgS1ZNX01TUl9FTkFCTEVEKTsKIH0KIAogc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpCiB7Ci0Jc3RydWN0IGt2bV9zdGVhbF90aW1lICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVsb25nKXN0X2d2YVt2Y3B1X2lkeF0pOwomIzQzOwlzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTsKIAogCWtzZnRfcHJpbnRfbXNnKCYjMzQ7VkNQVSVkOlxuJiMzNDssIHZjcHVfaWR4KTsKIAlrc2Z0X3ByaW50X21zZygmIzM0OyAgICBzdGVhbDogICAgICVsbGRcbiYjMzQ7LCBzdC0mZ3Q7c3RlYWwpOwpAQCAtMTAyLDcgJiM0MzsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGVhbF90aW1lX3VhcGkodm9pZCkKIAl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgTlVMTCk7CiAKIAlyZXQgPSBfdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwKLQkJCSAgICAodWxvbmcpU1RfR1BBX0JBU0UgfCBLVk1fU1RFQUxfUkVTRVJWRURfTUFTSyk7CiYjNDM7CQkJICAgICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFIHwgS1ZNX1NURUFMX1JFU0VSVkVEX01BU0spOwogCVRFU1RfQVNTRVJUKHJldCA9PSAwLCAmIzM0O0JhZCBHUEEgZGlkbiYjMzk7dCBmYWlsJiMzNDspOwogCiAJa3ZtX3ZtX2ZyZWUodm0pOwpAQCAtMTUxLDcgJiM0MzsxNTEsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9jb2RlKGludCBjcHUpCiAKIAlzdGF0dXMgPSBzbWNjYyhQVl9USU1FX1NULCAwKTsKIAlHVUVTVF9BU1NFUlRfTkUoc3RhdHVzLCAtMSk7Ci0JR1VFU1RfQVNTRVJUX0VRKHN0YXR1cywgKHVsb25nKXN0X2d2YVtjcHVdKTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHN0YXR1cywgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2NwdV0pOwogCiAJc3QgPSAoc3RydWN0IHN0X3RpbWUgKilzdGF0dXM7CiAJR1VFU1RfU1lOQygwKTsKQEAgLTE5MCwxMyAmIzQzOzE5MCwxMyBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSkKIAlzdF9ndmFbaV0gPSAodm9pZCAqKShTVF9HUEFfQkFTRSAmIzQzOyBpICogU1RFQUxfVElNRV9TSVpFKTsKIAlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgc3RfZ3ZhW2ldKTsKIAotCXN0X2lwYSA9ICh1bG9uZylzdF9ndmFbaV07CiYjNDM7CXN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKXN0X2d2YVtpXTsKIAl2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKIH0KIAogc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpCiB7Ci0Jc3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7CiYjNDM7CXN0cnVjdCBzdF90aW1lICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7CiAKIAlrc2Z0X3ByaW50X21zZygmIzM0O1ZDUFUlZDpcbiYjMzQ7LCB2Y3B1X2lkeCk7CiAJa3NmdF9wcmludF9tc2coJiMzNDsgICAgcmV2OiAgICAgJWRcbiYjMzQ7LCBzdC0mZ3Q7cmV2KTsKQEAgLTIyMywxMSAmIzQzOzIyMywxMSBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGVhbF90aW1lX3VhcGkodm9pZCkKIAl2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLCBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7CiAJdmlydF9tYXAodm0sIFNUX0dQQV9CQVNFLCBTVF9HUEFfQkFTRSwgMSk7CiAKLQlzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0UgfCAxOwomIzQzOwlzdF9pcGEgPSAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRSB8IDE7CiAJcmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKIAlURVNUX0FTU0VSVChyZXQgPT0gLTEgJmFtcDsmYW1wOyBlcnJubyA9PSBFSU5WQUwsICYjMzQ7QmFkIElQQSBkaWRuJiMzOTt0IHJlcG9ydCBFSU5WQUwmIzM0Oyk7CiAKLQlzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0U7CiYjNDM7CXN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFOwogCXZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgJmFtcDtkZXYpOwogCiAJcmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKQEAgLTMxOCw3ICYjNDM7MzE4LDcgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpCiAKIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KQogewotCXN0cnVjdCBzdGFfc3RydWN0ICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVsb25nKXN0X2d2YVt2Y3B1X2lkeF0pOwomIzQzOwlzdHJ1Y3Qgc3RhX3N0cnVjdCAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pOwogCWludCBpOwogCiAJcHJfaW5mbygmIzM0O1ZDUFUlZDpcbiYjMzQ7LCB2Y3B1X2lkeCk7CkBAIC00NTUsNyAmIzQzOzQ1NSw3IEBAIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpKQogCiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeCkKIHsKLQlzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7CiYjNDM7CXN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pOwogCiAJa3NmdF9wcmludF9tc2coJiMzNDtWQ1BVJWQ6XG4mIzM0OywgdmNwdV9pZHgpOwogCWtzZnRfcHJpbnRfbXNnKCYjMzQ7ICAgIHN0ZWFsOiAgICAgJWxsZFxuJiMzNDssIHN0LSZndDtzdGVhbCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmMKaW5kZXggNGU2M2RhMmIxODg5Yy4uNjZiNmU0NDJjNDFjMCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYW14X3Rlc3QuYwpAQCAtMzI1LDcgJiM0MzszMjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCXZjcHVfcmVnc19nZXQodmNwdSwgJmFtcDtyZWdzMik7CiAJCQkJVEVTVF9BU1NFUlQoIW1lbWNtcCgmYW1wO3JlZ3MxLCAmYW1wO3JlZ3MyLCBzaXplb2YocmVnczIpKSwKIAkJCQkJICAgICYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseCYjMzQ7LAotCQkJCQkgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTsKJiM0MzsJCQkJCSAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBVQ0FMTF9ET05FOgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuYwppbmRleCBlZjBkZGQyNDA4ODc0Li5kY2Q5OWEwNTAxZWVhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuYwpAQCAtMTI4LDcgJiM0MzsxMjgsNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzdGFnZSkKIAkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UgJiM0MzsgMSwKIAkJCSAgICAmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHgmIzM0OywKLQkJCSAgICBzdGFnZSAmIzQzOyAxLCAodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJICAgIHN0YWdlICYjNDM7IDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pOwogCQlyZXR1cm47CiAJY2FzZSBVQ0FMTF9ET05FOgogCQlyZXR1cm47CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfY2xvY2suYwppbmRleCBjMDgzY2VhNTQ2ZGNlLi4zZGM5YTljMmFhNTRkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmMKQEAgLTI0OCw3ICYjNDM7MjQ4LDcgQEAgaW50IG1haW4odm9pZCkKIAkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsCiAJCQkgICAgJiMzNDtTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4JiMzNDssCi0JCQkgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTsKJiM0MzsJCQkgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pOwogCiAJCS8qIFJlc2V0IGt2bWNsb2NrIHRyaWdnZXJpbmcgVFNDIHBhZ2UgdXBkYXRlICovCiAJCWlmIChzdGFnZSA9PSA3IHx8IHN0YWdlID09IDggfHwgc3RhZ2UgPT0gMTApIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9ldm1jcy5jCmluZGV4IGM3ZmExMTRhZWUyMGYuLjM1ODIxYzYyYTFiZDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuYwpAQCAtMjI1LDcgJiM0MzsyMjUsNyBAQCBzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICpzYXZlX3Jlc3RvcmVfdm0oc3RydWN0IGt2bV92bSAqdm0sCiAJdmNwdV9yZWdzX2dldCh2Y3B1LCAmYW1wO3JlZ3MyKTsKIAlURVNUX0FTU0VSVCghbWVtY21wKCZhbXA7cmVnczEsICZhbXA7cmVnczIsIHNpemVvZihyZWdzMikpLAogCQkgICAgJiMzNDtVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4JiMzNDssCi0JCSAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpOwomIzQzOwkJICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTsKIAlyZXR1cm4gdmNwdTsKIH0KIApAQCAtMjgxLDcgJiM0MzsyODEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkvKiBVQ0FMTF9TWU5DIGlzIGhhbmRsZWQgaGVyZS4gICovCiAJCVRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCAmIzM0O2hlbGxvJiMzNDspICZhbXA7JmFtcDsKIAkJCSAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCAmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHgmIzM0OywKLQkJCSAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pOwomIzQzOwkJCSAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7CiAKIAkJdmNwdSA9IHNhdmVfcmVzdG9yZV92bSh2bSwgdmNwdSk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jCmluZGV4IDdhNjJmNmE5ZDYwNmQuLjJjZTJiMDA5MmQ0MzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuYwpAQCAtMTkwLDcgJiM0MzsxOTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkvKiBVQ0FMTF9TWU5DIGlzIGhhbmRsZWQgaGVyZS4gICovCiAJCVRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCAmIzM0O2hlbGxvJiMzNDspICZhbXA7JmFtcDsKIAkJCSAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCAmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHgmIzM0OywKLQkJCSAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pOwomIzQzOwkJCSAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7CiAKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9ib290X2NwdV9pZC5jCmluZGV4IDhlMzg5ODY0NmM2OWQuLjkwOWNkOWU4M2ZkYWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuYwpAQCAtNjksNyAmIzQzOzY5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJCQl1Yy5hcmdzWzFdID09IHN0YWdlICYjNDM7IDEsCiAJCQkJCSYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseCYjMzQ7LAotCQkJCQlzdGFnZSAmIzQzOyAxLCAodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJCQlzdGFnZSAmIzQzOyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTsKIAkJCXRlc3Rfc2V0X2JzcF9idXN5KHZjcHUsICYjMzQ7d2hpbGUgcnVubmluZyB2bSYjMzQ7KTsKIAkJCWJyZWFrOwogCQljYXNlIFVDQUxMX0RPTkU6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jCmluZGV4IDQwOWM2Y2M5ZjkyMTQuLjQ2MWZkYjZjY2FkYjEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jCkBAIC0zMDMsNyAmIzQzOzMwMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCS8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi8KIAkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsICYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseCYjMzQ7LAotCQkJICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTsKIAogCQlzdGF0ZSA9IHZjcHVfc2F2ZV9zdGF0ZSh2Y3B1KTsKIAkJbWVtc2V0KCZhbXA7cmVnczEsIDAsIHNpemVvZihyZWdzMSkpOwpAQCAtMzUwLDcgJiM0MzszNTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl2Y3B1X3JlZ3NfZ2V0KHZjcHUsICZhbXA7cmVnczIpOwogCQlURVNUX0FTU0VSVCghbWVtY21wKCZhbXA7cmVnczEsICZhbXA7cmVnczIsIHNpemVvZihyZWdzMikpLAogCQkJICAgICYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseCYjMzQ7LAotCQkJICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7CiYjNDM7CQkJICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTsKIAl9CiAKIGRvbmU6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jCmluZGV4IDkxNTgzOTY5YTE0ZmIuLjU1Nzc5NzczNjE0YjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jCkBAIC03OCw3ICYjNDM7NzgsNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzdGFnZSkKIAkJZWxzZQogCQkJa3NmdF90ZXN0X3Jlc3VsdF9mYWlsKAogCQkJCSYjMzQ7c3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseCYjMzQ7LAotCQkJCXN0YWdlICYjNDM7IDEsICh1bG9uZyl1Yy5hcmdzWzFdKTsKJiM0MzsJCQkJc3RhZ2UgJiM0MzsgMSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7CiAJCXJldHVybjsKIAljYXNlIFVDQUxMX0RPTkU6CiAJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O3N0YWdlICVkIHBhc3NlZFxuJiMzNDssIHN0YWdlICYjNDM7IDEpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfbmVzdGVkX2xhNTdfc3RhdGVfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfbmVzdGVkX2xhNTdfc3RhdGVfdGVzdC5jCmluZGV4IGYxM2RlZTMxNzM4MzcuLjc5ZmJjNThiOGM1ZTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmMKQEAgLTExMiw3ICYjNDM7MTEyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJfQogCiAJCVRFU1RfQVNTRVJUKHVjLmFyZ3NbMV0gPT0gc3RhZ2UsCi0JCQkgICAgJiMzNDtFeHBlY3RlZCBzdGFnZSAlZCwgZ290IHN0YWdlICVsdSYjMzQ7LCBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pOwomIzQzOwkJCSAgICAmIzM0O0V4cGVjdGVkIHN0YWdlICVkLCBnb3Qgc3RhZ2UgJWx1JiMzNDssIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTsKIAkJaWYgKHN0YWdlID09IDEpIHsKIAkJCXByX2luZm8oJiMzNDtMMiBpcyBhY3RpdmU7IHBlcmZvcm1pbmcgc2F2ZS9yZXN0b3JlLlxuJiMzNDspOwogCQkJc3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jCmluZGV4IDFiN2I2YmEyM2RlNzYuLjYxNDIwNzM1YmVhMWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jCkBAIC0xOTYsNyAmIzQzOzE5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCS8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi8KIAkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsICYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseCYjMzQ7LAotCQkJICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTsKIAkJLyoKIAkJICogSWYgdGhpcyBzdGFnZSAyIHRoZW4gd2Ugc2hvdWxkIHZlcmlmeSB0aGUgdm14IHB0IGV4cGlyeQogCQkgKiBpcyBhcyBleHBlY3RlZC4KQEAgLTIzNyw3ICYjNDM7MjM3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJdmNwdV9yZWdzX2dldCh2Y3B1LCAmYW1wO3JlZ3MyKTsKIAkJVEVTVF9BU1NFUlQoIW1lbWNtcCgmYW1wO3JlZ3MxLCAmYW1wO3JlZ3MyLCBzaXplb2YocmVnczIpKSwKIAkJCSAgICAmIzM0O1VuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHgmIzM0OywKLQkJCSAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpOwomIzQzOwkJCSAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7CiAJfQogCiBkb25lOgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzAyCgkJCQkJCQlvdXRwdXQ6IDY2CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBTZWxmdGVzdCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O3NlbGZ0ZXN0cywmIzM0OyB3aGljaCBhcmUgdXN1YWxseSBhIGxvd2VyIHByaW9yaXR5IHRoYW4gY29yZSBrZXJuZWwgbW9kaWZpY2F0aW9ucyB3aGVuIGNvbnNpZGVyaW5nIGZ1enppbmcgcmVsZXZhbmNlLiBNeSBpbml0aWFsIHJlYWQgb2YgdGhlIGNoYW5nZSBpcyBzaW1wbGU7IGl0JiMzOTtzIGEgdHlwZSBjYXN0IHJlcGxhY2VtZW50OiBgKHVsb25nKWAgaXMgYmVpbmcgc3dhcHBlZCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBBIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2UgbGlrZSB0aGlzLCB3aXRoaW4gdGhlIHRlc3RpbmcgZnJhbWV3b3JrLCBzY3JlYW1zICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgdG8gbWUuCgpCdXQsIGFzIGFsd2F5cywgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBMZXQmIzM5O3MgY29uZmlybSB0aGlzIGRvZXNuJiMzOTt0IGFjY2lkZW50YWxseSB0b3VjaCBzb21ldGhpbmcgZGVlcGVyLiBJ4oCZbGwgcmUtZXhhbWluZSB0aGUgZGlmZi4gQWgsIHllcywganVzdCBhcyBzdXNwZWN0ZWQ6IHRoZSBjaGFuZ2UgaXMgY29uZmluZWQgdG8gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYCBkaXJlY3RvcnkgYW5kIGlzLCBpbiBmYWN0LCBvbmx5IGFib3V0IHR5cGUgY2FzdHMuIE5vIGltcGFjdCBvbiBhbnkgY3JpdGljYWwga2VybmVsIGNvZGUuIFRoZXJlZm9yZSwgYWZ0ZXIgbXkgZG91YmxlLWNoZWNrLCBJIGNhbiBjb25maWRlbnRseSByZXR1cm4gJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cywgcmVwbGFjaW5nIGAodWxvbmcpYCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cywgcmVwbGFjaW5nIGAodWxvbmcpYCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo1OTozMi4zOTI3NjkxNzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjEyNjgyNzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMsIHJlcGxhY2luZyBgKHVsb25nKWAgd2l0aCBgKHVuc2lnbmVkIGxvbmcpYC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo1OTozMi4zOTI3NzUyNzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0OTUwNTgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIyMDQ4OTZkNTkxZGU3MmZiNDMyZjFlM2Q3YmI0ZWYyMDQ0Yjk3MzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTo1OTozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuY1xcbmluZGV4IDVkOTZjZGYzODJjNDcuLjkwZDIyYjJjYjZjYzkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmNcXG5AQCAtMTYyLDcgKzE2Miw3IEBAIHN0cnVjdCBzdF90aW1lIHtcXG4gXFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4tXFx0dTY0IHN0X2lwYSA9ICh1bG9uZylTVF9HUEFfQkFTRTtcXG4rXFx0dTY0IHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFO1xcbiBcXHR1bnNpZ25lZCBpbnQgZ3BhZ2VzO1xcbiBcXG4gXFx0Z3BhZ2VzID0gdm1fY2FsY19udW1fZ3Vlc3RfcGFnZXMoVk1fTU9ERV9ERUZBVUxULCBTVEVBTF9USU1FX1NJWkUpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jXFxuaW5kZXggNGQ5YWQ2MTA0YTZlZC4uOGYyNmIxY2VlMGNkMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jXFxuQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgdm9pZCAqdmNwdV93b3JrZXIodm9pZCAqX19kYXRhKVxcbiBcXHRcXHRjYXNlIFVDQUxMX1NZTkM6XFxuIFxcdFxcdFxcdFRFU1RfQVNTRVJUKHVjLmFyZ3NbMV0gPT0gMCxcXG4gXFx0XFx0XFx0XFx0XFxcIlVuZXhwZWN0ZWQgc3luYyB1Y2FsbCwgZ290ICVseFxcXCIsXFxuLVxcdFxcdFxcdFxcdCh1bG9uZyl1Yy5hcmdzWzFdKTtcXG4rXFx0XFx0XFx0XFx0KHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcdFxcdFxcdHNlbV9wb3N0KFxcdTAwMjZ2Y3B1X3JlYWR5KTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGNhc2UgVUNBTExfTk9ORTpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmNcXG5pbmRleCA3NmZjZGQxZmQzY2I0Li5kZDNlNWQ5MGRlNWNmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jXFxuQEAgLTczLDEyICs3MywxMiBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcXG4gXFx0c3RfZ3ZhW2ldID0gKHZvaWQgKikoU1RfR1BBX0JBU0UgKyBpICogU1RFQUxfVElNRV9TSVpFKTtcXG4gXFx0c3luY19nbG9iYWxfdG9fZ3Vlc3QodmNwdS1cXHUwMDNldm0sIHN0X2d2YVtpXSk7XFxuIFxcbi1cXHR2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLCAodWxvbmcpc3RfZ3ZhW2ldIHwgS1ZNX01TUl9FTkFCTEVEKTtcXG4rXFx0dmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2ldIHwgS1ZNX01TUl9FTkFCTEVEKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpXFxuIHtcXG4tXFx0c3RydWN0IGt2bV9zdGVhbF90aW1lICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xcbitcXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcXG4gXFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJWQ1BVJWQ6XFxcXG5cXFwiLCB2Y3B1X2lkeCk7XFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCIgICAgc3RlYWw6ICAgICAlbGxkXFxcXG5cXFwiLCBzdC1cXHUwMDNlc3RlYWwpO1xcbkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfc3RlYWxfdGltZV91YXBpKHZvaWQpXFxuIFxcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXFx1MDAyNnZjcHUsIE5VTEwpO1xcbiBcXG4gXFx0cmV0ID0gX3ZjcHVfc2V0X21zcih2Y3B1LCBNU1JfS1ZNX1NURUFMX1RJTUUsXFxuLVxcdFxcdFxcdCAgICAodWxvbmcpU1RfR1BBX0JBU0UgfCBLVk1fU1RFQUxfUkVTRVJWRURfTUFTSyk7XFxuK1xcdFxcdFxcdCAgICAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRSB8IEtWTV9TVEVBTF9SRVNFUlZFRF9NQVNLKTtcXG4gXFx0VEVTVF9BU1NFUlQocmV0ID09IDAsIFxcXCJCYWQgR1BBIGRpZG4ndCBmYWlsXFxcIik7XFxuIFxcbiBcXHRrdm1fdm1fZnJlZSh2bSk7XFxuQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9jb2RlKGludCBjcHUpXFxuIFxcbiBcXHRzdGF0dXMgPSBzbWNjYyhQVl9USU1FX1NULCAwKTtcXG4gXFx0R1VFU1RfQVNTRVJUX05FKHN0YXR1cywgLTEpO1xcbi1cXHRHVUVTVF9BU1NFUlRfRVEoc3RhdHVzLCAodWxvbmcpc3RfZ3ZhW2NwdV0pO1xcbitcXHRHVUVTVF9BU1NFUlRfRVEoc3RhdHVzLCAodW5zaWduZWQgbG9uZylzdF9ndmFbY3B1XSk7XFxuIFxcbiBcXHRzdCA9IChzdHJ1Y3Qgc3RfdGltZSAqKXN0YXR1cztcXG4gXFx0R1VFU1RfU1lOQygwKTtcXG5AQCAtMTkwLDEzICsxOTAsMTMgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpXFxuIFxcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICsgaSAqIFNURUFMX1RJTUVfU0laRSk7XFxuIFxcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBzdF9ndmFbaV0pO1xcbiBcXG4tXFx0c3RfaXBhID0gKHVsb25nKXN0X2d2YVtpXTtcXG4rXFx0c3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2ldO1xcbiBcXHR2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFxcdTAwMjZkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeClcXG4ge1xcbi1cXHRzdHJ1Y3Qgc3RfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcXG4rXFx0c3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcXG4gXFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJWQ1BVJWQ6XFxcXG5cXFwiLCB2Y3B1X2lkeCk7XFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCIgICAgcmV2OiAgICAgJWRcXFxcblxcXCIsIHN0LVxcdTAwM2VyZXYpO1xcbkBAIC0yMjMsMTEgKzIyMywxMSBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGVhbF90aW1lX3VhcGkodm9pZClcXG4gXFx0dm1fdXNlcnNwYWNlX21lbV9yZWdpb25fYWRkKHZtLCBWTV9NRU1fU1JDX0FOT05ZTU9VUywgU1RfR1BBX0JBU0UsIDEsIDEsIDApO1xcbiBcXHR2aXJ0X21hcCh2bSwgU1RfR1BBX0JBU0UsIFNUX0dQQV9CQVNFLCAxKTtcXG4gXFxuLVxcdHN0X2lwYSA9ICh1bG9uZylTVF9HUEFfQkFTRSB8IDE7XFxuK1xcdHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFIHwgMTtcXG4gXFx0cmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFxcdTAwMjZkZXYpO1xcbiBcXHRURVNUX0FTU0VSVChyZXQgPT0gLTEgXFx1MDAyNlxcdTAwMjYgZXJybm8gPT0gRUlOVkFMLCBcXFwiQmFkIElQQSBkaWRuJ3QgcmVwb3J0IEVJTlZBTFxcXCIpO1xcbiBcXG4tXFx0c3RfaXBhID0gKHVsb25nKVNUX0dQQV9CQVNFO1xcbitcXHRzdF9pcGEgPSAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRTtcXG4gXFx0dmNwdV9pb2N0bCh2Y3B1LCBLVk1fU0VUX0RFVklDRV9BVFRSLCBcXHUwMDI2ZGV2KTtcXG4gXFxuIFxcdHJldCA9IF9fdmNwdV9pb2N0bCh2Y3B1LCBLVk1fU0VUX0RFVklDRV9BVFRSLCBcXHUwMDI2ZGV2KTtcXG5AQCAtMzE4LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpKVxcbiBcXG4gc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpXFxuIHtcXG4tXFx0c3RydWN0IHN0YV9zdHJ1Y3QgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XFxuK1xcdHN0cnVjdCBzdGFfc3RydWN0ICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XFxuIFxcdGludCBpO1xcbiBcXG4gXFx0cHJfaW5mbyhcXFwiVkNQVSVkOlxcXFxuXFxcIiwgdmNwdV9pZHgpO1xcbkBAIC00NTUsNyArNDU1LDcgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpXFxuIFxcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeClcXG4ge1xcbi1cXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XFxuK1xcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xcbiBcXG4gXFx0a3NmdF9wcmludF9tc2coXFxcIlZDUFUlZDpcXFxcblxcXCIsIHZjcHVfaWR4KTtcXG4gXFx0a3NmdF9wcmludF9tc2coXFxcIiAgICBzdGVhbDogICAgICVsbGRcXFxcblxcXCIsIHN0LVxcdTAwM2VzdGVhbCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYW14X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYW14X3Rlc3QuY1xcbmluZGV4IDRlNjNkYTJiMTg4OWMuLjY2YjZlNDQyYzQxYzAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jXFxuQEAgLTMyNSw3ICszMjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRcXHRcXHRcXHR2Y3B1X3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZyZWdzMik7XFxuIFxcdFxcdFxcdFxcdFRFU1RfQVNTRVJUKCFtZW1jbXAoXFx1MDAyNnJlZ3MxLCBcXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFxcIlVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHhcXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBVQ0FMTF9ET05FOlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvY3B1aWRfdGVzdC5jXFxuaW5kZXggZWYwZGRkMjQwODg3NC4uZGNkOTlhMDUwMWVlYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvY3B1aWRfdGVzdC5jXFxuQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzdGFnZSlcXG4gXFx0XFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFxcXCJoZWxsb1xcXCIpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlICsgMSxcXG4gXFx0XFx0XFx0ICAgIFxcXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgIHN0YWdlICsgMSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xcbitcXHRcXHRcXHQgICAgc3RhZ2UgKyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHRjYXNlIFVDQUxMX0RPTkU6XFxuIFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfY2xvY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcXG5pbmRleCBjMDgzY2VhNTQ2ZGNlLi4zZGM5YTljMmFhNTRkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jXFxuQEAgLTI0OCw3ICsyNDgsNyBAQCBpbnQgbWFpbih2b2lkKVxcbiBcXHRcXHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXFxcImhlbGxvXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsXFxuIFxcdFxcdFxcdCAgICBcXFwiU3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFxcXCIsXFxuLVxcdFxcdFxcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xcbitcXHRcXHRcXHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xcbiBcXG4gXFx0XFx0LyogUmVzZXQga3ZtY2xvY2sgdHJpZ2dlcmluZyBUU0MgcGFnZSB1cGRhdGUgKi9cXG4gXFx0XFx0aWYgKHN0YWdlID09IDcgfHwgc3RhZ2UgPT0gOCB8fCBzdGFnZSA9PSAxMCkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9ldm1jcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuY1xcbmluZGV4IGM3ZmExMTRhZWUyMGYuLjM1ODIxYzYyYTFiZDMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcXG5AQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3ZtX3ZjcHUgKnNhdmVfcmVzdG9yZV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSxcXG4gXFx0dmNwdV9yZWdzX2dldCh2Y3B1LCBcXHUwMDI2cmVnczIpO1xcbiBcXHRURVNUX0FTU0VSVCghbWVtY21wKFxcdTAwMjZyZWdzMSwgXFx1MDAyNnJlZ3MyLCBzaXplb2YocmVnczIpKSxcXG4gXFx0XFx0ICAgIFxcXCJVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4XFxcIixcXG4tXFx0XFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XFxuK1xcdFxcdCAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7XFxuIFxcdHJldHVybiB2Y3B1O1xcbiB9XFxuIFxcbkBAIC0yODEsNyArMjgxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xcbiBcXHRcXHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXFxcImhlbGxvXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsIFxcXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XFxuK1xcdFxcdFxcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcbiBcXHRcXHR2Y3B1ID0gc2F2ZV9yZXN0b3JlX3ZtKHZtLCB2Y3B1KTtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jXFxuaW5kZXggN2E2MmY2YTlkNjA2ZC4uMmNlMmIwMDkyZDQzOSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuY1xcbkBAIC0xOTAsNyArMTkwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xcbiBcXHRcXHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXFxcImhlbGxvXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsIFxcXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XFxuK1xcdFxcdFxcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9ib290X2NwdV9pZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xcbmluZGV4IDhlMzg5ODY0NmM2OWQuLjkwOWNkOWU4M2ZkYWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmNcXG5AQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdFxcdFxcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcXFwiaGVsbG9cXFwiKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHRcXHR1Yy5hcmdzWzFdID09IHN0YWdlICsgMSxcXG4gXFx0XFx0XFx0XFx0XFx0XFxcIlN0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHRzdGFnZSArIDEsICh1bG9uZyl1Yy5hcmdzWzFdKTtcXG4rXFx0XFx0XFx0XFx0XFx0c3RhZ2UgKyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcXG4gXFx0XFx0XFx0dGVzdF9zZXRfYnNwX2J1c3kodmNwdSwgXFxcIndoaWxlIHJ1bm5pbmcgdm1cXFwiKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgVUNBTExfRE9ORTpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuY1xcbmluZGV4IDQwOWM2Y2M5ZjkyMTQuLjQ2MWZkYjZjY2FkYjEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuY1xcbkBAIC0zMDMsNyArMzAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xcbiBcXHRcXHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXFxcImhlbGxvXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsIFxcXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XFxuK1xcdFxcdFxcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcbiBcXHRcXHRzdGF0ZSA9IHZjcHVfc2F2ZV9zdGF0ZSh2Y3B1KTtcXG4gXFx0XFx0bWVtc2V0KFxcdTAwMjZyZWdzMSwgMCwgc2l6ZW9mKHJlZ3MxKSk7XFxuQEAgLTM1MCw3ICszNTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRcXHR2Y3B1X3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZyZWdzMik7XFxuIFxcdFxcdFRFU1RfQVNTRVJUKCFtZW1jbXAoXFx1MDAyNnJlZ3MxLCBcXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxcbiBcXHRcXHRcXHQgICAgXFxcIlVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHhcXFwiLFxcbi1cXHRcXHRcXHQgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTtcXG4rXFx0XFx0XFx0ICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTtcXG4gXFx0fVxcbiBcXG4gZG9uZTpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni90c2NfbXNyc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuY1xcbmluZGV4IDkxNTgzOTY5YTE0ZmIuLjU1Nzc5NzczNjE0YjggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni90c2NfbXNyc190ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuY1xcbkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHN0YWdlKVxcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXG4gXFx0XFx0XFx0XFx0XFxcInN0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcXFwiLFxcbi1cXHRcXHRcXHRcXHRzdGFnZSArIDEsICh1bG9uZyl1Yy5hcmdzWzFdKTtcXG4rXFx0XFx0XFx0XFx0c3RhZ2UgKyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHRjYXNlIFVDQUxMX0RPTkU6XFxuIFxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwic3RhZ2UgJWQgcGFzc2VkXFxcXG5cXFwiLCBzdGFnZSArIDEpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmNcXG5pbmRleCBmMTNkZWUzMTczODM3Li43OWZiYzU4YjhjNWUxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xcbkBAIC0xMTIsNyArMTEyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0VEVTVF9BU1NFUlQodWMuYXJnc1sxXSA9PSBzdGFnZSxcXG4tXFx0XFx0XFx0ICAgIFxcXCJFeHBlY3RlZCBzdGFnZSAlZCwgZ290IHN0YWdlICVsdVxcXCIsIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XFxuK1xcdFxcdFxcdCAgICBcXFwiRXhwZWN0ZWQgc3RhZ2UgJWQsIGdvdCBzdGFnZSAlbHVcXFwiLCBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcdFxcdGlmIChzdGFnZSA9PSAxKSB7XFxuIFxcdFxcdFxcdHByX2luZm8oXFxcIkwyIGlzIGFjdGl2ZTsgcGVyZm9ybWluZyBzYXZlL3Jlc3RvcmUuXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0LmNcXG5pbmRleCAxYjdiNmJhMjNkZTc2Li42MTQyMDczNWJlYTFmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0LmNcXG5AQCAtMTk2LDcgKzE5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcdFxcdC8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi9cXG4gXFx0XFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFxcXCJoZWxsb1xcXCIpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcXFwiU3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFxcXCIsXFxuLVxcdFxcdFxcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xcbitcXHRcXHRcXHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBJZiB0aGlzIHN0YWdlIDIgdGhlbiB3ZSBzaG91bGQgdmVyaWZ5IHRoZSB2bXggcHQgZXhwaXJ5XFxuIFxcdFxcdCAqIGlzIGFzIGV4cGVjdGVkLlxcbkBAIC0yMzcsNyArMjM3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0dmNwdV9yZWdzX2dldCh2Y3B1LCBcXHUwMDI2cmVnczIpO1xcbiBcXHRcXHRURVNUX0FTU0VSVCghbWVtY21wKFxcdTAwMjZyZWdzMSwgXFx1MDAyNnJlZ3MyLCBzaXplb2YocmVnczIpKSxcXG4gXFx0XFx0XFx0ICAgIFxcXCJVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XFxuK1xcdFxcdFxcdCAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7XFxuIFxcdH1cXG4gXFxuIGRvbmU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjU5OjMyLjc0MzA2NjAyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQyNjIzNzczNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cywgcmVwbGFjaW5nIGAodWxvbmcpYCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIyMDQ4OTZkNTkxZGU3MmZiNDMyZjFlM2Q3YmI0ZWYyMDQ0Yjk3MzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE5OjU5OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmNcbmluZGV4IDVkOTZjZGYzODJjNDcuLjkwZDIyYjJjYjZjYzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jXG5AQCAtMTYyLDcgKzE2Miw3IEBAIHN0cnVjdCBzdF90aW1lIHtcbiBcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHU2NCBzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0U7XG4rXHR1NjQgc3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpU1RfR1BBX0JBU0U7XG4gXHR1bnNpZ25lZCBpbnQgZ3BhZ2VzO1xuIFxuIFx0Z3BhZ2VzID0gdm1fY2FsY19udW1fZ3Vlc3RfcGFnZXMoVk1fTU9ERV9ERUZBVUxULCBTVEVBTF9USU1FX1NJWkUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfcGVyZl90ZXN0LmNcbmluZGV4IDRkOWFkNjEwNGE2ZWQuLjhmMjZiMWNlZTBjZDIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfcGVyZl90ZXN0LmNcbkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGljIHZvaWQgKnZjcHVfd29ya2VyKHZvaWQgKl9fZGF0YSlcbiBcdFx0Y2FzZSBVQ0FMTF9TWU5DOlxuIFx0XHRcdFRFU1RfQVNTRVJUKHVjLmFyZ3NbMV0gPT0gMCxcbiBcdFx0XHRcdFwiVW5leHBlY3RlZCBzeW5jIHVjYWxsLCBnb3QgJWx4XCIsXG4tXHRcdFx0XHQodWxvbmcpdWMuYXJnc1sxXSk7XG4rXHRcdFx0XHQodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcdFx0XHRzZW1fcG9zdChcdTAwMjZ2Y3B1X3JlYWR5KTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0Y2FzZSBVQ0FMTF9OT05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jXG5pbmRleCA3NmZjZGQxZmQzY2I0Li5kZDNlNWQ5MGRlNWNmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuY1xuQEAgLTczLDEyICs3MywxMiBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICsgaSAqIFNURUFMX1RJTUVfU0laRSk7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2Y3B1LVx1MDAzZXZtLCBzdF9ndmFbaV0pO1xuIFxuLVx0dmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwgKHVsb25nKXN0X2d2YVtpXSB8IEtWTV9NU1JfRU5BQkxFRCk7XG4rXHR2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLCAodW5zaWduZWQgbG9uZylzdF9ndmFbaV0gfCBLVk1fTVNSX0VOQUJMRUQpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeClcbiB7XG4tXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XG4rXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwiVkNQVSVkOlxcblwiLCB2Y3B1X2lkeCk7XG4gXHRrc2Z0X3ByaW50X21zZyhcIiAgICBzdGVhbDogICAgICVsbGRcXG5cIiwgc3QtXHUwMDNlc3RlYWwpO1xuQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGVhbF90aW1lX3VhcGkodm9pZClcbiBcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXHUwMDI2dmNwdSwgTlVMTCk7XG4gXG4gXHRyZXQgPSBfdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSxcbi1cdFx0XHQgICAgKHVsb25nKVNUX0dQQV9CQVNFIHwgS1ZNX1NURUFMX1JFU0VSVkVEX01BU0spO1xuK1x0XHRcdCAgICAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRSB8IEtWTV9TVEVBTF9SRVNFUlZFRF9NQVNLKTtcbiBcdFRFU1RfQVNTRVJUKHJldCA9PSAwLCBcIkJhZCBHUEEgZGlkbid0IGZhaWxcIik7XG4gXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG5AQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyB2b2lkIGd1ZXN0X2NvZGUoaW50IGNwdSlcbiBcbiBcdHN0YXR1cyA9IHNtY2NjKFBWX1RJTUVfU1QsIDApO1xuIFx0R1VFU1RfQVNTRVJUX05FKHN0YXR1cywgLTEpO1xuLVx0R1VFU1RfQVNTRVJUX0VRKHN0YXR1cywgKHVsb25nKXN0X2d2YVtjcHVdKTtcbitcdEdVRVNUX0FTU0VSVF9FUShzdGF0dXMsICh1bnNpZ25lZCBsb25nKXN0X2d2YVtjcHVdKTtcbiBcbiBcdHN0ID0gKHN0cnVjdCBzdF90aW1lICopc3RhdHVzO1xuIFx0R1VFU1RfU1lOQygwKTtcbkBAIC0xOTAsMTMgKzE5MCwxMyBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICsgaSAqIFNURUFMX1RJTUVfU0laRSk7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgc3RfZ3ZhW2ldKTtcbiBcbi1cdHN0X2lwYSA9ICh1bG9uZylzdF9ndmFbaV07XG4rXHRzdF9pcGEgPSAodW5zaWduZWQgbG9uZylzdF9ndmFbaV07XG4gXHR2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KVxuIHtcbi1cdHN0cnVjdCBzdF90aW1lICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xuK1x0c3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwiVkNQVSVkOlxcblwiLCB2Y3B1X2lkeCk7XG4gXHRrc2Z0X3ByaW50X21zZyhcIiAgICByZXY6ICAgICAlZFxcblwiLCBzdC1cdTAwM2VyZXYpO1xuQEAgLTIyMywxMSArMjIzLDExIEBAIHN0YXRpYyB2b2lkIGNoZWNrX3N0ZWFsX3RpbWVfdWFwaSh2b2lkKVxuIFx0dm1fdXNlcnNwYWNlX21lbV9yZWdpb25fYWRkKHZtLCBWTV9NRU1fU1JDX0FOT05ZTU9VUywgU1RfR1BBX0JBU0UsIDEsIDEsIDApO1xuIFx0dmlydF9tYXAodm0sIFNUX0dQQV9CQVNFLCBTVF9HUEFfQkFTRSwgMSk7XG4gXG4tXHRzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0UgfCAxO1xuK1x0c3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpU1RfR1BBX0JBU0UgfCAxO1xuIFx0cmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4gXHRURVNUX0FTU0VSVChyZXQgPT0gLTEgXHUwMDI2XHUwMDI2IGVycm5vID09IEVJTlZBTCwgXCJCYWQgSVBBIGRpZG4ndCByZXBvcnQgRUlOVkFMXCIpO1xuIFxuLVx0c3RfaXBhID0gKHVsb25nKVNUX0dQQV9CQVNFO1xuK1x0c3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpU1RfR1BBX0JBU0U7XG4gXHR2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4gXG4gXHRyZXQgPSBfX3ZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbkBAIC0zMTgsNyArMzE4LDcgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpXG4gXG4gc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpXG4ge1xuLVx0c3RydWN0IHN0YV9zdHJ1Y3QgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XG4rXHRzdHJ1Y3Qgc3RhX3N0cnVjdCAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xuIFx0aW50IGk7XG4gXG4gXHRwcl9pbmZvKFwiVkNQVSVkOlxcblwiLCB2Y3B1X2lkeCk7XG5AQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpKVxuIFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KVxuIHtcbi1cdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbitcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xuIFxuIFx0a3NmdF9wcmludF9tc2coXCJWQ1BVJWQ6XFxuXCIsIHZjcHVfaWR4KTtcbiBcdGtzZnRfcHJpbnRfbXNnKFwiICAgIHN0ZWFsOiAgICAgJWxsZFxcblwiLCBzdC1cdTAwM2VzdGVhbCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jXG5pbmRleCA0ZTYzZGEyYjE4ODljLi42NmI2ZTQ0MmM0MWMwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmNcbkBAIC0zMjUsNyArMzI1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0XHRcdHZjcHVfcmVnc19nZXQodmNwdSwgXHUwMDI2cmVnczIpO1xuIFx0XHRcdFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHRcdFx0XHQgICAgXCJVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4XCIsXG4tXHRcdFx0XHRcdCAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpO1xuK1x0XHRcdFx0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0XHRcdH1cbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvY3B1aWRfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmNcbmluZGV4IGVmMGRkZDI0MDg4NzQuLmRjZDk5YTA1MDFlZWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmNcbkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHZvaWQgcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgc3RhZ2UpXG4gXHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcImhlbGxvXCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlICsgMSxcbiBcdFx0XHQgICAgXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCIsXG4tXHRcdFx0ICAgIHN0YWdlICsgMSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdCAgICBzdGFnZSArIDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRyZXR1cm47XG4gXHRjYXNlIFVDQUxMX0RPTkU6XG4gXHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfY2xvY2suY1xuaW5kZXggYzA4M2NlYTU0NmRjZS4uM2RjOWE5YzJhYTU0ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcbkBAIC0yNDgsNyArMjQ4LDcgQEAgaW50IG1haW4odm9pZClcbiBcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwiaGVsbG9cIikgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsXG4gXHRcdFx0ICAgIFwiU3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwiLFxuLVx0XHRcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XG4gXG4gXHRcdC8qIFJlc2V0IGt2bWNsb2NrIHRyaWdnZXJpbmcgVFNDIHBhZ2UgdXBkYXRlICovXG4gXHRcdGlmIChzdGFnZSA9PSA3IHx8IHN0YWdlID09IDggfHwgc3RhZ2UgPT0gMTApIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9ldm1jcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuY1xuaW5kZXggYzdmYTExNGFlZTIwZi4uMzU4MjFjNjJhMWJkMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcbkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqc2F2ZV9yZXN0b3JlX3ZtKHN0cnVjdCBrdm1fdm0gKnZtLFxuIFx0dmNwdV9yZWdzX2dldCh2Y3B1LCBcdTAwMjZyZWdzMik7XG4gXHRURVNUX0FTU0VSVCghbWVtY21wKFx1MDAyNnJlZ3MxLCBcdTAwMjZyZWdzMiwgc2l6ZW9mKHJlZ3MyKSksXG4gXHRcdCAgICBcIlVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHhcIixcbi1cdFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XG4rXHRcdCAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7XG4gXHRyZXR1cm4gdmNwdTtcbiB9XG4gXG5AQCAtMjgxLDcgKzI4MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdC8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi9cbiBcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwiaGVsbG9cIikgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsIFwiU3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwiLFxuLVx0XHRcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XG4gXG4gXHRcdHZjcHUgPSBzYXZlX3Jlc3RvcmVfdm0odm0sIHZjcHUpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jXG5pbmRleCA3YTYyZjZhOWQ2MDZkLi4yY2UyYjAwOTJkNDM5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuY1xuQEAgLTE5MCw3ICsxOTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHQvKiBVQ0FMTF9TWU5DIGlzIGhhbmRsZWQgaGVyZS4gICovXG4gXHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcImhlbGxvXCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcIlN0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcIixcbi1cdFx0XHQgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbitcdFx0XHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFxuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9ib290X2NwdV9pZC5jXG5pbmRleCA4ZTM4OTg2NDZjNjlkLi45MDljZDllODNmZGFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xuQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcImhlbGxvXCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0XHR1Yy5hcmdzWzFdID09IHN0YWdlICsgMSxcbiBcdFx0XHRcdFx0XCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCIsXG4tXHRcdFx0XHRcdHN0YWdlICsgMSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdFx0XHRzdGFnZSArIDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRcdHRlc3Rfc2V0X2JzcF9idXN5KHZjcHUsIFwid2hpbGUgcnVubmluZyB2bVwiKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcbmluZGV4IDQwOWM2Y2M5ZjkyMTQuLjQ2MWZkYjZjY2FkYjEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcbkBAIC0zMDMsNyArMzAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xuIFx0XHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXCJoZWxsb1wiKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdWMuYXJnc1sxXSA9PSBzdGFnZSwgXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCIsXG4tXHRcdFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XG4rXHRcdFx0ICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcbiBcdFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XG4gXHRcdG1lbXNldChcdTAwMjZyZWdzMSwgMCwgc2l6ZW9mKHJlZ3MxKSk7XG5AQCAtMzUwLDcgKzM1MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdHZjcHVfcmVnc19nZXQodmNwdSwgXHUwMDI2cmVnczIpO1xuIFx0XHRURVNUX0FTU0VSVCghbWVtY21wKFx1MDAyNnJlZ3MxLCBcdTAwMjZyZWdzMiwgc2l6ZW9mKHJlZ3MyKSksXG4gXHRcdFx0ICAgIFwiVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseFwiLFxuLVx0XHRcdCAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpO1xuK1x0XHRcdCAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7XG4gXHR9XG4gXG4gZG9uZTpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jXG5pbmRleCA5MTU4Mzk2OWExNGZiLi41NTc3OTc3MzYxNGI4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni90c2NfbXNyc190ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jXG5AQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzdGFnZSlcbiBcdFx0ZWxzZVxuIFx0XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcbiBcdFx0XHRcdFwic3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwiLFxuLVx0XHRcdFx0c3RhZ2UgKyAxLCAodWxvbmcpdWMuYXJnc1sxXSk7XG4rXHRcdFx0XHRzdGFnZSArIDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRyZXR1cm47XG4gXHRjYXNlIFVDQUxMX0RPTkU6XG4gXHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcInN0YWdlICVkIHBhc3NlZFxcblwiLCBzdGFnZSArIDEpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xuaW5kZXggZjEzZGVlMzE3MzgzNy4uNzlmYmM1OGI4YzVlMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfbmVzdGVkX2xhNTdfc3RhdGVfdGVzdC5jXG5AQCAtMTEyLDcgKzExMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdH1cbiBcbiBcdFx0VEVTVF9BU1NFUlQodWMuYXJnc1sxXSA9PSBzdGFnZSxcbi1cdFx0XHQgICAgXCJFeHBlY3RlZCBzdGFnZSAlZCwgZ290IHN0YWdlICVsdVwiLCBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdCAgICBcIkV4cGVjdGVkIHN0YWdlICVkLCBnb3Qgc3RhZ2UgJWx1XCIsIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcdFx0aWYgKHN0YWdlID09IDEpIHtcbiBcdFx0XHRwcl9pbmZvKFwiTDIgaXMgYWN0aXZlOyBwZXJmb3JtaW5nIHNhdmUvcmVzdG9yZS5cXG5cIik7XG4gXHRcdFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuY1xuaW5kZXggMWI3YjZiYTIzZGU3Ni4uNjE0MjA3MzViZWExZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuY1xuQEAgLTE5Niw3ICsxOTYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHQvKiBVQ0FMTF9TWU5DIGlzIGhhbmRsZWQgaGVyZS4gICovXG4gXHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcImhlbGxvXCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcIlN0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcIixcbi1cdFx0XHQgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbitcdFx0XHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHQvKlxuIFx0XHQgKiBJZiB0aGlzIHN0YWdlIDIgdGhlbiB3ZSBzaG91bGQgdmVyaWZ5IHRoZSB2bXggcHQgZXhwaXJ5XG4gXHRcdCAqIGlzIGFzIGV4cGVjdGVkLlxuQEAgLTIzNyw3ICsyMzcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHR2Y3B1X3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnJlZ3MyKTtcbiBcdFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHRcdCAgICBcIlVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHhcIixcbi1cdFx0XHQgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTtcbitcdFx0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0fVxuIFxuIGRvbmU6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo1OTozMi43NDMwNjcyNTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjYyMzQ4MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBTZWxmdGVzdCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZywgXCJzZWxmdGVzdHMsXCIgd2hpY2ggYXJlIHVzdWFsbHkgYSBsb3dlciBwcmlvcml0eSB0aGFuIGNvcmUga2VybmVsIG1vZGlmaWNhdGlvbnMgd2hlbiBjb25zaWRlcmluZyBmdXp6aW5nIHJlbGV2YW5jZS4gTXkgaW5pdGlhbCByZWFkIG9mIHRoZSBjaGFuZ2UgaXMgc2ltcGxlOyBpdCdzIGEgdHlwZSBjYXN0IHJlcGxhY2VtZW50OiBgKHVsb25nKWAgaXMgYmVpbmcgc3dhcHBlZCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBBIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2UgbGlrZSB0aGlzLCB3aXRoaW4gdGhlIHRlc3RpbmcgZnJhbWV3b3JrLCBzY3JlYW1zIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgdG8gbWUuXG5cbkJ1dCwgYXMgYWx3YXlzLCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIExldCdzIGNvbmZpcm0gdGhpcyBkb2Vzbid0IGFjY2lkZW50YWxseSB0b3VjaCBzb21ldGhpbmcgZGVlcGVyLiBJ4oCZbGwgcmUtZXhhbWluZSB0aGUgZGlmZi4gQWgsIHllcywganVzdCBhcyBzdXNwZWN0ZWQ6IHRoZSBjaGFuZ2UgaXMgY29uZmluZWQgdG8gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYCBkaXJlY3RvcnkgYW5kIGlzLCBpbiBmYWN0LCBvbmx5IGFib3V0IHR5cGUgY2FzdHMuIE5vIGltcGFjdCBvbiBhbnkgY3JpdGljYWwga2VybmVsIGNvZGUuIFRoZXJlZm9yZSwgYWZ0ZXIgbXkgZG91YmxlLWNoZWNrLCBJIGNhbiBjb25maWRlbnRseSByZXR1cm4gXCJXb3J0aEZ1enppbmc9ZmFsc2UuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6NzMwMiwiT3V0cHV0VG9rZW5zIjo2NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjU5OjM3LjAwNTQxODU0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzLCByZXBsYWNpbmcgYCh1bG9uZylgIHdpdGggYCh1bnNpZ25lZCBsb25nKWAuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzLCByZXBsYWNpbmcgYCh1bG9uZylgIHdpdGggYCh1bnNpZ25lZCBsb25nKWAuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowm8vd8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 19:58:05 +0000 UTC FinishedAt: 2026-08-03 19:59:38 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cywgcmVwbGFjaW5nIGAodWxvbmcpYCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTk6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMjA0ODk2ZDU5MWRlNzJmYjQzMmYxZTNkN2JiNGVmMjA0NGI5NzM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTo1OTozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuY1xuaW5kZXggNWQ5NmNkZjM4MmM0Ny4uOTBkMjJiMmNiNmNjOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmNcbkBAIC0xNjIsNyAmIzQzOzE2Miw3IEBAIHN0cnVjdCBzdF90aW1lIHtcbiBcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHU2NCBzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0U7XG4mIzQzO1x0dTY0IHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFO1xuIFx0dW5zaWduZWQgaW50IGdwYWdlcztcbiBcbiBcdGdwYWdlcyA9IHZtX2NhbGNfbnVtX2d1ZXN0X3BhZ2VzKFZNX01PREVfREVGQVVMVCwgU1RFQUxfVElNRV9TSVpFKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jXG5pbmRleCA0ZDlhZDYxMDRhNmVkLi44ZjI2YjFjZWUwY2QyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfcGVyZl90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jXG5AQCAtMTUyLDcgJiM0MzsxNTIsNyBAQCBzdGF0aWMgdm9pZCAqdmNwdV93b3JrZXIodm9pZCAqX19kYXRhKVxuIFx0XHRjYXNlIFVDQUxMX1NZTkM6XG4gXHRcdFx0VEVTVF9BU1NFUlQodWMuYXJnc1sxXSA9PSAwLFxuIFx0XHRcdFx0XCYjMzQ7VW5leHBlY3RlZCBzeW5jIHVjYWxsLCBnb3QgJWx4XCYjMzQ7LFxuLVx0XHRcdFx0KHVsb25nKXVjLmFyZ3NbMV0pO1xuJiM0MztcdFx0XHRcdCh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRcdHNlbV9wb3N0KFx1MDAyNnZjcHVfcmVhZHkpO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHRjYXNlIFVDQUxMX05PTkU6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmNcbmluZGV4IDc2ZmNkZDFmZDNjYjQuLmRkM2U1ZDkwZGU1Y2YgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jXG5AQCAtNzMsMTIgJiM0Mzs3MywxMiBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICYjNDM7IGkgKiBTVEVBTF9USU1FX1NJWkUpO1xuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3QodmNwdS1cdTAwM2V2bSwgc3RfZ3ZhW2ldKTtcbiBcbi1cdHZjcHVfc2V0X21zcih2Y3B1LCBNU1JfS1ZNX1NURUFMX1RJTUUsICh1bG9uZylzdF9ndmFbaV0gfCBLVk1fTVNSX0VOQUJMRUQpO1xuJiM0MztcdHZjcHVfc2V0X21zcih2Y3B1LCBNU1JfS1ZNX1NURUFMX1RJTUUsICh1bnNpZ25lZCBsb25nKXN0X2d2YVtpXSB8IEtWTV9NU1JfRU5BQkxFRCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KVxuIHtcbi1cdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1ZDUFUlZDpcXG5cJiMzNDssIHZjcHVfaWR4KTtcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0OyAgICBzdGVhbDogICAgICVsbGRcXG5cJiMzNDssIHN0LVx1MDAzZXN0ZWFsKTtcbkBAIC0xMDIsNyAmIzQzOzEwMiw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3N0ZWFsX3RpbWVfdWFwaSh2b2lkKVxuIFx0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBOVUxMKTtcbiBcbiBcdHJldCA9IF92Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLFxuLVx0XHRcdCAgICAodWxvbmcpU1RfR1BBX0JBU0UgfCBLVk1fU1RFQUxfUkVTRVJWRURfTUFTSyk7XG4mIzQzO1x0XHRcdCAgICAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRSB8IEtWTV9TVEVBTF9SRVNFUlZFRF9NQVNLKTtcbiBcdFRFU1RfQVNTRVJUKHJldCA9PSAwLCBcJiMzNDtCYWQgR1BBIGRpZG4mIzM5O3QgZmFpbFwmIzM0Oyk7XG4gXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG5AQCAtMTUxLDcgJiM0MzsxNTEsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9jb2RlKGludCBjcHUpXG4gXG4gXHRzdGF0dXMgPSBzbWNjYyhQVl9USU1FX1NULCAwKTtcbiBcdEdVRVNUX0FTU0VSVF9ORShzdGF0dXMsIC0xKTtcbi1cdEdVRVNUX0FTU0VSVF9FUShzdGF0dXMsICh1bG9uZylzdF9ndmFbY3B1XSk7XG4mIzQzO1x0R1VFU1RfQVNTRVJUX0VRKHN0YXR1cywgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2NwdV0pO1xuIFxuIFx0c3QgPSAoc3RydWN0IHN0X3RpbWUgKilzdGF0dXM7XG4gXHRHVUVTVF9TWU5DKDApO1xuQEAgLTE5MCwxMyAmIzQzOzE5MCwxMyBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICYjNDM7IGkgKiBTVEVBTF9USU1FX1NJWkUpO1xuIFx0c3luY19nbG9iYWxfdG9fZ3Vlc3Qodm0sIHN0X2d2YVtpXSk7XG4gXG4tXHRzdF9pcGEgPSAodWxvbmcpc3RfZ3ZhW2ldO1xuJiM0MztcdHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKXN0X2d2YVtpXTtcbiBcdHZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpXG4ge1xuLVx0c3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XG4mIzQzO1x0c3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1ZDUFUlZDpcXG5cJiMzNDssIHZjcHVfaWR4KTtcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0OyAgICByZXY6ICAgICAlZFxcblwmIzM0Oywgc3QtXHUwMDNlcmV2KTtcbkBAIC0yMjMsMTEgJiM0MzsyMjMsMTEgQEAgc3RhdGljIHZvaWQgY2hlY2tfc3RlYWxfdGltZV91YXBpKHZvaWQpXG4gXHR2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLCBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7XG4gXHR2aXJ0X21hcCh2bSwgU1RfR1BBX0JBU0UsIFNUX0dQQV9CQVNFLCAxKTtcbiBcbi1cdHN0X2lwYSA9ICh1bG9uZylTVF9HUEFfQkFTRSB8IDE7XG4mIzQzO1x0c3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpU1RfR1BBX0JBU0UgfCAxO1xuIFx0cmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4gXHRURVNUX0FTU0VSVChyZXQgPT0gLTEgXHUwMDI2XHUwMDI2IGVycm5vID09IEVJTlZBTCwgXCYjMzQ7QmFkIElQQSBkaWRuJiMzOTt0IHJlcG9ydCBFSU5WQUxcJiMzNDspO1xuIFxuLVx0c3RfaXBhID0gKHVsb25nKVNUX0dQQV9CQVNFO1xuJiM0MztcdHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFO1xuIFx0dmNwdV9pb2N0bCh2Y3B1LCBLVk1fU0VUX0RFVklDRV9BVFRSLCBcdTAwMjZkZXYpO1xuIFxuIFx0cmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG5AQCAtMzE4LDcgJiM0MzszMTgsNyBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeClcbiB7XG4tXHRzdHJ1Y3Qgc3RhX3N0cnVjdCAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiYjNDM7XHRzdHJ1Y3Qgc3RhX3N0cnVjdCAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xuIFx0aW50IGk7XG4gXG4gXHRwcl9pbmZvKFwmIzM0O1ZDUFUlZDpcXG5cJiMzNDssIHZjcHVfaWR4KTtcbkBAIC00NTUsNyAmIzQzOzQ1NSw3IEBAIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpKVxuIFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KVxuIHtcbi1cdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O1ZDUFUlZDpcXG5cJiMzNDssIHZjcHVfaWR4KTtcbiBcdGtzZnRfcHJpbnRfbXNnKFwmIzM0OyAgICBzdGVhbDogICAgICVsbGRcXG5cJiMzNDssIHN0LVx1MDAzZXN0ZWFsKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmNcbmluZGV4IDRlNjNkYTJiMTg4OWMuLjY2YjZlNDQyYzQxYzAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYW14X3Rlc3QuY1xuQEAgLTMyNSw3ICYjNDM7MzI1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0XHRcdHZjcHVfcmVnc19nZXQodmNwdSwgXHUwMDI2cmVnczIpO1xuIFx0XHRcdFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHRcdFx0XHQgICAgXCYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseFwmIzM0Oyxcbi1cdFx0XHRcdFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XG4mIzQzO1x0XHRcdFx0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0XHRcdH1cbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvY3B1aWRfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmNcbmluZGV4IGVmMGRkZDI0MDg4NzQuLmRjZDk5YTA1MDFlZWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmNcbkBAIC0xMjgsNyAmIzQzOzEyOCw3IEBAIHN0YXRpYyB2b2lkIHJ1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHN0YWdlKVxuIFx0XHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXCYjMzQ7aGVsbG9cJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlICYjNDM7IDEsXG4gXHRcdFx0ICAgIFwmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcJiMzNDssXG4tXHRcdFx0ICAgIHN0YWdlICYjNDM7IDEsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0ICAgIHN0YWdlICYjNDM7IDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRyZXR1cm47XG4gXHRjYXNlIFVDQUxMX0RPTkU6XG4gXHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfY2xvY2suY1xuaW5kZXggYzA4M2NlYTU0NmRjZS4uM2RjOWE5YzJhYTU0ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcbkBAIC0yNDgsNyAmIzQzOzI0OCw3IEBAIGludCBtYWluKHZvaWQpXG4gXHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcJiMzNDtoZWxsb1wmIzM0OykgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsXG4gXHRcdFx0ICAgIFwmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcJiMzNDssXG4tXHRcdFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XG4mIzQzO1x0XHRcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XG4gXG4gXHRcdC8qIFJlc2V0IGt2bWNsb2NrIHRyaWdnZXJpbmcgVFNDIHBhZ2UgdXBkYXRlICovXG4gXHRcdGlmIChzdGFnZSA9PSA3IHx8IHN0YWdlID09IDggfHwgc3RhZ2UgPT0gMTApIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9ldm1jcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuY1xuaW5kZXggYzdmYTExNGFlZTIwZi4uMzU4MjFjNjJhMWJkMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcbkBAIC0yMjUsNyAmIzQzOzIyNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3ZtX3ZjcHUgKnNhdmVfcmVzdG9yZV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSxcbiBcdHZjcHVfcmVnc19nZXQodmNwdSwgXHUwMDI2cmVnczIpO1xuIFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHQgICAgXCYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseFwmIzM0Oyxcbi1cdFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XG4mIzQzO1x0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0cmV0dXJuIHZjcHU7XG4gfVxuIFxuQEAgLTI4MSw3ICYjNDM7MjgxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xuIFx0XHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXCYjMzQ7aGVsbG9cJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcJiMzNDtTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCYjMzQ7LFxuLVx0XHRcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuJiM0MztcdFx0XHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFxuIFx0XHR2Y3B1ID0gc2F2ZV9yZXN0b3JlX3ZtKHZtLCB2Y3B1KTtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuY1xuaW5kZXggN2E2MmY2YTlkNjA2ZC4uMmNlMmIwMDkyZDQzOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmNcbkBAIC0xOTAsNyAmIzQzOzE5MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdC8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi9cbiBcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwmIzM0O2hlbGxvXCYjMzQ7KSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdWMuYXJnc1sxXSA9PSBzdGFnZSwgXCYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwmIzM0Oyxcbi1cdFx0XHQgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0ICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9ib290X2NwdV9pZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xuaW5kZXggOGUzODk4NjQ2YzY5ZC4uOTA5Y2Q5ZTgzZmRhZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmNcbkBAIC02OSw3ICYjNDM7NjksNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwmIzM0O2hlbGxvXCYjMzQ7KSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdFx0dWMuYXJnc1sxXSA9PSBzdGFnZSAmIzQzOyAxLFxuIFx0XHRcdFx0XHRcJiMzNDtTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCYjMzQ7LFxuLVx0XHRcdFx0XHRzdGFnZSAmIzQzOyAxLCAodWxvbmcpdWMuYXJnc1sxXSk7XG4mIzQzO1x0XHRcdFx0XHRzdGFnZSAmIzQzOyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcdFx0XHR0ZXN0X3NldF9ic3BfYnVzeSh2Y3B1LCBcJiMzNDt3aGlsZSBydW5uaW5nIHZtXCYjMzQ7KTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcbmluZGV4IDQwOWM2Y2M5ZjkyMTQuLjQ2MWZkYjZjY2FkYjEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcbkBAIC0zMDMsNyAmIzQzOzMwMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdC8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi9cbiBcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwmIzM0O2hlbGxvXCYjMzQ7KSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdWMuYXJnc1sxXSA9PSBzdGFnZSwgXCYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwmIzM0Oyxcbi1cdFx0XHQgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0ICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcbiBcdFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XG4gXHRcdG1lbXNldChcdTAwMjZyZWdzMSwgMCwgc2l6ZW9mKHJlZ3MxKSk7XG5AQCAtMzUwLDcgJiM0MzszNTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHR2Y3B1X3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnJlZ3MyKTtcbiBcdFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHRcdCAgICBcJiMzNDtVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4XCYjMzQ7LFxuLVx0XHRcdCAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpO1xuJiM0MztcdFx0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0fVxuIFxuIGRvbmU6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni90c2NfbXNyc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuY1xuaW5kZXggOTE1ODM5NjlhMTRmYi4uNTU3Nzk3NzM2MTRiOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuY1xuQEAgLTc4LDcgJiM0Mzs3OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHN0YWdlKVxuIFx0XHRlbHNlXG4gXHRcdFx0a3NmdF90ZXN0X3Jlc3VsdF9mYWlsKFxuIFx0XHRcdFx0XCYjMzQ7c3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwmIzM0Oyxcbi1cdFx0XHRcdHN0YWdlICYjNDM7IDEsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0XHRzdGFnZSAmIzQzOyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcdFx0cmV0dXJuO1xuIFx0Y2FzZSBVQ0FMTF9ET05FOlxuIFx0XHRrc2Z0X3Rlc3RfcmVzdWx0X3Bhc3MoXCYjMzQ7c3RhZ2UgJWQgcGFzc2VkXFxuXCYjMzQ7LCBzdGFnZSAmIzQzOyAxKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmNcbmluZGV4IGYxM2RlZTMxNzM4MzcuLjc5ZmJjNThiOGM1ZTEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xuQEAgLTExMiw3ICYjNDM7MTEyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0fVxuIFxuIFx0XHRURVNUX0FTU0VSVCh1Yy5hcmdzWzFdID09IHN0YWdlLFxuLVx0XHRcdCAgICBcJiMzNDtFeHBlY3RlZCBzdGFnZSAlZCwgZ290IHN0YWdlICVsdVwmIzM0Oywgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O0V4cGVjdGVkIHN0YWdlICVkLCBnb3Qgc3RhZ2UgJWx1XCYjMzQ7LCBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XG4gXHRcdGlmIChzdGFnZSA9PSAxKSB7XG4gXHRcdFx0cHJfaW5mbyhcJiMzNDtMMiBpcyBhY3RpdmU7IHBlcmZvcm1pbmcgc2F2ZS9yZXN0b3JlLlxcblwmIzM0Oyk7XG4gXHRcdFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuY1xuaW5kZXggMWI3YjZiYTIzZGU3Ni4uNjE0MjA3MzViZWExZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuY1xuQEAgLTE5Niw3ICYjNDM7MTk2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xuIFx0XHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXCYjMzQ7aGVsbG9cJiMzNDspIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcJiMzNDtTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCYjMzQ7LFxuLVx0XHRcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuJiM0MztcdFx0XHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHQvKlxuIFx0XHQgKiBJZiB0aGlzIHN0YWdlIDIgdGhlbiB3ZSBzaG91bGQgdmVyaWZ5IHRoZSB2bXggcHQgZXhwaXJ5XG4gXHRcdCAqIGlzIGFzIGV4cGVjdGVkLlxuQEAgLTIzNyw3ICYjNDM7MjM3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0dmNwdV9yZWdzX2dldCh2Y3B1LCBcdTAwMjZyZWdzMik7XG4gXHRcdFRFU1RfQVNTRVJUKCFtZW1jbXAoXHUwMDI2cmVnczEsIFx1MDAyNnJlZ3MyLCBzaXplb2YocmVnczIpKSxcbiBcdFx0XHQgICAgXCYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseFwmIzM0Oyxcbi1cdFx0XHQgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTtcbiYjNDM7XHRcdFx0ICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTtcbiBcdH1cbiBcbiBkb25lOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE5OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMsIHJlcGxhY2luZyBgKHVsb25nKWAgd2l0aCBgKHVuc2lnbmVkIGxvbmcpYC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjIwNDg5NmQ1OTFkZTcyZmI0MzJmMWUzZDdiYjRlZjIwNDRiOTczOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMTk6NTk6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuYwppbmRleCA1ZDk2Y2RmMzgyYzQ3Li45MGQyMmIyY2I2Y2M5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmMKQEAgLTE2Miw3ICYjNDM7MTYyLDcgQEAgc3RydWN0IHN0X3RpbWUgewogCiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewotCXU2NCBzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0U7CiYjNDM7CXU2NCBzdF9pcGEgPSAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRTsKIAl1bnNpZ25lZCBpbnQgZ3BhZ2VzOwogCiAJZ3BhZ2VzID0gdm1fY2FsY19udW1fZ3Vlc3RfcGFnZXMoVk1fTU9ERV9ERUZBVUxULCBTVEVBTF9USU1FX1NJWkUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfcGVyZl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYwppbmRleCA0ZDlhZDYxMDRhNmVkLi44ZjI2YjFjZWUwY2QyIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYwpAQCAtMTUyLDcgJiM0MzsxNTIsNyBAQCBzdGF0aWMgdm9pZCAqdmNwdV93b3JrZXIodm9pZCAqX19kYXRhKQogCQljYXNlIFVDQUxMX1NZTkM6CiAJCQlURVNUX0FTU0VSVCh1Yy5hcmdzWzFdID09IDAsCiAJCQkJJiMzNDtVbmV4cGVjdGVkIHN5bmMgdWNhbGwsIGdvdCAlbHgmIzM0OywKLQkJCQkodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJCSh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pOwogCQkJc2VtX3Bvc3QoJmFtcDt2Y3B1X3JlYWR5KTsKIAkJCWNvbnRpbnVlOwogCQljYXNlIFVDQUxMX05PTkU6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuYwppbmRleCA3NmZjZGQxZmQzY2I0Li5kZDNlNWQ5MGRlNWNmIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmMKQEAgLTczLDEyICYjNDM7NzMsMTIgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpCiAJc3RfZ3ZhW2ldID0gKHZvaWQgKikoU1RfR1BBX0JBU0UgJiM0MzsgaSAqIFNURUFMX1RJTUVfU0laRSk7CiAJc3luY19nbG9iYWxfdG9fZ3Vlc3QodmNwdS0mZ3Q7dm0sIHN0X2d2YVtpXSk7CiAKLQl2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLCAodWxvbmcpc3RfZ3ZhW2ldIHwgS1ZNX01TUl9FTkFCTEVEKTsKJiM0MzsJdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2ldIHwgS1ZNX01TUl9FTkFCTEVEKTsKIH0KIAogc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpCiB7Ci0Jc3RydWN0IGt2bV9zdGVhbF90aW1lICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVsb25nKXN0X2d2YVt2Y3B1X2lkeF0pOwomIzQzOwlzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTsKIAogCWtzZnRfcHJpbnRfbXNnKCYjMzQ7VkNQVSVkOlxuJiMzNDssIHZjcHVfaWR4KTsKIAlrc2Z0X3ByaW50X21zZygmIzM0OyAgICBzdGVhbDogICAgICVsbGRcbiYjMzQ7LCBzdC0mZ3Q7c3RlYWwpOwpAQCAtMTAyLDcgJiM0MzsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGVhbF90aW1lX3VhcGkodm9pZCkKIAl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgTlVMTCk7CiAKIAlyZXQgPSBfdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwKLQkJCSAgICAodWxvbmcpU1RfR1BBX0JBU0UgfCBLVk1fU1RFQUxfUkVTRVJWRURfTUFTSyk7CiYjNDM7CQkJICAgICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFIHwgS1ZNX1NURUFMX1JFU0VSVkVEX01BU0spOwogCVRFU1RfQVNTRVJUKHJldCA9PSAwLCAmIzM0O0JhZCBHUEEgZGlkbiYjMzk7dCBmYWlsJiMzNDspOwogCiAJa3ZtX3ZtX2ZyZWUodm0pOwpAQCAtMTUxLDcgJiM0MzsxNTEsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9jb2RlKGludCBjcHUpCiAKIAlzdGF0dXMgPSBzbWNjYyhQVl9USU1FX1NULCAwKTsKIAlHVUVTVF9BU1NFUlRfTkUoc3RhdHVzLCAtMSk7Ci0JR1VFU1RfQVNTRVJUX0VRKHN0YXR1cywgKHVsb25nKXN0X2d2YVtjcHVdKTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHN0YXR1cywgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2NwdV0pOwogCiAJc3QgPSAoc3RydWN0IHN0X3RpbWUgKilzdGF0dXM7CiAJR1VFU1RfU1lOQygwKTsKQEAgLTE5MCwxMyAmIzQzOzE5MCwxMyBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSkKIAlzdF9ndmFbaV0gPSAodm9pZCAqKShTVF9HUEFfQkFTRSAmIzQzOyBpICogU1RFQUxfVElNRV9TSVpFKTsKIAlzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgc3RfZ3ZhW2ldKTsKIAotCXN0X2lwYSA9ICh1bG9uZylzdF9ndmFbaV07CiYjNDM7CXN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKXN0X2d2YVtpXTsKIAl2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKIH0KIAogc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpCiB7Ci0Jc3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7CiYjNDM7CXN0cnVjdCBzdF90aW1lICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7CiAKIAlrc2Z0X3ByaW50X21zZygmIzM0O1ZDUFUlZDpcbiYjMzQ7LCB2Y3B1X2lkeCk7CiAJa3NmdF9wcmludF9tc2coJiMzNDsgICAgcmV2OiAgICAgJWRcbiYjMzQ7LCBzdC0mZ3Q7cmV2KTsKQEAgLTIyMywxMSAmIzQzOzIyMywxMSBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGVhbF90aW1lX3VhcGkodm9pZCkKIAl2bV91c2Vyc3BhY2VfbWVtX3JlZ2lvbl9hZGQodm0sIFZNX01FTV9TUkNfQU5PTllNT1VTLCBTVF9HUEFfQkFTRSwgMSwgMSwgMCk7CiAJdmlydF9tYXAodm0sIFNUX0dQQV9CQVNFLCBTVF9HUEFfQkFTRSwgMSk7CiAKLQlzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0UgfCAxOwomIzQzOwlzdF9pcGEgPSAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRSB8IDE7CiAJcmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKIAlURVNUX0FTU0VSVChyZXQgPT0gLTEgJmFtcDsmYW1wOyBlcnJubyA9PSBFSU5WQUwsICYjMzQ7QmFkIElQQSBkaWRuJiMzOTt0IHJlcG9ydCBFSU5WQUwmIzM0Oyk7CiAKLQlzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0U7CiYjNDM7CXN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFOwogCXZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgJmFtcDtkZXYpOwogCiAJcmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsICZhbXA7ZGV2KTsKQEAgLTMxOCw3ICYjNDM7MzE4LDcgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpCiAKIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KQogewotCXN0cnVjdCBzdGFfc3RydWN0ICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVsb25nKXN0X2d2YVt2Y3B1X2lkeF0pOwomIzQzOwlzdHJ1Y3Qgc3RhX3N0cnVjdCAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pOwogCWludCBpOwogCiAJcHJfaW5mbygmIzM0O1ZDUFUlZDpcbiYjMzQ7LCB2Y3B1X2lkeCk7CkBAIC00NTUsNyAmIzQzOzQ1NSw3IEBAIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpKQogCiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeCkKIHsKLQlzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7CiYjNDM7CXN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pOwogCiAJa3NmdF9wcmludF9tc2coJiMzNDtWQ1BVJWQ6XG4mIzM0OywgdmNwdV9pZHgpOwogCWtzZnRfcHJpbnRfbXNnKCYjMzQ7ICAgIHN0ZWFsOiAgICAgJWxsZFxuJiMzNDssIHN0LSZndDtzdGVhbCk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmMKaW5kZXggNGU2M2RhMmIxODg5Yy4uNjZiNmU0NDJjNDFjMCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYW14X3Rlc3QuYwpAQCAtMzI1LDcgJiM0MzszMjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCXZjcHVfcmVnc19nZXQodmNwdSwgJmFtcDtyZWdzMik7CiAJCQkJVEVTVF9BU1NFUlQoIW1lbWNtcCgmYW1wO3JlZ3MxLCAmYW1wO3JlZ3MyLCBzaXplb2YocmVnczIpKSwKIAkJCQkJICAgICYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseCYjMzQ7LAotCQkJCQkgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTsKJiM0MzsJCQkJCSAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7CiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBVQ0FMTF9ET05FOgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuYwppbmRleCBlZjBkZGQyNDA4ODc0Li5kY2Q5OWEwNTAxZWVhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuYwpAQCAtMTI4LDcgJiM0MzsxMjgsNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzdGFnZSkKIAkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UgJiM0MzsgMSwKIAkJCSAgICAmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHgmIzM0OywKLQkJCSAgICBzdGFnZSAmIzQzOyAxLCAodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJICAgIHN0YWdlICYjNDM7IDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pOwogCQlyZXR1cm47CiAJY2FzZSBVQ0FMTF9ET05FOgogCQlyZXR1cm47CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfY2xvY2suYwppbmRleCBjMDgzY2VhNTQ2ZGNlLi4zZGM5YTljMmFhNTRkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmMKQEAgLTI0OCw3ICYjNDM7MjQ4LDcgQEAgaW50IG1haW4odm9pZCkKIAkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsCiAJCQkgICAgJiMzNDtTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4JiMzNDssCi0JCQkgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTsKJiM0MzsJCQkgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pOwogCiAJCS8qIFJlc2V0IGt2bWNsb2NrIHRyaWdnZXJpbmcgVFNDIHBhZ2UgdXBkYXRlICovCiAJCWlmIChzdGFnZSA9PSA3IHx8IHN0YWdlID09IDggfHwgc3RhZ2UgPT0gMTApIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9ldm1jcy5jCmluZGV4IGM3ZmExMTRhZWUyMGYuLjM1ODIxYzYyYTFiZDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuYwpAQCAtMjI1LDcgJiM0MzsyMjUsNyBAQCBzdGF0aWMgc3RydWN0IGt2bV92Y3B1ICpzYXZlX3Jlc3RvcmVfdm0oc3RydWN0IGt2bV92bSAqdm0sCiAJdmNwdV9yZWdzX2dldCh2Y3B1LCAmYW1wO3JlZ3MyKTsKIAlURVNUX0FTU0VSVCghbWVtY21wKCZhbXA7cmVnczEsICZhbXA7cmVnczIsIHNpemVvZihyZWdzMikpLAogCQkgICAgJiMzNDtVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4JiMzNDssCi0JCSAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpOwomIzQzOwkJICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTsKIAlyZXR1cm4gdmNwdTsKIH0KIApAQCAtMjgxLDcgJiM0MzsyODEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkvKiBVQ0FMTF9TWU5DIGlzIGhhbmRsZWQgaGVyZS4gICovCiAJCVRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCAmIzM0O2hlbGxvJiMzNDspICZhbXA7JmFtcDsKIAkJCSAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCAmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHgmIzM0OywKLQkJCSAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pOwomIzQzOwkJCSAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7CiAKIAkJdmNwdSA9IHNhdmVfcmVzdG9yZV92bSh2bSwgdmNwdSk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jCmluZGV4IDdhNjJmNmE5ZDYwNmQuLjJjZTJiMDA5MmQ0MzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuYwpAQCAtMTkwLDcgJiM0MzsxOTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkvKiBVQ0FMTF9TWU5DIGlzIGhhbmRsZWQgaGVyZS4gICovCiAJCVRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCAmIzM0O2hlbGxvJiMzNDspICZhbXA7JmFtcDsKIAkJCSAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCAmIzM0O1N0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHgmIzM0OywKLQkJCSAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pOwomIzQzOwkJCSAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7CiAKIAl9CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9ib290X2NwdV9pZC5jCmluZGV4IDhlMzg5ODY0NmM2OWQuLjkwOWNkOWU4M2ZkYWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuYwpAQCAtNjksNyAmIzQzOzY5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJCQl1Yy5hcmdzWzFdID09IHN0YWdlICYjNDM7IDEsCiAJCQkJCSYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseCYjMzQ7LAotCQkJCQlzdGFnZSAmIzQzOyAxLCAodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJCQlzdGFnZSAmIzQzOyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTsKIAkJCXRlc3Rfc2V0X2JzcF9idXN5KHZjcHUsICYjMzQ7d2hpbGUgcnVubmluZyB2bSYjMzQ7KTsKIAkJCWJyZWFrOwogCQljYXNlIFVDQUxMX0RPTkU6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jCmluZGV4IDQwOWM2Y2M5ZjkyMTQuLjQ2MWZkYjZjY2FkYjEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jCkBAIC0zMDMsNyAmIzQzOzMwMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCS8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi8KIAkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsICYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseCYjMzQ7LAotCQkJICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTsKIAogCQlzdGF0ZSA9IHZjcHVfc2F2ZV9zdGF0ZSh2Y3B1KTsKIAkJbWVtc2V0KCZhbXA7cmVnczEsIDAsIHNpemVvZihyZWdzMSkpOwpAQCAtMzUwLDcgJiM0MzszNTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl2Y3B1X3JlZ3NfZ2V0KHZjcHUsICZhbXA7cmVnczIpOwogCQlURVNUX0FTU0VSVCghbWVtY21wKCZhbXA7cmVnczEsICZhbXA7cmVnczIsIHNpemVvZihyZWdzMikpLAogCQkJICAgICYjMzQ7VW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseCYjMzQ7LAotCQkJICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7CiYjNDM7CQkJICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTsKIAl9CiAKIGRvbmU6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jCmluZGV4IDkxNTgzOTY5YTE0ZmIuLjU1Nzc5NzczNjE0YjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jCkBAIC03OCw3ICYjNDM7NzgsNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzdGFnZSkKIAkJZWxzZQogCQkJa3NmdF90ZXN0X3Jlc3VsdF9mYWlsKAogCQkJCSYjMzQ7c3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseCYjMzQ7LAotCQkJCXN0YWdlICYjNDM7IDEsICh1bG9uZyl1Yy5hcmdzWzFdKTsKJiM0MzsJCQkJc3RhZ2UgJiM0MzsgMSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7CiAJCXJldHVybjsKIAljYXNlIFVDQUxMX0RPTkU6CiAJCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygmIzM0O3N0YWdlICVkIHBhc3NlZFxuJiMzNDssIHN0YWdlICYjNDM7IDEpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfbmVzdGVkX2xhNTdfc3RhdGVfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfbmVzdGVkX2xhNTdfc3RhdGVfdGVzdC5jCmluZGV4IGYxM2RlZTMxNzM4MzcuLjc5ZmJjNThiOGM1ZTEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmMKQEAgLTExMiw3ICYjNDM7MTEyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJfQogCiAJCVRFU1RfQVNTRVJUKHVjLmFyZ3NbMV0gPT0gc3RhZ2UsCi0JCQkgICAgJiMzNDtFeHBlY3RlZCBzdGFnZSAlZCwgZ290IHN0YWdlICVsdSYjMzQ7LCBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pOwomIzQzOwkJCSAgICAmIzM0O0V4cGVjdGVkIHN0YWdlICVkLCBnb3Qgc3RhZ2UgJWx1JiMzNDssIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTsKIAkJaWYgKHN0YWdlID09IDEpIHsKIAkJCXByX2luZm8oJiMzNDtMMiBpcyBhY3RpdmU7IHBlcmZvcm1pbmcgc2F2ZS9yZXN0b3JlLlxuJiMzNDspOwogCQkJc3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jCmluZGV4IDFiN2I2YmEyM2RlNzYuLjYxNDIwNzM1YmVhMWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jCkBAIC0xOTYsNyAmIzQzOzE5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCS8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi8KIAkJVEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sICYjMzQ7aGVsbG8mIzM0OykgJmFtcDsmYW1wOwogCQkJICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsICYjMzQ7U3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseCYjMzQ7LAotCQkJICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7CiYjNDM7CQkJICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTsKIAkJLyoKIAkJICogSWYgdGhpcyBzdGFnZSAyIHRoZW4gd2Ugc2hvdWxkIHZlcmlmeSB0aGUgdm14IHB0IGV4cGlyeQogCQkgKiBpcyBhcyBleHBlY3RlZC4KQEAgLTIzNyw3ICYjNDM7MjM3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJdmNwdV9yZWdzX2dldCh2Y3B1LCAmYW1wO3JlZ3MyKTsKIAkJVEVTVF9BU1NFUlQoIW1lbWNtcCgmYW1wO3JlZ3MxLCAmYW1wO3JlZ3MyLCBzaXplb2YocmVnczIpKSwKIAkJCSAgICAmIzM0O1VuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHgmIzM0OywKLQkJCSAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpOwomIzQzOwkJCSAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7CiAJfQogCiBkb25lOgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzAyCgkJCQkJCQlvdXRwdXQ6IDY2CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBTZWxmdGVzdCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O3NlbGZ0ZXN0cywmIzM0OyB3aGljaCBhcmUgdXN1YWxseSBhIGxvd2VyIHByaW9yaXR5IHRoYW4gY29yZSBrZXJuZWwgbW9kaWZpY2F0aW9ucyB3aGVuIGNvbnNpZGVyaW5nIGZ1enppbmcgcmVsZXZhbmNlLiBNeSBpbml0aWFsIHJlYWQgb2YgdGhlIGNoYW5nZSBpcyBzaW1wbGU7IGl0JiMzOTtzIGEgdHlwZSBjYXN0IHJlcGxhY2VtZW50OiBgKHVsb25nKWAgaXMgYmVpbmcgc3dhcHBlZCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBBIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2UgbGlrZSB0aGlzLCB3aXRoaW4gdGhlIHRlc3RpbmcgZnJhbWV3b3JrLCBzY3JlYW1zICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgdG8gbWUuCgpCdXQsIGFzIGFsd2F5cywgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBMZXQmIzM5O3MgY29uZmlybSB0aGlzIGRvZXNuJiMzOTt0IGFjY2lkZW50YWxseSB0b3VjaCBzb21ldGhpbmcgZGVlcGVyLiBJ4oCZbGwgcmUtZXhhbWluZSB0aGUgZGlmZi4gQWgsIHllcywganVzdCBhcyBzdXNwZWN0ZWQ6IHRoZSBjaGFuZ2UgaXMgY29uZmluZWQgdG8gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYCBkaXJlY3RvcnkgYW5kIGlzLCBpbiBmYWN0LCBvbmx5IGFib3V0IHR5cGUgY2FzdHMuIE5vIGltcGFjdCBvbiBhbnkgY3JpdGljYWwga2VybmVsIGNvZGUuIFRoZXJlZm9yZSwgYWZ0ZXIgbXkgZG91YmxlLWNoZWNrLCBJIGNhbiBjb25maWRlbnRseSByZXR1cm4gJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxOTo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cywgcmVwbGFjaW5nIGAodWxvbmcpYCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cywgcmVwbGFjaW5nIGAodWxvbmcpYCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo1OTozMi4zOTI3NjkxNzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjEyNjgyNzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMsIHJlcGxhY2luZyBgKHVsb25nKWAgd2l0aCBgKHVuc2lnbmVkIGxvbmcpYC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo1OTozMi4zOTI3NzUyNzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0OTUwNTgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIyMDQ4OTZkNTkxZGU3MmZiNDMyZjFlM2Q3YmI0ZWYyMDQ0Yjk3MzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAxOTo1OTozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuY1xcbmluZGV4IDVkOTZjZGYzODJjNDcuLjkwZDIyYjJjYjZjYzkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmNcXG5AQCAtMTYyLDcgKzE2Miw3IEBAIHN0cnVjdCBzdF90aW1lIHtcXG4gXFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIHtcXG4tXFx0dTY0IHN0X2lwYSA9ICh1bG9uZylTVF9HUEFfQkFTRTtcXG4rXFx0dTY0IHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFO1xcbiBcXHR1bnNpZ25lZCBpbnQgZ3BhZ2VzO1xcbiBcXG4gXFx0Z3BhZ2VzID0gdm1fY2FsY19udW1fZ3Vlc3RfcGFnZXMoVk1fTU9ERV9ERUZBVUxULCBTVEVBTF9USU1FX1NJWkUpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jXFxuaW5kZXggNGQ5YWQ2MTA0YTZlZC4uOGYyNmIxY2VlMGNkMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jXFxuQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgdm9pZCAqdmNwdV93b3JrZXIodm9pZCAqX19kYXRhKVxcbiBcXHRcXHRjYXNlIFVDQUxMX1NZTkM6XFxuIFxcdFxcdFxcdFRFU1RfQVNTRVJUKHVjLmFyZ3NbMV0gPT0gMCxcXG4gXFx0XFx0XFx0XFx0XFxcIlVuZXhwZWN0ZWQgc3luYyB1Y2FsbCwgZ290ICVseFxcXCIsXFxuLVxcdFxcdFxcdFxcdCh1bG9uZyl1Yy5hcmdzWzFdKTtcXG4rXFx0XFx0XFx0XFx0KHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcdFxcdFxcdHNlbV9wb3N0KFxcdTAwMjZ2Y3B1X3JlYWR5KTtcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcdFxcdGNhc2UgVUNBTExfTk9ORTpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmNcXG5pbmRleCA3NmZjZGQxZmQzY2I0Li5kZDNlNWQ5MGRlNWNmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jXFxuQEAgLTczLDEyICs3MywxMiBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcXG4gXFx0c3RfZ3ZhW2ldID0gKHZvaWQgKikoU1RfR1BBX0JBU0UgKyBpICogU1RFQUxfVElNRV9TSVpFKTtcXG4gXFx0c3luY19nbG9iYWxfdG9fZ3Vlc3QodmNwdS1cXHUwMDNldm0sIHN0X2d2YVtpXSk7XFxuIFxcbi1cXHR2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLCAodWxvbmcpc3RfZ3ZhW2ldIHwgS1ZNX01TUl9FTkFCTEVEKTtcXG4rXFx0dmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2ldIHwgS1ZNX01TUl9FTkFCTEVEKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpXFxuIHtcXG4tXFx0c3RydWN0IGt2bV9zdGVhbF90aW1lICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xcbitcXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcXG4gXFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJWQ1BVJWQ6XFxcXG5cXFwiLCB2Y3B1X2lkeCk7XFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCIgICAgc3RlYWw6ICAgICAlbGxkXFxcXG5cXFwiLCBzdC1cXHUwMDNlc3RlYWwpO1xcbkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfc3RlYWxfdGltZV91YXBpKHZvaWQpXFxuIFxcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXFx1MDAyNnZjcHUsIE5VTEwpO1xcbiBcXG4gXFx0cmV0ID0gX3ZjcHVfc2V0X21zcih2Y3B1LCBNU1JfS1ZNX1NURUFMX1RJTUUsXFxuLVxcdFxcdFxcdCAgICAodWxvbmcpU1RfR1BBX0JBU0UgfCBLVk1fU1RFQUxfUkVTRVJWRURfTUFTSyk7XFxuK1xcdFxcdFxcdCAgICAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRSB8IEtWTV9TVEVBTF9SRVNFUlZFRF9NQVNLKTtcXG4gXFx0VEVTVF9BU1NFUlQocmV0ID09IDAsIFxcXCJCYWQgR1BBIGRpZG4ndCBmYWlsXFxcIik7XFxuIFxcbiBcXHRrdm1fdm1fZnJlZSh2bSk7XFxuQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9jb2RlKGludCBjcHUpXFxuIFxcbiBcXHRzdGF0dXMgPSBzbWNjYyhQVl9USU1FX1NULCAwKTtcXG4gXFx0R1VFU1RfQVNTRVJUX05FKHN0YXR1cywgLTEpO1xcbi1cXHRHVUVTVF9BU1NFUlRfRVEoc3RhdHVzLCAodWxvbmcpc3RfZ3ZhW2NwdV0pO1xcbitcXHRHVUVTVF9BU1NFUlRfRVEoc3RhdHVzLCAodW5zaWduZWQgbG9uZylzdF9ndmFbY3B1XSk7XFxuIFxcbiBcXHRzdCA9IChzdHJ1Y3Qgc3RfdGltZSAqKXN0YXR1cztcXG4gXFx0R1VFU1RfU1lOQygwKTtcXG5AQCAtMTkwLDEzICsxOTAsMTMgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpXFxuIFxcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICsgaSAqIFNURUFMX1RJTUVfU0laRSk7XFxuIFxcdHN5bmNfZ2xvYmFsX3RvX2d1ZXN0KHZtLCBzdF9ndmFbaV0pO1xcbiBcXG4tXFx0c3RfaXBhID0gKHVsb25nKXN0X2d2YVtpXTtcXG4rXFx0c3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW2ldO1xcbiBcXHR2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFxcdTAwMjZkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeClcXG4ge1xcbi1cXHRzdHJ1Y3Qgc3RfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcXG4rXFx0c3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcXG4gXFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCJWQ1BVJWQ6XFxcXG5cXFwiLCB2Y3B1X2lkeCk7XFxuIFxcdGtzZnRfcHJpbnRfbXNnKFxcXCIgICAgcmV2OiAgICAgJWRcXFxcblxcXCIsIHN0LVxcdTAwM2VyZXYpO1xcbkBAIC0yMjMsMTEgKzIyMywxMSBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGVhbF90aW1lX3VhcGkodm9pZClcXG4gXFx0dm1fdXNlcnNwYWNlX21lbV9yZWdpb25fYWRkKHZtLCBWTV9NRU1fU1JDX0FOT05ZTU9VUywgU1RfR1BBX0JBU0UsIDEsIDEsIDApO1xcbiBcXHR2aXJ0X21hcCh2bSwgU1RfR1BBX0JBU0UsIFNUX0dQQV9CQVNFLCAxKTtcXG4gXFxuLVxcdHN0X2lwYSA9ICh1bG9uZylTVF9HUEFfQkFTRSB8IDE7XFxuK1xcdHN0X2lwYSA9ICh1bnNpZ25lZCBsb25nKVNUX0dQQV9CQVNFIHwgMTtcXG4gXFx0cmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFxcdTAwMjZkZXYpO1xcbiBcXHRURVNUX0FTU0VSVChyZXQgPT0gLTEgXFx1MDAyNlxcdTAwMjYgZXJybm8gPT0gRUlOVkFMLCBcXFwiQmFkIElQQSBkaWRuJ3QgcmVwb3J0IEVJTlZBTFxcXCIpO1xcbiBcXG4tXFx0c3RfaXBhID0gKHVsb25nKVNUX0dQQV9CQVNFO1xcbitcXHRzdF9pcGEgPSAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRTtcXG4gXFx0dmNwdV9pb2N0bCh2Y3B1LCBLVk1fU0VUX0RFVklDRV9BVFRSLCBcXHUwMDI2ZGV2KTtcXG4gXFxuIFxcdHJldCA9IF9fdmNwdV9pb2N0bCh2Y3B1LCBLVk1fU0VUX0RFVklDRV9BVFRSLCBcXHUwMDI2ZGV2KTtcXG5AQCAtMzE4LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpKVxcbiBcXG4gc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpXFxuIHtcXG4tXFx0c3RydWN0IHN0YV9zdHJ1Y3QgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XFxuK1xcdHN0cnVjdCBzdGFfc3RydWN0ICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVuc2lnbmVkIGxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XFxuIFxcdGludCBpO1xcbiBcXG4gXFx0cHJfaW5mbyhcXFwiVkNQVSVkOlxcXFxuXFxcIiwgdmNwdV9pZHgpO1xcbkBAIC00NTUsNyArNDU1LDcgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpXFxuIFxcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeClcXG4ge1xcbi1cXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XFxuK1xcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xcbiBcXG4gXFx0a3NmdF9wcmludF9tc2coXFxcIlZDUFUlZDpcXFxcblxcXCIsIHZjcHVfaWR4KTtcXG4gXFx0a3NmdF9wcmludF9tc2coXFxcIiAgICBzdGVhbDogICAgICVsbGRcXFxcblxcXCIsIHN0LVxcdTAwM2VzdGVhbCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYW14X3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvYW14X3Rlc3QuY1xcbmluZGV4IDRlNjNkYTJiMTg4OWMuLjY2YjZlNDQyYzQxYzAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jXFxuQEAgLTMyNSw3ICszMjUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRcXHRcXHRcXHR2Y3B1X3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZyZWdzMik7XFxuIFxcdFxcdFxcdFxcdFRFU1RfQVNTRVJUKCFtZW1jbXAoXFx1MDAyNnJlZ3MxLCBcXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgXFxcIlVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHhcXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTtcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBVQ0FMTF9ET05FOlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvY3B1aWRfdGVzdC5jXFxuaW5kZXggZWYwZGRkMjQwODg3NC4uZGNkOTlhMDUwMWVlYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvY3B1aWRfdGVzdC5jXFxuQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzdGFnZSlcXG4gXFx0XFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFxcXCJoZWxsb1xcXCIpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlICsgMSxcXG4gXFx0XFx0XFx0ICAgIFxcXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgIHN0YWdlICsgMSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xcbitcXHRcXHRcXHQgICAgc3RhZ2UgKyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHRjYXNlIFVDQUxMX0RPTkU6XFxuIFxcdFxcdHJldHVybjtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfY2xvY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcXG5pbmRleCBjMDgzY2VhNTQ2ZGNlLi4zZGM5YTljMmFhNTRkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jXFxuQEAgLTI0OCw3ICsyNDgsNyBAQCBpbnQgbWFpbih2b2lkKVxcbiBcXHRcXHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXFxcImhlbGxvXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsXFxuIFxcdFxcdFxcdCAgICBcXFwiU3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFxcXCIsXFxuLVxcdFxcdFxcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xcbitcXHRcXHRcXHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xcbiBcXG4gXFx0XFx0LyogUmVzZXQga3ZtY2xvY2sgdHJpZ2dlcmluZyBUU0MgcGFnZSB1cGRhdGUgKi9cXG4gXFx0XFx0aWYgKHN0YWdlID09IDcgfHwgc3RhZ2UgPT0gOCB8fCBzdGFnZSA9PSAxMCkge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9ldm1jcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuY1xcbmluZGV4IGM3ZmExMTRhZWUyMGYuLjM1ODIxYzYyYTFiZDMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcXG5AQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3ZtX3ZjcHUgKnNhdmVfcmVzdG9yZV92bShzdHJ1Y3Qga3ZtX3ZtICp2bSxcXG4gXFx0dmNwdV9yZWdzX2dldCh2Y3B1LCBcXHUwMDI2cmVnczIpO1xcbiBcXHRURVNUX0FTU0VSVCghbWVtY21wKFxcdTAwMjZyZWdzMSwgXFx1MDAyNnJlZ3MyLCBzaXplb2YocmVnczIpKSxcXG4gXFx0XFx0ICAgIFxcXCJVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4XFxcIixcXG4tXFx0XFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XFxuK1xcdFxcdCAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7XFxuIFxcdHJldHVybiB2Y3B1O1xcbiB9XFxuIFxcbkBAIC0yODEsNyArMjgxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xcbiBcXHRcXHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXFxcImhlbGxvXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsIFxcXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XFxuK1xcdFxcdFxcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcbiBcXHRcXHR2Y3B1ID0gc2F2ZV9yZXN0b3JlX3ZtKHZtLCB2Y3B1KTtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jXFxuaW5kZXggN2E2MmY2YTlkNjA2ZC4uMmNlMmIwMDkyZDQzOSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuY1xcbkBAIC0xOTAsNyArMTkwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xcbiBcXHRcXHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXFxcImhlbGxvXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsIFxcXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XFxuK1xcdFxcdFxcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9ib290X2NwdV9pZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xcbmluZGV4IDhlMzg5ODY0NmM2OWQuLjkwOWNkOWU4M2ZkYWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmNcXG5AQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdFxcdFxcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcXFwiaGVsbG9cXFwiKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHRcXHR1Yy5hcmdzWzFdID09IHN0YWdlICsgMSxcXG4gXFx0XFx0XFx0XFx0XFx0XFxcIlN0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHRzdGFnZSArIDEsICh1bG9uZyl1Yy5hcmdzWzFdKTtcXG4rXFx0XFx0XFx0XFx0XFx0c3RhZ2UgKyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcXG4gXFx0XFx0XFx0dGVzdF9zZXRfYnNwX2J1c3kodmNwdSwgXFxcIndoaWxlIHJ1bm5pbmcgdm1cXFwiKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgVUNBTExfRE9ORTpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuY1xcbmluZGV4IDQwOWM2Y2M5ZjkyMTQuLjQ2MWZkYjZjY2FkYjEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuY1xcbkBAIC0zMDMsNyArMzAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xcbiBcXHRcXHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXFxcImhlbGxvXFxcIikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsIFxcXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XFxuK1xcdFxcdFxcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcbiBcXHRcXHRzdGF0ZSA9IHZjcHVfc2F2ZV9zdGF0ZSh2Y3B1KTtcXG4gXFx0XFx0bWVtc2V0KFxcdTAwMjZyZWdzMSwgMCwgc2l6ZW9mKHJlZ3MxKSk7XFxuQEAgLTM1MCw3ICszNTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXHRcXHR2Y3B1X3JlZ3NfZ2V0KHZjcHUsIFxcdTAwMjZyZWdzMik7XFxuIFxcdFxcdFRFU1RfQVNTRVJUKCFtZW1jbXAoXFx1MDAyNnJlZ3MxLCBcXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxcbiBcXHRcXHRcXHQgICAgXFxcIlVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHhcXFwiLFxcbi1cXHRcXHRcXHQgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTtcXG4rXFx0XFx0XFx0ICAgICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJkaSwgKHVuc2lnbmVkIGxvbmcpcmVnczIucnNpKTtcXG4gXFx0fVxcbiBcXG4gZG9uZTpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni90c2NfbXNyc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuY1xcbmluZGV4IDkxNTgzOTY5YTE0ZmIuLjU1Nzc5NzczNjE0YjggMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni90c2NfbXNyc190ZXN0LmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuY1xcbkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyB2b2lkIHJ1bl92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IHN0YWdlKVxcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcXG4gXFx0XFx0XFx0XFx0XFxcInN0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcXFwiLFxcbi1cXHRcXHRcXHRcXHRzdGFnZSArIDEsICh1bG9uZyl1Yy5hcmdzWzFdKTtcXG4rXFx0XFx0XFx0XFx0c3RhZ2UgKyAxLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHRjYXNlIFVDQUxMX0RPTkU6XFxuIFxcdFxcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcXFwic3RhZ2UgJWQgcGFzc2VkXFxcXG5cXFwiLCBzdGFnZSArIDEpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9uZXN0ZWRfbGE1N19zdGF0ZV90ZXN0LmNcXG5pbmRleCBmMTNkZWUzMTczODM3Li43OWZiYzU4YjhjNWUxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xcbkBAIC0xMTIsNyArMTEyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0VEVTVF9BU1NFUlQodWMuYXJnc1sxXSA9PSBzdGFnZSxcXG4tXFx0XFx0XFx0ICAgIFxcXCJFeHBlY3RlZCBzdGFnZSAlZCwgZ290IHN0YWdlICVsdVxcXCIsIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XFxuK1xcdFxcdFxcdCAgICBcXFwiRXhwZWN0ZWQgc3RhZ2UgJWQsIGdvdCBzdGFnZSAlbHVcXFwiLCBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XFxuIFxcdFxcdGlmIChzdGFnZSA9PSAxKSB7XFxuIFxcdFxcdFxcdHByX2luZm8oXFxcIkwyIGlzIGFjdGl2ZTsgcGVyZm9ybWluZyBzYXZlL3Jlc3RvcmUuXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0LmNcXG5pbmRleCAxYjdiNmJhMjNkZTc2Li42MTQyMDczNWJlYTFmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0LmNcXG5AQCAtMTk2LDcgKzE5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuIFxcdFxcdC8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi9cXG4gXFx0XFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFxcXCJoZWxsb1xcXCIpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcXFwiU3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFxcXCIsXFxuLVxcdFxcdFxcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xcbitcXHRcXHRcXHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBJZiB0aGlzIHN0YWdlIDIgdGhlbiB3ZSBzaG91bGQgdmVyaWZ5IHRoZSB2bXggcHQgZXhwaXJ5XFxuIFxcdFxcdCAqIGlzIGFzIGV4cGVjdGVkLlxcbkBAIC0yMzcsNyArMjM3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4gXFx0XFx0dmNwdV9yZWdzX2dldCh2Y3B1LCBcXHUwMDI2cmVnczIpO1xcbiBcXHRcXHRURVNUX0FTU0VSVCghbWVtY21wKFxcdTAwMjZyZWdzMSwgXFx1MDAyNnJlZ3MyLCBzaXplb2YocmVnczIpKSxcXG4gXFx0XFx0XFx0ICAgIFxcXCJVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4XFxcIixcXG4tXFx0XFx0XFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XFxuK1xcdFxcdFxcdCAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7XFxuIFxcdH1cXG4gXFxuIGRvbmU6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjU5OjMyLjc0MzA2NjAyM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQyNjIzNzczNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cywgcmVwbGFjaW5nIGAodWxvbmcpYCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIyMDQ4OTZkNTkxZGU3MmZiNDMyZjFlM2Q3YmI0ZWYyMDQ0Yjk3MzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE5OjU5OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2FybTY0L2h5cGVyY2FsbHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9hcm02NC9oeXBlcmNhbGxzLmNcbmluZGV4IDVkOTZjZGYzODJjNDcuLjkwZDIyYjJjYjZjYzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYXJtNjQvaHlwZXJjYWxscy5jXG5AQCAtMTYyLDcgKzE2Miw3IEBAIHN0cnVjdCBzdF90aW1lIHtcbiBcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbi1cdHU2NCBzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0U7XG4rXHR1NjQgc3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpU1RfR1BBX0JBU0U7XG4gXHR1bnNpZ25lZCBpbnQgZ3BhZ2VzO1xuIFxuIFx0Z3BhZ2VzID0gdm1fY2FsY19udW1fZ3Vlc3RfcGFnZXMoVk1fTU9ERV9ERUZBVUxULCBTVEVBTF9USU1FX1NJWkUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9tZW1zbG90X3BlcmZfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfcGVyZl90ZXN0LmNcbmluZGV4IDRkOWFkNjEwNGE2ZWQuLjhmMjZiMWNlZTBjZDIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbWVtc2xvdF9wZXJmX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL21lbXNsb3RfcGVyZl90ZXN0LmNcbkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGljIHZvaWQgKnZjcHVfd29ya2VyKHZvaWQgKl9fZGF0YSlcbiBcdFx0Y2FzZSBVQ0FMTF9TWU5DOlxuIFx0XHRcdFRFU1RfQVNTRVJUKHVjLmFyZ3NbMV0gPT0gMCxcbiBcdFx0XHRcdFwiVW5leHBlY3RlZCBzeW5jIHVjYWxsLCBnb3QgJWx4XCIsXG4tXHRcdFx0XHQodWxvbmcpdWMuYXJnc1sxXSk7XG4rXHRcdFx0XHQodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcdFx0XHRzZW1fcG9zdChcdTAwMjZ2Y3B1X3JlYWR5KTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0Y2FzZSBVQ0FMTF9OT05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9zdGVhbF90aW1lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vc3RlYWxfdGltZS5jXG5pbmRleCA3NmZjZGQxZmQzY2I0Li5kZDNlNWQ5MGRlNWNmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3N0ZWFsX3RpbWUuY1xuQEAgLTczLDEyICs3MywxMiBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICsgaSAqIFNURUFMX1RJTUVfU0laRSk7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2Y3B1LVx1MDAzZXZtLCBzdF9ndmFbaV0pO1xuIFxuLVx0dmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSwgKHVsb25nKXN0X2d2YVtpXSB8IEtWTV9NU1JfRU5BQkxFRCk7XG4rXHR2Y3B1X3NldF9tc3IodmNwdSwgTVNSX0tWTV9TVEVBTF9USU1FLCAodW5zaWduZWQgbG9uZylzdF9ndmFbaV0gfCBLVk1fTVNSX0VOQUJMRUQpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2R1bXAoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkeClcbiB7XG4tXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XG4rXHRzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwiVkNQVSVkOlxcblwiLCB2Y3B1X2lkeCk7XG4gXHRrc2Z0X3ByaW50X21zZyhcIiAgICBzdGVhbDogICAgICVsbGRcXG5cIiwgc3QtXHUwMDNlc3RlYWwpO1xuQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19zdGVhbF90aW1lX3VhcGkodm9pZClcbiBcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXHUwMDI2dmNwdSwgTlVMTCk7XG4gXG4gXHRyZXQgPSBfdmNwdV9zZXRfbXNyKHZjcHUsIE1TUl9LVk1fU1RFQUxfVElNRSxcbi1cdFx0XHQgICAgKHVsb25nKVNUX0dQQV9CQVNFIHwgS1ZNX1NURUFMX1JFU0VSVkVEX01BU0spO1xuK1x0XHRcdCAgICAodW5zaWduZWQgbG9uZylTVF9HUEFfQkFTRSB8IEtWTV9TVEVBTF9SRVNFUlZFRF9NQVNLKTtcbiBcdFRFU1RfQVNTRVJUKHJldCA9PSAwLCBcIkJhZCBHUEEgZGlkbid0IGZhaWxcIik7XG4gXG4gXHRrdm1fdm1fZnJlZSh2bSk7XG5AQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyB2b2lkIGd1ZXN0X2NvZGUoaW50IGNwdSlcbiBcbiBcdHN0YXR1cyA9IHNtY2NjKFBWX1RJTUVfU1QsIDApO1xuIFx0R1VFU1RfQVNTRVJUX05FKHN0YXR1cywgLTEpO1xuLVx0R1VFU1RfQVNTRVJUX0VRKHN0YXR1cywgKHVsb25nKXN0X2d2YVtjcHVdKTtcbitcdEdVRVNUX0FTU0VSVF9FUShzdGF0dXMsICh1bnNpZ25lZCBsb25nKXN0X2d2YVtjcHVdKTtcbiBcbiBcdHN0ID0gKHN0cnVjdCBzdF90aW1lICopc3RhdHVzO1xuIFx0R1VFU1RfU1lOQygwKTtcbkBAIC0xOTAsMTMgKzE5MCwxMyBAQCBzdGF0aWMgdm9pZCBzdGVhbF90aW1lX2luaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgaSlcbiBcdHN0X2d2YVtpXSA9ICh2b2lkICopKFNUX0dQQV9CQVNFICsgaSAqIFNURUFMX1RJTUVfU0laRSk7XG4gXHRzeW5jX2dsb2JhbF90b19ndWVzdCh2bSwgc3RfZ3ZhW2ldKTtcbiBcbi1cdHN0X2lwYSA9ICh1bG9uZylzdF9ndmFbaV07XG4rXHRzdF9pcGEgPSAodW5zaWduZWQgbG9uZylzdF9ndmFbaV07XG4gXHR2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KVxuIHtcbi1cdHN0cnVjdCBzdF90aW1lICpzdCA9IGFkZHJfZ3ZhMmh2YSh2bSwgKHVsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xuK1x0c3RydWN0IHN0X3RpbWUgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodW5zaWduZWQgbG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbiBcbiBcdGtzZnRfcHJpbnRfbXNnKFwiVkNQVSVkOlxcblwiLCB2Y3B1X2lkeCk7XG4gXHRrc2Z0X3ByaW50X21zZyhcIiAgICByZXY6ICAgICAlZFxcblwiLCBzdC1cdTAwM2VyZXYpO1xuQEAgLTIyMywxMSArMjIzLDExIEBAIHN0YXRpYyB2b2lkIGNoZWNrX3N0ZWFsX3RpbWVfdWFwaSh2b2lkKVxuIFx0dm1fdXNlcnNwYWNlX21lbV9yZWdpb25fYWRkKHZtLCBWTV9NRU1fU1JDX0FOT05ZTU9VUywgU1RfR1BBX0JBU0UsIDEsIDEsIDApO1xuIFx0dmlydF9tYXAodm0sIFNUX0dQQV9CQVNFLCBTVF9HUEFfQkFTRSwgMSk7XG4gXG4tXHRzdF9pcGEgPSAodWxvbmcpU1RfR1BBX0JBU0UgfCAxO1xuK1x0c3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpU1RfR1BBX0JBU0UgfCAxO1xuIFx0cmV0ID0gX192Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4gXHRURVNUX0FTU0VSVChyZXQgPT0gLTEgXHUwMDI2XHUwMDI2IGVycm5vID09IEVJTlZBTCwgXCJCYWQgSVBBIGRpZG4ndCByZXBvcnQgRUlOVkFMXCIpO1xuIFxuLVx0c3RfaXBhID0gKHVsb25nKVNUX0dQQV9CQVNFO1xuK1x0c3RfaXBhID0gKHVuc2lnbmVkIGxvbmcpU1RfR1BBX0JBU0U7XG4gXHR2Y3B1X2lvY3RsKHZjcHUsIEtWTV9TRVRfREVWSUNFX0FUVFIsIFx1MDAyNmRldik7XG4gXG4gXHRyZXQgPSBfX3ZjcHVfaW9jdGwodmNwdSwgS1ZNX1NFVF9ERVZJQ0VfQVRUUiwgXHUwMDI2ZGV2KTtcbkBAIC0zMTgsNyArMzE4LDcgQEAgc3RhdGljIHZvaWQgc3RlYWxfdGltZV9pbml0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGkpXG4gXG4gc3RhdGljIHZvaWQgc3RlYWxfdGltZV9kdW1wKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZHgpXG4ge1xuLVx0c3RydWN0IHN0YV9zdHJ1Y3QgKnN0ID0gYWRkcl9ndmEyaHZhKHZtLCAodWxvbmcpc3RfZ3ZhW3ZjcHVfaWR4XSk7XG4rXHRzdHJ1Y3Qgc3RhX3N0cnVjdCAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xuIFx0aW50IGk7XG4gXG4gXHRwcl9pbmZvKFwiVkNQVSVkOlxcblwiLCB2Y3B1X2lkeCk7XG5AQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBpKVxuIFxuIHN0YXRpYyB2b2lkIHN0ZWFsX3RpbWVfZHVtcChzdHJ1Y3Qga3ZtX3ZtICp2bSwgdTMyIHZjcHVfaWR4KVxuIHtcbi1cdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bG9uZylzdF9ndmFbdmNwdV9pZHhdKTtcbitcdHN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3QgPSBhZGRyX2d2YTJodmEodm0sICh1bnNpZ25lZCBsb25nKXN0X2d2YVt2Y3B1X2lkeF0pO1xuIFxuIFx0a3NmdF9wcmludF9tc2coXCJWQ1BVJWQ6XFxuXCIsIHZjcHVfaWR4KTtcbiBcdGtzZnRfcHJpbnRfbXNnKFwiICAgIHN0ZWFsOiAgICAgJWxsZFxcblwiLCBzdC1cdTAwM2VzdGVhbCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jXG5pbmRleCA0ZTYzZGEyYjE4ODljLi42NmI2ZTQ0MmM0MWMwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9hbXhfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2FteF90ZXN0LmNcbkBAIC0zMjUsNyArMzI1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0XHRcdHZjcHVfcmVnc19nZXQodmNwdSwgXHUwMDI2cmVnczIpO1xuIFx0XHRcdFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHRcdFx0XHQgICAgXCJVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyBhZnRlciB2Y3B1X2xvYWRfc3RhdGU7IHJkaTogJWx4IHJzaTogJWx4XCIsXG4tXHRcdFx0XHRcdCAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpO1xuK1x0XHRcdFx0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0XHRcdH1cbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvY3B1aWRfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmNcbmluZGV4IGVmMGRkZDI0MDg4NzQuLmRjZDk5YTA1MDFlZWEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2NwdWlkX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9jcHVpZF90ZXN0LmNcbkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHZvaWQgcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgc3RhZ2UpXG4gXHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcImhlbGxvXCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlICsgMSxcbiBcdFx0XHQgICAgXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCIsXG4tXHRcdFx0ICAgIHN0YWdlICsgMSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdCAgICBzdGFnZSArIDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRyZXR1cm47XG4gXHRjYXNlIFVDQUxMX0RPTkU6XG4gXHRcdHJldHVybjtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9jbG9jay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfY2xvY2suY1xuaW5kZXggYzA4M2NlYTU0NmRjZS4uM2RjOWE5YzJhYTU0ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2Nsb2NrLmNcbkBAIC0yNDgsNyArMjQ4LDcgQEAgaW50IG1haW4odm9pZClcbiBcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwiaGVsbG9cIikgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsXG4gXHRcdFx0ICAgIFwiU3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwiLFxuLVx0XHRcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XG4gXG4gXHRcdC8qIFJlc2V0IGt2bWNsb2NrIHRyaWdnZXJpbmcgVFNDIHBhZ2UgdXBkYXRlICovXG4gXHRcdGlmIChzdGFnZSA9PSA3IHx8IHN0YWdlID09IDggfHwgc3RhZ2UgPT0gMTApIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9ldm1jcy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfZXZtY3MuY1xuaW5kZXggYzdmYTExNGFlZTIwZi4uMzU4MjFjNjJhMWJkMyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X2V2bWNzLmNcbkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIHN0cnVjdCBrdm1fdmNwdSAqc2F2ZV9yZXN0b3JlX3ZtKHN0cnVjdCBrdm1fdm0gKnZtLFxuIFx0dmNwdV9yZWdzX2dldCh2Y3B1LCBcdTAwMjZyZWdzMik7XG4gXHRURVNUX0FTU0VSVCghbWVtY21wKFx1MDAyNnJlZ3MxLCBcdTAwMjZyZWdzMiwgc2l6ZW9mKHJlZ3MyKSksXG4gXHRcdCAgICBcIlVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHhcIixcbi1cdFx0ICAgICh1bG9uZykgcmVnczIucmRpLCAodWxvbmcpIHJlZ3MyLnJzaSk7XG4rXHRcdCAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7XG4gXHRyZXR1cm4gdmNwdTtcbiB9XG4gXG5AQCAtMjgxLDcgKzI4MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdC8qIFVDQUxMX1NZTkMgaXMgaGFuZGxlZCBoZXJlLiAgKi9cbiBcdFx0VEVTVF9BU1NFUlQoIXN0cmNtcCgoY29uc3QgY2hhciAqKXVjLmFyZ3NbMF0sIFwiaGVsbG9cIikgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIHVjLmFyZ3NbMV0gPT0gc3RhZ2UsIFwiU3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwiLFxuLVx0XHRcdCAgICBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdCAgICBzdGFnZSwgKHVuc2lnbmVkIGxvbmcpdWMuYXJnc1sxXSk7XG4gXG4gXHRcdHZjcHUgPSBzYXZlX3Jlc3RvcmVfdm0odm0sIHZjcHUpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvaHlwZXJ2X3N2bV90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2h5cGVydl9zdm1fdGVzdC5jXG5pbmRleCA3YTYyZjZhOWQ2MDZkLi4yY2UyYjAwOTJkNDM5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9oeXBlcnZfc3ZtX3Rlc3QuY1xuQEAgLTE5MCw3ICsxOTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHQvKiBVQ0FMTF9TWU5DIGlzIGhhbmRsZWQgaGVyZS4gICovXG4gXHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcImhlbGxvXCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcIlN0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcIixcbi1cdFx0XHQgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbitcdFx0XHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFxuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc2V0X2Jvb3RfY3B1X2lkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3NldF9ib290X2NwdV9pZC5jXG5pbmRleCA4ZTM4OTg2NDZjNjlkLi45MDljZDllODNmZGFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zZXRfYm9vdF9jcHVfaWQuY1xuQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcImhlbGxvXCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0XHR1Yy5hcmdzWzFdID09IHN0YWdlICsgMSxcbiBcdFx0XHRcdFx0XCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCIsXG4tXHRcdFx0XHRcdHN0YWdlICsgMSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdFx0XHRzdGFnZSArIDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRcdHRlc3Rfc2V0X2JzcF9idXN5KHZjcHUsIFwid2hpbGUgcnVubmluZyB2bVwiKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBVQ0FMTF9ET05FOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3RhdGVfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcbmluZGV4IDQwOWM2Y2M5ZjkyMTQuLjQ2MWZkYjZjY2FkYjEgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N0YXRlX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdGF0ZV90ZXN0LmNcbkBAIC0zMDMsNyArMzAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiBcdFx0LyogVUNBTExfU1lOQyBpcyBoYW5kbGVkIGhlcmUuICAqL1xuIFx0XHRURVNUX0FTU0VSVCghc3RyY21wKChjb25zdCBjaGFyICopdWMuYXJnc1swXSwgXCJoZWxsb1wiKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdWMuYXJnc1sxXSA9PSBzdGFnZSwgXCJTdGFnZSAlZDogVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgdm1leGl0LCBnb3QgJWx4XCIsXG4tXHRcdFx0ICAgIHN0YWdlLCAodWxvbmcpdWMuYXJnc1sxXSk7XG4rXHRcdFx0ICAgIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcbiBcdFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XG4gXHRcdG1lbXNldChcdTAwMjZyZWdzMSwgMCwgc2l6ZW9mKHJlZ3MxKSk7XG5AQCAtMzUwLDcgKzM1MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdHZjcHVfcmVnc19nZXQodmNwdSwgXHUwMDI2cmVnczIpO1xuIFx0XHRURVNUX0FTU0VSVCghbWVtY21wKFx1MDAyNnJlZ3MxLCBcdTAwMjZyZWdzMiwgc2l6ZW9mKHJlZ3MyKSksXG4gXHRcdFx0ICAgIFwiVW5leHBlY3RlZCByZWdpc3RlciB2YWx1ZXMgYWZ0ZXIgdmNwdV9sb2FkX3N0YXRlOyByZGk6ICVseCByc2k6ICVseFwiLFxuLVx0XHRcdCAgICAodWxvbmcpIHJlZ3MyLnJkaSwgKHVsb25nKSByZWdzMi5yc2kpO1xuK1x0XHRcdCAgICAodW5zaWduZWQgbG9uZylyZWdzMi5yZGksICh1bnNpZ25lZCBsb25nKXJlZ3MyLnJzaSk7XG4gXHR9XG4gXG4gZG9uZTpcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3RzY19tc3JzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jXG5pbmRleCA5MTU4Mzk2OWExNGZiLi41NTc3OTc3MzYxNGI4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni90c2NfbXNyc190ZXN0LmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdHNjX21zcnNfdGVzdC5jXG5AQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgdm9pZCBydW5fdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBzdGFnZSlcbiBcdFx0ZWxzZVxuIFx0XHRcdGtzZnRfdGVzdF9yZXN1bHRfZmFpbChcbiBcdFx0XHRcdFwic3RhZ2UgJWQ6IFVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIHZtZXhpdCwgZ290ICVseFwiLFxuLVx0XHRcdFx0c3RhZ2UgKyAxLCAodWxvbmcpdWMuYXJnc1sxXSk7XG4rXHRcdFx0XHRzdGFnZSArIDEsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHRyZXR1cm47XG4gXHRjYXNlIFVDQUxMX0RPTkU6XG4gXHRcdGtzZnRfdGVzdF9yZXN1bHRfcGFzcyhcInN0YWdlICVkIHBhc3NlZFxcblwiLCBzdGFnZSArIDEpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xuaW5kZXggZjEzZGVlMzE3MzgzNy4uNzlmYmM1OGI4YzVlMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X25lc3RlZF9sYTU3X3N0YXRlX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfbmVzdGVkX2xhNTdfc3RhdGVfdGVzdC5jXG5AQCAtMTEyLDcgKzExMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXHRcdH1cbiBcbiBcdFx0VEVTVF9BU1NFUlQodWMuYXJnc1sxXSA9PSBzdGFnZSxcbi1cdFx0XHQgICAgXCJFeHBlY3RlZCBzdGFnZSAlZCwgZ290IHN0YWdlICVsdVwiLCBzdGFnZSwgKHVsb25nKXVjLmFyZ3NbMV0pO1xuK1x0XHRcdCAgICBcIkV4cGVjdGVkIHN0YWdlICVkLCBnb3Qgc3RhZ2UgJWx1XCIsIHN0YWdlLCAodW5zaWduZWQgbG9uZyl1Yy5hcmdzWzFdKTtcbiBcdFx0aWYgKHN0YWdlID09IDEpIHtcbiBcdFx0XHRwcl9pbmZvKFwiTDIgaXMgYWN0aXZlOyBwZXJmb3JtaW5nIHNhdmUvcmVzdG9yZS5cXG5cIik7XG4gXHRcdFx0c3RhdGUgPSB2Y3B1X3NhdmVfc3RhdGUodmNwdSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuY1xuaW5kZXggMWI3YjZiYTIzZGU3Ni4uNjE0MjA3MzViZWExZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3ZteF9wcmVlbXB0aW9uX3RpbWVyX3Rlc3QuY1xuQEAgLTE5Niw3ICsxOTYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHQvKiBVQ0FMTF9TWU5DIGlzIGhhbmRsZWQgaGVyZS4gICovXG4gXHRcdFRFU1RfQVNTRVJUKCFzdHJjbXAoKGNvbnN0IGNoYXIgKil1Yy5hcmdzWzBdLCBcImhlbGxvXCIpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB1Yy5hcmdzWzFdID09IHN0YWdlLCBcIlN0YWdlICVkOiBVbmV4cGVjdGVkIHJlZ2lzdGVyIHZhbHVlcyB2bWV4aXQsIGdvdCAlbHhcIixcbi1cdFx0XHQgICAgc3RhZ2UsICh1bG9uZyl1Yy5hcmdzWzFdKTtcbitcdFx0XHQgICAgc3RhZ2UsICh1bnNpZ25lZCBsb25nKXVjLmFyZ3NbMV0pO1xuIFx0XHQvKlxuIFx0XHQgKiBJZiB0aGlzIHN0YWdlIDIgdGhlbiB3ZSBzaG91bGQgdmVyaWZ5IHRoZSB2bXggcHQgZXhwaXJ5XG4gXHRcdCAqIGlzIGFzIGV4cGVjdGVkLlxuQEAgLTIzNyw3ICsyMzcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFx0XHR2Y3B1X3JlZ3NfZ2V0KHZjcHUsIFx1MDAyNnJlZ3MyKTtcbiBcdFx0VEVTVF9BU1NFUlQoIW1lbWNtcChcdTAwMjZyZWdzMSwgXHUwMDI2cmVnczIsIHNpemVvZihyZWdzMikpLFxuIFx0XHRcdCAgICBcIlVuZXhwZWN0ZWQgcmVnaXN0ZXIgdmFsdWVzIGFmdGVyIHZjcHVfbG9hZF9zdGF0ZTsgcmRpOiAlbHggcnNpOiAlbHhcIixcbi1cdFx0XHQgICAgKHVsb25nKSByZWdzMi5yZGksICh1bG9uZykgcmVnczIucnNpKTtcbitcdFx0XHQgICAgKHVuc2lnbmVkIGxvbmcpcmVnczIucmRpLCAodW5zaWduZWQgbG9uZylyZWdzMi5yc2kpO1xuIFx0fVxuIFxuIGRvbmU6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxOTo1OTozMi43NDMwNjcyNTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjYyMzQ4MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTSBTZWxmdGVzdCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgZmlsZXMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZywgXCJzZWxmdGVzdHMsXCIgd2hpY2ggYXJlIHVzdWFsbHkgYSBsb3dlciBwcmlvcml0eSB0aGFuIGNvcmUga2VybmVsIG1vZGlmaWNhdGlvbnMgd2hlbiBjb25zaWRlcmluZyBmdXp6aW5nIHJlbGV2YW5jZS4gTXkgaW5pdGlhbCByZWFkIG9mIHRoZSBjaGFuZ2UgaXMgc2ltcGxlOyBpdCdzIGEgdHlwZSBjYXN0IHJlcGxhY2VtZW50OiBgKHVsb25nKWAgaXMgYmVpbmcgc3dhcHBlZCB3aXRoIGAodW5zaWduZWQgbG9uZylgLiBBIHB1cmVseSBjb3NtZXRpYyBjaGFuZ2UgbGlrZSB0aGlzLCB3aXRoaW4gdGhlIHRlc3RpbmcgZnJhbWV3b3JrLCBzY3JlYW1zIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgdG8gbWUuXG5cbkJ1dCwgYXMgYWx3YXlzLCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIExldCdzIGNvbmZpcm0gdGhpcyBkb2Vzbid0IGFjY2lkZW50YWxseSB0b3VjaCBzb21ldGhpbmcgZGVlcGVyLiBJ4oCZbGwgcmUtZXhhbWluZSB0aGUgZGlmZi4gQWgsIHllcywganVzdCBhcyBzdXNwZWN0ZWQ6IHRoZSBjaGFuZ2UgaXMgY29uZmluZWQgdG8gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYCBkaXJlY3RvcnkgYW5kIGlzLCBpbiBmYWN0LCBvbmx5IGFib3V0IHR5cGUgY2FzdHMuIE5vIGltcGFjdCBvbiBhbnkgY3JpdGljYWwga2VybmVsIGNvZGUuIFRoZXJlZm9yZSwgYWZ0ZXIgbXkgZG91YmxlLWNoZWNrLCBJIGNhbiBjb25maWRlbnRseSByZXR1cm4gXCJXb3J0aEZ1enppbmc9ZmFsc2UuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6NzMwMiwiT3V0cHV0VG9rZW5zIjo2NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE5OjU5OjM3LjAwNTQxODU0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzLCByZXBsYWNpbmcgYCh1bG9uZylgIHdpdGggYCh1bnNpZ25lZCBsb25nKWAuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzLCByZXBsYWNpbmcgYCh1bG9uZylgIHdpdGggYCh1bnNpZ25lZCBsb25nKWAuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowm8vd8[1] Phase: Running StartedAt: 2026-08-03 19:59:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8vd8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 19:59:48 +0000 UTC FinishedAt: 2026-08-03 19:59:53 +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,}