Name: series-workflownbnj2 Phase: Failed StartedAt: 2026-06-30 12:49:47 +0000 UTC FinishedAt: 2026-06-30 13:00:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownbnj2[0] Phase: Succeeded StartedAt: 2026-06-30 12:49:47 +0000 UTC FinishedAt: 2026-06-30 13:00:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflownbnj2[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 12:49:47 +0000 UTC FinishedAt: 2026-06-30 13:00:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEzOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMzowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgzM2UxY2I5ZDhmNDU4ZDRlYzQ1YzUwNTQ1OWQ1NjdlZGY1YjcxZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAxMzowMDoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuaW5kZXggMmVhYjIxMTBhYzZhNDYuLmNlMzhhZTNkYTAxYTIxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuQEAgLTQyMiw2ICYjNDM7NDIyLDM2IEBAIHN0YXRpYyB2b2lkIGh1Z2V0bGJfc3lzZnNfcGF0aChjaGFyICpidWYsIHNpemVfdCBidWZsZW4sXG4gXHRcdCBzaXplIC8gMTAyNCwgYXR0cik7XG4gfVxuIFxuJiM0Mzt2b2lkIGh1Z2V0bGJfd3JpdGVfbnVtKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGxvbmcgbnVtKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGZkLCBzYXZlZF9lcnJubztcbiYjNDM7XHRzc2l6ZV90IG51bXdyaXR0ZW47XG4mIzQzO1x0Y2hhciBidWZbMjFdO1xuJiM0MztcbiYjNDM7XHRzcHJpbnRmKGJ1ZiwgXCYjMzQ7JWx1XCYjMzQ7LCBudW0pO1xuJiM0MztcbiYjNDM7XHRmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkpO1xuJiM0MztcdGlmIChmZCA9PSAtMSlcbiYjNDM7XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDslcyBvcGVuIGZhaWxlZDogJXNcXG5cJiMzNDssIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1xuJiM0MztcdG51bXdyaXR0ZW4gPSB3cml0ZShmZCwgYnVmLCBzdHJsZW4oYnVmKSk7XG4mIzQzO1x0c2F2ZWRfZXJybm8gPSBlcnJubztcbiYjNDM7XHRjbG9zZShmZCk7XG4mIzQzO1x0ZXJybm8gPSBzYXZlZF9lcnJubztcbiYjNDM7XG4mIzQzO1x0LyogVHJlYXQgRUlOVkFMIGFzIGEgc2tpcHBlZCBjb25maWd1cmF0aW9uIChlLmcuLCB1bnN1cHBvcnRlZCBnaWdhbnRpYyBwYWdlcykgKi9cbiYjNDM7XHRpZiAobnVtd3JpdHRlbiBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgZXJybm8gPT0gRUlOVkFMKSB7XG4mIzQzO1x0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDslcyB3cml0ZSglcykgZmFpbGVkOiAlc1xcblwmIzM0OywgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG51bXdyaXR0ZW4gXHUwMDNjIDApXG4mIzQzO1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7JXMgd3JpdGUoJXMpIGZhaWxlZDogJXNcXG5cJiMzNDssIHBhdGgsIGJ1Ziwgc3RyZXJyb3IoZXJybm8pKTtcbiYjNDM7XHRpZiAobnVtd3JpdHRlbiAhPSBzdHJsZW4oYnVmKSlcbiYjNDM7XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDslcyB3cml0ZSglcykgaXMgdHJ1bmNhdGVkLCBleHBlY3RlZCAlenUgYnl0ZXMsIGdvdCAlemQgYnl0ZXNcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgcGF0aCwgYnVmLCBzdHJsZW4oYnVmKSwgbnVtd3JpdHRlbik7XG4mIzQzO31cbiYjNDM7XG4gdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbiB7XG4gXHRjaGFyIHBhdGhbUEFUSF9NQVhdO1xuQEAgLTQzNyw3ICYjNDM7NDY3LDcgQEAgdm9pZCBodWdldGxiX3NldF9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcJiMzNDtucl9odWdlcGFnZXNcJiMzNDspO1xuIFxuLVx0d3JpdGVfbnVtKHBhdGgsIG5yKTtcbiYjNDM7XHRodWdldGxiX3dyaXRlX251bShwYXRoLCBucik7XG4gfVxuIFxuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuaW5kZXggNzI2YzczYzQzYzA1YmEuLjM5MGZjYzQ4M2I5ZTEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuQEAgLTk1LDYgJiM0Mzs5NSw3IEBAIGJvb2wgdGhwX2lzX2VuYWJsZWQodm9pZCk7XG4gaW50IGRldGVjdF9odWdldGxiX3BhZ2Vfc2l6ZXModW5zaWduZWQgbG9uZyBzaXplc1tdLCBpbnQgbWF4KTtcbiB1bnNpZ25lZCBsb25nIGRlZmF1bHRfaHVnZV9wYWdlX3NpemUodm9pZCk7XG4gXG4mIzQzO3ZvaWQgaHVnZXRsYl93cml0ZV9udW0oY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbG9uZyBudW0pO1xuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpO1xuIHZvaWQgaHVnZXRsYl9zZXRfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKTtcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NtX3Rlc3RzLmNcbmluZGV4IGEwNTBmNDg0MGNmYTNhLi41ZmQ3NzkyYTBkNDc5NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuY1xuQEAgLTI4OCw4ICYjNDM7Mjg4LDggQEAgc3RhdGljIGJvb2wgYXNzZXJ0X2tzbV9wYWdlc19jb3VudChsb25nIGR1cGxfcGFnZV9jb3VudClcbiBzdGF0aWMgaW50IGtzbV9zYXZlX2RlZihzdHJ1Y3Qga3NtX3N5c2ZzICprc21fc3lzZnMpXG4ge1xuIFx0aWYgKGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcJiMzNDttYXhfcGFnZV9zaGFyaW5nXCYjMzQ7KSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZW1heF9wYWdlX3NoYXJpbmcpIHx8XG4tXHQgICAgbnVtYV9hdmFpbGFibGUoKSA/IDAgOlxuLVx0XHRrc21fcmVhZF9zeXNmcyhLU01fRlAoXCYjMzQ7bWVyZ2VfYWNyb3NzX25vZGVzXCYjMzQ7KSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykgfHxcbiYjNDM7XHQgICAgKG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcbiYjNDM7XHRcdGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXNcJiMzNDspLCBcdTAwMjZrc21fc3lzZnMtXHUwMDNlbWVyZ2VfYWNyb3NzX25vZGVzKSkgfHxcbiBcdCAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoXCYjMzQ7c2xlZXBfbWlsbGlzZWNzXCYjMzQ7KSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZXNsZWVwX21pbGxpc2VjcykgfHxcbiBcdCAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoXCYjMzQ7cGFnZXNfdG9fc2NhblwmIzM0OyksIFx1MDAyNmtzbV9zeXNmcy1cdTAwM2VwYWdlc190b19zY2FuKSB8fFxuIFx0ICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcJiMzNDtydW5cJiMzNDspLCBcdTAwMjZrc21fc3lzZnMtXHUwMDNlcnVuKSB8fFxuQEAgLTMwNCw4ICYjNDM7MzA0LDggQEAgc3RhdGljIGludCBrc21fc2F2ZV9kZWYoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKVxuIHN0YXRpYyBpbnQga3NtX3Jlc3RvcmUoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKVxuIHtcbiBcdGlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O21heF9wYWdlX3NoYXJpbmdcJiMzNDspLCBrc21fc3lzZnMtXHUwMDNlbWF4X3BhZ2Vfc2hhcmluZykgfHxcbi1cdCAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6XG4tXHRcdGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7bWVyZ2VfYWNyb3NzX25vZGVzXCYjMzQ7KSwga3NtX3N5c2ZzLVx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykgfHxcbiYjNDM7XHQgICAgKG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcbiYjNDM7XHRcdGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7bWVyZ2VfYWNyb3NzX25vZGVzXCYjMzQ7KSwga3NtX3N5c2ZzLVx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykpIHx8XG4gXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcJiMzNDtwYWdlc190b19zY2FuXCYjMzQ7KSwga3NtX3N5c2ZzLVx1MDAzZXBhZ2VzX3RvX3NjYW4pIHx8XG4gXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcJiMzNDtydW5cJiMzNDspLCBrc21fc3lzZnMtXHUwMDNlcnVuKSB8fFxuIFx0ICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7c2xlZXBfbWlsbGlzZWNzXCYjMzQ7KSwga3NtX3N5c2ZzLVx1MDAzZXNsZWVwX21pbGxpc2VjcykgfHxcbkBAIC00NDAsOSAmIzQzOzQ0MCw5IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfbWVtX25vZGUoaW50IG5vZGUpXG4gXHRcdG1lbV9ub2RlID0gaSAlIChtYXhfbm9kZSAmIzQzOyAxKTtcbiBcdFx0bm9kZV9zaXplID0gbnVtYV9ub2RlX3NpemUobWVtX25vZGUsIE5VTEwpO1xuIFx0XHRpZiAobm9kZV9zaXplIFx1MDAzZSAwKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRyZXR1cm4gbWVtX25vZGU7XG4gXHR9XG4tXHRyZXR1cm4gbWVtX25vZGU7XG4mIzQzO1x0cmV0dXJuIC1FTk9ERVY7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZ2V0X2ZpcnN0X21lbV9ub2RlKHZvaWQpXG5AQCAtNDU1LDggJiM0Mzs0NTUsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tzbV9udW1hX21lcmdlKGludCBtZXJnZV90eXBlLCBpbnQgbWFwcGluZywgaW50IHByb3QsIGludCB0aW1lb1xuIHtcbiBcdHZvaWQgKm51bWExX21hcF9wdHIsICpudW1hMl9tYXBfcHRyO1xuIFx0c3RydWN0IHRpbWVzcGVjIHN0YXJ0X3RpbWU7XG4mIzQzO1x0aW50IGZpcnN0X25vZGUsIHNlY29uZF9ub2RlO1xuIFx0aW50IHBhZ2VfY291bnQgPSAyO1xuLVx0aW50IGZpcnN0X25vZGU7XG4gXG4gXHRpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUNfUkFXLCBcdTAwMjZzdGFydF90aW1lKSkge1xuIFx0XHRrc2Z0X3BlcnJvcihcJiMzNDtjbG9ja19nZXR0aW1lXCYjMzQ7KTtcbkBAIC00NjcsMTcgJiM0Mzs0NjcsMTkgQEAgc3RhdGljIGludCBjaGVja19rc21fbnVtYV9tZXJnZShpbnQgbWVyZ2VfdHlwZSwgaW50IG1hcHBpbmcsIGludCBwcm90LCBpbnQgdGltZW9cbiBcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7TlVNQSBzdXBwb3J0IG5vdCBlbmFibGVkXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIEtTRlRfU0tJUDtcbiBcdH1cbi1cdGlmIChudW1hX251bV9jb25maWd1cmVkX25vZGVzKCkgXHUwMDNjPSAxKSB7XG4tXHRcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O0F0IGxlYXN0IDIgTlVNQSBub2RlcyBtdXN0IGJlIGF2YWlsYWJsZVxcblwmIzM0Oyk7XG4mIzQzO1x0Zmlyc3Rfbm9kZSA9IGdldF9maXJzdF9tZW1fbm9kZSgpO1xuJiM0MztcdHNlY29uZF9ub2RlID0gZ2V0X25leHRfbWVtX25vZGUoZmlyc3Rfbm9kZSk7XG4mIzQzO1xuJiM0MztcdGlmIChzZWNvbmRfbm9kZSBcdTAwM2MgMCkge1xuJiM0MztcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7QXQgbGVhc3QgMiBOVU1BIG5vZGVzIHdpdGggbWVtb3J5IG11c3QgYmUgYXZhaWxhYmxlXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIEtTRlRfU0tJUDtcbiBcdH1cbiBcdGlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O21lcmdlX2Fjcm9zc19ub2Rlc1wmIzM0OyksIG1lcmdlX2Fjcm9zc19ub2RlcykpXG4gXHRcdHJldHVybiBLU0ZUX0ZBSUw7XG4gXG4gXHQvKiBhbGxvY2F0ZSAyIHBhZ2VzIGluIDIgZGlmZmVyZW50IE5VTUEgbm9kZXMgYW5kIGZpbGwgdGhlbSB3aXRoIHRoZSBzYW1lIGRhdGEgKi9cbi1cdGZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTtcbiBcdG51bWExX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIGZpcnN0X25vZGUpO1xuLVx0bnVtYTJfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgZ2V0X25leHRfbWVtX25vZGUoZmlyc3Rfbm9kZSkpO1xuJiM0MztcdG51bWEyX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIHNlY29uZF9ub2RlKTtcbiBcdGlmICghbnVtYTFfbWFwX3B0ciB8fCAhbnVtYTJfbWFwX3B0cikge1xuIFx0XHRrc2Z0X3BlcnJvcihcJiMzNDtudW1hX2FsbG9jX29ubm9kZVwmIzM0Oyk7XG4gXHRcdHJldHVybiBLU0ZUX0ZBSUw7XG5AQCAtODQ0LDggJiM0Mzs4NDYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7cnVuXCYjMzQ7KSwgMikgfHxcbiBcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O3NsZWVwX21pbGxpc2Vjc1wmIzM0OyksIDApIHx8XG4tXHQgICAgbnVtYV9hdmFpbGFibGUoKSA/IDAgOlxuLVx0XHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O21lcmdlX2Fjcm9zc19ub2Rlc1wmIzM0OyksIDEpIHx8XG4mIzQzO1x0ICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6XG4mIzQzO1x0XHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O21lcmdlX2Fjcm9zc19ub2Rlc1wmIzM0OyksIDEpKSB8fFxuIFx0ICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7cGFnZXNfdG9fc2NhblwmIzM0OyksIHBhZ2VfY291bnQpKVxuIFx0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7Q2Fubm90IHNldCB1cCBLU00gdHVuYWJsZXNcXG5cJiMzNDspO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEzOjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODMzZTFjYjlkOGY0NThkNGVjNDVjNTA1NDU5ZDU2N2VkZjViNzFkZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDEzOjAwOjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmMKaW5kZXggMmVhYjIxMTBhYzZhNDYuLmNlMzhhZTNkYTAxYTIxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmMKQEAgLTQyMiw2ICYjNDM7NDIyLDM2IEBAIHN0YXRpYyB2b2lkIGh1Z2V0bGJfc3lzZnNfcGF0aChjaGFyICpidWYsIHNpemVfdCBidWZsZW4sCiAJCSBzaXplIC8gMTAyNCwgYXR0cik7CiB9CiAKJiM0Mzt2b2lkIGh1Z2V0bGJfd3JpdGVfbnVtKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGxvbmcgbnVtKQomIzQzO3sKJiM0MzsJaW50IGZkLCBzYXZlZF9lcnJubzsKJiM0MzsJc3NpemVfdCBudW13cml0dGVuOwomIzQzOwljaGFyIGJ1ZlsyMV07CiYjNDM7CiYjNDM7CXNwcmludGYoYnVmLCAmIzM0OyVsdSYjMzQ7LCBudW0pOwomIzQzOwomIzQzOwlmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkpOwomIzQzOwlpZiAoZmQgPT0gLTEpCiYjNDM7CQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDslcyBvcGVuIGZhaWxlZDogJXNcbiYjMzQ7LCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwomIzQzOwomIzQzOwludW13cml0dGVuID0gd3JpdGUoZmQsIGJ1Ziwgc3RybGVuKGJ1ZikpOwomIzQzOwlzYXZlZF9lcnJubyA9IGVycm5vOwomIzQzOwljbG9zZShmZCk7CiYjNDM7CWVycm5vID0gc2F2ZWRfZXJybm87CiYjNDM7CiYjNDM7CS8qIFRyZWF0IEVJTlZBTCBhcyBhIHNraXBwZWQgY29uZmlndXJhdGlvbiAoZS5nLiwgdW5zdXBwb3J0ZWQgZ2lnYW50aWMgcGFnZXMpICovCiYjNDM7CWlmIChudW13cml0dGVuICZsdDsgMCAmYW1wOyZhbXA7IGVycm5vID09IEVJTlZBTCkgewomIzQzOwkJa3NmdF9wcmludF9tc2coJiMzNDslcyB3cml0ZSglcykgZmFpbGVkOiAlc1xuJiMzNDssIHBhdGgsIGJ1Ziwgc3RyZXJyb3IoZXJybm8pKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobnVtd3JpdHRlbiAmbHQ7IDApCiYjNDM7CQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDslcyB3cml0ZSglcykgZmFpbGVkOiAlc1xuJiMzNDssIHBhdGgsIGJ1Ziwgc3RyZXJyb3IoZXJybm8pKTsKJiM0MzsJaWYgKG51bXdyaXR0ZW4gIT0gc3RybGVuKGJ1ZikpCiYjNDM7CQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDslcyB3cml0ZSglcykgaXMgdHJ1bmNhdGVkLCBleHBlY3RlZCAlenUgYnl0ZXMsIGdvdCAlemQgYnl0ZXNcbiYjMzQ7LAomIzQzOwkJCQkgICBwYXRoLCBidWYsIHN0cmxlbihidWYpLCBudW13cml0dGVuKTsKJiM0Mzt9CiYjNDM7CiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKQogewogCWNoYXIgcGF0aFtQQVRIX01BWF07CkBAIC00MzcsNyAmIzQzOzQ2Nyw3IEBAIHZvaWQgaHVnZXRsYl9zZXRfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKQogCiAJaHVnZXRsYl9zeXNmc19wYXRoKHBhdGgsIHNpemVvZihwYXRoKSwgc2l6ZSwgJiMzNDtucl9odWdlcGFnZXMmIzM0Oyk7CiAKLQl3cml0ZV9udW0ocGF0aCwgbnIpOwomIzQzOwlodWdldGxiX3dyaXRlX251bShwYXRoLCBucik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oCmluZGV4IDcyNmM3M2M0M2MwNWJhLi4zOTBmY2M0ODNiOWUxMyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oCkBAIC05NSw2ICYjNDM7OTUsNyBAQCBib29sIHRocF9pc19lbmFibGVkKHZvaWQpOwogaW50IGRldGVjdF9odWdldGxiX3BhZ2Vfc2l6ZXModW5zaWduZWQgbG9uZyBzaXplc1tdLCBpbnQgbWF4KTsKIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTsKIAomIzQzO3ZvaWQgaHVnZXRsYl93cml0ZV9udW0oY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbG9uZyBudW0pOwogdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiB2b2lkIGh1Z2V0bGJfc2V0X25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucik7CiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NtX3Rlc3RzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuYwppbmRleCBhMDUwZjQ4NDBjZmEzYS4uNWZkNzc5MmEwZDQ3OTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jCkBAIC0yODgsOCAmIzQzOzI4OCw4IEBAIHN0YXRpYyBib29sIGFzc2VydF9rc21fcGFnZXNfY291bnQobG9uZyBkdXBsX3BhZ2VfY291bnQpCiBzdGF0aWMgaW50IGtzbV9zYXZlX2RlZihzdHJ1Y3Qga3NtX3N5c2ZzICprc21fc3lzZnMpCiB7CiAJaWYgKGtzbV9yZWFkX3N5c2ZzKEtTTV9GUCgmIzM0O21heF9wYWdlX3NoYXJpbmcmIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDttYXhfcGFnZV9zaGFyaW5nKSB8fAotCSAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6Ci0JCWtzbV9yZWFkX3N5c2ZzKEtTTV9GUCgmIzM0O21lcmdlX2Fjcm9zc19ub2RlcyYjMzQ7KSwgJmFtcDtrc21fc3lzZnMtJmd0O21lcmdlX2Fjcm9zc19ub2RlcykgfHwKJiM0MzsJICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6CiYjNDM7CQlrc21fcmVhZF9zeXNmcyhLU01fRlAoJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXMmIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDttZXJnZV9hY3Jvc3Nfbm9kZXMpKSB8fAogCSAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoJiMzNDtzbGVlcF9taWxsaXNlY3MmIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDtzbGVlcF9taWxsaXNlY3MpIHx8CiAJICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUCgmIzM0O3BhZ2VzX3RvX3NjYW4mIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDtwYWdlc190b19zY2FuKSB8fAogCSAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoJiMzNDtydW4mIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDtydW4pIHx8CkBAIC0zMDQsOCAmIzQzOzMwNCw4IEBAIHN0YXRpYyBpbnQga3NtX3NhdmVfZGVmKHN0cnVjdCBrc21fc3lzZnMgKmtzbV9zeXNmcykKIHN0YXRpYyBpbnQga3NtX3Jlc3RvcmUoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKQogewogCWlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKCYjMzQ7bWF4X3BhZ2Vfc2hhcmluZyYjMzQ7KSwga3NtX3N5c2ZzLSZndDttYXhfcGFnZV9zaGFyaW5nKSB8fAotCSAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6Ci0JCWtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXMmIzM0OyksIGtzbV9zeXNmcy0mZ3Q7bWVyZ2VfYWNyb3NzX25vZGVzKSB8fAomIzQzOwkgICAgKG51bWFfYXZhaWxhYmxlKCkgPyAwIDoKJiM0MzsJCWtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXMmIzM0OyksIGtzbV9zeXNmcy0mZ3Q7bWVyZ2VfYWNyb3NzX25vZGVzKSkgfHwKIAkgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUCgmIzM0O3BhZ2VzX3RvX3NjYW4mIzM0OyksIGtzbV9zeXNmcy0mZ3Q7cGFnZXNfdG9fc2NhbikgfHwKIAkgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUCgmIzM0O3J1biYjMzQ7KSwga3NtX3N5c2ZzLSZndDtydW4pIHx8CiAJICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDtzbGVlcF9taWxsaXNlY3MmIzM0OyksIGtzbV9zeXNmcy0mZ3Q7c2xlZXBfbWlsbGlzZWNzKSB8fApAQCAtNDQwLDkgJiM0Mzs0NDAsOSBAQCBzdGF0aWMgaW50IGdldF9uZXh0X21lbV9ub2RlKGludCBub2RlKQogCQltZW1fbm9kZSA9IGkgJSAobWF4X25vZGUgJiM0MzsgMSk7CiAJCW5vZGVfc2l6ZSA9IG51bWFfbm9kZV9zaXplKG1lbV9ub2RlLCBOVUxMKTsKIAkJaWYgKG5vZGVfc2l6ZSAmZ3Q7IDApCi0JCQlicmVhazsKJiM0MzsJCQlyZXR1cm4gbWVtX25vZGU7CiAJfQotCXJldHVybiBtZW1fbm9kZTsKJiM0MzsJcmV0dXJuIC1FTk9ERVY7CiB9CiAKIHN0YXRpYyBpbnQgZ2V0X2ZpcnN0X21lbV9ub2RlKHZvaWQpCkBAIC00NTUsOCAmIzQzOzQ1NSw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfa3NtX251bWFfbWVyZ2UoaW50IG1lcmdlX3R5cGUsIGludCBtYXBwaW5nLCBpbnQgcHJvdCwgaW50IHRpbWVvCiB7CiAJdm9pZCAqbnVtYTFfbWFwX3B0ciwgKm51bWEyX21hcF9wdHI7CiAJc3RydWN0IHRpbWVzcGVjIHN0YXJ0X3RpbWU7CiYjNDM7CWludCBmaXJzdF9ub2RlLCBzZWNvbmRfbm9kZTsKIAlpbnQgcGFnZV9jb3VudCA9IDI7Ci0JaW50IGZpcnN0X25vZGU7CiAKIAlpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUNfUkFXLCAmYW1wO3N0YXJ0X3RpbWUpKSB7CiAJCWtzZnRfcGVycm9yKCYjMzQ7Y2xvY2tfZ2V0dGltZSYjMzQ7KTsKQEAgLTQ2NywxNyAmIzQzOzQ2NywxOSBAQCBzdGF0aWMgaW50IGNoZWNrX2tzbV9udW1hX21lcmdlKGludCBtZXJnZV90eXBlLCBpbnQgbWFwcGluZywgaW50IHByb3QsIGludCB0aW1lbwogCQlrc2Z0X3ByaW50X21zZygmIzM0O05VTUEgc3VwcG9ydCBub3QgZW5hYmxlZFxuJiMzNDspOwogCQlyZXR1cm4gS1NGVF9TS0lQOwogCX0KLQlpZiAobnVtYV9udW1fY29uZmlndXJlZF9ub2RlcygpICZsdDs9IDEpIHsKLQkJa3NmdF9wcmludF9tc2coJiMzNDtBdCBsZWFzdCAyIE5VTUEgbm9kZXMgbXVzdCBiZSBhdmFpbGFibGVcbiYjMzQ7KTsKJiM0MzsJZmlyc3Rfbm9kZSA9IGdldF9maXJzdF9tZW1fbm9kZSgpOwomIzQzOwlzZWNvbmRfbm9kZSA9IGdldF9uZXh0X21lbV9ub2RlKGZpcnN0X25vZGUpOwomIzQzOwomIzQzOwlpZiAoc2Vjb25kX25vZGUgJmx0OyAwKSB7CiYjNDM7CQlrc2Z0X3ByaW50X21zZygmIzM0O0F0IGxlYXN0IDIgTlVNQSBub2RlcyB3aXRoIG1lbW9yeSBtdXN0IGJlIGF2YWlsYWJsZVxuJiMzNDspOwogCQlyZXR1cm4gS1NGVF9TS0lQOwogCX0KIAlpZiAoa3NtX3dyaXRlX3N5c2ZzKEtTTV9GUCgmIzM0O21lcmdlX2Fjcm9zc19ub2RlcyYjMzQ7KSwgbWVyZ2VfYWNyb3NzX25vZGVzKSkKIAkJcmV0dXJuIEtTRlRfRkFJTDsKIAogCS8qIGFsbG9jYXRlIDIgcGFnZXMgaW4gMiBkaWZmZXJlbnQgTlVNQSBub2RlcyBhbmQgZmlsbCB0aGVtIHdpdGggdGhlIHNhbWUgZGF0YSAqLwotCWZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTsKIAludW1hMV9tYXBfcHRyID0gbnVtYV9hbGxvY19vbm5vZGUocGFnZV9zaXplLCBmaXJzdF9ub2RlKTsKLQludW1hMl9tYXBfcHRyID0gbnVtYV9hbGxvY19vbm5vZGUocGFnZV9zaXplLCBnZXRfbmV4dF9tZW1fbm9kZShmaXJzdF9ub2RlKSk7CiYjNDM7CW51bWEyX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIHNlY29uZF9ub2RlKTsKIAlpZiAoIW51bWExX21hcF9wdHIgfHwgIW51bWEyX21hcF9wdHIpIHsKIAkJa3NmdF9wZXJyb3IoJiMzNDtudW1hX2FsbG9jX29ubm9kZSYjMzQ7KTsKIAkJcmV0dXJuIEtTRlRfRkFJTDsKQEAgLTg0NCw4ICYjNDM7ODQ2LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKCYjMzQ7cnVuJiMzNDspLCAyKSB8fAogCSAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKCYjMzQ7c2xlZXBfbWlsbGlzZWNzJiMzNDspLCAwKSB8fAotCSAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6Ci0JCWtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXMmIzM0OyksIDEpIHx8CiYjNDM7CSAgICAobnVtYV9hdmFpbGFibGUoKSA/IDAgOgomIzQzOwkJa3NtX3dyaXRlX3N5c2ZzKEtTTV9GUCgmIzM0O21lcmdlX2Fjcm9zc19ub2RlcyYjMzQ7KSwgMSkpIHx8CiAJICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDtwYWdlc190b19zY2FuJiMzNDspLCBwYWdlX2NvdW50KSkKIAkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7Q2Fubm90IHNldCB1cCBLU00gdHVuYWJsZXNcbiYjMzQ7KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTIxCgkJCQkJCQlvdXRwdXQ6IDcwCgkJCQkJCQl0aG91Z2h0czogNDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jYC4gUmlnaHQgYXdheSwgdGhhdCBsb2NhdGlvbiBqdW1wcyBvdXQgYXQgbWUg4oCTIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9gLiBUaGVzZSBhcmUgKnNlbGZ0ZXN0cyosIG1lYW5pbmcgdGhleSBhcmUgdXNlci1zcGFjZSBwcm9ncmFtcyBkZXNpZ25lZCB0byB2YWxpZGF0ZSBrZXJuZWwgYmVoYXZpb3IuIFRoZXkgYXJlbiYjMzk7dCBrZXJuZWwgY29kZSB0aGVtc2VsdmVzLgoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGFueSBwYXRjaCB0aGF0ICpvbmx5KiBtb2RpZmllcyBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBub24tZnVuY3Rpb25hbCBjb25zdGFudCBjaGFuZ2VzLCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBzaG91bGQgYmUgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoaW5raW5nIGFib3V0IGl0LCBmdXp6aW5nIGlzIGFib3V0IGlkZW50aWZ5aW5nIHZ1bG5lcmFiaWxpdGllcyAqd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmKiDigJMgaW4gZHJpdmVycywgY29yZSBsb2dpYywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuIFNlbGZ0ZXN0cywgd2hpbGUgaW1wb3J0YW50IGZvciBlbnN1cmluZyBjb3JyZWN0bmVzcywgZG9uJiMzOTt0IGRpcmVjdGx5IG1vZGlmeSB0aGF0IGNvcmUgZnVuY3Rpb25hbGl0eS4gVGhleSAqdGVzdCogaXQuIFRoZXJlZm9yZSwgY2hhbmdlcyB0byB0aGVtIGRvbiYjMzk7dCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBjb2RlIHRvIGJlIGZ1enplZCwgaW4gdGhlIG1hbm5lciB3ZSBhcmUgaW50ZXJlc3RlZCBpbi4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSwgeWVwLCB0aG9zZSBhcmUgdGhlIG9ubHkgZmlsZXMgYWZmZWN0ZWQuIE5vdGhpbmcgZWxzZSBpcyBsdXJraW5nIGluIHRoZXJlLiBTbywgYmFzZWQgb24gdGhlIGxvY2F0aW9uIGFuZCBuYXR1cmUgb2YgdGhlIHBhdGNoLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBjaGFuZ2VzIGhlcmUgd2FycmFudCBpbnRlbnNpdmUga2VybmVsIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEzOjAwOjE3LjU5MDMyMzM0MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTk4NTg1MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTM6MDA6MTcuNTkwMzMwNjkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI1OTI2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MzNlMWNiOWQ4ZjQ1OGQ0ZWM0NWM1MDU0NTlkNTY3ZWRmNWI3MWRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDMwIDEzOjAwOjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jXFxuaW5kZXggMmVhYjIxMTBhYzZhNDYuLmNlMzhhZTNkYTAxYTIxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jXFxuQEAgLTQyMiw2ICs0MjIsMzYgQEAgc3RhdGljIHZvaWQgaHVnZXRsYl9zeXNmc19wYXRoKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbixcXG4gXFx0XFx0IHNpemUgLyAxMDI0LCBhdHRyKTtcXG4gfVxcbiBcXG4rdm9pZCBodWdldGxiX3dyaXRlX251bShjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBsb25nIG51bSlcXG4re1xcbitcXHRpbnQgZmQsIHNhdmVkX2Vycm5vO1xcbitcXHRzc2l6ZV90IG51bXdyaXR0ZW47XFxuK1xcdGNoYXIgYnVmWzIxXTtcXG4rXFxuK1xcdHNwcmludGYoYnVmLCBcXFwiJWx1XFxcIiwgbnVtKTtcXG4rXFxuK1xcdGZkID0gb3BlbihwYXRoLCBPX1dST05MWSk7XFxuK1xcdGlmIChmZCA9PSAtMSlcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyBvcGVuIGZhaWxlZDogJXNcXFxcblxcXCIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7XFxuK1xcbitcXHRudW13cml0dGVuID0gd3JpdGUoZmQsIGJ1Ziwgc3RybGVuKGJ1ZikpO1xcbitcXHRzYXZlZF9lcnJubyA9IGVycm5vO1xcbitcXHRjbG9zZShmZCk7XFxuK1xcdGVycm5vID0gc2F2ZWRfZXJybm87XFxuK1xcbitcXHQvKiBUcmVhdCBFSU5WQUwgYXMgYSBza2lwcGVkIGNvbmZpZ3VyYXRpb24gKGUuZy4sIHVuc3VwcG9ydGVkIGdpZ2FudGljIHBhZ2VzKSAqL1xcbitcXHRpZiAobnVtd3JpdHRlbiBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgZXJybm8gPT0gRUlOVkFMKSB7XFxuK1xcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCIlcyB3cml0ZSglcykgZmFpbGVkOiAlc1xcXFxuXFxcIiwgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChudW13cml0dGVuIFxcdTAwM2MgMClcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyB3cml0ZSglcykgZmFpbGVkOiAlc1xcXFxuXFxcIiwgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xcbitcXHRpZiAobnVtd3JpdHRlbiAhPSBzdHJsZW4oYnVmKSlcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyB3cml0ZSglcykgaXMgdHJ1bmNhdGVkLCBleHBlY3RlZCAlenUgYnl0ZXMsIGdvdCAlemQgYnl0ZXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgIHBhdGgsIGJ1Ziwgc3RybGVuKGJ1ZiksIG51bXdyaXR0ZW4pO1xcbit9XFxuK1xcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKVxcbiB7XFxuIFxcdGNoYXIgcGF0aFtQQVRIX01BWF07XFxuQEAgLTQzNyw3ICs0NjcsNyBAQCB2b2lkIGh1Z2V0bGJfc2V0X25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucilcXG4gXFxuIFxcdGh1Z2V0bGJfc3lzZnNfcGF0aChwYXRoLCBzaXplb2YocGF0aCksIHNpemUsIFxcXCJucl9odWdlcGFnZXNcXFwiKTtcXG4gXFxuLVxcdHdyaXRlX251bShwYXRoLCBucik7XFxuK1xcdGh1Z2V0bGJfd3JpdGVfbnVtKHBhdGgsIG5yKTtcXG4gfVxcbiBcXG4gdW5zaWduZWQgbG9uZyBodWdldGxiX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxcbmluZGV4IDcyNmM3M2M0M2MwNWJhLi4zOTBmY2M0ODNiOWUxMyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxcbkBAIC05NSw2ICs5NSw3IEBAIGJvb2wgdGhwX2lzX2VuYWJsZWQodm9pZCk7XFxuIGludCBkZXRlY3RfaHVnZXRsYl9wYWdlX3NpemVzKHVuc2lnbmVkIGxvbmcgc2l6ZXNbXSwgaW50IG1heCk7XFxuIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTtcXG4gXFxuK3ZvaWQgaHVnZXRsYl93cml0ZV9udW0oY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbG9uZyBudW0pO1xcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcXG4gdm9pZCBodWdldGxiX3NldF9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpO1xcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jXFxuaW5kZXggYTA1MGY0ODQwY2ZhM2EuLjVmZDc3OTJhMGQ0Nzk0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NtX3Rlc3RzLmNcXG5AQCAtMjg4LDggKzI4OCw4IEBAIHN0YXRpYyBib29sIGFzc2VydF9rc21fcGFnZXNfY291bnQobG9uZyBkdXBsX3BhZ2VfY291bnQpXFxuIHN0YXRpYyBpbnQga3NtX3NhdmVfZGVmKHN0cnVjdCBrc21fc3lzZnMgKmtzbV9zeXNmcylcXG4ge1xcbiBcXHRpZiAoa3NtX3JlYWRfc3lzZnMoS1NNX0ZQKFxcXCJtYXhfcGFnZV9zaGFyaW5nXFxcIiksIFxcdTAwMjZrc21fc3lzZnMtXFx1MDAzZW1heF9wYWdlX3NoYXJpbmcpIHx8XFxuLVxcdCAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6XFxuLVxcdFxcdGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcXFwibWVyZ2VfYWNyb3NzX25vZGVzXFxcIiksIFxcdTAwMjZrc21fc3lzZnMtXFx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykgfHxcXG4rXFx0ICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6XFxuK1xcdFxcdGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcXFwibWVyZ2VfYWNyb3NzX25vZGVzXFxcIiksIFxcdTAwMjZrc21fc3lzZnMtXFx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykpIHx8XFxuIFxcdCAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoXFxcInNsZWVwX21pbGxpc2Vjc1xcXCIpLCBcXHUwMDI2a3NtX3N5c2ZzLVxcdTAwM2VzbGVlcF9taWxsaXNlY3MpIHx8XFxuIFxcdCAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoXFxcInBhZ2VzX3RvX3NjYW5cXFwiKSwgXFx1MDAyNmtzbV9zeXNmcy1cXHUwMDNlcGFnZXNfdG9fc2NhbikgfHxcXG4gXFx0ICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcXFwicnVuXFxcIiksIFxcdTAwMjZrc21fc3lzZnMtXFx1MDAzZXJ1bikgfHxcXG5AQCAtMzA0LDggKzMwNCw4IEBAIHN0YXRpYyBpbnQga3NtX3NhdmVfZGVmKHN0cnVjdCBrc21fc3lzZnMgKmtzbV9zeXNmcylcXG4gc3RhdGljIGludCBrc21fcmVzdG9yZShzdHJ1Y3Qga3NtX3N5c2ZzICprc21fc3lzZnMpXFxuIHtcXG4gXFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXFxcIm1heF9wYWdlX3NoYXJpbmdcXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VtYXhfcGFnZV9zaGFyaW5nKSB8fFxcbi1cXHQgICAgbnVtYV9hdmFpbGFibGUoKSA/IDAgOlxcbi1cXHRcXHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFxcXCJtZXJnZV9hY3Jvc3Nfbm9kZXNcXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VtZXJnZV9hY3Jvc3Nfbm9kZXMpIHx8XFxuK1xcdCAgICAobnVtYV9hdmFpbGFibGUoKSA/IDAgOlxcbitcXHRcXHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFxcXCJtZXJnZV9hY3Jvc3Nfbm9kZXNcXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VtZXJnZV9hY3Jvc3Nfbm9kZXMpKSB8fFxcbiBcXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcXFwicGFnZXNfdG9fc2NhblxcXCIpLCBrc21fc3lzZnMtXFx1MDAzZXBhZ2VzX3RvX3NjYW4pIHx8XFxuIFxcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFxcXCJydW5cXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VydW4pIHx8XFxuIFxcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFxcXCJzbGVlcF9taWxsaXNlY3NcXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VzbGVlcF9taWxsaXNlY3MpIHx8XFxuQEAgLTQ0MCw5ICs0NDAsOSBAQCBzdGF0aWMgaW50IGdldF9uZXh0X21lbV9ub2RlKGludCBub2RlKVxcbiBcXHRcXHRtZW1fbm9kZSA9IGkgJSAobWF4X25vZGUgKyAxKTtcXG4gXFx0XFx0bm9kZV9zaXplID0gbnVtYV9ub2RlX3NpemUobWVtX25vZGUsIE5VTEwpO1xcbiBcXHRcXHRpZiAobm9kZV9zaXplIFxcdTAwM2UgMClcXG4tXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdHJldHVybiBtZW1fbm9kZTtcXG4gXFx0fVxcbi1cXHRyZXR1cm4gbWVtX25vZGU7XFxuK1xcdHJldHVybiAtRU5PREVWO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGdldF9maXJzdF9tZW1fbm9kZSh2b2lkKVxcbkBAIC00NTUsOCArNDU1LDggQEAgc3RhdGljIGludCBjaGVja19rc21fbnVtYV9tZXJnZShpbnQgbWVyZ2VfdHlwZSwgaW50IG1hcHBpbmcsIGludCBwcm90LCBpbnQgdGltZW9cXG4ge1xcbiBcXHR2b2lkICpudW1hMV9tYXBfcHRyLCAqbnVtYTJfbWFwX3B0cjtcXG4gXFx0c3RydWN0IHRpbWVzcGVjIHN0YXJ0X3RpbWU7XFxuK1xcdGludCBmaXJzdF9ub2RlLCBzZWNvbmRfbm9kZTtcXG4gXFx0aW50IHBhZ2VfY291bnQgPSAyO1xcbi1cXHRpbnQgZmlyc3Rfbm9kZTtcXG4gXFxuIFxcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQ19SQVcsIFxcdTAwMjZzdGFydF90aW1lKSkge1xcbiBcXHRcXHRrc2Z0X3BlcnJvcihcXFwiY2xvY2tfZ2V0dGltZVxcXCIpO1xcbkBAIC00NjcsMTcgKzQ2NywxOSBAQCBzdGF0aWMgaW50IGNoZWNrX2tzbV9udW1hX21lcmdlKGludCBtZXJnZV90eXBlLCBpbnQgbWFwcGluZywgaW50IHByb3QsIGludCB0aW1lb1xcbiBcXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiTlVNQSBzdXBwb3J0IG5vdCBlbmFibGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIEtTRlRfU0tJUDtcXG4gXFx0fVxcbi1cXHRpZiAobnVtYV9udW1fY29uZmlndXJlZF9ub2RlcygpIFxcdTAwM2M9IDEpIHtcXG4tXFx0XFx0a3NmdF9wcmludF9tc2coXFxcIkF0IGxlYXN0IDIgTlVNQSBub2RlcyBtdXN0IGJlIGF2YWlsYWJsZVxcXFxuXFxcIik7XFxuK1xcdGZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTtcXG4rXFx0c2Vjb25kX25vZGUgPSBnZXRfbmV4dF9tZW1fbm9kZShmaXJzdF9ub2RlKTtcXG4rXFxuK1xcdGlmIChzZWNvbmRfbm9kZSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0a3NmdF9wcmludF9tc2coXFxcIkF0IGxlYXN0IDIgTlVNQSBub2RlcyB3aXRoIG1lbW9yeSBtdXN0IGJlIGF2YWlsYWJsZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiBLU0ZUX1NLSVA7XFxuIFxcdH1cXG4gXFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXFxcIm1lcmdlX2Fjcm9zc19ub2Rlc1xcXCIpLCBtZXJnZV9hY3Jvc3Nfbm9kZXMpKVxcbiBcXHRcXHRyZXR1cm4gS1NGVF9GQUlMO1xcbiBcXG4gXFx0LyogYWxsb2NhdGUgMiBwYWdlcyBpbiAyIGRpZmZlcmVudCBOVU1BIG5vZGVzIGFuZCBmaWxsIHRoZW0gd2l0aCB0aGUgc2FtZSBkYXRhICovXFxuLVxcdGZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTtcXG4gXFx0bnVtYTFfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgZmlyc3Rfbm9kZSk7XFxuLVxcdG51bWEyX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIGdldF9uZXh0X21lbV9ub2RlKGZpcnN0X25vZGUpKTtcXG4rXFx0bnVtYTJfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgc2Vjb25kX25vZGUpO1xcbiBcXHRpZiAoIW51bWExX21hcF9wdHIgfHwgIW51bWEyX21hcF9wdHIpIHtcXG4gXFx0XFx0a3NmdF9wZXJyb3IoXFxcIm51bWFfYWxsb2Nfb25ub2RlXFxcIik7XFxuIFxcdFxcdHJldHVybiBLU0ZUX0ZBSUw7XFxuQEAgLTg0NCw4ICs4NDYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXG4gXFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXFxcInJ1blxcXCIpLCAyKSB8fFxcbiBcXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcXFwic2xlZXBfbWlsbGlzZWNzXFxcIiksIDApIHx8XFxuLVxcdCAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6XFxuLVxcdFxcdGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXFxcIm1lcmdlX2Fjcm9zc19ub2Rlc1xcXCIpLCAxKSB8fFxcbitcXHQgICAgKG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcXG4rXFx0XFx0a3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcXFwibWVyZ2VfYWNyb3NzX25vZGVzXFxcIiksIDEpKSB8fFxcbiBcXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcXFwicGFnZXNfdG9fc2NhblxcXCIpLCBwYWdlX2NvdW50KSlcXG4gXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCJDYW5ub3Qgc2V0IHVwIEtTTSB0dW5hYmxlc1xcXFxuXFxcIik7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMzowMDoxOC4xODM5NDcxNzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NjYyMjQxMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MzNlMWNiOWQ4ZjQ1OGQ0ZWM0NWM1MDU0NTlkNTY3ZWRmNWI3MWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTM6MDA6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuaW5kZXggMmVhYjIxMTBhYzZhNDYuLmNlMzhhZTNkYTAxYTIxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuQEAgLTQyMiw2ICs0MjIsMzYgQEAgc3RhdGljIHZvaWQgaHVnZXRsYl9zeXNmc19wYXRoKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbixcbiBcdFx0IHNpemUgLyAxMDI0LCBhdHRyKTtcbiB9XG4gXG4rdm9pZCBodWdldGxiX3dyaXRlX251bShjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBsb25nIG51bSlcbit7XG4rXHRpbnQgZmQsIHNhdmVkX2Vycm5vO1xuK1x0c3NpemVfdCBudW13cml0dGVuO1xuK1x0Y2hhciBidWZbMjFdO1xuK1xuK1x0c3ByaW50ZihidWYsIFwiJWx1XCIsIG51bSk7XG4rXG4rXHRmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkpO1xuK1x0aWYgKGZkID09IC0xKVxuK1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCIlcyBvcGVuIGZhaWxlZDogJXNcXG5cIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTtcbitcbitcdG51bXdyaXR0ZW4gPSB3cml0ZShmZCwgYnVmLCBzdHJsZW4oYnVmKSk7XG4rXHRzYXZlZF9lcnJubyA9IGVycm5vO1xuK1x0Y2xvc2UoZmQpO1xuK1x0ZXJybm8gPSBzYXZlZF9lcnJubztcbitcbitcdC8qIFRyZWF0IEVJTlZBTCBhcyBhIHNraXBwZWQgY29uZmlndXJhdGlvbiAoZS5nLiwgdW5zdXBwb3J0ZWQgZ2lnYW50aWMgcGFnZXMpICovXG4rXHRpZiAobnVtd3JpdHRlbiBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgZXJybm8gPT0gRUlOVkFMKSB7XG4rXHRcdGtzZnRfcHJpbnRfbXNnKFwiJXMgd3JpdGUoJXMpIGZhaWxlZDogJXNcXG5cIiwgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRpZiAobnVtd3JpdHRlbiBcdTAwM2MgMClcbitcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiJXMgd3JpdGUoJXMpIGZhaWxlZDogJXNcXG5cIiwgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xuK1x0aWYgKG51bXdyaXR0ZW4gIT0gc3RybGVuKGJ1ZikpXG4rXHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIiVzIHdyaXRlKCVzKSBpcyB0cnVuY2F0ZWQsIGV4cGVjdGVkICV6dSBieXRlcywgZ290ICV6ZCBieXRlc1xcblwiLFxuK1x0XHRcdFx0ICAgcGF0aCwgYnVmLCBzdHJsZW4oYnVmKSwgbnVtd3JpdHRlbik7XG4rfVxuK1xuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpXG4ge1xuIFx0Y2hhciBwYXRoW1BBVEhfTUFYXTtcbkBAIC00MzcsNyArNDY3LDcgQEAgdm9pZCBodWdldGxiX3NldF9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcIm5yX2h1Z2VwYWdlc1wiKTtcbiBcbi1cdHdyaXRlX251bShwYXRoLCBucik7XG4rXHRodWdldGxiX3dyaXRlX251bShwYXRoLCBucik7XG4gfVxuIFxuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuaW5kZXggNzI2YzczYzQzYzA1YmEuLjM5MGZjYzQ4M2I5ZTEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuQEAgLTk1LDYgKzk1LDcgQEAgYm9vbCB0aHBfaXNfZW5hYmxlZCh2b2lkKTtcbiBpbnQgZGV0ZWN0X2h1Z2V0bGJfcGFnZV9zaXplcyh1bnNpZ25lZCBsb25nIHNpemVzW10sIGludCBtYXgpO1xuIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTtcbiBcbit2b2lkIGh1Z2V0bGJfd3JpdGVfbnVtKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGxvbmcgbnVtKTtcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcbiB2b2lkIGh1Z2V0bGJfc2V0X25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucik7XG4gdW5zaWduZWQgbG9uZyBodWdldGxiX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jXG5pbmRleCBhMDUwZjQ4NDBjZmEzYS4uNWZkNzc5MmEwZDQ3OTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NtX3Rlc3RzLmNcbkBAIC0yODgsOCArMjg4LDggQEAgc3RhdGljIGJvb2wgYXNzZXJ0X2tzbV9wYWdlc19jb3VudChsb25nIGR1cGxfcGFnZV9jb3VudClcbiBzdGF0aWMgaW50IGtzbV9zYXZlX2RlZihzdHJ1Y3Qga3NtX3N5c2ZzICprc21fc3lzZnMpXG4ge1xuIFx0aWYgKGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcIm1heF9wYWdlX3NoYXJpbmdcIiksIFx1MDAyNmtzbV9zeXNmcy1cdTAwM2VtYXhfcGFnZV9zaGFyaW5nKSB8fFxuLVx0ICAgIG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcbi1cdFx0a3NtX3JlYWRfc3lzZnMoS1NNX0ZQKFwibWVyZ2VfYWNyb3NzX25vZGVzXCIpLCBcdTAwMjZrc21fc3lzZnMtXHUwMDNlbWVyZ2VfYWNyb3NzX25vZGVzKSB8fFxuK1x0ICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6XG4rXHRcdGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcIm1lcmdlX2Fjcm9zc19ub2Rlc1wiKSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykpIHx8XG4gXHQgICAga3NtX3JlYWRfc3lzZnMoS1NNX0ZQKFwic2xlZXBfbWlsbGlzZWNzXCIpLCBcdTAwMjZrc21fc3lzZnMtXHUwMDNlc2xlZXBfbWlsbGlzZWNzKSB8fFxuIFx0ICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcInBhZ2VzX3RvX3NjYW5cIiksIFx1MDAyNmtzbV9zeXNmcy1cdTAwM2VwYWdlc190b19zY2FuKSB8fFxuIFx0ICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcInJ1blwiKSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZXJ1bikgfHxcbkBAIC0zMDQsOCArMzA0LDggQEAgc3RhdGljIGludCBrc21fc2F2ZV9kZWYoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKVxuIHN0YXRpYyBpbnQga3NtX3Jlc3RvcmUoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKVxuIHtcbiBcdGlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwibWF4X3BhZ2Vfc2hhcmluZ1wiKSwga3NtX3N5c2ZzLVx1MDAzZW1heF9wYWdlX3NoYXJpbmcpIHx8XG4tXHQgICAgbnVtYV9hdmFpbGFibGUoKSA/IDAgOlxuLVx0XHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwibWVyZ2VfYWNyb3NzX25vZGVzXCIpLCBrc21fc3lzZnMtXHUwMDNlbWVyZ2VfYWNyb3NzX25vZGVzKSB8fFxuK1x0ICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6XG4rXHRcdGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCJtZXJnZV9hY3Jvc3Nfbm9kZXNcIiksIGtzbV9zeXNmcy1cdTAwM2VtZXJnZV9hY3Jvc3Nfbm9kZXMpKSB8fFxuIFx0ICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCJwYWdlc190b19zY2FuXCIpLCBrc21fc3lzZnMtXHUwMDNlcGFnZXNfdG9fc2NhbikgfHxcbiBcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwicnVuXCIpLCBrc21fc3lzZnMtXHUwMDNlcnVuKSB8fFxuIFx0ICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCJzbGVlcF9taWxsaXNlY3NcIiksIGtzbV9zeXNmcy1cdTAwM2VzbGVlcF9taWxsaXNlY3MpIHx8XG5AQCAtNDQwLDkgKzQ0MCw5IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfbWVtX25vZGUoaW50IG5vZGUpXG4gXHRcdG1lbV9ub2RlID0gaSAlIChtYXhfbm9kZSArIDEpO1xuIFx0XHRub2RlX3NpemUgPSBudW1hX25vZGVfc2l6ZShtZW1fbm9kZSwgTlVMTCk7XG4gXHRcdGlmIChub2RlX3NpemUgXHUwMDNlIDApXG4tXHRcdFx0YnJlYWs7XG4rXHRcdFx0cmV0dXJuIG1lbV9ub2RlO1xuIFx0fVxuLVx0cmV0dXJuIG1lbV9ub2RlO1xuK1x0cmV0dXJuIC1FTk9ERVY7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZ2V0X2ZpcnN0X21lbV9ub2RlKHZvaWQpXG5AQCAtNDU1LDggKzQ1NSw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfa3NtX251bWFfbWVyZ2UoaW50IG1lcmdlX3R5cGUsIGludCBtYXBwaW5nLCBpbnQgcHJvdCwgaW50IHRpbWVvXG4ge1xuIFx0dm9pZCAqbnVtYTFfbWFwX3B0ciwgKm51bWEyX21hcF9wdHI7XG4gXHRzdHJ1Y3QgdGltZXNwZWMgc3RhcnRfdGltZTtcbitcdGludCBmaXJzdF9ub2RlLCBzZWNvbmRfbm9kZTtcbiBcdGludCBwYWdlX2NvdW50ID0gMjtcbi1cdGludCBmaXJzdF9ub2RlO1xuIFxuIFx0aWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDX1JBVywgXHUwMDI2c3RhcnRfdGltZSkpIHtcbiBcdFx0a3NmdF9wZXJyb3IoXCJjbG9ja19nZXR0aW1lXCIpO1xuQEAgLTQ2NywxNyArNDY3LDE5IEBAIHN0YXRpYyBpbnQgY2hlY2tfa3NtX251bWFfbWVyZ2UoaW50IG1lcmdlX3R5cGUsIGludCBtYXBwaW5nLCBpbnQgcHJvdCwgaW50IHRpbWVvXG4gXHRcdGtzZnRfcHJpbnRfbXNnKFwiTlVNQSBzdXBwb3J0IG5vdCBlbmFibGVkXFxuXCIpO1xuIFx0XHRyZXR1cm4gS1NGVF9TS0lQO1xuIFx0fVxuLVx0aWYgKG51bWFfbnVtX2NvbmZpZ3VyZWRfbm9kZXMoKSBcdTAwM2M9IDEpIHtcbi1cdFx0a3NmdF9wcmludF9tc2coXCJBdCBsZWFzdCAyIE5VTUEgbm9kZXMgbXVzdCBiZSBhdmFpbGFibGVcXG5cIik7XG4rXHRmaXJzdF9ub2RlID0gZ2V0X2ZpcnN0X21lbV9ub2RlKCk7XG4rXHRzZWNvbmRfbm9kZSA9IGdldF9uZXh0X21lbV9ub2RlKGZpcnN0X25vZGUpO1xuK1xuK1x0aWYgKHNlY29uZF9ub2RlIFx1MDAzYyAwKSB7XG4rXHRcdGtzZnRfcHJpbnRfbXNnKFwiQXQgbGVhc3QgMiBOVU1BIG5vZGVzIHdpdGggbWVtb3J5IG11c3QgYmUgYXZhaWxhYmxlXFxuXCIpO1xuIFx0XHRyZXR1cm4gS1NGVF9TS0lQO1xuIFx0fVxuIFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCJtZXJnZV9hY3Jvc3Nfbm9kZXNcIiksIG1lcmdlX2Fjcm9zc19ub2RlcykpXG4gXHRcdHJldHVybiBLU0ZUX0ZBSUw7XG4gXG4gXHQvKiBhbGxvY2F0ZSAyIHBhZ2VzIGluIDIgZGlmZmVyZW50IE5VTUEgbm9kZXMgYW5kIGZpbGwgdGhlbSB3aXRoIHRoZSBzYW1lIGRhdGEgKi9cbi1cdGZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTtcbiBcdG51bWExX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIGZpcnN0X25vZGUpO1xuLVx0bnVtYTJfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgZ2V0X25leHRfbWVtX25vZGUoZmlyc3Rfbm9kZSkpO1xuK1x0bnVtYTJfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgc2Vjb25kX25vZGUpO1xuIFx0aWYgKCFudW1hMV9tYXBfcHRyIHx8ICFudW1hMl9tYXBfcHRyKSB7XG4gXHRcdGtzZnRfcGVycm9yKFwibnVtYV9hbGxvY19vbm5vZGVcIik7XG4gXHRcdHJldHVybiBLU0ZUX0ZBSUw7XG5AQCAtODQ0LDggKzg0Niw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHRpZiAoa3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcInJ1blwiKSwgMikgfHxcbiBcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwic2xlZXBfbWlsbGlzZWNzXCIpLCAwKSB8fFxuLVx0ICAgIG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcbi1cdFx0a3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcIm1lcmdlX2Fjcm9zc19ub2Rlc1wiKSwgMSkgfHxcbitcdCAgICAobnVtYV9hdmFpbGFibGUoKSA/IDAgOlxuK1x0XHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwibWVyZ2VfYWNyb3NzX25vZGVzXCIpLCAxKSkgfHxcbiBcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwicGFnZXNfdG9fc2NhblwiKSwgcGFnZV9jb3VudCkpXG4gXHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIkNhbm5vdCBzZXQgdXAgS1NNIHR1bmFibGVzXFxuXCIpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTM6MDA6MTguMTgzOTQ5MTgzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2NjEyMDY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuY2AuIFJpZ2h0IGF3YXksIHRoYXQgbG9jYXRpb24ganVtcHMgb3V0IGF0IG1lIOKAkyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vYC4gVGhlc2UgYXJlICpzZWxmdGVzdHMqLCBtZWFuaW5nIHRoZXkgYXJlIHVzZXItc3BhY2UgcHJvZ3JhbXMgZGVzaWduZWQgdG8gdmFsaWRhdGUga2VybmVsIGJlaGF2aW9yLiBUaGV5IGFyZW4ndCBrZXJuZWwgY29kZSB0aGVtc2VsdmVzLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogYW55IHBhdGNoIHRoYXQgKm9ubHkqIG1vZGlmaWVzIGRvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50IGNoYW5nZXMsIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIHNob3VsZCBiZSBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpbmtpbmcgYWJvdXQgaXQsIGZ1enppbmcgaXMgYWJvdXQgaWRlbnRpZnlpbmcgdnVsbmVyYWJpbGl0aWVzICp3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYqIOKAkyBpbiBkcml2ZXJzLCBjb3JlIGxvZ2ljLCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gU2VsZnRlc3RzLCB3aGlsZSBpbXBvcnRhbnQgZm9yIGVuc3VyaW5nIGNvcnJlY3RuZXNzLCBkb24ndCBkaXJlY3RseSBtb2RpZnkgdGhhdCBjb3JlIGZ1bmN0aW9uYWxpdHkuIFRoZXkgKnRlc3QqIGl0LiBUaGVyZWZvcmUsIGNoYW5nZXMgdG8gdGhlbSBkb24ndCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBjb2RlIHRvIGJlIGZ1enplZCwgaW4gdGhlIG1hbm5lciB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtLCB5ZXAsIHRob3NlIGFyZSB0aGUgb25seSBmaWxlcyBhZmZlY3RlZC4gTm90aGluZyBlbHNlIGlzIGx1cmtpbmcgaW4gdGhlcmUuIFNvLCBiYXNlZCBvbiB0aGUgbG9jYXRpb24gYW5kIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIGl0J3MgcHJldHR5IGNsZWFyOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTm8gY2hhbmdlcyBoZXJlIHdhcnJhbnQgaW50ZW5zaXZlIGtlcm5lbCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTIxLCJPdXRwdXRUb2tlbnMiOjcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTM6MDA6MjUuOTUwMDcyMTcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflownbnj2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 12:49:47 +0000 UTC FinishedAt: 2026-06-30 13:00:27 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDEzOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMzowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgzM2UxY2I5ZDhmNDU4ZDRlYzQ1YzUwNTQ1OWQ1NjdlZGY1YjcxZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAxMzowMDoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuaW5kZXggMmVhYjIxMTBhYzZhNDYuLmNlMzhhZTNkYTAxYTIxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuQEAgLTQyMiw2ICYjNDM7NDIyLDM2IEBAIHN0YXRpYyB2b2lkIGh1Z2V0bGJfc3lzZnNfcGF0aChjaGFyICpidWYsIHNpemVfdCBidWZsZW4sXG4gXHRcdCBzaXplIC8gMTAyNCwgYXR0cik7XG4gfVxuIFxuJiM0Mzt2b2lkIGh1Z2V0bGJfd3JpdGVfbnVtKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGxvbmcgbnVtKVxuJiM0Mzt7XG4mIzQzO1x0aW50IGZkLCBzYXZlZF9lcnJubztcbiYjNDM7XHRzc2l6ZV90IG51bXdyaXR0ZW47XG4mIzQzO1x0Y2hhciBidWZbMjFdO1xuJiM0MztcbiYjNDM7XHRzcHJpbnRmKGJ1ZiwgXCYjMzQ7JWx1XCYjMzQ7LCBudW0pO1xuJiM0MztcbiYjNDM7XHRmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkpO1xuJiM0MztcdGlmIChmZCA9PSAtMSlcbiYjNDM7XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDslcyBvcGVuIGZhaWxlZDogJXNcXG5cJiMzNDssIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7XG4mIzQzO1xuJiM0MztcdG51bXdyaXR0ZW4gPSB3cml0ZShmZCwgYnVmLCBzdHJsZW4oYnVmKSk7XG4mIzQzO1x0c2F2ZWRfZXJybm8gPSBlcnJubztcbiYjNDM7XHRjbG9zZShmZCk7XG4mIzQzO1x0ZXJybm8gPSBzYXZlZF9lcnJubztcbiYjNDM7XG4mIzQzO1x0LyogVHJlYXQgRUlOVkFMIGFzIGEgc2tpcHBlZCBjb25maWd1cmF0aW9uIChlLmcuLCB1bnN1cHBvcnRlZCBnaWdhbnRpYyBwYWdlcykgKi9cbiYjNDM7XHRpZiAobnVtd3JpdHRlbiBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgZXJybm8gPT0gRUlOVkFMKSB7XG4mIzQzO1x0XHRrc2Z0X3ByaW50X21zZyhcJiMzNDslcyB3cml0ZSglcykgZmFpbGVkOiAlc1xcblwmIzM0OywgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKG51bXdyaXR0ZW4gXHUwMDNjIDApXG4mIzQzO1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7JXMgd3JpdGUoJXMpIGZhaWxlZDogJXNcXG5cJiMzNDssIHBhdGgsIGJ1Ziwgc3RyZXJyb3IoZXJybm8pKTtcbiYjNDM7XHRpZiAobnVtd3JpdHRlbiAhPSBzdHJsZW4oYnVmKSlcbiYjNDM7XHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcJiMzNDslcyB3cml0ZSglcykgaXMgdHJ1bmNhdGVkLCBleHBlY3RlZCAlenUgYnl0ZXMsIGdvdCAlemQgYnl0ZXNcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgcGF0aCwgYnVmLCBzdHJsZW4oYnVmKSwgbnVtd3JpdHRlbik7XG4mIzQzO31cbiYjNDM7XG4gdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbiB7XG4gXHRjaGFyIHBhdGhbUEFUSF9NQVhdO1xuQEAgLTQzNyw3ICYjNDM7NDY3LDcgQEAgdm9pZCBodWdldGxiX3NldF9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcJiMzNDtucl9odWdlcGFnZXNcJiMzNDspO1xuIFxuLVx0d3JpdGVfbnVtKHBhdGgsIG5yKTtcbiYjNDM7XHRodWdldGxiX3dyaXRlX251bShwYXRoLCBucik7XG4gfVxuIFxuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuaW5kZXggNzI2YzczYzQzYzA1YmEuLjM5MGZjYzQ4M2I5ZTEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuQEAgLTk1LDYgJiM0Mzs5NSw3IEBAIGJvb2wgdGhwX2lzX2VuYWJsZWQodm9pZCk7XG4gaW50IGRldGVjdF9odWdldGxiX3BhZ2Vfc2l6ZXModW5zaWduZWQgbG9uZyBzaXplc1tdLCBpbnQgbWF4KTtcbiB1bnNpZ25lZCBsb25nIGRlZmF1bHRfaHVnZV9wYWdlX3NpemUodm9pZCk7XG4gXG4mIzQzO3ZvaWQgaHVnZXRsYl93cml0ZV9udW0oY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbG9uZyBudW0pO1xuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpO1xuIHZvaWQgaHVnZXRsYl9zZXRfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKTtcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NtX3Rlc3RzLmNcbmluZGV4IGEwNTBmNDg0MGNmYTNhLi41ZmQ3NzkyYTBkNDc5NCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuY1xuQEAgLTI4OCw4ICYjNDM7Mjg4LDggQEAgc3RhdGljIGJvb2wgYXNzZXJ0X2tzbV9wYWdlc19jb3VudChsb25nIGR1cGxfcGFnZV9jb3VudClcbiBzdGF0aWMgaW50IGtzbV9zYXZlX2RlZihzdHJ1Y3Qga3NtX3N5c2ZzICprc21fc3lzZnMpXG4ge1xuIFx0aWYgKGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcJiMzNDttYXhfcGFnZV9zaGFyaW5nXCYjMzQ7KSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZW1heF9wYWdlX3NoYXJpbmcpIHx8XG4tXHQgICAgbnVtYV9hdmFpbGFibGUoKSA/IDAgOlxuLVx0XHRrc21fcmVhZF9zeXNmcyhLU01fRlAoXCYjMzQ7bWVyZ2VfYWNyb3NzX25vZGVzXCYjMzQ7KSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykgfHxcbiYjNDM7XHQgICAgKG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcbiYjNDM7XHRcdGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXNcJiMzNDspLCBcdTAwMjZrc21fc3lzZnMtXHUwMDNlbWVyZ2VfYWNyb3NzX25vZGVzKSkgfHxcbiBcdCAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoXCYjMzQ7c2xlZXBfbWlsbGlzZWNzXCYjMzQ7KSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZXNsZWVwX21pbGxpc2VjcykgfHxcbiBcdCAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoXCYjMzQ7cGFnZXNfdG9fc2NhblwmIzM0OyksIFx1MDAyNmtzbV9zeXNmcy1cdTAwM2VwYWdlc190b19zY2FuKSB8fFxuIFx0ICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcJiMzNDtydW5cJiMzNDspLCBcdTAwMjZrc21fc3lzZnMtXHUwMDNlcnVuKSB8fFxuQEAgLTMwNCw4ICYjNDM7MzA0LDggQEAgc3RhdGljIGludCBrc21fc2F2ZV9kZWYoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKVxuIHN0YXRpYyBpbnQga3NtX3Jlc3RvcmUoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKVxuIHtcbiBcdGlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O21heF9wYWdlX3NoYXJpbmdcJiMzNDspLCBrc21fc3lzZnMtXHUwMDNlbWF4X3BhZ2Vfc2hhcmluZykgfHxcbi1cdCAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6XG4tXHRcdGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7bWVyZ2VfYWNyb3NzX25vZGVzXCYjMzQ7KSwga3NtX3N5c2ZzLVx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykgfHxcbiYjNDM7XHQgICAgKG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcbiYjNDM7XHRcdGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7bWVyZ2VfYWNyb3NzX25vZGVzXCYjMzQ7KSwga3NtX3N5c2ZzLVx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykpIHx8XG4gXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcJiMzNDtwYWdlc190b19zY2FuXCYjMzQ7KSwga3NtX3N5c2ZzLVx1MDAzZXBhZ2VzX3RvX3NjYW4pIHx8XG4gXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcJiMzNDtydW5cJiMzNDspLCBrc21fc3lzZnMtXHUwMDNlcnVuKSB8fFxuIFx0ICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7c2xlZXBfbWlsbGlzZWNzXCYjMzQ7KSwga3NtX3N5c2ZzLVx1MDAzZXNsZWVwX21pbGxpc2VjcykgfHxcbkBAIC00NDAsOSAmIzQzOzQ0MCw5IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfbWVtX25vZGUoaW50IG5vZGUpXG4gXHRcdG1lbV9ub2RlID0gaSAlIChtYXhfbm9kZSAmIzQzOyAxKTtcbiBcdFx0bm9kZV9zaXplID0gbnVtYV9ub2RlX3NpemUobWVtX25vZGUsIE5VTEwpO1xuIFx0XHRpZiAobm9kZV9zaXplIFx1MDAzZSAwKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRyZXR1cm4gbWVtX25vZGU7XG4gXHR9XG4tXHRyZXR1cm4gbWVtX25vZGU7XG4mIzQzO1x0cmV0dXJuIC1FTk9ERVY7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZ2V0X2ZpcnN0X21lbV9ub2RlKHZvaWQpXG5AQCAtNDU1LDggJiM0Mzs0NTUsOCBAQCBzdGF0aWMgaW50IGNoZWNrX2tzbV9udW1hX21lcmdlKGludCBtZXJnZV90eXBlLCBpbnQgbWFwcGluZywgaW50IHByb3QsIGludCB0aW1lb1xuIHtcbiBcdHZvaWQgKm51bWExX21hcF9wdHIsICpudW1hMl9tYXBfcHRyO1xuIFx0c3RydWN0IHRpbWVzcGVjIHN0YXJ0X3RpbWU7XG4mIzQzO1x0aW50IGZpcnN0X25vZGUsIHNlY29uZF9ub2RlO1xuIFx0aW50IHBhZ2VfY291bnQgPSAyO1xuLVx0aW50IGZpcnN0X25vZGU7XG4gXG4gXHRpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUNfUkFXLCBcdTAwMjZzdGFydF90aW1lKSkge1xuIFx0XHRrc2Z0X3BlcnJvcihcJiMzNDtjbG9ja19nZXR0aW1lXCYjMzQ7KTtcbkBAIC00NjcsMTcgJiM0Mzs0NjcsMTkgQEAgc3RhdGljIGludCBjaGVja19rc21fbnVtYV9tZXJnZShpbnQgbWVyZ2VfdHlwZSwgaW50IG1hcHBpbmcsIGludCBwcm90LCBpbnQgdGltZW9cbiBcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7TlVNQSBzdXBwb3J0IG5vdCBlbmFibGVkXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIEtTRlRfU0tJUDtcbiBcdH1cbi1cdGlmIChudW1hX251bV9jb25maWd1cmVkX25vZGVzKCkgXHUwMDNjPSAxKSB7XG4tXHRcdGtzZnRfcHJpbnRfbXNnKFwmIzM0O0F0IGxlYXN0IDIgTlVNQSBub2RlcyBtdXN0IGJlIGF2YWlsYWJsZVxcblwmIzM0Oyk7XG4mIzQzO1x0Zmlyc3Rfbm9kZSA9IGdldF9maXJzdF9tZW1fbm9kZSgpO1xuJiM0MztcdHNlY29uZF9ub2RlID0gZ2V0X25leHRfbWVtX25vZGUoZmlyc3Rfbm9kZSk7XG4mIzQzO1xuJiM0MztcdGlmIChzZWNvbmRfbm9kZSBcdTAwM2MgMCkge1xuJiM0MztcdFx0a3NmdF9wcmludF9tc2coXCYjMzQ7QXQgbGVhc3QgMiBOVU1BIG5vZGVzIHdpdGggbWVtb3J5IG11c3QgYmUgYXZhaWxhYmxlXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIEtTRlRfU0tJUDtcbiBcdH1cbiBcdGlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O21lcmdlX2Fjcm9zc19ub2Rlc1wmIzM0OyksIG1lcmdlX2Fjcm9zc19ub2RlcykpXG4gXHRcdHJldHVybiBLU0ZUX0ZBSUw7XG4gXG4gXHQvKiBhbGxvY2F0ZSAyIHBhZ2VzIGluIDIgZGlmZmVyZW50IE5VTUEgbm9kZXMgYW5kIGZpbGwgdGhlbSB3aXRoIHRoZSBzYW1lIGRhdGEgKi9cbi1cdGZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTtcbiBcdG51bWExX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIGZpcnN0X25vZGUpO1xuLVx0bnVtYTJfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgZ2V0X25leHRfbWVtX25vZGUoZmlyc3Rfbm9kZSkpO1xuJiM0MztcdG51bWEyX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIHNlY29uZF9ub2RlKTtcbiBcdGlmICghbnVtYTFfbWFwX3B0ciB8fCAhbnVtYTJfbWFwX3B0cikge1xuIFx0XHRrc2Z0X3BlcnJvcihcJiMzNDtudW1hX2FsbG9jX29ubm9kZVwmIzM0Oyk7XG4gXHRcdHJldHVybiBLU0ZUX0ZBSUw7XG5AQCAtODQ0LDggJiM0Mzs4NDYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuIFxuIFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7cnVuXCYjMzQ7KSwgMikgfHxcbiBcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O3NsZWVwX21pbGxpc2Vjc1wmIzM0OyksIDApIHx8XG4tXHQgICAgbnVtYV9hdmFpbGFibGUoKSA/IDAgOlxuLVx0XHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O21lcmdlX2Fjcm9zc19ub2Rlc1wmIzM0OyksIDEpIHx8XG4mIzQzO1x0ICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6XG4mIzQzO1x0XHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwmIzM0O21lcmdlX2Fjcm9zc19ub2Rlc1wmIzM0OyksIDEpKSB8fFxuIFx0ICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCYjMzQ7cGFnZXNfdG9fc2NhblwmIzM0OyksIHBhZ2VfY291bnQpKVxuIFx0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCYjMzQ7Q2Fubm90IHNldCB1cCBLU00gdHVuYWJsZXNcXG5cJiMzNDspO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDEzOjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODMzZTFjYjlkOGY0NThkNGVjNDVjNTA1NDU5ZDU2N2VkZjViNzFkZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDEzOjAwOjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmMKaW5kZXggMmVhYjIxMTBhYzZhNDYuLmNlMzhhZTNkYTAxYTIxIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmMKQEAgLTQyMiw2ICYjNDM7NDIyLDM2IEBAIHN0YXRpYyB2b2lkIGh1Z2V0bGJfc3lzZnNfcGF0aChjaGFyICpidWYsIHNpemVfdCBidWZsZW4sCiAJCSBzaXplIC8gMTAyNCwgYXR0cik7CiB9CiAKJiM0Mzt2b2lkIGh1Z2V0bGJfd3JpdGVfbnVtKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGxvbmcgbnVtKQomIzQzO3sKJiM0MzsJaW50IGZkLCBzYXZlZF9lcnJubzsKJiM0MzsJc3NpemVfdCBudW13cml0dGVuOwomIzQzOwljaGFyIGJ1ZlsyMV07CiYjNDM7CiYjNDM7CXNwcmludGYoYnVmLCAmIzM0OyVsdSYjMzQ7LCBudW0pOwomIzQzOwomIzQzOwlmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkpOwomIzQzOwlpZiAoZmQgPT0gLTEpCiYjNDM7CQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDslcyBvcGVuIGZhaWxlZDogJXNcbiYjMzQ7LCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwomIzQzOwomIzQzOwludW13cml0dGVuID0gd3JpdGUoZmQsIGJ1Ziwgc3RybGVuKGJ1ZikpOwomIzQzOwlzYXZlZF9lcnJubyA9IGVycm5vOwomIzQzOwljbG9zZShmZCk7CiYjNDM7CWVycm5vID0gc2F2ZWRfZXJybm87CiYjNDM7CiYjNDM7CS8qIFRyZWF0IEVJTlZBTCBhcyBhIHNraXBwZWQgY29uZmlndXJhdGlvbiAoZS5nLiwgdW5zdXBwb3J0ZWQgZ2lnYW50aWMgcGFnZXMpICovCiYjNDM7CWlmIChudW13cml0dGVuICZsdDsgMCAmYW1wOyZhbXA7IGVycm5vID09IEVJTlZBTCkgewomIzQzOwkJa3NmdF9wcmludF9tc2coJiMzNDslcyB3cml0ZSglcykgZmFpbGVkOiAlc1xuJiMzNDssIHBhdGgsIGJ1Ziwgc3RyZXJyb3IoZXJybm8pKTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobnVtd3JpdHRlbiAmbHQ7IDApCiYjNDM7CQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDslcyB3cml0ZSglcykgZmFpbGVkOiAlc1xuJiMzNDssIHBhdGgsIGJ1Ziwgc3RyZXJyb3IoZXJybm8pKTsKJiM0MzsJaWYgKG51bXdyaXR0ZW4gIT0gc3RybGVuKGJ1ZikpCiYjNDM7CQlrc2Z0X2V4aXRfZmFpbF9tc2coJiMzNDslcyB3cml0ZSglcykgaXMgdHJ1bmNhdGVkLCBleHBlY3RlZCAlenUgYnl0ZXMsIGdvdCAlemQgYnl0ZXNcbiYjMzQ7LAomIzQzOwkJCQkgICBwYXRoLCBidWYsIHN0cmxlbihidWYpLCBudW13cml0dGVuKTsKJiM0Mzt9CiYjNDM7CiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKQogewogCWNoYXIgcGF0aFtQQVRIX01BWF07CkBAIC00MzcsNyAmIzQzOzQ2Nyw3IEBAIHZvaWQgaHVnZXRsYl9zZXRfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG5yKQogCiAJaHVnZXRsYl9zeXNmc19wYXRoKHBhdGgsIHNpemVvZihwYXRoKSwgc2l6ZSwgJiMzNDtucl9odWdlcGFnZXMmIzM0Oyk7CiAKLQl3cml0ZV9udW0ocGF0aCwgbnIpOwomIzQzOwlodWdldGxiX3dyaXRlX251bShwYXRoLCBucik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oCmluZGV4IDcyNmM3M2M0M2MwNWJhLi4zOTBmY2M0ODNiOWUxMyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oCkBAIC05NSw2ICYjNDM7OTUsNyBAQCBib29sIHRocF9pc19lbmFibGVkKHZvaWQpOwogaW50IGRldGVjdF9odWdldGxiX3BhZ2Vfc2l6ZXModW5zaWduZWQgbG9uZyBzaXplc1tdLCBpbnQgbWF4KTsKIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTsKIAomIzQzO3ZvaWQgaHVnZXRsYl93cml0ZV9udW0oY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbG9uZyBudW0pOwogdW5zaWduZWQgbG9uZyBodWdldGxiX25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiB2b2lkIGh1Z2V0bGJfc2V0X25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucik7CiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NtX3Rlc3RzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuYwppbmRleCBhMDUwZjQ4NDBjZmEzYS4uNWZkNzc5MmEwZDQ3OTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jCkBAIC0yODgsOCAmIzQzOzI4OCw4IEBAIHN0YXRpYyBib29sIGFzc2VydF9rc21fcGFnZXNfY291bnQobG9uZyBkdXBsX3BhZ2VfY291bnQpCiBzdGF0aWMgaW50IGtzbV9zYXZlX2RlZihzdHJ1Y3Qga3NtX3N5c2ZzICprc21fc3lzZnMpCiB7CiAJaWYgKGtzbV9yZWFkX3N5c2ZzKEtTTV9GUCgmIzM0O21heF9wYWdlX3NoYXJpbmcmIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDttYXhfcGFnZV9zaGFyaW5nKSB8fAotCSAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6Ci0JCWtzbV9yZWFkX3N5c2ZzKEtTTV9GUCgmIzM0O21lcmdlX2Fjcm9zc19ub2RlcyYjMzQ7KSwgJmFtcDtrc21fc3lzZnMtJmd0O21lcmdlX2Fjcm9zc19ub2RlcykgfHwKJiM0MzsJICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6CiYjNDM7CQlrc21fcmVhZF9zeXNmcyhLU01fRlAoJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXMmIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDttZXJnZV9hY3Jvc3Nfbm9kZXMpKSB8fAogCSAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoJiMzNDtzbGVlcF9taWxsaXNlY3MmIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDtzbGVlcF9taWxsaXNlY3MpIHx8CiAJICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUCgmIzM0O3BhZ2VzX3RvX3NjYW4mIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDtwYWdlc190b19zY2FuKSB8fAogCSAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoJiMzNDtydW4mIzM0OyksICZhbXA7a3NtX3N5c2ZzLSZndDtydW4pIHx8CkBAIC0zMDQsOCAmIzQzOzMwNCw4IEBAIHN0YXRpYyBpbnQga3NtX3NhdmVfZGVmKHN0cnVjdCBrc21fc3lzZnMgKmtzbV9zeXNmcykKIHN0YXRpYyBpbnQga3NtX3Jlc3RvcmUoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKQogewogCWlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKCYjMzQ7bWF4X3BhZ2Vfc2hhcmluZyYjMzQ7KSwga3NtX3N5c2ZzLSZndDttYXhfcGFnZV9zaGFyaW5nKSB8fAotCSAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6Ci0JCWtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXMmIzM0OyksIGtzbV9zeXNmcy0mZ3Q7bWVyZ2VfYWNyb3NzX25vZGVzKSB8fAomIzQzOwkgICAgKG51bWFfYXZhaWxhYmxlKCkgPyAwIDoKJiM0MzsJCWtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXMmIzM0OyksIGtzbV9zeXNmcy0mZ3Q7bWVyZ2VfYWNyb3NzX25vZGVzKSkgfHwKIAkgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUCgmIzM0O3BhZ2VzX3RvX3NjYW4mIzM0OyksIGtzbV9zeXNmcy0mZ3Q7cGFnZXNfdG9fc2NhbikgfHwKIAkgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUCgmIzM0O3J1biYjMzQ7KSwga3NtX3N5c2ZzLSZndDtydW4pIHx8CiAJICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDtzbGVlcF9taWxsaXNlY3MmIzM0OyksIGtzbV9zeXNmcy0mZ3Q7c2xlZXBfbWlsbGlzZWNzKSB8fApAQCAtNDQwLDkgJiM0Mzs0NDAsOSBAQCBzdGF0aWMgaW50IGdldF9uZXh0X21lbV9ub2RlKGludCBub2RlKQogCQltZW1fbm9kZSA9IGkgJSAobWF4X25vZGUgJiM0MzsgMSk7CiAJCW5vZGVfc2l6ZSA9IG51bWFfbm9kZV9zaXplKG1lbV9ub2RlLCBOVUxMKTsKIAkJaWYgKG5vZGVfc2l6ZSAmZ3Q7IDApCi0JCQlicmVhazsKJiM0MzsJCQlyZXR1cm4gbWVtX25vZGU7CiAJfQotCXJldHVybiBtZW1fbm9kZTsKJiM0MzsJcmV0dXJuIC1FTk9ERVY7CiB9CiAKIHN0YXRpYyBpbnQgZ2V0X2ZpcnN0X21lbV9ub2RlKHZvaWQpCkBAIC00NTUsOCAmIzQzOzQ1NSw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfa3NtX251bWFfbWVyZ2UoaW50IG1lcmdlX3R5cGUsIGludCBtYXBwaW5nLCBpbnQgcHJvdCwgaW50IHRpbWVvCiB7CiAJdm9pZCAqbnVtYTFfbWFwX3B0ciwgKm51bWEyX21hcF9wdHI7CiAJc3RydWN0IHRpbWVzcGVjIHN0YXJ0X3RpbWU7CiYjNDM7CWludCBmaXJzdF9ub2RlLCBzZWNvbmRfbm9kZTsKIAlpbnQgcGFnZV9jb3VudCA9IDI7Ci0JaW50IGZpcnN0X25vZGU7CiAKIAlpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUNfUkFXLCAmYW1wO3N0YXJ0X3RpbWUpKSB7CiAJCWtzZnRfcGVycm9yKCYjMzQ7Y2xvY2tfZ2V0dGltZSYjMzQ7KTsKQEAgLTQ2NywxNyAmIzQzOzQ2NywxOSBAQCBzdGF0aWMgaW50IGNoZWNrX2tzbV9udW1hX21lcmdlKGludCBtZXJnZV90eXBlLCBpbnQgbWFwcGluZywgaW50IHByb3QsIGludCB0aW1lbwogCQlrc2Z0X3ByaW50X21zZygmIzM0O05VTUEgc3VwcG9ydCBub3QgZW5hYmxlZFxuJiMzNDspOwogCQlyZXR1cm4gS1NGVF9TS0lQOwogCX0KLQlpZiAobnVtYV9udW1fY29uZmlndXJlZF9ub2RlcygpICZsdDs9IDEpIHsKLQkJa3NmdF9wcmludF9tc2coJiMzNDtBdCBsZWFzdCAyIE5VTUEgbm9kZXMgbXVzdCBiZSBhdmFpbGFibGVcbiYjMzQ7KTsKJiM0MzsJZmlyc3Rfbm9kZSA9IGdldF9maXJzdF9tZW1fbm9kZSgpOwomIzQzOwlzZWNvbmRfbm9kZSA9IGdldF9uZXh0X21lbV9ub2RlKGZpcnN0X25vZGUpOwomIzQzOwomIzQzOwlpZiAoc2Vjb25kX25vZGUgJmx0OyAwKSB7CiYjNDM7CQlrc2Z0X3ByaW50X21zZygmIzM0O0F0IGxlYXN0IDIgTlVNQSBub2RlcyB3aXRoIG1lbW9yeSBtdXN0IGJlIGF2YWlsYWJsZVxuJiMzNDspOwogCQlyZXR1cm4gS1NGVF9TS0lQOwogCX0KIAlpZiAoa3NtX3dyaXRlX3N5c2ZzKEtTTV9GUCgmIzM0O21lcmdlX2Fjcm9zc19ub2RlcyYjMzQ7KSwgbWVyZ2VfYWNyb3NzX25vZGVzKSkKIAkJcmV0dXJuIEtTRlRfRkFJTDsKIAogCS8qIGFsbG9jYXRlIDIgcGFnZXMgaW4gMiBkaWZmZXJlbnQgTlVNQSBub2RlcyBhbmQgZmlsbCB0aGVtIHdpdGggdGhlIHNhbWUgZGF0YSAqLwotCWZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTsKIAludW1hMV9tYXBfcHRyID0gbnVtYV9hbGxvY19vbm5vZGUocGFnZV9zaXplLCBmaXJzdF9ub2RlKTsKLQludW1hMl9tYXBfcHRyID0gbnVtYV9hbGxvY19vbm5vZGUocGFnZV9zaXplLCBnZXRfbmV4dF9tZW1fbm9kZShmaXJzdF9ub2RlKSk7CiYjNDM7CW51bWEyX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIHNlY29uZF9ub2RlKTsKIAlpZiAoIW51bWExX21hcF9wdHIgfHwgIW51bWEyX21hcF9wdHIpIHsKIAkJa3NmdF9wZXJyb3IoJiMzNDtudW1hX2FsbG9jX29ubm9kZSYjMzQ7KTsKIAkJcmV0dXJuIEtTRlRfRkFJTDsKQEAgLTg0NCw4ICYjNDM7ODQ2LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKCYjMzQ7cnVuJiMzNDspLCAyKSB8fAogCSAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKCYjMzQ7c2xlZXBfbWlsbGlzZWNzJiMzNDspLCAwKSB8fAotCSAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6Ci0JCWtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDttZXJnZV9hY3Jvc3Nfbm9kZXMmIzM0OyksIDEpIHx8CiYjNDM7CSAgICAobnVtYV9hdmFpbGFibGUoKSA/IDAgOgomIzQzOwkJa3NtX3dyaXRlX3N5c2ZzKEtTTV9GUCgmIzM0O21lcmdlX2Fjcm9zc19ub2RlcyYjMzQ7KSwgMSkpIHx8CiAJICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoJiMzNDtwYWdlc190b19zY2FuJiMzNDspLCBwYWdlX2NvdW50KSkKIAkJa3NmdF9leGl0X2ZhaWxfbXNnKCYjMzQ7Q2Fubm90IHNldCB1cCBLU00gdHVuYWJsZXNcbiYjMzQ7KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxMzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTIxCgkJCQkJCQlvdXRwdXQ6IDcwCgkJCQkJCQl0aG91Z2h0czogNDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmhgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jYC4gUmlnaHQgYXdheSwgdGhhdCBsb2NhdGlvbiBqdW1wcyBvdXQgYXQgbWUg4oCTIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9gLiBUaGVzZSBhcmUgKnNlbGZ0ZXN0cyosIG1lYW5pbmcgdGhleSBhcmUgdXNlci1zcGFjZSBwcm9ncmFtcyBkZXNpZ25lZCB0byB2YWxpZGF0ZSBrZXJuZWwgYmVoYXZpb3IuIFRoZXkgYXJlbiYjMzk7dCBrZXJuZWwgY29kZSB0aGVtc2VsdmVzLgoKTm93LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IGFueSBwYXRjaCB0aGF0ICpvbmx5KiBtb2RpZmllcyBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBub24tZnVuY3Rpb25hbCBjb25zdGFudCBjaGFuZ2VzLCBvciB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiBzaG91bGQgYmUgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoaW5raW5nIGFib3V0IGl0LCBmdXp6aW5nIGlzIGFib3V0IGlkZW50aWZ5aW5nIHZ1bG5lcmFiaWxpdGllcyAqd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmKiDigJMgaW4gZHJpdmVycywgY29yZSBsb2dpYywgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuIFNlbGZ0ZXN0cywgd2hpbGUgaW1wb3J0YW50IGZvciBlbnN1cmluZyBjb3JyZWN0bmVzcywgZG9uJiMzOTt0IGRpcmVjdGx5IG1vZGlmeSB0aGF0IGNvcmUgZnVuY3Rpb25hbGl0eS4gVGhleSAqdGVzdCogaXQuIFRoZXJlZm9yZSwgY2hhbmdlcyB0byB0aGVtIGRvbiYjMzk7dCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBjb2RlIHRvIGJlIGZ1enplZCwgaW4gdGhlIG1hbm5lciB3ZSBhcmUgaW50ZXJlc3RlZCBpbi4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSwgeWVwLCB0aG9zZSBhcmUgdGhlIG9ubHkgZmlsZXMgYWZmZWN0ZWQuIE5vdGhpbmcgZWxzZSBpcyBsdXJraW5nIGluIHRoZXJlLiBTbywgYmFzZWQgb24gdGhlIGxvY2F0aW9uIGFuZCBuYXR1cmUgb2YgdGhlIHBhdGNoLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBObyBjaGFuZ2VzIGhlcmUgd2FycmFudCBpbnRlbnNpdmUga2VybmVsIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTM6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDEzOjAwOjE3LjU5MDMyMzM0MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTk4NTg1MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTM6MDA6MTcuNTkwMzMwNjkxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTI1OTI2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MzNlMWNiOWQ4ZjQ1OGQ0ZWM0NWM1MDU0NTlkNTY3ZWRmNWI3MWRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDMwIDEzOjAwOjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jXFxuaW5kZXggMmVhYjIxMTBhYzZhNDYuLmNlMzhhZTNkYTAxYTIxIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2h1Z2VwYWdlX3NldHRpbmdzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jXFxuQEAgLTQyMiw2ICs0MjIsMzYgQEAgc3RhdGljIHZvaWQgaHVnZXRsYl9zeXNmc19wYXRoKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbixcXG4gXFx0XFx0IHNpemUgLyAxMDI0LCBhdHRyKTtcXG4gfVxcbiBcXG4rdm9pZCBodWdldGxiX3dyaXRlX251bShjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBsb25nIG51bSlcXG4re1xcbitcXHRpbnQgZmQsIHNhdmVkX2Vycm5vO1xcbitcXHRzc2l6ZV90IG51bXdyaXR0ZW47XFxuK1xcdGNoYXIgYnVmWzIxXTtcXG4rXFxuK1xcdHNwcmludGYoYnVmLCBcXFwiJWx1XFxcIiwgbnVtKTtcXG4rXFxuK1xcdGZkID0gb3BlbihwYXRoLCBPX1dST05MWSk7XFxuK1xcdGlmIChmZCA9PSAtMSlcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyBvcGVuIGZhaWxlZDogJXNcXFxcblxcXCIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7XFxuK1xcbitcXHRudW13cml0dGVuID0gd3JpdGUoZmQsIGJ1Ziwgc3RybGVuKGJ1ZikpO1xcbitcXHRzYXZlZF9lcnJubyA9IGVycm5vO1xcbitcXHRjbG9zZShmZCk7XFxuK1xcdGVycm5vID0gc2F2ZWRfZXJybm87XFxuK1xcbitcXHQvKiBUcmVhdCBFSU5WQUwgYXMgYSBza2lwcGVkIGNvbmZpZ3VyYXRpb24gKGUuZy4sIHVuc3VwcG9ydGVkIGdpZ2FudGljIHBhZ2VzKSAqL1xcbitcXHRpZiAobnVtd3JpdHRlbiBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgZXJybm8gPT0gRUlOVkFMKSB7XFxuK1xcdFxcdGtzZnRfcHJpbnRfbXNnKFxcXCIlcyB3cml0ZSglcykgZmFpbGVkOiAlc1xcXFxuXFxcIiwgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChudW13cml0dGVuIFxcdTAwM2MgMClcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyB3cml0ZSglcykgZmFpbGVkOiAlc1xcXFxuXFxcIiwgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xcbitcXHRpZiAobnVtd3JpdHRlbiAhPSBzdHJsZW4oYnVmKSlcXG4rXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCIlcyB3cml0ZSglcykgaXMgdHJ1bmNhdGVkLCBleHBlY3RlZCAlenUgYnl0ZXMsIGdvdCAlemQgYnl0ZXNcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgIHBhdGgsIGJ1Ziwgc3RybGVuKGJ1ZiksIG51bXdyaXR0ZW4pO1xcbit9XFxuK1xcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKVxcbiB7XFxuIFxcdGNoYXIgcGF0aFtQQVRIX01BWF07XFxuQEAgLTQzNyw3ICs0NjcsNyBAQCB2b2lkIGh1Z2V0bGJfc2V0X25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucilcXG4gXFxuIFxcdGh1Z2V0bGJfc3lzZnNfcGF0aChwYXRoLCBzaXplb2YocGF0aCksIHNpemUsIFxcXCJucl9odWdlcGFnZXNcXFwiKTtcXG4gXFxuLVxcdHdyaXRlX251bShwYXRoLCBucik7XFxuK1xcdGh1Z2V0bGJfd3JpdGVfbnVtKHBhdGgsIG5yKTtcXG4gfVxcbiBcXG4gdW5zaWduZWQgbG9uZyBodWdldGxiX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxcbmluZGV4IDcyNmM3M2M0M2MwNWJhLi4zOTBmY2M0ODNiOWUxMyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxcbkBAIC05NSw2ICs5NSw3IEBAIGJvb2wgdGhwX2lzX2VuYWJsZWQodm9pZCk7XFxuIGludCBkZXRlY3RfaHVnZXRsYl9wYWdlX3NpemVzKHVuc2lnbmVkIGxvbmcgc2l6ZXNbXSwgaW50IG1heCk7XFxuIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTtcXG4gXFxuK3ZvaWQgaHVnZXRsYl93cml0ZV9udW0oY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbG9uZyBudW0pO1xcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcXG4gdm9pZCBodWdldGxiX3NldF9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpO1xcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jXFxuaW5kZXggYTA1MGY0ODQwY2ZhM2EuLjVmZDc3OTJhMGQ0Nzk0IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NtX3Rlc3RzLmNcXG5AQCAtMjg4LDggKzI4OCw4IEBAIHN0YXRpYyBib29sIGFzc2VydF9rc21fcGFnZXNfY291bnQobG9uZyBkdXBsX3BhZ2VfY291bnQpXFxuIHN0YXRpYyBpbnQga3NtX3NhdmVfZGVmKHN0cnVjdCBrc21fc3lzZnMgKmtzbV9zeXNmcylcXG4ge1xcbiBcXHRpZiAoa3NtX3JlYWRfc3lzZnMoS1NNX0ZQKFxcXCJtYXhfcGFnZV9zaGFyaW5nXFxcIiksIFxcdTAwMjZrc21fc3lzZnMtXFx1MDAzZW1heF9wYWdlX3NoYXJpbmcpIHx8XFxuLVxcdCAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6XFxuLVxcdFxcdGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcXFwibWVyZ2VfYWNyb3NzX25vZGVzXFxcIiksIFxcdTAwMjZrc21fc3lzZnMtXFx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykgfHxcXG4rXFx0ICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6XFxuK1xcdFxcdGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcXFwibWVyZ2VfYWNyb3NzX25vZGVzXFxcIiksIFxcdTAwMjZrc21fc3lzZnMtXFx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykpIHx8XFxuIFxcdCAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoXFxcInNsZWVwX21pbGxpc2Vjc1xcXCIpLCBcXHUwMDI2a3NtX3N5c2ZzLVxcdTAwM2VzbGVlcF9taWxsaXNlY3MpIHx8XFxuIFxcdCAgICBrc21fcmVhZF9zeXNmcyhLU01fRlAoXFxcInBhZ2VzX3RvX3NjYW5cXFwiKSwgXFx1MDAyNmtzbV9zeXNmcy1cXHUwMDNlcGFnZXNfdG9fc2NhbikgfHxcXG4gXFx0ICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcXFwicnVuXFxcIiksIFxcdTAwMjZrc21fc3lzZnMtXFx1MDAzZXJ1bikgfHxcXG5AQCAtMzA0LDggKzMwNCw4IEBAIHN0YXRpYyBpbnQga3NtX3NhdmVfZGVmKHN0cnVjdCBrc21fc3lzZnMgKmtzbV9zeXNmcylcXG4gc3RhdGljIGludCBrc21fcmVzdG9yZShzdHJ1Y3Qga3NtX3N5c2ZzICprc21fc3lzZnMpXFxuIHtcXG4gXFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXFxcIm1heF9wYWdlX3NoYXJpbmdcXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VtYXhfcGFnZV9zaGFyaW5nKSB8fFxcbi1cXHQgICAgbnVtYV9hdmFpbGFibGUoKSA/IDAgOlxcbi1cXHRcXHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFxcXCJtZXJnZV9hY3Jvc3Nfbm9kZXNcXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VtZXJnZV9hY3Jvc3Nfbm9kZXMpIHx8XFxuK1xcdCAgICAobnVtYV9hdmFpbGFibGUoKSA/IDAgOlxcbitcXHRcXHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFxcXCJtZXJnZV9hY3Jvc3Nfbm9kZXNcXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VtZXJnZV9hY3Jvc3Nfbm9kZXMpKSB8fFxcbiBcXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcXFwicGFnZXNfdG9fc2NhblxcXCIpLCBrc21fc3lzZnMtXFx1MDAzZXBhZ2VzX3RvX3NjYW4pIHx8XFxuIFxcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFxcXCJydW5cXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VydW4pIHx8XFxuIFxcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFxcXCJzbGVlcF9taWxsaXNlY3NcXFwiKSwga3NtX3N5c2ZzLVxcdTAwM2VzbGVlcF9taWxsaXNlY3MpIHx8XFxuQEAgLTQ0MCw5ICs0NDAsOSBAQCBzdGF0aWMgaW50IGdldF9uZXh0X21lbV9ub2RlKGludCBub2RlKVxcbiBcXHRcXHRtZW1fbm9kZSA9IGkgJSAobWF4X25vZGUgKyAxKTtcXG4gXFx0XFx0bm9kZV9zaXplID0gbnVtYV9ub2RlX3NpemUobWVtX25vZGUsIE5VTEwpO1xcbiBcXHRcXHRpZiAobm9kZV9zaXplIFxcdTAwM2UgMClcXG4tXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdHJldHVybiBtZW1fbm9kZTtcXG4gXFx0fVxcbi1cXHRyZXR1cm4gbWVtX25vZGU7XFxuK1xcdHJldHVybiAtRU5PREVWO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGdldF9maXJzdF9tZW1fbm9kZSh2b2lkKVxcbkBAIC00NTUsOCArNDU1LDggQEAgc3RhdGljIGludCBjaGVja19rc21fbnVtYV9tZXJnZShpbnQgbWVyZ2VfdHlwZSwgaW50IG1hcHBpbmcsIGludCBwcm90LCBpbnQgdGltZW9cXG4ge1xcbiBcXHR2b2lkICpudW1hMV9tYXBfcHRyLCAqbnVtYTJfbWFwX3B0cjtcXG4gXFx0c3RydWN0IHRpbWVzcGVjIHN0YXJ0X3RpbWU7XFxuK1xcdGludCBmaXJzdF9ub2RlLCBzZWNvbmRfbm9kZTtcXG4gXFx0aW50IHBhZ2VfY291bnQgPSAyO1xcbi1cXHRpbnQgZmlyc3Rfbm9kZTtcXG4gXFxuIFxcdGlmIChjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQ19SQVcsIFxcdTAwMjZzdGFydF90aW1lKSkge1xcbiBcXHRcXHRrc2Z0X3BlcnJvcihcXFwiY2xvY2tfZ2V0dGltZVxcXCIpO1xcbkBAIC00NjcsMTcgKzQ2NywxOSBAQCBzdGF0aWMgaW50IGNoZWNrX2tzbV9udW1hX21lcmdlKGludCBtZXJnZV90eXBlLCBpbnQgbWFwcGluZywgaW50IHByb3QsIGludCB0aW1lb1xcbiBcXHRcXHRrc2Z0X3ByaW50X21zZyhcXFwiTlVNQSBzdXBwb3J0IG5vdCBlbmFibGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIEtTRlRfU0tJUDtcXG4gXFx0fVxcbi1cXHRpZiAobnVtYV9udW1fY29uZmlndXJlZF9ub2RlcygpIFxcdTAwM2M9IDEpIHtcXG4tXFx0XFx0a3NmdF9wcmludF9tc2coXFxcIkF0IGxlYXN0IDIgTlVNQSBub2RlcyBtdXN0IGJlIGF2YWlsYWJsZVxcXFxuXFxcIik7XFxuK1xcdGZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTtcXG4rXFx0c2Vjb25kX25vZGUgPSBnZXRfbmV4dF9tZW1fbm9kZShmaXJzdF9ub2RlKTtcXG4rXFxuK1xcdGlmIChzZWNvbmRfbm9kZSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0a3NmdF9wcmludF9tc2coXFxcIkF0IGxlYXN0IDIgTlVNQSBub2RlcyB3aXRoIG1lbW9yeSBtdXN0IGJlIGF2YWlsYWJsZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiBLU0ZUX1NLSVA7XFxuIFxcdH1cXG4gXFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXFxcIm1lcmdlX2Fjcm9zc19ub2Rlc1xcXCIpLCBtZXJnZV9hY3Jvc3Nfbm9kZXMpKVxcbiBcXHRcXHRyZXR1cm4gS1NGVF9GQUlMO1xcbiBcXG4gXFx0LyogYWxsb2NhdGUgMiBwYWdlcyBpbiAyIGRpZmZlcmVudCBOVU1BIG5vZGVzIGFuZCBmaWxsIHRoZW0gd2l0aCB0aGUgc2FtZSBkYXRhICovXFxuLVxcdGZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTtcXG4gXFx0bnVtYTFfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgZmlyc3Rfbm9kZSk7XFxuLVxcdG51bWEyX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIGdldF9uZXh0X21lbV9ub2RlKGZpcnN0X25vZGUpKTtcXG4rXFx0bnVtYTJfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgc2Vjb25kX25vZGUpO1xcbiBcXHRpZiAoIW51bWExX21hcF9wdHIgfHwgIW51bWEyX21hcF9wdHIpIHtcXG4gXFx0XFx0a3NmdF9wZXJyb3IoXFxcIm51bWFfYWxsb2Nfb25ub2RlXFxcIik7XFxuIFxcdFxcdHJldHVybiBLU0ZUX0ZBSUw7XFxuQEAgLTg0NCw4ICs4NDYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbiBcXG4gXFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXFxcInJ1blxcXCIpLCAyKSB8fFxcbiBcXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcXFwic2xlZXBfbWlsbGlzZWNzXFxcIiksIDApIHx8XFxuLVxcdCAgICBudW1hX2F2YWlsYWJsZSgpID8gMCA6XFxuLVxcdFxcdGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXFxcIm1lcmdlX2Fjcm9zc19ub2Rlc1xcXCIpLCAxKSB8fFxcbitcXHQgICAgKG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcXG4rXFx0XFx0a3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcXFwibWVyZ2VfYWNyb3NzX25vZGVzXFxcIiksIDEpKSB8fFxcbiBcXHQgICAga3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcXFwicGFnZXNfdG9fc2NhblxcXCIpLCBwYWdlX2NvdW50KSlcXG4gXFx0XFx0a3NmdF9leGl0X2ZhaWxfbXNnKFxcXCJDYW5ub3Qgc2V0IHVwIEtTTSB0dW5hYmxlc1xcXFxuXFxcIik7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxMzowMDoxOC4xODM5NDcxNzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NjYyMjQxMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MzNlMWNiOWQ4ZjQ1OGQ0ZWM0NWM1MDU0NTlkNTY3ZWRmNWI3MWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTM6MDA6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuaW5kZXggMmVhYjIxMTBhYzZhNDYuLmNlMzhhZTNkYTAxYTIxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY1xuQEAgLTQyMiw2ICs0MjIsMzYgQEAgc3RhdGljIHZvaWQgaHVnZXRsYl9zeXNmc19wYXRoKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbixcbiBcdFx0IHNpemUgLyAxMDI0LCBhdHRyKTtcbiB9XG4gXG4rdm9pZCBodWdldGxiX3dyaXRlX251bShjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBsb25nIG51bSlcbit7XG4rXHRpbnQgZmQsIHNhdmVkX2Vycm5vO1xuK1x0c3NpemVfdCBudW13cml0dGVuO1xuK1x0Y2hhciBidWZbMjFdO1xuK1xuK1x0c3ByaW50ZihidWYsIFwiJWx1XCIsIG51bSk7XG4rXG4rXHRmZCA9IG9wZW4ocGF0aCwgT19XUk9OTFkpO1xuK1x0aWYgKGZkID09IC0xKVxuK1x0XHRrc2Z0X2V4aXRfZmFpbF9tc2coXCIlcyBvcGVuIGZhaWxlZDogJXNcXG5cIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTtcbitcbitcdG51bXdyaXR0ZW4gPSB3cml0ZShmZCwgYnVmLCBzdHJsZW4oYnVmKSk7XG4rXHRzYXZlZF9lcnJubyA9IGVycm5vO1xuK1x0Y2xvc2UoZmQpO1xuK1x0ZXJybm8gPSBzYXZlZF9lcnJubztcbitcbitcdC8qIFRyZWF0IEVJTlZBTCBhcyBhIHNraXBwZWQgY29uZmlndXJhdGlvbiAoZS5nLiwgdW5zdXBwb3J0ZWQgZ2lnYW50aWMgcGFnZXMpICovXG4rXHRpZiAobnVtd3JpdHRlbiBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgZXJybm8gPT0gRUlOVkFMKSB7XG4rXHRcdGtzZnRfcHJpbnRfbXNnKFwiJXMgd3JpdGUoJXMpIGZhaWxlZDogJXNcXG5cIiwgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRpZiAobnVtd3JpdHRlbiBcdTAwM2MgMClcbitcdFx0a3NmdF9leGl0X2ZhaWxfbXNnKFwiJXMgd3JpdGUoJXMpIGZhaWxlZDogJXNcXG5cIiwgcGF0aCwgYnVmLCBzdHJlcnJvcihlcnJubykpO1xuK1x0aWYgKG51bXdyaXR0ZW4gIT0gc3RybGVuKGJ1ZikpXG4rXHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIiVzIHdyaXRlKCVzKSBpcyB0cnVuY2F0ZWQsIGV4cGVjdGVkICV6dSBieXRlcywgZ290ICV6ZCBieXRlc1xcblwiLFxuK1x0XHRcdFx0ICAgcGF0aCwgYnVmLCBzdHJsZW4oYnVmKSwgbnVtd3JpdHRlbik7XG4rfVxuK1xuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUpXG4ge1xuIFx0Y2hhciBwYXRoW1BBVEhfTUFYXTtcbkBAIC00MzcsNyArNDY3LDcgQEAgdm9pZCBodWdldGxiX3NldF9ucl9wYWdlcyh1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRodWdldGxiX3N5c2ZzX3BhdGgocGF0aCwgc2l6ZW9mKHBhdGgpLCBzaXplLCBcIm5yX2h1Z2VwYWdlc1wiKTtcbiBcbi1cdHdyaXRlX251bShwYXRoLCBucik7XG4rXHRodWdldGxiX3dyaXRlX251bShwYXRoLCBucik7XG4gfVxuIFxuIHVuc2lnbmVkIGxvbmcgaHVnZXRsYl9mcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuaW5kZXggNzI2YzczYzQzYzA1YmEuLjM5MGZjYzQ4M2I5ZTEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuaFxuQEAgLTk1LDYgKzk1LDcgQEAgYm9vbCB0aHBfaXNfZW5hYmxlZCh2b2lkKTtcbiBpbnQgZGV0ZWN0X2h1Z2V0bGJfcGFnZV9zaXplcyh1bnNpZ25lZCBsb25nIHNpemVzW10sIGludCBtYXgpO1xuIHVuc2lnbmVkIGxvbmcgZGVmYXVsdF9odWdlX3BhZ2Vfc2l6ZSh2b2lkKTtcbiBcbit2b2lkIGh1Z2V0bGJfd3JpdGVfbnVtKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGxvbmcgbnVtKTtcbiB1bnNpZ25lZCBsb25nIGh1Z2V0bGJfbnJfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcbiB2b2lkIGh1Z2V0bGJfc2V0X25yX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBucik7XG4gdW5zaWduZWQgbG9uZyBodWdldGxiX2ZyZWVfcGFnZXModW5zaWduZWQgbG9uZyBzaXplKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2tzbV90ZXN0cy5jXG5pbmRleCBhMDUwZjQ4NDBjZmEzYS4uNWZkNzc5MmEwZDQ3OTQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0va3NtX3Rlc3RzLmNcbkBAIC0yODgsOCArMjg4LDggQEAgc3RhdGljIGJvb2wgYXNzZXJ0X2tzbV9wYWdlc19jb3VudChsb25nIGR1cGxfcGFnZV9jb3VudClcbiBzdGF0aWMgaW50IGtzbV9zYXZlX2RlZihzdHJ1Y3Qga3NtX3N5c2ZzICprc21fc3lzZnMpXG4ge1xuIFx0aWYgKGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcIm1heF9wYWdlX3NoYXJpbmdcIiksIFx1MDAyNmtzbV9zeXNmcy1cdTAwM2VtYXhfcGFnZV9zaGFyaW5nKSB8fFxuLVx0ICAgIG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcbi1cdFx0a3NtX3JlYWRfc3lzZnMoS1NNX0ZQKFwibWVyZ2VfYWNyb3NzX25vZGVzXCIpLCBcdTAwMjZrc21fc3lzZnMtXHUwMDNlbWVyZ2VfYWNyb3NzX25vZGVzKSB8fFxuK1x0ICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6XG4rXHRcdGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcIm1lcmdlX2Fjcm9zc19ub2Rlc1wiKSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZW1lcmdlX2Fjcm9zc19ub2RlcykpIHx8XG4gXHQgICAga3NtX3JlYWRfc3lzZnMoS1NNX0ZQKFwic2xlZXBfbWlsbGlzZWNzXCIpLCBcdTAwMjZrc21fc3lzZnMtXHUwMDNlc2xlZXBfbWlsbGlzZWNzKSB8fFxuIFx0ICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcInBhZ2VzX3RvX3NjYW5cIiksIFx1MDAyNmtzbV9zeXNmcy1cdTAwM2VwYWdlc190b19zY2FuKSB8fFxuIFx0ICAgIGtzbV9yZWFkX3N5c2ZzKEtTTV9GUChcInJ1blwiKSwgXHUwMDI2a3NtX3N5c2ZzLVx1MDAzZXJ1bikgfHxcbkBAIC0zMDQsOCArMzA0LDggQEAgc3RhdGljIGludCBrc21fc2F2ZV9kZWYoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKVxuIHN0YXRpYyBpbnQga3NtX3Jlc3RvcmUoc3RydWN0IGtzbV9zeXNmcyAqa3NtX3N5c2ZzKVxuIHtcbiBcdGlmIChrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwibWF4X3BhZ2Vfc2hhcmluZ1wiKSwga3NtX3N5c2ZzLVx1MDAzZW1heF9wYWdlX3NoYXJpbmcpIHx8XG4tXHQgICAgbnVtYV9hdmFpbGFibGUoKSA/IDAgOlxuLVx0XHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwibWVyZ2VfYWNyb3NzX25vZGVzXCIpLCBrc21fc3lzZnMtXHUwMDNlbWVyZ2VfYWNyb3NzX25vZGVzKSB8fFxuK1x0ICAgIChudW1hX2F2YWlsYWJsZSgpID8gMCA6XG4rXHRcdGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCJtZXJnZV9hY3Jvc3Nfbm9kZXNcIiksIGtzbV9zeXNmcy1cdTAwM2VtZXJnZV9hY3Jvc3Nfbm9kZXMpKSB8fFxuIFx0ICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCJwYWdlc190b19zY2FuXCIpLCBrc21fc3lzZnMtXHUwMDNlcGFnZXNfdG9fc2NhbikgfHxcbiBcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwicnVuXCIpLCBrc21fc3lzZnMtXHUwMDNlcnVuKSB8fFxuIFx0ICAgIGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCJzbGVlcF9taWxsaXNlY3NcIiksIGtzbV9zeXNmcy1cdTAwM2VzbGVlcF9taWxsaXNlY3MpIHx8XG5AQCAtNDQwLDkgKzQ0MCw5IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfbWVtX25vZGUoaW50IG5vZGUpXG4gXHRcdG1lbV9ub2RlID0gaSAlIChtYXhfbm9kZSArIDEpO1xuIFx0XHRub2RlX3NpemUgPSBudW1hX25vZGVfc2l6ZShtZW1fbm9kZSwgTlVMTCk7XG4gXHRcdGlmIChub2RlX3NpemUgXHUwMDNlIDApXG4tXHRcdFx0YnJlYWs7XG4rXHRcdFx0cmV0dXJuIG1lbV9ub2RlO1xuIFx0fVxuLVx0cmV0dXJuIG1lbV9ub2RlO1xuK1x0cmV0dXJuIC1FTk9ERVY7XG4gfVxuIFxuIHN0YXRpYyBpbnQgZ2V0X2ZpcnN0X21lbV9ub2RlKHZvaWQpXG5AQCAtNDU1LDggKzQ1NSw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfa3NtX251bWFfbWVyZ2UoaW50IG1lcmdlX3R5cGUsIGludCBtYXBwaW5nLCBpbnQgcHJvdCwgaW50IHRpbWVvXG4ge1xuIFx0dm9pZCAqbnVtYTFfbWFwX3B0ciwgKm51bWEyX21hcF9wdHI7XG4gXHRzdHJ1Y3QgdGltZXNwZWMgc3RhcnRfdGltZTtcbitcdGludCBmaXJzdF9ub2RlLCBzZWNvbmRfbm9kZTtcbiBcdGludCBwYWdlX2NvdW50ID0gMjtcbi1cdGludCBmaXJzdF9ub2RlO1xuIFxuIFx0aWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDX1JBVywgXHUwMDI2c3RhcnRfdGltZSkpIHtcbiBcdFx0a3NmdF9wZXJyb3IoXCJjbG9ja19nZXR0aW1lXCIpO1xuQEAgLTQ2NywxNyArNDY3LDE5IEBAIHN0YXRpYyBpbnQgY2hlY2tfa3NtX251bWFfbWVyZ2UoaW50IG1lcmdlX3R5cGUsIGludCBtYXBwaW5nLCBpbnQgcHJvdCwgaW50IHRpbWVvXG4gXHRcdGtzZnRfcHJpbnRfbXNnKFwiTlVNQSBzdXBwb3J0IG5vdCBlbmFibGVkXFxuXCIpO1xuIFx0XHRyZXR1cm4gS1NGVF9TS0lQO1xuIFx0fVxuLVx0aWYgKG51bWFfbnVtX2NvbmZpZ3VyZWRfbm9kZXMoKSBcdTAwM2M9IDEpIHtcbi1cdFx0a3NmdF9wcmludF9tc2coXCJBdCBsZWFzdCAyIE5VTUEgbm9kZXMgbXVzdCBiZSBhdmFpbGFibGVcXG5cIik7XG4rXHRmaXJzdF9ub2RlID0gZ2V0X2ZpcnN0X21lbV9ub2RlKCk7XG4rXHRzZWNvbmRfbm9kZSA9IGdldF9uZXh0X21lbV9ub2RlKGZpcnN0X25vZGUpO1xuK1xuK1x0aWYgKHNlY29uZF9ub2RlIFx1MDAzYyAwKSB7XG4rXHRcdGtzZnRfcHJpbnRfbXNnKFwiQXQgbGVhc3QgMiBOVU1BIG5vZGVzIHdpdGggbWVtb3J5IG11c3QgYmUgYXZhaWxhYmxlXFxuXCIpO1xuIFx0XHRyZXR1cm4gS1NGVF9TS0lQO1xuIFx0fVxuIFx0aWYgKGtzbV93cml0ZV9zeXNmcyhLU01fRlAoXCJtZXJnZV9hY3Jvc3Nfbm9kZXNcIiksIG1lcmdlX2Fjcm9zc19ub2RlcykpXG4gXHRcdHJldHVybiBLU0ZUX0ZBSUw7XG4gXG4gXHQvKiBhbGxvY2F0ZSAyIHBhZ2VzIGluIDIgZGlmZmVyZW50IE5VTUEgbm9kZXMgYW5kIGZpbGwgdGhlbSB3aXRoIHRoZSBzYW1lIGRhdGEgKi9cbi1cdGZpcnN0X25vZGUgPSBnZXRfZmlyc3RfbWVtX25vZGUoKTtcbiBcdG51bWExX21hcF9wdHIgPSBudW1hX2FsbG9jX29ubm9kZShwYWdlX3NpemUsIGZpcnN0X25vZGUpO1xuLVx0bnVtYTJfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgZ2V0X25leHRfbWVtX25vZGUoZmlyc3Rfbm9kZSkpO1xuK1x0bnVtYTJfbWFwX3B0ciA9IG51bWFfYWxsb2Nfb25ub2RlKHBhZ2Vfc2l6ZSwgc2Vjb25kX25vZGUpO1xuIFx0aWYgKCFudW1hMV9tYXBfcHRyIHx8ICFudW1hMl9tYXBfcHRyKSB7XG4gXHRcdGtzZnRfcGVycm9yKFwibnVtYV9hbGxvY19vbm5vZGVcIik7XG4gXHRcdHJldHVybiBLU0ZUX0ZBSUw7XG5AQCAtODQ0LDggKzg0Niw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4gXG4gXHRpZiAoa3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcInJ1blwiKSwgMikgfHxcbiBcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwic2xlZXBfbWlsbGlzZWNzXCIpLCAwKSB8fFxuLVx0ICAgIG51bWFfYXZhaWxhYmxlKCkgPyAwIDpcbi1cdFx0a3NtX3dyaXRlX3N5c2ZzKEtTTV9GUChcIm1lcmdlX2Fjcm9zc19ub2Rlc1wiKSwgMSkgfHxcbitcdCAgICAobnVtYV9hdmFpbGFibGUoKSA/IDAgOlxuK1x0XHRrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwibWVyZ2VfYWNyb3NzX25vZGVzXCIpLCAxKSkgfHxcbiBcdCAgICBrc21fd3JpdGVfc3lzZnMoS1NNX0ZQKFwicGFnZXNfdG9fc2NhblwiKSwgcGFnZV9jb3VudCkpXG4gXHRcdGtzZnRfZXhpdF9mYWlsX21zZyhcIkNhbm5vdCBzZXQgdXAgS1NNIHR1bmFibGVzXFxuXCIpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTM6MDA6MTguMTgzOTQ5MTgzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2NjEyMDY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vaHVnZXBhZ2Vfc2V0dGluZ3MuY2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9odWdlcGFnZV9zZXR0aW5ncy5oYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9rc21fdGVzdHMuY2AuIFJpZ2h0IGF3YXksIHRoYXQgbG9jYXRpb24ganVtcHMgb3V0IGF0IG1lIOKAkyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vYC4gVGhlc2UgYXJlICpzZWxmdGVzdHMqLCBtZWFuaW5nIHRoZXkgYXJlIHVzZXItc3BhY2UgcHJvZ3JhbXMgZGVzaWduZWQgdG8gdmFsaWRhdGUga2VybmVsIGJlaGF2aW9yLiBUaGV5IGFyZW4ndCBrZXJuZWwgY29kZSB0aGVtc2VsdmVzLlxuXG5Ob3csIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogYW55IHBhdGNoIHRoYXQgKm9ubHkqIG1vZGlmaWVzIGRvY3VtZW50YXRpb24sIEtjb25maWcgZmlsZXMsIGNvbW1lbnRzLCBkZWNvcmF0aXZlIGxvZ2dpbmcsIG5vbi1mdW5jdGlvbmFsIGNvbnN0YW50IGNoYW5nZXMsIG9yIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uIHNob3VsZCBiZSBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpbmtpbmcgYWJvdXQgaXQsIGZ1enppbmcgaXMgYWJvdXQgaWRlbnRpZnlpbmcgdnVsbmVyYWJpbGl0aWVzICp3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGYqIOKAkyBpbiBkcml2ZXJzLCBjb3JlIGxvZ2ljLCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gU2VsZnRlc3RzLCB3aGlsZSBpbXBvcnRhbnQgZm9yIGVuc3VyaW5nIGNvcnJlY3RuZXNzLCBkb24ndCBkaXJlY3RseSBtb2RpZnkgdGhhdCBjb3JlIGZ1bmN0aW9uYWxpdHkuIFRoZXkgKnRlc3QqIGl0LiBUaGVyZWZvcmUsIGNoYW5nZXMgdG8gdGhlbSBkb24ndCBpbnRyb2R1Y2UgbmV3IGtlcm5lbCBjb2RlIHRvIGJlIGZ1enplZCwgaW4gdGhlIG1hbm5lciB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtLCB5ZXAsIHRob3NlIGFyZSB0aGUgb25seSBmaWxlcyBhZmZlY3RlZC4gTm90aGluZyBlbHNlIGlzIGx1cmtpbmcgaW4gdGhlcmUuIFNvLCBiYXNlZCBvbiB0aGUgbG9jYXRpb24gYW5kIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIGl0J3MgcHJldHR5IGNsZWFyOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTm8gY2hhbmdlcyBoZXJlIHdhcnJhbnQgaW50ZW5zaXZlIGtlcm5lbCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTIxLCJPdXRwdXRUb2tlbnMiOjcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTM6MDA6MjUuOTUwMDcyMTcyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlci1zcGFjZSBzZWxmdGVzdHMgKHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tLyopIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflownbnj2[1] Phase: Running StartedAt: 2026-06-30 13:00:37 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflownbnj2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-30 13:00:37 +0000 UTC FinishedAt: 2026-06-30 13:00:43 +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,}