Name: series-workflowwsgs8 Phase: Failed StartedAt: 2026-07-13 11:44:39 +0000 UTC FinishedAt: 2026-07-13 12:31:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsgs8[0] Phase: Succeeded StartedAt: 2026-07-13 11:44:39 +0000 UTC FinishedAt: 2026-07-13 12:31:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsgs8[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 11:44:39 +0000 UTC FinishedAt: 2026-07-13 12:31:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IGV4dHJhY3RzIGR1cGxpY2F0ZWQga21lbSB1bmNoYXJnZSBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgbWVtY2dfdW5jaGFyZ2Vfa21lbWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjgzZDRiMDRkNTllNTMzMTU2NzQ1ZDMzMTVlYjhmMzI1MTU5ZjQ2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDEyOjI4OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xuaW5kZXggMjJmNTVhZWI5NGYzYmMuLjg2YWNmZTU1YTIwMWVjIDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1jb250cm9sLmNcbkBAIC0xMzcsNiAmIzQzOzEzNywxNCBAQCBib29sIG1lbV9jZ3JvdXBfa21lbV9kaXNhYmxlZCh2b2lkKVxuIFxuIHN0YXRpYyB2b2lkIG1lbWNnX3VuY2hhcmdlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTtcbiBcbiYjNDM7c3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Vfa21lbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGludCBucl9wYWdlcylcbiYjNDM7e1xuJiM0MztcdG1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfS01FTSwgLW5yX3BhZ2VzKTtcbiYjNDM7XHRtZW1jZzFfYWNjb3VudF9rbWVtKG1lbWNnLCAtbnJfcGFnZXMpO1xuJiM0MztcdGlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbiYjNDM7XHRcdG1lbWNnX3VuY2hhcmdlKG1lbWNnLCBucl9wYWdlcyk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXG4ge1xuIFx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG9ial9jZ3JvdXAsIHJlZmNudCk7XG5AQCAtMTcyLDEwICYjNDM7MTgwLDcgQEAgc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXG4gXHRcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcbiBcbiBcdFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX29iamNnKG9iamNnKTtcbi1cdFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpO1xuLVx0XHRtZW1jZzFfYWNjb3VudF9rbWVtKG1lbWNnLCAtbnJfcGFnZXMpO1xuLVx0XHRpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpXG4tXHRcdFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcbiYjNDM7XHRcdG1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTtcbiBcdFx0bWVtX2Nncm91cF9wdXQobWVtY2cpO1xuIFx0fVxuIFxuQEAgLTMzMjksMTAgJiM0MzszMzM0LDcgQEAgc3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrLCBpbnQgaSlcbiBcbiBcdFx0XHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTtcbiBcbi1cdFx0XHRtb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7XG4tXHRcdFx0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcbi1cdFx0XHRpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpXG4tXHRcdFx0XHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xuJiM0MztcdFx0XHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XG4gXG4gXHRcdFx0Y3NzX3B1dChcdTAwMjZtZW1jZy1cdTAwM2Vjc3MpO1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgZXh0cmFjdHMgZHVwbGljYXRlZCBrbWVtIHVuY2hhcmdlIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBtZW1jZ191bmNoYXJnZV9rbWVtYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI4M2Q0YjA0ZDU5ZTUzMzE1Njc0NWQzMzE1ZWI4ZjMyNTE1OWY0NjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAxMjoyODo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuYwppbmRleCAyMmY1NWFlYjk0ZjNiYy4uODZhY2ZlNTVhMjAxZWMgMTAwNjQ0Ci0tLSBhL21tL21lbWNvbnRyb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1jb250cm9sLmMKQEAgLTEzNyw2ICYjNDM7MTM3LDE0IEBAIGJvb2wgbWVtX2Nncm91cF9rbWVtX2Rpc2FibGVkKHZvaWQpCiAKIHN0YXRpYyB2b2lkIG1lbWNnX3VuY2hhcmdlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTsKIAomIzQzO3N0YXRpYyB2b2lkIG1lbWNnX3VuY2hhcmdlX2ttZW0oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpCiYjNDM7ewomIzQzOwltb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7CiYjNDM7CW1lbWNnMV9hY2NvdW50X2ttZW0obWVtY2csIC1ucl9wYWdlcyk7CiYjNDM7CWlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSkKJiM0MzsJCW1lbWNnX3VuY2hhcmdlKG1lbWNnLCBucl9wYWdlcyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpCiB7CiAJc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG9ial9jZ3JvdXAsIHJlZmNudCk7CkBAIC0xNzIsMTAgJiM0MzsxODAsNyBAQCBzdGF0aWMgdm9pZCBvYmpfY2dyb3VwX3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikKIAkJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwogCiAJCW1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9vYmpjZyhvYmpjZyk7Ci0JCW1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfS01FTSwgLW5yX3BhZ2VzKTsKLQkJbWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTsKLQkJaWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKQotCQkJbWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTsKJiM0MzsJCW1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTsKIAkJbWVtX2Nncm91cF9wdXQobWVtY2cpOwogCX0KIApAQCAtMzMyOSwxMCAmIzQzOzMzMzQsNyBAQCBzdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2tfc2xvdChzdHJ1Y3Qgb2JqX3N0b2NrX3BjcCAqc3RvY2ssIGludCBpKQogCiAJCQltZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTsKIAotCQkJbW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpOwotCQkJbWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTsKLQkJCWlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSkKLQkJCQltZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpOwomIzQzOwkJCW1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTsKIAogCQkJY3NzX3B1dCgmYW1wO21lbWNnLSZndDtjc3MpOwogCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgYG1tL21lbWNvbnRyb2wuY2AgZm9yIENsYXJpdHkgYW5kIERSWW5lc3MqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBpbiBgbW0vbWVtY29udHJvbC5jYC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGFib3V0IHRpZHlpbmcgdXAgYW5kIHJlZHVjaW5nIGR1cGxpY2F0aW9uLiBJIHNlZSB0aGUgbWFpbiBnb2FsIGlzIHRvIGludHJvZHVjZSBhIG5ldyBoZWxwZXIgZnVuY3Rpb24sIGBtZW1jZ191bmNoYXJnZV9rbWVtYCwgYW5kIGNvbnNvbGlkYXRlIHR3byBpZGVudGljYWwgY29kZSBibG9ja3MgaW50byBjYWxscyB0byB0aGlzIG5ldyBmdW5jdGlvbi4gVGhlIG9yaWdpbmFsIGJsb2NrczoKCmBgYGMKCQltb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7CgkJbWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTsKCQlpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpCgkJCW1lbWNnX3VuY2hhcmdlKG1lbWNnLCBucl9wYWdlcyk7CmBgYAoKLi4uYXJlIG5vdyByZXBsYWNlZCBieSBhIHNpbmdsZSBjYWxsIHRvOgoKYGBgYwoJCW1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTsKYGBgCgpXaGVyZSBgbWVtY2dfdW5jaGFyZ2Vfa21lbWAgZG9lcyB0aGUgZm9sbG93aW5nOgoKYGBgYwpzdGF0aWMgdm9pZCBtZW1jZ191bmNoYXJnZV9rbWVtKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgdW5zaWduZWQgaW50IG5yX3BhZ2VzKQp7Cgltb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7CgltZW1jZzFfYWNjb3VudF9rbWVtKG1lbWNnLCAtbnJfcGFnZXMpOwoJaWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKQoJCW1lbWNnX3VuY2hhcmdlKG1lbWNnLCBucl9wYWdlcyk7Cn0KYGBgCgpNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgcHVyZSByZWZhY3Rvciwgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBpbXBsaWVkLCBidXQgSSBhbHdheXMgd2FudCB0byBtYWtlIHN1cmUgSSBhbSBjb3JyZWN0LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSB0eXBlcyBiZWluZyBwYXNzZWQgaW4gZm9yIGBucl9wYWdlc2AsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBjaGFuZ2VzLiBDaGVja2luZyB0aGUgb3JpZ2luYWwgY29kZSBibG9ja3MsIGl0IGxvb2tzIGxpa2UgYG5yX3BhZ2VzYCBpcyBpbmRlZWQgYW4gYHVuc2lnbmVkIGludGAgaW4gYm90aCBwbGFjZXMgKGBvYmpfY2dyb3VwX3JlbGVhc2VgLCBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgKS4gR2l2ZW4gdGhlIG5ldyBoZWxwZXIgYWxzbyB0YWtlcyBhbiBgdW5zaWduZWQgaW50YCBmb3IgYG5yX3BhZ2VzYCwgYW5kIHRoZSBsb2dpYyBpcyBpZGVudGljYWwsIGl0IHNlZW1zIGNvbXBsZXRlbHkgc2FmZS4gTG9va3MgbGlrZSBhIHNvbGlkLCBjbGVhbiBwYXRjaC4gR29vZCBqb2Igb24ga2VlcGluZyB0aGluZ3MgRFJZLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RyYWluX29ial9zdG9ja19zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWVtY29udHJvbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wuYz0yMDY2PXN0YXRpYyBERUZJTkVfTVVURVgocGVyY3B1X2NoYXJnZV9tdXRleCk7XG5tbS9tZW1jb250cm9sLmMtMjA2Ny1cbm1tL21lbWNvbnRyb2wuYzoyMDY4OnN0YXRpYyB2b2lkIGRyYWluX29ial9zdG9ja19zbG90KHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaywgaW50IGkpO1xubW0vbWVtY29udHJvbC5jLTIwNjktc3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrKHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jayk7XG4tLVxubW0vbWVtY29udHJvbC5jPTMyOTY9c3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3N0YXRzKHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaylcbi0tXG5tbS9tZW1jb250cm9sLmMtMzMyMC1cbm1tL21lbWNvbnRyb2wuYzozMzIxOnN0YXRpYyB2b2lkIGRyYWluX29ial9zdG9ja19zbG90KHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaywgaW50IGkpXG5tbS9tZW1jb250cm9sLmMtMzMyMi17XG4tLVxubW0vbWVtY29udHJvbC5jPTMzNjQ9c3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrKHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaylcbi0tXG5tbS9tZW1jb250cm9sLmMtMzM2OC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5SX09CSl9TVE9DSzsgJiM0MzsmIzQzO2kpXG5tbS9tZW1jb250cm9sLmM6MzM2OTpcdFx0ZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RvY2ssIGkpO1xubW0vbWVtY29udHJvbC5jLTMzNzAtfVxuLS1cbm1tL21lbWNvbnRyb2wuYz0zMzk2PXN0YXRpYyB2b2lkIF9fcmVmaWxsX29ial9zdG9jayhzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2csXG4tLVxubW0vbWVtY29udHJvbC5jLTM0MzEtXHRcdFx0XHRzdG9jay1cdTAwM2VkcmFpbl9pZHggPSAwO1xubW0vbWVtY29udHJvbC5jOjM0MzI6XHRcdFx0ZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RvY2ssIHNsb3QpO1xubW0vbWVtY29udHJvbC5jLTM0MzMtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTc3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgIEZ1bmN0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIGBkcmFpbl9vYmpfc3RvY2tfc2xvdGAuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgdHlwZSBvZiBgbnJfcGFnZXNgIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIGFuIGludGVnZXIsIGxpa2VseSByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBwYWdlcyB0byBkcmFpbiBmcm9tIGEgc3BlY2lmaWMgc3RvY2sgc2xvdC4gQnV0LCBJIGRvbiYjMzk7dCB3YW50IHRvIG1ha2UgYXNzdW1wdGlvbnMuIFF1aWNrbHkgdmVyaWZ5aW5nIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBgbnJfcGFnZXNgIHZhcmlhYmxlIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiYjMzk7cyBsb2dpYyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQuIEl0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIHBhcmFtZXRlciBmb3Igb3B0aW1pemF0aW9uIG9yIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQgY29tcG9uZW50cy4gQmV0dGVyIHRvIGJlIGNlcnRhaW4sIGFuZCBub3QgcmVseSBvbiBhc3N1bXB0aW9ucy4gS25vd2luZyB0aGUgZXhhY3QgdHlwZSBpbmZvcm1zIGFueSBwb3RlbnRpYWwgYW5hbHlzaXMgb2YgaXRzIGNvbnN0cmFpbnRzLCB1c2VzLCBhbmQgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLCBzbyBsZXQgbWUgcXVpY2tseSBqdW1wIGludG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9tZW1jb250cm9sLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzIxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMzMjE6XHRzdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2tfc2xvdChzdHJ1Y3Qgb2JqX3N0b2NrX3BjcCAqc3RvY2ssIGludCBpKVxuMzMyMjpcdHtcbjMzMjM6XHRcdHN0cnVjdCBvYmpfY2dyb3VwICpvbGQgPSBSRUFEX09OQ0Uoc3RvY2stXHUwMDNlY2FjaGVkW2ldKTtcbjMzMjQ6XHRcbjMzMjU6XHRcdGlmICghb2xkKVxuMzMyNjpcdFx0XHRyZXR1cm47XG4zMzI3Olx0XG4zMzI4Olx0XHRpZiAoc3RvY2stXHUwMDNlbnJfYnl0ZXNbaV0pIHtcbjMzMjk6XHRcdFx0dW5zaWduZWQgaW50IG5yX3BhZ2VzID0gc3RvY2stXHUwMDNlbnJfYnl0ZXNbaV0gXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4zMzMwOlx0XHRcdHVuc2lnbmVkIGludCBucl9ieXRlcyA9IHN0b2NrLVx1MDAzZW5yX2J5dGVzW2ldIFx1MDAyNiAoUEFHRV9TSVpFIC0gMSk7XG4zMzMxOlx0XG4zMzMyOlx0XHRcdGlmIChucl9wYWdlcykge1xuMzMzMzpcdFx0XHRcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcbjMzMzQ6XHRcbjMzMzU6XHRcdFx0XHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTtcbjMzMzY6XHRcbjMzMzc6XHRcdFx0XHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XG4zMzM4Olx0XG4zMzM5Olx0XHRcdFx0Y3NzX3B1dChcdTAwMjZtZW1jZy1cdTAwM2Vjc3MpO1xuMzM0MDpcdFx0XHR9XG4zMzQxOlx0XG4zMzQyOlx0XHRcdC8qXG4zMzQzOlx0XHRcdCAqIFRoZSBsZWZ0b3ZlciBpcyBmbHVzaGVkIHRvIHRoZSBjZW50cmFsaXplZCBwZXItbWVtY2cgdmFsdWUuXG4zMzQ0Olx0XHRcdCAqIE9uIHRoZSBuZXh0IGF0dGVtcHQgdG8gcmVmaWxsIG9iaiBzdG9jayBpdCB3aWxsIGJlIG1vdmVkXG4zMzQ1Olx0XHRcdCAqIHRvIGEgcGVyLWNwdSBzdG9jayAocHJvYmFibHksIG9uIGFuIG90aGVyIENQVSksIHNlZVxuMzM0NjpcdFx0XHQgKiByZWZpbGxfb2JqX3N0b2NrKCkuXG4zMzQ3Olx0XHRcdCAqXG4zMzQ4Olx0XHRcdCAqIEhvdyBvZnRlbiBpdCYjMzk7cyBmbHVzaGVkIGlzIGEgdHJhZGUtb2ZmIGJldHdlZW4gdGhlIG1lbW9yeVxuMzM0OTpcdFx0XHQgKiBsaW1pdCBlbmZvcmNlbWVudCBhY2N1cmFjeSBhbmQgcG90ZW50aWFsIENQVSBjb250ZW50aW9uLFxuMzM1MDpcdFx0XHQgKiBzbyBpdCBtaWdodCBiZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUuXG4zMzUxOlx0XHRcdCAqL1xuMzM1MjpcdFx0XHRhdG9taWNfYWRkKG5yX2J5dGVzLCBcdTAwMjZvbGQtXHUwMDNlbnJfY2hhcmdlZF9ieXRlcyk7XG4zMzUzOlx0XHRcdHN0b2NrLVx1MDAzZW5yX2J5dGVzW2ldID0gMDtcbjMzNTQ6XHRcdH1cbjMzNTU6XHRcbjMzNTY6XHRcdC8qIEZsdXNoIHZtc3RhdCBkYXRhIHdoZW4gaXRzIG93bmluZyBzbG90IGlzIGJlaW5nIGRyYWluZWQuICovXG4zMzU3Olx0XHRpZiAoc3RvY2stXHUwMDNlaW5kZXggPT0gaSlcbjMzNTg6XHRcdFx0ZHJhaW5fb2JqX3N0b2NrX3N0YXRzKHN0b2NrKTtcbjMzNTk6XHRcbjMzNjA6XHRcdFdSSVRFX09OQ0Uoc3RvY2stXHUwMDNlY2FjaGVkW2ldLCBOVUxMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQwCgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogNjE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIEFuYWx5c2lzOiBgbW0vbWVtY29udHJvbC5jYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgaXQmIzM5O3MgYWxsIGFib3V0IHRpZHlpbmcgdXAgYG1tL21lbWNvbnRyb2wuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWJvdXQgZXh0cmFjdGluZyB0aGUga2VybmVsIG1lbW9yeSAoa21lbSkgdW5jaGFyZ2luZyBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiwgYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVsaW1pbmF0ZSBjb2RlIGR1cGxpY2F0aW9uIGluIGBvYmpfY2dyb3VwX3JlbGVhc2VgIGFuZCBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgLCB3aGljaCBJIGNhbiBhcHByZWNpYXRlLiBSZWZhY3RvcmluZyBsaWtlIHRoaXMgaXMgaW1wb3J0YW50IGZvciBtYWludGFpbmFiaWxpdHkgYW5kIHJlYWRhYmlsaXR5LgoKQnV0IHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzICpjaGFuZ2UqIGFueXRoaW5nIGZ1bmN0aW9uYWxseT8gV2UgYWxsIGtub3cgdGhhdCByZWZhY3RvcmluZyBjYW4gc29tZXRpbWVzIGludHJvZHVjZSBzdWJ0bGUgYnVncywgZXZlbiBpZiB0aGUgKmludGVudGlvbiogaXMgcHVyZWx5IHN0cnVjdHVyYWwuIFNvLCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rLgoKSSYjMzk7bSBjaGVja2luZyB0aGUgb3JpZ2luYWwgYW5kIHRoZSBuZXcgY29kZSBzaWRlLWJ5LXNpZGUuIEluIGBvYmpfY2dyb3VwX3JlbGVhc2VgLCBJIHNlZSB0aGlzOgoKKiAgICoqT3JpZ2luYWw6KiogR2V0IHRoZSBtZW1vcnkgY2dyb3VwLCByZWR1Y2UgdGhlIEtNRU0gdXNhZ2UsIGFjY291bnQgZm9yIGl0LCBhbmQgdGhlbiB1bmNoYXJnZSBpZiBpdCYjMzk7cyBub3QgdGhlIHJvb3QgY2dyb3VwLCBhbmQgcmVsZWFzZSB0aGUgbWVtb3J5IGNncm91cC4KKiAgICoqTmV3OioqIEdldCB0aGUgbWVtb3J5IGNncm91cCwgY2FsbCB0aGUgbmV3IGBtZW1jZ191bmNoYXJnZV9rbWVtYCBoZWxwZXIgZnVuY3Rpb24sIGFuZCByZWxlYXNlIHRoZSBtZW1vcnkgY2dyb3VwLgoKVGhlbiwgSSYjMzk7bSBjaGVja2luZyB0aGUgYG1lbWNnX3VuY2hhcmdlX2ttZW1gIGhlbHBlciBmdW5jdGlvbiBhbmQgaXQmIzM5O3MgY2xlYXIgaXQgcGVyZm9ybXMgdGhlICpleGFjdCogc2FtZSBvcGVyYXRpb25zOiBkZWNyZWFzZSB0aGUgS01FTSB1c2FnZSwgYWNjb3VudCBmb3IgaXQsIGFuZCB0aGVuIHVuY2hhcmdlIGlmIGl0JiMzOTtzIG5vdCB0aGUgcm9vdCBjZ3JvdXAuIFRoZSBsb2dpYyB3aXRoaW4gdGhlIGhlbHBlciBmdW5jdGlvbiBpcyBiaXQtZm9yLWJpdCB0aGUgc2FtZS4KCkkmIzM5O20gZG9pbmcgdGhlIHNhbWUgdGhpbmcgZm9yIGBkcmFpbl9vYmpfc3RvY2tfc2xvdGAuIEkgY2hlY2tlZCB0aGUgb3JpZ2luYWwgY29kZSBhbmQgdGhlIHVwZGF0ZWQgY29kZSwgYW5kIGl0JiMzOTtzIHRoZSBleGFjdCBzYW1lIGxvZ2ljLgoKU28sIGZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UgYXQgYWxsLiBJdCYjMzk7cyBqdXN0IGEgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgY29kZSBtb3JlIG1hbmFnZWFibGUuIE5vIGFsdGVyYXRpb24gdG8gdGhlIGNvcmUgbG9naWMsIHdoaWNoIGlzIGdvb2QuCgpTbywgeWVhaCwgaXQmIzM5O3MgYSBwdXJlIHJlZmFjdG9yaW5nLiBUaGlzIG1ha2VzIGl0IGEgbm8tZ28gZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBleHRyYWN0cyBkdXBsaWNhdGVkIGttZW0gdW5jaGFyZ2UgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgZXh0cmFjdHMgZHVwbGljYXRlZCBrbWVtIHVuY2hhcmdlIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBtZW1jZ191bmNoYXJnZV9rbWVtYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjoyODo1Ny44NTA2MjM1NTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMzMTA0NDM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgZXh0cmFjdHMgZHVwbGljYXRlZCBrbWVtIHVuY2hhcmdlIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBtZW1jZ191bmNoYXJnZV9rbWVtYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6Mjg6NTcuODUwNjI4NTIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODg0OTM4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiODNkNGIwNGQ1OWU1MzMxNTY3NDVkMzMxNWViOGYzMjUxNTlmNDYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDEyOjI4OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xcbmluZGV4IDIyZjU1YWViOTRmM2JjLi44NmFjZmU1NWEyMDFlYyAxMDA2NDRcXG4tLS0gYS9tbS9tZW1jb250cm9sLmNcXG4rKysgYi9tbS9tZW1jb250cm9sLmNcXG5AQCAtMTM3LDYgKzEzNywxNCBAQCBib29sIG1lbV9jZ3JvdXBfa21lbV9kaXNhYmxlZCh2b2lkKVxcbiBcXG4gc3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Uoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpO1xcbiBcXG4rc3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Vfa21lbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGludCBucl9wYWdlcylcXG4re1xcbitcXHRtb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7XFxuK1xcdG1lbWNnMV9hY2NvdW50X2ttZW0obWVtY2csIC1ucl9wYWdlcyk7XFxuK1xcdGlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcXG4rXFx0XFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXFxuIHtcXG4gXFx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG9ial9jZ3JvdXAsIHJlZmNudCk7XFxuQEAgLTE3MiwxMCArMTgwLDcgQEAgc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXFxuIFxcdFxcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcXG4gXFxuIFxcdFxcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9vYmpjZyhvYmpjZyk7XFxuLVxcdFxcdG1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfS01FTSwgLW5yX3BhZ2VzKTtcXG4tXFx0XFx0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcXG4tXFx0XFx0aWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKVxcbi1cXHRcXHRcXHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xcbitcXHRcXHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XFxuIFxcdFxcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcXG4gXFx0fVxcbiBcXG5AQCAtMzMyOSwxMCArMzMzNCw3IEBAIHN0YXRpYyB2b2lkIGRyYWluX29ial9zdG9ja19zbG90KHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaywgaW50IGkpXFxuIFxcbiBcXHRcXHRcXHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTtcXG4gXFxuLVxcdFxcdFxcdG1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfS01FTSwgLW5yX3BhZ2VzKTtcXG4tXFx0XFx0XFx0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcXG4tXFx0XFx0XFx0aWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKVxcbi1cXHRcXHRcXHRcXHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xcbitcXHRcXHRcXHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XFxuIFxcbiBcXHRcXHRcXHRjc3NfcHV0KFxcdTAwMjZtZW1jZy1cXHUwMDNlY3NzKTtcXG4gXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjoyODo1OC4yMzk3MzI3NDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTQxOTI2ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBleHRyYWN0cyBkdXBsaWNhdGVkIGttZW0gdW5jaGFyZ2UgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI4M2Q0YjA0ZDU5ZTUzMzE1Njc0NWQzMzE1ZWI4ZjMyNTE1OWY0NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMjoyODo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xuaW5kZXggMjJmNTVhZWI5NGYzYmMuLjg2YWNmZTU1YTIwMWVjIDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC5jXG4rKysgYi9tbS9tZW1jb250cm9sLmNcbkBAIC0xMzcsNiArMTM3LDE0IEBAIGJvb2wgbWVtX2Nncm91cF9rbWVtX2Rpc2FibGVkKHZvaWQpXG4gXG4gc3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Uoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpO1xuIFxuK3N0YXRpYyB2b2lkIG1lbWNnX3VuY2hhcmdlX2ttZW0oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpXG4re1xuK1x0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpO1xuK1x0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcbitcdGlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbitcdFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXG4ge1xuIFx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG9ial9jZ3JvdXAsIHJlZmNudCk7XG5AQCAtMTcyLDEwICsxODAsNyBAQCBzdGF0aWMgdm9pZCBvYmpfY2dyb3VwX3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZilcbiBcdFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnO1xuIFxuIFx0XHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2JqY2cpO1xuLVx0XHRtb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7XG4tXHRcdG1lbWNnMV9hY2NvdW50X2ttZW0obWVtY2csIC1ucl9wYWdlcyk7XG4tXHRcdGlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbi1cdFx0XHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xuK1x0XHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XG4gXHRcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcbiBcdH1cbiBcbkBAIC0zMzI5LDEwICszMzM0LDcgQEAgc3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrLCBpbnQgaSlcbiBcbiBcdFx0XHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTtcbiBcbi1cdFx0XHRtb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7XG4tXHRcdFx0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcbi1cdFx0XHRpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpXG4tXHRcdFx0XHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xuK1x0XHRcdG1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTtcbiBcbiBcdFx0XHRjc3NfcHV0KFx1MDAyNm1lbWNnLVx1MDAzZWNzcyk7XG4gXHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjI4OjU4LjIzOTczNDE3MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTA3Mzg5NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmFjdG9yaW5nIGBtbS9tZW1jb250cm9sLmNgIGZvciBDbGFyaXR5IGFuZCBEUlluZXNzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBpbiBgbW0vbWVtY29udHJvbC5jYC4gRXNzZW50aWFsbHksIGl0J3MgYWJvdXQgdGlkeWluZyB1cCBhbmQgcmVkdWNpbmcgZHVwbGljYXRpb24uIEkgc2VlIHRoZSBtYWluIGdvYWwgaXMgdG8gaW50cm9kdWNlIGEgbmV3IGhlbHBlciBmdW5jdGlvbiwgYG1lbWNnX3VuY2hhcmdlX2ttZW1gLCBhbmQgY29uc29saWRhdGUgdHdvIGlkZW50aWNhbCBjb2RlIGJsb2NrcyBpbnRvIGNhbGxzIHRvIHRoaXMgbmV3IGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgYmxvY2tzOlxuXG5gYGBjXG5cdFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpO1xuXHRcdG1lbWNnMV9hY2NvdW50X2ttZW0obWVtY2csIC1ucl9wYWdlcyk7XG5cdFx0aWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKVxuXHRcdFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcbmBgYFxuXG4uLi5hcmUgbm93IHJlcGxhY2VkIGJ5IGEgc2luZ2xlIGNhbGwgdG86XG5cbmBgYGNcblx0XHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XG5gYGBcblxuV2hlcmUgYG1lbWNnX3VuY2hhcmdlX2ttZW1gIGRvZXMgdGhlIGZvbGxvd2luZzpcblxuYGBgY1xuc3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Vfa21lbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGludCBucl9wYWdlcylcbntcblx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpO1xuXHRtZW1jZzFfYWNjb3VudF9rbWVtKG1lbWNnLCAtbnJfcGFnZXMpO1xuXHRpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpXG5cdFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcbn1cbmBgYFxuXG5NeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgcHVyZSByZWZhY3Rvciwgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBpbXBsaWVkLCBidXQgSSBhbHdheXMgd2FudCB0byBtYWtlIHN1cmUgSSBhbSBjb3JyZWN0LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIHR5cGVzIGJlaW5nIHBhc3NlZCBpbiBmb3IgYG5yX3BhZ2VzYCwgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGNoYW5nZXMuIENoZWNraW5nIHRoZSBvcmlnaW5hbCBjb2RlIGJsb2NrcywgaXQgbG9va3MgbGlrZSBgbnJfcGFnZXNgIGlzIGluZGVlZCBhbiBgdW5zaWduZWQgaW50YCBpbiBib3RoIHBsYWNlcyAoYG9ial9jZ3JvdXBfcmVsZWFzZWAsIGBkcmFpbl9vYmpfc3RvY2tfc2xvdGApLiBHaXZlbiB0aGUgbmV3IGhlbHBlciBhbHNvIHRha2VzIGFuIGB1bnNpZ25lZCBpbnRgIGZvciBgbnJfcGFnZXNgLCBhbmQgdGhlIGxvZ2ljIGlzIGlkZW50aWNhbCwgaXQgc2VlbXMgY29tcGxldGVseSBzYWZlLiBMb29rcyBsaWtlIGEgc29saWQsIGNsZWFuIHBhdGNoLiBHb29kIGpvYiBvbiBrZWVwaW5nIHRoaW5ncyBEUlkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNzcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjoyOTowOS43NDcxMjUyMTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQyMDE5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJhaW5fb2JqX3N0b2NrX3Nsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWVtY29udHJvbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbWNvbnRyb2wuYz0yMDY2PXN0YXRpYyBERUZJTkVfTVVURVgocGVyY3B1X2NoYXJnZV9tdXRleCk7XFxubW0vbWVtY29udHJvbC5jLTIwNjctXFxubW0vbWVtY29udHJvbC5jOjIwNjg6c3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrLCBpbnQgaSk7XFxubW0vbWVtY29udHJvbC5jLTIwNjktc3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrKHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jayk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MzI5Nj1zdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2tfc3RhdHMoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTMzMjAtXFxubW0vbWVtY29udHJvbC5jOjMzMjE6c3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrLCBpbnQgaSlcXG5tbS9tZW1jb250cm9sLmMtMzMyMi17XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MzM2ND1zdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2soc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTMzNjgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE5SX09CSl9TVE9DSzsgKytpKVxcbm1tL21lbWNvbnRyb2wuYzozMzY5OlxcdFxcdGRyYWluX29ial9zdG9ja19zbG90KHN0b2NrLCBpKTtcXG5tbS9tZW1jb250cm9sLmMtMzM3MC19XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MzM5Nj1zdGF0aWMgdm9pZCBfX3JlZmlsbF9vYmpfc3RvY2soc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTM0MzEtXFx0XFx0XFx0XFx0c3RvY2stXFx1MDAzZWRyYWluX2lkeCA9IDA7XFxubW0vbWVtY29udHJvbC5jOjM0MzI6XFx0XFx0XFx0ZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RvY2ssIHNsb3QpO1xcbm1tL21lbWNvbnRyb2wuYy0zNDMzLVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6Mjk6MDkuODQxMzMxMTY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ3Njk4NjI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgIEZ1bmN0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gYGRyYWluX29ial9zdG9ja19zbG90YC4gSSB3YW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSB0eXBlIG9mIGBucl9wYWdlc2Agd2l0aGluIHRoYXQgZnVuY3Rpb24uIEknbSBhc3N1bWluZyBpdCdzIGFuIGludGVnZXIsIGxpa2VseSByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBwYWdlcyB0byBkcmFpbiBmcm9tIGEgc3BlY2lmaWMgc3RvY2sgc2xvdC4gQnV0LCBJIGRvbid0IHdhbnQgdG8gbWFrZSBhc3N1bXB0aW9ucy4gUXVpY2tseSB2ZXJpZnlpbmcgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBucl9wYWdlc2AgdmFyaWFibGUgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3MgbG9naWMgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50LiBJdCdzIGxpa2VseSBhIGNyaXRpY2FsIHBhcmFtZXRlciBmb3Igb3B0aW1pemF0aW9uIG9yIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwncyBtZW1vcnkgbWFuYWdlbWVudCBjb21wb25lbnRzLiBCZXR0ZXIgdG8gYmUgY2VydGFpbiwgYW5kIG5vdCByZWx5IG9uIGFzc3VtcHRpb25zLiBLbm93aW5nIHRoZSBleGFjdCB0eXBlIGluZm9ybXMgYW55IHBvdGVudGlhbCBhbmFseXNpcyBvZiBpdHMgY29uc3RyYWludHMsIHVzZXMsIGFuZCBpbXBhY3Qgb24gcGVyZm9ybWFuY2UsIHNvIGxldCBtZSBxdWlja2x5IGp1bXAgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjI5OjE2LjMxODMxOTE5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9tZW1jb250cm9sLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzMyMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzMyMTpcXHRzdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2tfc2xvdChzdHJ1Y3Qgb2JqX3N0b2NrX3BjcCAqc3RvY2ssIGludCBpKVxcbjMzMjI6XFx0e1xcbjMzMjM6XFx0XFx0c3RydWN0IG9ial9jZ3JvdXAgKm9sZCA9IFJFQURfT05DRShzdG9jay1cXHUwMDNlY2FjaGVkW2ldKTtcXG4zMzI0OlxcdFxcbjMzMjU6XFx0XFx0aWYgKCFvbGQpXFxuMzMyNjpcXHRcXHRcXHRyZXR1cm47XFxuMzMyNzpcXHRcXG4zMzI4OlxcdFxcdGlmIChzdG9jay1cXHUwMDNlbnJfYnl0ZXNbaV0pIHtcXG4zMzI5OlxcdFxcdFxcdHVuc2lnbmVkIGludCBucl9wYWdlcyA9IHN0b2NrLVxcdTAwM2Vucl9ieXRlc1tpXSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbjMzMzA6XFx0XFx0XFx0dW5zaWduZWQgaW50IG5yX2J5dGVzID0gc3RvY2stXFx1MDAzZW5yX2J5dGVzW2ldIFxcdTAwMjYgKFBBR0VfU0laRSAtIDEpO1xcbjMzMzE6XFx0XFxuMzMzMjpcXHRcXHRcXHRpZiAobnJfcGFnZXMpIHtcXG4zMzMzOlxcdFxcdFxcdFxcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcXG4zMzM0OlxcdFxcbjMzMzU6XFx0XFx0XFx0XFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX29iamNnKG9sZCk7XFxuMzMzNjpcXHRcXG4zMzM3OlxcdFxcdFxcdFxcdG1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTtcXG4zMzM4OlxcdFxcbjMzMzk6XFx0XFx0XFx0XFx0Y3NzX3B1dChcXHUwMDI2bWVtY2ctXFx1MDAzZWNzcyk7XFxuMzM0MDpcXHRcXHRcXHR9XFxuMzM0MTpcXHRcXG4zMzQyOlxcdFxcdFxcdC8qXFxuMzM0MzpcXHRcXHRcXHQgKiBUaGUgbGVmdG92ZXIgaXMgZmx1c2hlZCB0byB0aGUgY2VudHJhbGl6ZWQgcGVyLW1lbWNnIHZhbHVlLlxcbjMzNDQ6XFx0XFx0XFx0ICogT24gdGhlIG5leHQgYXR0ZW1wdCB0byByZWZpbGwgb2JqIHN0b2NrIGl0IHdpbGwgYmUgbW92ZWRcXG4zMzQ1OlxcdFxcdFxcdCAqIHRvIGEgcGVyLWNwdSBzdG9jayAocHJvYmFibHksIG9uIGFuIG90aGVyIENQVSksIHNlZVxcbjMzNDY6XFx0XFx0XFx0ICogcmVmaWxsX29ial9zdG9jaygpLlxcbjMzNDc6XFx0XFx0XFx0ICpcXG4zMzQ4OlxcdFxcdFxcdCAqIEhvdyBvZnRlbiBpdCdzIGZsdXNoZWQgaXMgYSB0cmFkZS1vZmYgYmV0d2VlbiB0aGUgbWVtb3J5XFxuMzM0OTpcXHRcXHRcXHQgKiBsaW1pdCBlbmZvcmNlbWVudCBhY2N1cmFjeSBhbmQgcG90ZW50aWFsIENQVSBjb250ZW50aW9uLFxcbjMzNTA6XFx0XFx0XFx0ICogc28gaXQgbWlnaHQgYmUgY2hhbmdlZCBpbiB0aGUgZnV0dXJlLlxcbjMzNTE6XFx0XFx0XFx0ICovXFxuMzM1MjpcXHRcXHRcXHRhdG9taWNfYWRkKG5yX2J5dGVzLCBcXHUwMDI2b2xkLVxcdTAwM2Vucl9jaGFyZ2VkX2J5dGVzKTtcXG4zMzUzOlxcdFxcdFxcdHN0b2NrLVxcdTAwM2Vucl9ieXRlc1tpXSA9IDA7XFxuMzM1NDpcXHRcXHR9XFxuMzM1NTpcXHRcXG4zMzU2OlxcdFxcdC8qIEZsdXNoIHZtc3RhdCBkYXRhIHdoZW4gaXRzIG93bmluZyBzbG90IGlzIGJlaW5nIGRyYWluZWQuICovXFxuMzM1NzpcXHRcXHRpZiAoc3RvY2stXFx1MDAzZWluZGV4ID09IGkpXFxuMzM1ODpcXHRcXHRcXHRkcmFpbl9vYmpfc3RvY2tfc3RhdHMoc3RvY2spO1xcbjMzNTk6XFx0XFxuMzM2MDpcXHRcXHRXUklURV9PTkNFKHN0b2NrLVxcdTAwM2VjYWNoZWRbaV0sIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjoyOToxNi4zMTg1MjYzMDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjg2MzEwNjU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyBBbmFseXNpczogYG1tL21lbWNvbnRyb2wuY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhhdCBpdCdzIGFsbCBhYm91dCB0aWR5aW5nIHVwIGBtbS9tZW1jb250cm9sLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWJvdXQgZXh0cmFjdGluZyB0aGUga2VybmVsIG1lbW9yeSAoa21lbSkgdW5jaGFyZ2luZyBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiwgYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVsaW1pbmF0ZSBjb2RlIGR1cGxpY2F0aW9uIGluIGBvYmpfY2dyb3VwX3JlbGVhc2VgIGFuZCBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgLCB3aGljaCBJIGNhbiBhcHByZWNpYXRlLiBSZWZhY3RvcmluZyBsaWtlIHRoaXMgaXMgaW1wb3J0YW50IGZvciBtYWludGFpbmFiaWxpdHkgYW5kIHJlYWRhYmlsaXR5LlxuXG5CdXQgdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgKmNoYW5nZSogYW55dGhpbmcgZnVuY3Rpb25hbGx5PyBXZSBhbGwga25vdyB0aGF0IHJlZmFjdG9yaW5nIGNhbiBzb21ldGltZXMgaW50cm9kdWNlIHN1YnRsZSBidWdzLCBldmVuIGlmIHRoZSAqaW50ZW50aW9uKiBpcyBwdXJlbHkgc3RydWN0dXJhbC4gU28sIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vay5cblxuSSdtIGNoZWNraW5nIHRoZSBvcmlnaW5hbCBhbmQgdGhlIG5ldyBjb2RlIHNpZGUtYnktc2lkZS4gSW4gYG9ial9jZ3JvdXBfcmVsZWFzZWAsIEkgc2VlIHRoaXM6XG5cbiogICAqKk9yaWdpbmFsOioqIEdldCB0aGUgbWVtb3J5IGNncm91cCwgcmVkdWNlIHRoZSBLTUVNIHVzYWdlLCBhY2NvdW50IGZvciBpdCwgYW5kIHRoZW4gdW5jaGFyZ2UgaWYgaXQncyBub3QgdGhlIHJvb3QgY2dyb3VwLCBhbmQgcmVsZWFzZSB0aGUgbWVtb3J5IGNncm91cC5cbiogICAqKk5ldzoqKiBHZXQgdGhlIG1lbW9yeSBjZ3JvdXAsIGNhbGwgdGhlIG5ldyBgbWVtY2dfdW5jaGFyZ2Vfa21lbWAgaGVscGVyIGZ1bmN0aW9uLCBhbmQgcmVsZWFzZSB0aGUgbWVtb3J5IGNncm91cC5cblxuVGhlbiwgSSdtIGNoZWNraW5nIHRoZSBgbWVtY2dfdW5jaGFyZ2Vfa21lbWAgaGVscGVyIGZ1bmN0aW9uIGFuZCBpdCdzIGNsZWFyIGl0IHBlcmZvcm1zIHRoZSAqZXhhY3QqIHNhbWUgb3BlcmF0aW9uczogZGVjcmVhc2UgdGhlIEtNRU0gdXNhZ2UsIGFjY291bnQgZm9yIGl0LCBhbmQgdGhlbiB1bmNoYXJnZSBpZiBpdCdzIG5vdCB0aGUgcm9vdCBjZ3JvdXAuIFRoZSBsb2dpYyB3aXRoaW4gdGhlIGhlbHBlciBmdW5jdGlvbiBpcyBiaXQtZm9yLWJpdCB0aGUgc2FtZS5cblxuSSdtIGRvaW5nIHRoZSBzYW1lIHRoaW5nIGZvciBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgLiBJIGNoZWNrZWQgdGhlIG9yaWdpbmFsIGNvZGUgYW5kIHRoZSB1cGRhdGVkIGNvZGUsIGFuZCBpdCdzIHRoZSBleGFjdCBzYW1lIGxvZ2ljLlxuXG5TbywgZnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIGF0IGFsbC4gSXQncyBqdXN0IGEgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgY29kZSBtb3JlIG1hbmFnZWFibGUuIE5vIGFsdGVyYXRpb24gdG8gdGhlIGNvcmUgbG9naWMsIHdoaWNoIGlzIGdvb2QuXG5cblNvLCB5ZWFoLCBpdCdzIGEgcHVyZSByZWZhY3RvcmluZy4gVGhpcyBtYWtlcyBpdCBhIG5vLWdvIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQwLCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6Mjk6MzkuMTgxNjM0NTA5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBleHRyYWN0cyBkdXBsaWNhdGVkIGttZW0gdW5jaGFyZ2UgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBleHRyYWN0cyBkdXBsaWNhdGVkIGttZW0gdW5jaGFyZ2UgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowwsgs8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 11:44:39 +0000 UTC FinishedAt: 2026-07-13 12:29:40 +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+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyB0aGF0IGV4dHJhY3RzIGR1cGxpY2F0ZWQga21lbSB1bmNoYXJnZSBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiBgbWVtY2dfdW5jaGFyZ2Vfa21lbWAuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjgzZDRiMDRkNTllNTMzMTU2NzQ1ZDMzMTVlYjhmMzI1MTU5ZjQ2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDEyOjI4OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xuaW5kZXggMjJmNTVhZWI5NGYzYmMuLjg2YWNmZTU1YTIwMWVjIDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1jb250cm9sLmNcbkBAIC0xMzcsNiAmIzQzOzEzNywxNCBAQCBib29sIG1lbV9jZ3JvdXBfa21lbV9kaXNhYmxlZCh2b2lkKVxuIFxuIHN0YXRpYyB2b2lkIG1lbWNnX3VuY2hhcmdlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTtcbiBcbiYjNDM7c3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Vfa21lbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGludCBucl9wYWdlcylcbiYjNDM7e1xuJiM0MztcdG1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfS01FTSwgLW5yX3BhZ2VzKTtcbiYjNDM7XHRtZW1jZzFfYWNjb3VudF9rbWVtKG1lbWNnLCAtbnJfcGFnZXMpO1xuJiM0MztcdGlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbiYjNDM7XHRcdG1lbWNnX3VuY2hhcmdlKG1lbWNnLCBucl9wYWdlcyk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXG4ge1xuIFx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG9ial9jZ3JvdXAsIHJlZmNudCk7XG5AQCAtMTcyLDEwICYjNDM7MTgwLDcgQEAgc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXG4gXHRcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcbiBcbiBcdFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX29iamNnKG9iamNnKTtcbi1cdFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpO1xuLVx0XHRtZW1jZzFfYWNjb3VudF9rbWVtKG1lbWNnLCAtbnJfcGFnZXMpO1xuLVx0XHRpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpXG4tXHRcdFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcbiYjNDM7XHRcdG1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTtcbiBcdFx0bWVtX2Nncm91cF9wdXQobWVtY2cpO1xuIFx0fVxuIFxuQEAgLTMzMjksMTAgJiM0MzszMzM0LDcgQEAgc3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrLCBpbnQgaSlcbiBcbiBcdFx0XHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTtcbiBcbi1cdFx0XHRtb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7XG4tXHRcdFx0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcbi1cdFx0XHRpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpXG4tXHRcdFx0XHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xuJiM0MztcdFx0XHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XG4gXG4gXHRcdFx0Y3NzX3B1dChcdTAwMjZtZW1jZy1cdTAwM2Vjc3MpO1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgZXh0cmFjdHMgZHVwbGljYXRlZCBrbWVtIHVuY2hhcmdlIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBtZW1jZ191bmNoYXJnZV9rbWVtYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI4M2Q0YjA0ZDU5ZTUzMzE1Njc0NWQzMzE1ZWI4ZjMyNTE1OWY0NjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAxMjoyODo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuYwppbmRleCAyMmY1NWFlYjk0ZjNiYy4uODZhY2ZlNTVhMjAxZWMgMTAwNjQ0Ci0tLSBhL21tL21lbWNvbnRyb2wuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1jb250cm9sLmMKQEAgLTEzNyw2ICYjNDM7MTM3LDE0IEBAIGJvb2wgbWVtX2Nncm91cF9rbWVtX2Rpc2FibGVkKHZvaWQpCiAKIHN0YXRpYyB2b2lkIG1lbWNnX3VuY2hhcmdlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTsKIAomIzQzO3N0YXRpYyB2b2lkIG1lbWNnX3VuY2hhcmdlX2ttZW0oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpCiYjNDM7ewomIzQzOwltb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7CiYjNDM7CW1lbWNnMV9hY2NvdW50X2ttZW0obWVtY2csIC1ucl9wYWdlcyk7CiYjNDM7CWlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSkKJiM0MzsJCW1lbWNnX3VuY2hhcmdlKG1lbWNnLCBucl9wYWdlcyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpCiB7CiAJc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG9ial9jZ3JvdXAsIHJlZmNudCk7CkBAIC0xNzIsMTAgJiM0MzsxODAsNyBAQCBzdGF0aWMgdm9pZCBvYmpfY2dyb3VwX3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikKIAkJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwogCiAJCW1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9vYmpjZyhvYmpjZyk7Ci0JCW1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfS01FTSwgLW5yX3BhZ2VzKTsKLQkJbWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTsKLQkJaWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKQotCQkJbWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTsKJiM0MzsJCW1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTsKIAkJbWVtX2Nncm91cF9wdXQobWVtY2cpOwogCX0KIApAQCAtMzMyOSwxMCAmIzQzOzMzMzQsNyBAQCBzdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2tfc2xvdChzdHJ1Y3Qgb2JqX3N0b2NrX3BjcCAqc3RvY2ssIGludCBpKQogCiAJCQltZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTsKIAotCQkJbW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpOwotCQkJbWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTsKLQkJCWlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSkKLQkJCQltZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpOwomIzQzOwkJCW1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTsKIAogCQkJY3NzX3B1dCgmYW1wO21lbWNnLSZndDtjc3MpOwogCQl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgYG1tL21lbWNvbnRyb2wuY2AgZm9yIENsYXJpdHkgYW5kIERSWW5lc3MqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBpbiBgbW0vbWVtY29udHJvbC5jYC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGFib3V0IHRpZHlpbmcgdXAgYW5kIHJlZHVjaW5nIGR1cGxpY2F0aW9uLiBJIHNlZSB0aGUgbWFpbiBnb2FsIGlzIHRvIGludHJvZHVjZSBhIG5ldyBoZWxwZXIgZnVuY3Rpb24sIGBtZW1jZ191bmNoYXJnZV9rbWVtYCwgYW5kIGNvbnNvbGlkYXRlIHR3byBpZGVudGljYWwgY29kZSBibG9ja3MgaW50byBjYWxscyB0byB0aGlzIG5ldyBmdW5jdGlvbi4gVGhlIG9yaWdpbmFsIGJsb2NrczoKCmBgYGMKCQltb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7CgkJbWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTsKCQlpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpCgkJCW1lbWNnX3VuY2hhcmdlKG1lbWNnLCBucl9wYWdlcyk7CmBgYAoKLi4uYXJlIG5vdyByZXBsYWNlZCBieSBhIHNpbmdsZSBjYWxsIHRvOgoKYGBgYwoJCW1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTsKYGBgCgpXaGVyZSBgbWVtY2dfdW5jaGFyZ2Vfa21lbWAgZG9lcyB0aGUgZm9sbG93aW5nOgoKYGBgYwpzdGF0aWMgdm9pZCBtZW1jZ191bmNoYXJnZV9rbWVtKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgdW5zaWduZWQgaW50IG5yX3BhZ2VzKQp7Cgltb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7CgltZW1jZzFfYWNjb3VudF9rbWVtKG1lbWNnLCAtbnJfcGFnZXMpOwoJaWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKQoJCW1lbWNnX3VuY2hhcmdlKG1lbWNnLCBucl9wYWdlcyk7Cn0KYGBgCgpNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgcHVyZSByZWZhY3Rvciwgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBpbXBsaWVkLCBidXQgSSBhbHdheXMgd2FudCB0byBtYWtlIHN1cmUgSSBhbSBjb3JyZWN0LCBsZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSB0eXBlcyBiZWluZyBwYXNzZWQgaW4gZm9yIGBucl9wYWdlc2AsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBjaGFuZ2VzLiBDaGVja2luZyB0aGUgb3JpZ2luYWwgY29kZSBibG9ja3MsIGl0IGxvb2tzIGxpa2UgYG5yX3BhZ2VzYCBpcyBpbmRlZWQgYW4gYHVuc2lnbmVkIGludGAgaW4gYm90aCBwbGFjZXMgKGBvYmpfY2dyb3VwX3JlbGVhc2VgLCBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgKS4gR2l2ZW4gdGhlIG5ldyBoZWxwZXIgYWxzbyB0YWtlcyBhbiBgdW5zaWduZWQgaW50YCBmb3IgYG5yX3BhZ2VzYCwgYW5kIHRoZSBsb2dpYyBpcyBpZGVudGljYWwsIGl0IHNlZW1zIGNvbXBsZXRlbHkgc2FmZS4gTG9va3MgbGlrZSBhIHNvbGlkLCBjbGVhbiBwYXRjaC4gR29vZCBqb2Igb24ga2VlcGluZyB0aGluZ3MgRFJZLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDEyOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RyYWluX29ial9zdG9ja19zbG90JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWVtY29udHJvbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wuYz0yMDY2PXN0YXRpYyBERUZJTkVfTVVURVgocGVyY3B1X2NoYXJnZV9tdXRleCk7XG5tbS9tZW1jb250cm9sLmMtMjA2Ny1cbm1tL21lbWNvbnRyb2wuYzoyMDY4OnN0YXRpYyB2b2lkIGRyYWluX29ial9zdG9ja19zbG90KHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaywgaW50IGkpO1xubW0vbWVtY29udHJvbC5jLTIwNjktc3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrKHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jayk7XG4tLVxubW0vbWVtY29udHJvbC5jPTMyOTY9c3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3N0YXRzKHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaylcbi0tXG5tbS9tZW1jb250cm9sLmMtMzMyMC1cbm1tL21lbWNvbnRyb2wuYzozMzIxOnN0YXRpYyB2b2lkIGRyYWluX29ial9zdG9ja19zbG90KHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaywgaW50IGkpXG5tbS9tZW1jb250cm9sLmMtMzMyMi17XG4tLVxubW0vbWVtY29udHJvbC5jPTMzNjQ9c3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrKHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaylcbi0tXG5tbS9tZW1jb250cm9sLmMtMzM2OC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE5SX09CSl9TVE9DSzsgJiM0MzsmIzQzO2kpXG5tbS9tZW1jb250cm9sLmM6MzM2OTpcdFx0ZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RvY2ssIGkpO1xubW0vbWVtY29udHJvbC5jLTMzNzAtfVxuLS1cbm1tL21lbWNvbnRyb2wuYz0zMzk2PXN0YXRpYyB2b2lkIF9fcmVmaWxsX29ial9zdG9jayhzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2csXG4tLVxubW0vbWVtY29udHJvbC5jLTM0MzEtXHRcdFx0XHRzdG9jay1cdTAwM2VkcmFpbl9pZHggPSAwO1xubW0vbWVtY29udHJvbC5jOjM0MzI6XHRcdFx0ZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RvY2ssIHNsb3QpO1xubW0vbWVtY29udHJvbC5jLTM0MzMtXHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTc3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgIEZ1bmN0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIGBkcmFpbl9vYmpfc3RvY2tfc2xvdGAuIEkgd2FudCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgdHlwZSBvZiBgbnJfcGFnZXNgIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJJiMzOTttIGFzc3VtaW5nIGl0JiMzOTtzIGFuIGludGVnZXIsIGxpa2VseSByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBwYWdlcyB0byBkcmFpbiBmcm9tIGEgc3BlY2lmaWMgc3RvY2sgc2xvdC4gQnV0LCBJIGRvbiYjMzk7dCB3YW50IHRvIG1ha2UgYXNzdW1wdGlvbnMuIFF1aWNrbHkgdmVyaWZ5aW5nIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBgbnJfcGFnZXNgIHZhcmlhYmxlIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiYjMzk7cyBsb2dpYyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQuIEl0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIHBhcmFtZXRlciBmb3Igb3B0aW1pemF0aW9uIG9yIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbWVtb3J5IG1hbmFnZW1lbnQgY29tcG9uZW50cy4gQmV0dGVyIHRvIGJlIGNlcnRhaW4sIGFuZCBub3QgcmVseSBvbiBhc3N1bXB0aW9ucy4gS25vd2luZyB0aGUgZXhhY3QgdHlwZSBpbmZvcm1zIGFueSBwb3RlbnRpYWwgYW5hbHlzaXMgb2YgaXRzIGNvbnN0cmFpbnRzLCB1c2VzLCBhbmQgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLCBzbyBsZXQgbWUgcXVpY2tseSBqdW1wIGludG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9tZW1jb250cm9sLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzIxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMzMjE6XHRzdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2tfc2xvdChzdHJ1Y3Qgb2JqX3N0b2NrX3BjcCAqc3RvY2ssIGludCBpKVxuMzMyMjpcdHtcbjMzMjM6XHRcdHN0cnVjdCBvYmpfY2dyb3VwICpvbGQgPSBSRUFEX09OQ0Uoc3RvY2stXHUwMDNlY2FjaGVkW2ldKTtcbjMzMjQ6XHRcbjMzMjU6XHRcdGlmICghb2xkKVxuMzMyNjpcdFx0XHRyZXR1cm47XG4zMzI3Olx0XG4zMzI4Olx0XHRpZiAoc3RvY2stXHUwMDNlbnJfYnl0ZXNbaV0pIHtcbjMzMjk6XHRcdFx0dW5zaWduZWQgaW50IG5yX3BhZ2VzID0gc3RvY2stXHUwMDNlbnJfYnl0ZXNbaV0gXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4zMzMwOlx0XHRcdHVuc2lnbmVkIGludCBucl9ieXRlcyA9IHN0b2NrLVx1MDAzZW5yX2J5dGVzW2ldIFx1MDAyNiAoUEFHRV9TSVpFIC0gMSk7XG4zMzMxOlx0XG4zMzMyOlx0XHRcdGlmIChucl9wYWdlcykge1xuMzMzMzpcdFx0XHRcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcbjMzMzQ6XHRcbjMzMzU6XHRcdFx0XHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTtcbjMzMzY6XHRcbjMzMzc6XHRcdFx0XHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XG4zMzM4Olx0XG4zMzM5Olx0XHRcdFx0Y3NzX3B1dChcdTAwMjZtZW1jZy1cdTAwM2Vjc3MpO1xuMzM0MDpcdFx0XHR9XG4zMzQxOlx0XG4zMzQyOlx0XHRcdC8qXG4zMzQzOlx0XHRcdCAqIFRoZSBsZWZ0b3ZlciBpcyBmbHVzaGVkIHRvIHRoZSBjZW50cmFsaXplZCBwZXItbWVtY2cgdmFsdWUuXG4zMzQ0Olx0XHRcdCAqIE9uIHRoZSBuZXh0IGF0dGVtcHQgdG8gcmVmaWxsIG9iaiBzdG9jayBpdCB3aWxsIGJlIG1vdmVkXG4zMzQ1Olx0XHRcdCAqIHRvIGEgcGVyLWNwdSBzdG9jayAocHJvYmFibHksIG9uIGFuIG90aGVyIENQVSksIHNlZVxuMzM0NjpcdFx0XHQgKiByZWZpbGxfb2JqX3N0b2NrKCkuXG4zMzQ3Olx0XHRcdCAqXG4zMzQ4Olx0XHRcdCAqIEhvdyBvZnRlbiBpdCYjMzk7cyBmbHVzaGVkIGlzIGEgdHJhZGUtb2ZmIGJldHdlZW4gdGhlIG1lbW9yeVxuMzM0OTpcdFx0XHQgKiBsaW1pdCBlbmZvcmNlbWVudCBhY2N1cmFjeSBhbmQgcG90ZW50aWFsIENQVSBjb250ZW50aW9uLFxuMzM1MDpcdFx0XHQgKiBzbyBpdCBtaWdodCBiZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUuXG4zMzUxOlx0XHRcdCAqL1xuMzM1MjpcdFx0XHRhdG9taWNfYWRkKG5yX2J5dGVzLCBcdTAwMjZvbGQtXHUwMDNlbnJfY2hhcmdlZF9ieXRlcyk7XG4zMzUzOlx0XHRcdHN0b2NrLVx1MDAzZW5yX2J5dGVzW2ldID0gMDtcbjMzNTQ6XHRcdH1cbjMzNTU6XHRcbjMzNTY6XHRcdC8qIEZsdXNoIHZtc3RhdCBkYXRhIHdoZW4gaXRzIG93bmluZyBzbG90IGlzIGJlaW5nIGRyYWluZWQuICovXG4zMzU3Olx0XHRpZiAoc3RvY2stXHUwMDNlaW5kZXggPT0gaSlcbjMzNTg6XHRcdFx0ZHJhaW5fb2JqX3N0b2NrX3N0YXRzKHN0b2NrKTtcbjMzNTk6XHRcbjMzNjA6XHRcdFdSSVRFX09OQ0Uoc3RvY2stXHUwMDNlY2FjaGVkW2ldLCBOVUxMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxMjoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQwCgkJCQkJCQlvdXRwdXQ6IDc2CgkJCQkJCQl0aG91Z2h0czogNjE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlZmFjdG9yaW5nIEFuYWx5c2lzOiBgbW0vbWVtY29udHJvbC5jYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgaXQmIzM5O3MgYWxsIGFib3V0IHRpZHlpbmcgdXAgYG1tL21lbWNvbnRyb2wuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWJvdXQgZXh0cmFjdGluZyB0aGUga2VybmVsIG1lbW9yeSAoa21lbSkgdW5jaGFyZ2luZyBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiwgYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVsaW1pbmF0ZSBjb2RlIGR1cGxpY2F0aW9uIGluIGBvYmpfY2dyb3VwX3JlbGVhc2VgIGFuZCBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgLCB3aGljaCBJIGNhbiBhcHByZWNpYXRlLiBSZWZhY3RvcmluZyBsaWtlIHRoaXMgaXMgaW1wb3J0YW50IGZvciBtYWludGFpbmFiaWxpdHkgYW5kIHJlYWRhYmlsaXR5LgoKQnV0IHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzICpjaGFuZ2UqIGFueXRoaW5nIGZ1bmN0aW9uYWxseT8gV2UgYWxsIGtub3cgdGhhdCByZWZhY3RvcmluZyBjYW4gc29tZXRpbWVzIGludHJvZHVjZSBzdWJ0bGUgYnVncywgZXZlbiBpZiB0aGUgKmludGVudGlvbiogaXMgcHVyZWx5IHN0cnVjdHVyYWwuIFNvLCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rLgoKSSYjMzk7bSBjaGVja2luZyB0aGUgb3JpZ2luYWwgYW5kIHRoZSBuZXcgY29kZSBzaWRlLWJ5LXNpZGUuIEluIGBvYmpfY2dyb3VwX3JlbGVhc2VgLCBJIHNlZSB0aGlzOgoKKiAgICoqT3JpZ2luYWw6KiogR2V0IHRoZSBtZW1vcnkgY2dyb3VwLCByZWR1Y2UgdGhlIEtNRU0gdXNhZ2UsIGFjY291bnQgZm9yIGl0LCBhbmQgdGhlbiB1bmNoYXJnZSBpZiBpdCYjMzk7cyBub3QgdGhlIHJvb3QgY2dyb3VwLCBhbmQgcmVsZWFzZSB0aGUgbWVtb3J5IGNncm91cC4KKiAgICoqTmV3OioqIEdldCB0aGUgbWVtb3J5IGNncm91cCwgY2FsbCB0aGUgbmV3IGBtZW1jZ191bmNoYXJnZV9rbWVtYCBoZWxwZXIgZnVuY3Rpb24sIGFuZCByZWxlYXNlIHRoZSBtZW1vcnkgY2dyb3VwLgoKVGhlbiwgSSYjMzk7bSBjaGVja2luZyB0aGUgYG1lbWNnX3VuY2hhcmdlX2ttZW1gIGhlbHBlciBmdW5jdGlvbiBhbmQgaXQmIzM5O3MgY2xlYXIgaXQgcGVyZm9ybXMgdGhlICpleGFjdCogc2FtZSBvcGVyYXRpb25zOiBkZWNyZWFzZSB0aGUgS01FTSB1c2FnZSwgYWNjb3VudCBmb3IgaXQsIGFuZCB0aGVuIHVuY2hhcmdlIGlmIGl0JiMzOTtzIG5vdCB0aGUgcm9vdCBjZ3JvdXAuIFRoZSBsb2dpYyB3aXRoaW4gdGhlIGhlbHBlciBmdW5jdGlvbiBpcyBiaXQtZm9yLWJpdCB0aGUgc2FtZS4KCkkmIzM5O20gZG9pbmcgdGhlIHNhbWUgdGhpbmcgZm9yIGBkcmFpbl9vYmpfc3RvY2tfc2xvdGAuIEkgY2hlY2tlZCB0aGUgb3JpZ2luYWwgY29kZSBhbmQgdGhlIHVwZGF0ZWQgY29kZSwgYW5kIGl0JiMzOTtzIHRoZSBleGFjdCBzYW1lIGxvZ2ljLgoKU28sIGZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UgYXQgYWxsLiBJdCYjMzk7cyBqdXN0IGEgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgY29kZSBtb3JlIG1hbmFnZWFibGUuIE5vIGFsdGVyYXRpb24gdG8gdGhlIGNvcmUgbG9naWMsIHdoaWNoIGlzIGdvb2QuCgpTbywgeWVhaCwgaXQmIzM5O3MgYSBwdXJlIHJlZmFjdG9yaW5nLiBUaGlzIG1ha2VzIGl0IGEgbm8tZ28gZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTI6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBleHRyYWN0cyBkdXBsaWNhdGVkIGttZW0gdW5jaGFyZ2UgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgZXh0cmFjdHMgZHVwbGljYXRlZCBrbWVtIHVuY2hhcmdlIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBtZW1jZ191bmNoYXJnZV9rbWVtYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjoyODo1Ny44NTA2MjM1NTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMzMTA0NDM0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIHRoYXQgZXh0cmFjdHMgZHVwbGljYXRlZCBrbWVtIHVuY2hhcmdlIGxvZ2ljIGludG8gYSBuZXcgaGVscGVyIGZ1bmN0aW9uIGBtZW1jZ191bmNoYXJnZV9rbWVtYC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6Mjg6NTcuODUwNjI4NTIxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODg0OTM4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiODNkNGIwNGQ1OWU1MzMxNTY3NDVkMzMxNWViOGYzMjUxNTlmNDYzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDEyOjI4OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xcbmluZGV4IDIyZjU1YWViOTRmM2JjLi44NmFjZmU1NWEyMDFlYyAxMDA2NDRcXG4tLS0gYS9tbS9tZW1jb250cm9sLmNcXG4rKysgYi9tbS9tZW1jb250cm9sLmNcXG5AQCAtMTM3LDYgKzEzNywxNCBAQCBib29sIG1lbV9jZ3JvdXBfa21lbV9kaXNhYmxlZCh2b2lkKVxcbiBcXG4gc3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Uoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpO1xcbiBcXG4rc3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Vfa21lbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGludCBucl9wYWdlcylcXG4re1xcbitcXHRtb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7XFxuK1xcdG1lbWNnMV9hY2NvdW50X2ttZW0obWVtY2csIC1ucl9wYWdlcyk7XFxuK1xcdGlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcXG4rXFx0XFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcXG4rfVxcbitcXG4gc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXFxuIHtcXG4gXFx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG9ial9jZ3JvdXAsIHJlZmNudCk7XFxuQEAgLTE3MiwxMCArMTgwLDcgQEAgc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXFxuIFxcdFxcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcXG4gXFxuIFxcdFxcdG1lbWNnID0gZ2V0X21lbV9jZ3JvdXBfZnJvbV9vYmpjZyhvYmpjZyk7XFxuLVxcdFxcdG1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfS01FTSwgLW5yX3BhZ2VzKTtcXG4tXFx0XFx0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcXG4tXFx0XFx0aWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKVxcbi1cXHRcXHRcXHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xcbitcXHRcXHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XFxuIFxcdFxcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcXG4gXFx0fVxcbiBcXG5AQCAtMzMyOSwxMCArMzMzNCw3IEBAIHN0YXRpYyB2b2lkIGRyYWluX29ial9zdG9ja19zbG90KHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jaywgaW50IGkpXFxuIFxcbiBcXHRcXHRcXHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTtcXG4gXFxuLVxcdFxcdFxcdG1vZF9tZW1jZ19zdGF0ZShtZW1jZywgTUVNQ0dfS01FTSwgLW5yX3BhZ2VzKTtcXG4tXFx0XFx0XFx0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcXG4tXFx0XFx0XFx0aWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKVxcbi1cXHRcXHRcXHRcXHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xcbitcXHRcXHRcXHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XFxuIFxcbiBcXHRcXHRcXHRjc3NfcHV0KFxcdTAwMjZtZW1jZy1cXHUwMDNlY3NzKTtcXG4gXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjoyODo1OC4yMzk3MzI3NDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTQxOTI2ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBleHRyYWN0cyBkdXBsaWNhdGVkIGttZW0gdW5jaGFyZ2UgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI4M2Q0YjA0ZDU5ZTUzMzE1Njc0NWQzMzE1ZWI4ZjMyNTE1OWY0NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxMjoyODo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xuaW5kZXggMjJmNTVhZWI5NGYzYmMuLjg2YWNmZTU1YTIwMWVjIDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC5jXG4rKysgYi9tbS9tZW1jb250cm9sLmNcbkBAIC0xMzcsNiArMTM3LDE0IEBAIGJvb2wgbWVtX2Nncm91cF9rbWVtX2Rpc2FibGVkKHZvaWQpXG4gXG4gc3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Uoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpO1xuIFxuK3N0YXRpYyB2b2lkIG1lbWNnX3VuY2hhcmdlX2ttZW0oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpXG4re1xuK1x0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpO1xuK1x0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcbitcdGlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbitcdFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgb2JqX2Nncm91cF9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpXG4ge1xuIFx0c3RydWN0IG9ial9jZ3JvdXAgKm9iamNnID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG9ial9jZ3JvdXAsIHJlZmNudCk7XG5AQCAtMTcyLDEwICsxODAsNyBAQCBzdGF0aWMgdm9pZCBvYmpfY2dyb3VwX3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZilcbiBcdFx0c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnO1xuIFxuIFx0XHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2JqY2cpO1xuLVx0XHRtb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7XG4tXHRcdG1lbWNnMV9hY2NvdW50X2ttZW0obWVtY2csIC1ucl9wYWdlcyk7XG4tXHRcdGlmICghbWVtX2Nncm91cF9pc19yb290KG1lbWNnKSlcbi1cdFx0XHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xuK1x0XHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XG4gXHRcdG1lbV9jZ3JvdXBfcHV0KG1lbWNnKTtcbiBcdH1cbiBcbkBAIC0zMzI5LDEwICszMzM0LDcgQEAgc3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrLCBpbnQgaSlcbiBcbiBcdFx0XHRtZW1jZyA9IGdldF9tZW1fY2dyb3VwX2Zyb21fb2JqY2cob2xkKTtcbiBcbi1cdFx0XHRtb2RfbWVtY2dfc3RhdGUobWVtY2csIE1FTUNHX0tNRU0sIC1ucl9wYWdlcyk7XG4tXHRcdFx0bWVtY2cxX2FjY291bnRfa21lbShtZW1jZywgLW5yX3BhZ2VzKTtcbi1cdFx0XHRpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpXG4tXHRcdFx0XHRtZW1jZ191bmNoYXJnZShtZW1jZywgbnJfcGFnZXMpO1xuK1x0XHRcdG1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTtcbiBcbiBcdFx0XHRjc3NfcHV0KFx1MDAyNm1lbWNnLVx1MDAzZWNzcyk7XG4gXHRcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjI4OjU4LjIzOTczNDE3MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTA3Mzg5NDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmFjdG9yaW5nIGBtbS9tZW1jb250cm9sLmNgIGZvciBDbGFyaXR5IGFuZCBEUlluZXNzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBpbiBgbW0vbWVtY29udHJvbC5jYC4gRXNzZW50aWFsbHksIGl0J3MgYWJvdXQgdGlkeWluZyB1cCBhbmQgcmVkdWNpbmcgZHVwbGljYXRpb24uIEkgc2VlIHRoZSBtYWluIGdvYWwgaXMgdG8gaW50cm9kdWNlIGEgbmV3IGhlbHBlciBmdW5jdGlvbiwgYG1lbWNnX3VuY2hhcmdlX2ttZW1gLCBhbmQgY29uc29saWRhdGUgdHdvIGlkZW50aWNhbCBjb2RlIGJsb2NrcyBpbnRvIGNhbGxzIHRvIHRoaXMgbmV3IGZ1bmN0aW9uLiBUaGUgb3JpZ2luYWwgYmxvY2tzOlxuXG5gYGBjXG5cdFx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpO1xuXHRcdG1lbWNnMV9hY2NvdW50X2ttZW0obWVtY2csIC1ucl9wYWdlcyk7XG5cdFx0aWYgKCFtZW1fY2dyb3VwX2lzX3Jvb3QobWVtY2cpKVxuXHRcdFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcbmBgYFxuXG4uLi5hcmUgbm93IHJlcGxhY2VkIGJ5IGEgc2luZ2xlIGNhbGwgdG86XG5cbmBgYGNcblx0XHRtZW1jZ191bmNoYXJnZV9rbWVtKG1lbWNnLCBucl9wYWdlcyk7XG5gYGBcblxuV2hlcmUgYG1lbWNnX3VuY2hhcmdlX2ttZW1gIGRvZXMgdGhlIGZvbGxvd2luZzpcblxuYGBgY1xuc3RhdGljIHZvaWQgbWVtY2dfdW5jaGFyZ2Vfa21lbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGludCBucl9wYWdlcylcbntcblx0bW9kX21lbWNnX3N0YXRlKG1lbWNnLCBNRU1DR19LTUVNLCAtbnJfcGFnZXMpO1xuXHRtZW1jZzFfYWNjb3VudF9rbWVtKG1lbWNnLCAtbnJfcGFnZXMpO1xuXHRpZiAoIW1lbV9jZ3JvdXBfaXNfcm9vdChtZW1jZykpXG5cdFx0bWVtY2dfdW5jaGFyZ2UobWVtY2csIG5yX3BhZ2VzKTtcbn1cbmBgYFxuXG5NeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGlzIGEgcHVyZSByZWZhY3Rvciwgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBpbXBsaWVkLCBidXQgSSBhbHdheXMgd2FudCB0byBtYWtlIHN1cmUgSSBhbSBjb3JyZWN0LCBsZXQncyBkb3VibGUtY2hlY2sgdGhlIHR5cGVzIGJlaW5nIHBhc3NlZCBpbiBmb3IgYG5yX3BhZ2VzYCwgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGNoYW5nZXMuIENoZWNraW5nIHRoZSBvcmlnaW5hbCBjb2RlIGJsb2NrcywgaXQgbG9va3MgbGlrZSBgbnJfcGFnZXNgIGlzIGluZGVlZCBhbiBgdW5zaWduZWQgaW50YCBpbiBib3RoIHBsYWNlcyAoYG9ial9jZ3JvdXBfcmVsZWFzZWAsIGBkcmFpbl9vYmpfc3RvY2tfc2xvdGApLiBHaXZlbiB0aGUgbmV3IGhlbHBlciBhbHNvIHRha2VzIGFuIGB1bnNpZ25lZCBpbnRgIGZvciBgbnJfcGFnZXNgLCBhbmQgdGhlIGxvZ2ljIGlzIGlkZW50aWNhbCwgaXQgc2VlbXMgY29tcGxldGVseSBzYWZlLiBMb29rcyBsaWtlIGEgc29saWQsIGNsZWFuIHBhdGNoLiBHb29kIGpvYiBvbiBrZWVwaW5nIHRoaW5ncyBEUlkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNzcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjoyOTowOS43NDcxMjUyMTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQyMDE5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHJhaW5fb2JqX3N0b2NrX3Nsb3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWVtY29udHJvbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbWNvbnRyb2wuYz0yMDY2PXN0YXRpYyBERUZJTkVfTVVURVgocGVyY3B1X2NoYXJnZV9tdXRleCk7XFxubW0vbWVtY29udHJvbC5jLTIwNjctXFxubW0vbWVtY29udHJvbC5jOjIwNjg6c3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrLCBpbnQgaSk7XFxubW0vbWVtY29udHJvbC5jLTIwNjktc3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrKHN0cnVjdCBvYmpfc3RvY2tfcGNwICpzdG9jayk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MzI5Nj1zdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2tfc3RhdHMoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTMzMjAtXFxubW0vbWVtY29udHJvbC5jOjMzMjE6c3RhdGljIHZvaWQgZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrLCBpbnQgaSlcXG5tbS9tZW1jb250cm9sLmMtMzMyMi17XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MzM2ND1zdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2soc3RydWN0IG9ial9zdG9ja19wY3AgKnN0b2NrKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTMzNjgtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE5SX09CSl9TVE9DSzsgKytpKVxcbm1tL21lbWNvbnRyb2wuYzozMzY5OlxcdFxcdGRyYWluX29ial9zdG9ja19zbG90KHN0b2NrLCBpKTtcXG5tbS9tZW1jb250cm9sLmMtMzM3MC19XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MzM5Nj1zdGF0aWMgdm9pZCBfX3JlZmlsbF9vYmpfc3RvY2soc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTM0MzEtXFx0XFx0XFx0XFx0c3RvY2stXFx1MDAzZWRyYWluX2lkeCA9IDA7XFxubW0vbWVtY29udHJvbC5jOjM0MzI6XFx0XFx0XFx0ZHJhaW5fb2JqX3N0b2NrX3Nsb3Qoc3RvY2ssIHNsb3QpO1xcbm1tL21lbWNvbnRyb2wuYy0zNDMzLVxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6Mjk6MDkuODQxMzMxMTY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ3Njk4NjI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgIEZ1bmN0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gYGRyYWluX29ial9zdG9ja19zbG90YC4gSSB3YW50IHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSB0eXBlIG9mIGBucl9wYWdlc2Agd2l0aGluIHRoYXQgZnVuY3Rpb24uIEknbSBhc3N1bWluZyBpdCdzIGFuIGludGVnZXIsIGxpa2VseSByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBwYWdlcyB0byBkcmFpbiBmcm9tIGEgc3BlY2lmaWMgc3RvY2sgc2xvdC4gQnV0LCBJIGRvbid0IHdhbnQgdG8gbWFrZSBhc3N1bXB0aW9ucy4gUXVpY2tseSB2ZXJpZnlpbmcgdGhlIGRlZmluaXRpb24gb2YgdGhlIGBucl9wYWdlc2AgdmFyaWFibGUgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3MgbG9naWMgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50LiBJdCdzIGxpa2VseSBhIGNyaXRpY2FsIHBhcmFtZXRlciBmb3Igb3B0aW1pemF0aW9uIG9yIHJlc291cmNlIGFsbG9jYXRpb24gd2l0aGluIHRoZSBrZXJuZWwncyBtZW1vcnkgbWFuYWdlbWVudCBjb21wb25lbnRzLiBCZXR0ZXIgdG8gYmUgY2VydGFpbiwgYW5kIG5vdCByZWx5IG9uIGFzc3VtcHRpb25zLiBLbm93aW5nIHRoZSBleGFjdCB0eXBlIGluZm9ybXMgYW55IHBvdGVudGlhbCBhbmFseXNpcyBvZiBpdHMgY29uc3RyYWludHMsIHVzZXMsIGFuZCBpbXBhY3Qgb24gcGVyZm9ybWFuY2UsIHNvIGxldCBtZSBxdWlja2x5IGp1bXAgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDEyOjI5OjE2LjMxODMxOTE5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9tZW1jb250cm9sLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzMyMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzMyMTpcXHRzdGF0aWMgdm9pZCBkcmFpbl9vYmpfc3RvY2tfc2xvdChzdHJ1Y3Qgb2JqX3N0b2NrX3BjcCAqc3RvY2ssIGludCBpKVxcbjMzMjI6XFx0e1xcbjMzMjM6XFx0XFx0c3RydWN0IG9ial9jZ3JvdXAgKm9sZCA9IFJFQURfT05DRShzdG9jay1cXHUwMDNlY2FjaGVkW2ldKTtcXG4zMzI0OlxcdFxcbjMzMjU6XFx0XFx0aWYgKCFvbGQpXFxuMzMyNjpcXHRcXHRcXHRyZXR1cm47XFxuMzMyNzpcXHRcXG4zMzI4OlxcdFxcdGlmIChzdG9jay1cXHUwMDNlbnJfYnl0ZXNbaV0pIHtcXG4zMzI5OlxcdFxcdFxcdHVuc2lnbmVkIGludCBucl9wYWdlcyA9IHN0b2NrLVxcdTAwM2Vucl9ieXRlc1tpXSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbjMzMzA6XFx0XFx0XFx0dW5zaWduZWQgaW50IG5yX2J5dGVzID0gc3RvY2stXFx1MDAzZW5yX2J5dGVzW2ldIFxcdTAwMjYgKFBBR0VfU0laRSAtIDEpO1xcbjMzMzE6XFx0XFxuMzMzMjpcXHRcXHRcXHRpZiAobnJfcGFnZXMpIHtcXG4zMzMzOlxcdFxcdFxcdFxcdHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZztcXG4zMzM0OlxcdFxcbjMzMzU6XFx0XFx0XFx0XFx0bWVtY2cgPSBnZXRfbWVtX2Nncm91cF9mcm9tX29iamNnKG9sZCk7XFxuMzMzNjpcXHRcXG4zMzM3OlxcdFxcdFxcdFxcdG1lbWNnX3VuY2hhcmdlX2ttZW0obWVtY2csIG5yX3BhZ2VzKTtcXG4zMzM4OlxcdFxcbjMzMzk6XFx0XFx0XFx0XFx0Y3NzX3B1dChcXHUwMDI2bWVtY2ctXFx1MDAzZWNzcyk7XFxuMzM0MDpcXHRcXHRcXHR9XFxuMzM0MTpcXHRcXG4zMzQyOlxcdFxcdFxcdC8qXFxuMzM0MzpcXHRcXHRcXHQgKiBUaGUgbGVmdG92ZXIgaXMgZmx1c2hlZCB0byB0aGUgY2VudHJhbGl6ZWQgcGVyLW1lbWNnIHZhbHVlLlxcbjMzNDQ6XFx0XFx0XFx0ICogT24gdGhlIG5leHQgYXR0ZW1wdCB0byByZWZpbGwgb2JqIHN0b2NrIGl0IHdpbGwgYmUgbW92ZWRcXG4zMzQ1OlxcdFxcdFxcdCAqIHRvIGEgcGVyLWNwdSBzdG9jayAocHJvYmFibHksIG9uIGFuIG90aGVyIENQVSksIHNlZVxcbjMzNDY6XFx0XFx0XFx0ICogcmVmaWxsX29ial9zdG9jaygpLlxcbjMzNDc6XFx0XFx0XFx0ICpcXG4zMzQ4OlxcdFxcdFxcdCAqIEhvdyBvZnRlbiBpdCdzIGZsdXNoZWQgaXMgYSB0cmFkZS1vZmYgYmV0d2VlbiB0aGUgbWVtb3J5XFxuMzM0OTpcXHRcXHRcXHQgKiBsaW1pdCBlbmZvcmNlbWVudCBhY2N1cmFjeSBhbmQgcG90ZW50aWFsIENQVSBjb250ZW50aW9uLFxcbjMzNTA6XFx0XFx0XFx0ICogc28gaXQgbWlnaHQgYmUgY2hhbmdlZCBpbiB0aGUgZnV0dXJlLlxcbjMzNTE6XFx0XFx0XFx0ICovXFxuMzM1MjpcXHRcXHRcXHRhdG9taWNfYWRkKG5yX2J5dGVzLCBcXHUwMDI2b2xkLVxcdTAwM2Vucl9jaGFyZ2VkX2J5dGVzKTtcXG4zMzUzOlxcdFxcdFxcdHN0b2NrLVxcdTAwM2Vucl9ieXRlc1tpXSA9IDA7XFxuMzM1NDpcXHRcXHR9XFxuMzM1NTpcXHRcXG4zMzU2OlxcdFxcdC8qIEZsdXNoIHZtc3RhdCBkYXRhIHdoZW4gaXRzIG93bmluZyBzbG90IGlzIGJlaW5nIGRyYWluZWQuICovXFxuMzM1NzpcXHRcXHRpZiAoc3RvY2stXFx1MDAzZWluZGV4ID09IGkpXFxuMzM1ODpcXHRcXHRcXHRkcmFpbl9vYmpfc3RvY2tfc3RhdHMoc3RvY2spO1xcbjMzNTk6XFx0XFxuMzM2MDpcXHRcXHRXUklURV9PTkNFKHN0b2NrLVxcdTAwM2VjYWNoZWRbaV0sIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxMjoyOToxNi4zMTg1MjYzMDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjg2MzEwNjU2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyBBbmFseXNpczogYG1tL21lbWNvbnRyb2wuY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhhdCBpdCdzIGFsbCBhYm91dCB0aWR5aW5nIHVwIGBtbS9tZW1jb250cm9sLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWJvdXQgZXh0cmFjdGluZyB0aGUga2VybmVsIG1lbW9yeSAoa21lbSkgdW5jaGFyZ2luZyBsb2dpYyBpbnRvIGEgbmV3IGhlbHBlciBmdW5jdGlvbiwgYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGVsaW1pbmF0ZSBjb2RlIGR1cGxpY2F0aW9uIGluIGBvYmpfY2dyb3VwX3JlbGVhc2VgIGFuZCBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgLCB3aGljaCBJIGNhbiBhcHByZWNpYXRlLiBSZWZhY3RvcmluZyBsaWtlIHRoaXMgaXMgaW1wb3J0YW50IGZvciBtYWludGFpbmFiaWxpdHkgYW5kIHJlYWRhYmlsaXR5LlxuXG5CdXQgdGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHRoaXMgKmNoYW5nZSogYW55dGhpbmcgZnVuY3Rpb25hbGx5PyBXZSBhbGwga25vdyB0aGF0IHJlZmFjdG9yaW5nIGNhbiBzb21ldGltZXMgaW50cm9kdWNlIHN1YnRsZSBidWdzLCBldmVuIGlmIHRoZSAqaW50ZW50aW9uKiBpcyBwdXJlbHkgc3RydWN0dXJhbC4gU28sIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vay5cblxuSSdtIGNoZWNraW5nIHRoZSBvcmlnaW5hbCBhbmQgdGhlIG5ldyBjb2RlIHNpZGUtYnktc2lkZS4gSW4gYG9ial9jZ3JvdXBfcmVsZWFzZWAsIEkgc2VlIHRoaXM6XG5cbiogICAqKk9yaWdpbmFsOioqIEdldCB0aGUgbWVtb3J5IGNncm91cCwgcmVkdWNlIHRoZSBLTUVNIHVzYWdlLCBhY2NvdW50IGZvciBpdCwgYW5kIHRoZW4gdW5jaGFyZ2UgaWYgaXQncyBub3QgdGhlIHJvb3QgY2dyb3VwLCBhbmQgcmVsZWFzZSB0aGUgbWVtb3J5IGNncm91cC5cbiogICAqKk5ldzoqKiBHZXQgdGhlIG1lbW9yeSBjZ3JvdXAsIGNhbGwgdGhlIG5ldyBgbWVtY2dfdW5jaGFyZ2Vfa21lbWAgaGVscGVyIGZ1bmN0aW9uLCBhbmQgcmVsZWFzZSB0aGUgbWVtb3J5IGNncm91cC5cblxuVGhlbiwgSSdtIGNoZWNraW5nIHRoZSBgbWVtY2dfdW5jaGFyZ2Vfa21lbWAgaGVscGVyIGZ1bmN0aW9uIGFuZCBpdCdzIGNsZWFyIGl0IHBlcmZvcm1zIHRoZSAqZXhhY3QqIHNhbWUgb3BlcmF0aW9uczogZGVjcmVhc2UgdGhlIEtNRU0gdXNhZ2UsIGFjY291bnQgZm9yIGl0LCBhbmQgdGhlbiB1bmNoYXJnZSBpZiBpdCdzIG5vdCB0aGUgcm9vdCBjZ3JvdXAuIFRoZSBsb2dpYyB3aXRoaW4gdGhlIGhlbHBlciBmdW5jdGlvbiBpcyBiaXQtZm9yLWJpdCB0aGUgc2FtZS5cblxuSSdtIGRvaW5nIHRoZSBzYW1lIHRoaW5nIGZvciBgZHJhaW5fb2JqX3N0b2NrX3Nsb3RgLiBJIGNoZWNrZWQgdGhlIG9yaWdpbmFsIGNvZGUgYW5kIHRoZSB1cGRhdGVkIGNvZGUsIGFuZCBpdCdzIHRoZSBleGFjdCBzYW1lIGxvZ2ljLlxuXG5TbywgZnJvbSB3aGF0IEknbSBzZWVpbmcsIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIGF0IGFsbC4gSXQncyBqdXN0IGEgcmVmYWN0b3JpbmcgdG8gbWFrZSB0aGUgY29kZSBtb3JlIG1hbmFnZWFibGUuIE5vIGFsdGVyYXRpb24gdG8gdGhlIGNvcmUgbG9naWMsIHdoaWNoIGlzIGdvb2QuXG5cblNvLCB5ZWFoLCBpdCdzIGEgcHVyZSByZWZhY3RvcmluZy4gVGhpcyBtYWtlcyBpdCBhIG5vLWdvIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDQwLCJPdXRwdXRUb2tlbnMiOjc2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTI6Mjk6MzkuMTgxNjM0NTA5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBleHRyYWN0cyBkdXBsaWNhdGVkIGttZW0gdW5jaGFyZ2UgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3JpbmcgdGhhdCBleHRyYWN0cyBkdXBsaWNhdGVkIGttZW0gdW5jaGFyZ2UgbG9naWMgaW50byBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gYG1lbWNnX3VuY2hhcmdlX2ttZW1gLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowwsgs8[1] Phase: Running StartedAt: 2026-07-13 12:31:23 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsgs8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-13 12:31:23 +0000 UTC FinishedAt: 2026-07-13 12:31:28 +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,}