Name: series-workflowzwzx8 Phase: Failed StartedAt: 2026-06-26 10:49:59 +0000 UTC FinishedAt: 2026-06-26 10:59:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzwzx8[0] Phase: Succeeded StartedAt: 2026-06-26 10:49:59 +0000 UTC FinishedAt: 2026-06-26 10:59:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzwzx8[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 10:49:59 +0000 UTC FinishedAt: 2026-06-26 10:59:49 +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+CgkJCTx0ZD4yMDI2LzA2LzI2IDEwOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29zbWV0aWMgY2hhbmdlczogdHlwbyBmaXhlcyBpbiBjb21tZW50cyBhbmQgcmVtb3ZhbCBvZiBleHRyYSBibGFuayBsaW5lcy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTA6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyNjRmYjI3NDc5YWQ5YTBhNzk1NTk3ODQ5MGIwMTNmODIzNTAzMTE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMTA6NTk6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3BtdS5jIGIvYXJjaC94ODYva3ZtL3BtdS5jXG5pbmRleCBiOTJkZDJlNTgzMzU2Ny4uZTdmNjM1YjljNGQ3ODQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vcG11LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9wbXUuY1xuQEAgLTQwMyw3ICYjNDM7NDAzLDcgQEAgdm9pZCBwbWNfd3JpdGVfY291bnRlcihzdHJ1Y3Qga3ZtX3BtYyAqcG1jLCB1NjQgdmFsKVxuIFx0ICogRHJvcCBhbnkgdW5jb25zdW1lZCBhY2N1bXVsYXRlZCBjb3VudHMsIHRoZSBXUk1TUiBpcyBhIHdyaXRlLCBub3QgYVxuIFx0ICogcmVhZC1tb2RpZnktd3JpdGUuICBBZGp1c3QgdGhlIGNvdW50ZXIgdmFsdWUgc28gdGhhdCBpdHMgdmFsdWUgaXNcbiBcdCAqIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGNvdW50LCBhcyByZWFkaW5nIHRoZSBjdXJyZW50IGNvdW50IGZyb21cbi1cdCAqIHBlcmYgaXMgZmFzdGVyIHRoYW4gcGF1c2luZyBhbmQgcmVwZ3JvZ3JhbW1pbmcgdGhlIGV2ZW50IGluIG9yZGVyIHRvXG4mIzQzO1x0ICogcGVyZiBpcyBmYXN0ZXIgdGhhbiBwYXVzaW5nIGFuZCByZXByb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0b1xuIFx0ICogcmVzZXQgaXQgdG8gJiMzOTswJiMzOTsuICBOb3RlLCB0aGlzIHZlcnkgc25lYWtpbHkgb2Zmc2V0cyB0aGUgYWNjdW11bGF0ZWRcbiBcdCAqIGVtdWxhdGVkIGNvdW50IHRvbywgYnkgdXNpbmcgcG1jX3JlYWRfY291bnRlcigpIVxuIFx0ICovXG5AQCAtNDIyLDcgJiM0Mzs0MjIsNiBAQCBzdGF0aWMgaW50IGZpbHRlcl9jbXAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiLCB1NjQgbWFzaylcbiBcdHJldHVybiAoYSBcdTAwM2UgYikgLSAoYSBcdTAwM2MgYik7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgZmlsdGVyX3NvcnRfY21wKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYilcbiB7XG4gXHRyZXR1cm4gZmlsdGVyX2NtcChwYSwgcGIsIChLVk1fUE1VX01BU0tFRF9FTlRSWV9FVkVOVF9TRUxFQ1QgfFxuQEAgLTY1OCw3ICYjNDM7NjU3LDcgQEAgdm9pZCBrdm1fcG11X2hhbmRsZV9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHQvKlxuIFx0ICogVGhlIHJlcHJvZ3JhbW1pbmcgYml0bWFwIGNhbiBiZSB3cml0dGVuIGFzeW5jaHJvbm91c2x5IGJ5IHNvbWV0aGluZ1xuIFx0ICogb3RoZXIgdGhhbiB0aGUgdGFzayB0aGF0IGhvbGRzIHZjcHUtXHUwMDNlbXV0ZXgsIHRha2UgY2FyZSB0byBjbGVhciBvbmx5XG4tXHQgKiB0aGUgYml0cyB0aGF0IHdpbGwgYWN0dWFsbHkgcHJvY2Vzc2VkLlxuJiM0MztcdCAqIHRoZSBiaXRzIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBwcm9jZXNzZWQuXG4gXHQgKi9cbiBcdEJVSUxEX0JVR19PTihzaXplb2YoYml0bWFwKSAhPSBzaXplb2YoYXRvbWljNjRfdCkpO1xuIFx0YXRvbWljNjRfYW5kbm90KCooczY0ICopYml0bWFwLCBcdTAwMjZwbXUtXHUwMDNlX19yZXByb2dyYW1fcG1pKTtcbkBAIC02NjYsOSAmIzQzOzY2NSw5IEBAIHZvaWQga3ZtX3BtdV9oYW5kbGVfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0a3ZtX2Zvcl9lYWNoX3BtYyhwbXUsIHBtYywgYml0LCBiaXRtYXApIHtcbiBcdFx0LypcbiBcdFx0ICogSWYgcmVwcm9ncmFtbWluZyBmYWlscywgZS5nLiBkdWUgdG8gY29udGVudGlvbiwgcmUtc2V0IHRoZVxuLVx0XHQgKiByZWdwcm9ncmFtIGJpdCBzZXQsIGkuZS4gb3Bwb3J0dW5pc3RpY2FsbHkgdHJ5IGFnYWluIG9uIHRoZVxuLVx0XHQgKiBuZXh0IFBNVSByZWZyZXNoLiAgRG9uJiMzOTt0IG1ha2UgYSBuZXcgcmVxdWVzdCBhcyBkb2luZyBzbyBjYW5cbi1cdFx0ICogc3RhbGwgdGhlIGd1ZXN0IGlmIHJlcHJvZ3JhbW1pbmcgcmVwZWF0ZWRseSBmYWlscy5cbiYjNDM7XHRcdCAqIHJlcHJvZ3JhbSBiaXQsIGkuZS4gb3Bwb3J0dW5pc3RpY2FsbHkgdHJ5IGFnYWluIG9uIHRoZSBuZXh0XG4mIzQzO1x0XHQgKiBQTVUgcmVmcmVzaC4gIERvbiYjMzk7dCBtYWtlIGEgbmV3IHJlcXVlc3QgYXMgZG9pbmcgc28gY2FuIHN0YWxsXG4mIzQzO1x0XHQgKiB0aGUgZ3Vlc3QgaWYgcmVwcm9ncmFtbWluZyByZXBlYXRlZGx5IGZhaWxzLlxuIFx0XHQgKi9cbiBcdFx0aWYgKHJlcHJvZ3JhbV9jb3VudGVyKHBtYykpXG4gXHRcdFx0c2V0X2JpdChwbWMtXHUwMDNlaWR4LCBwbXUtXHUwMDNlcmVwcm9ncmFtX3BtaSk7XG5AQCAtOTU2LDcgJiM0Mzs5NTUsNiBAQCBzdGF0aWMgdm9pZCBrdm1fcG11X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGt2bV9wbXVfY2FsbChyZXNldCkodmNwdSk7XG4gfVxuIFxuLVxuIC8qXG4gICogUmVmcmVzaCB0aGUgUE1VIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB2Q1BVLCBlLmcuIGlmIHVzZXJzcGFjZSBjaGFuZ2VzIENQVUlEXG4gICogYW5kL29yIFBFUkZfQ0FQQUJJTElUSUVTLlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9wbXUuaCBiL2FyY2gveDg2L2t2bS9wbXUuaFxuaW5kZXggYTU4MjFkN2M4N2Y5MzUuLjA5MGM5YmJiNzRmNDgzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3BtdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vcG11LmhcbkBAIC05NCw4ICYjNDM7OTQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX3ZjcHVfaGFzX21lZGlhdGVkX3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gICogaXMgdHJhY2tlZCBpbnRlcm5hbGx5IHZpYSBpbmRleCAzMi4gIE9uIEludGVsLCAoQU1EIGRvZXNuJiMzOTt0IHN1cHBvcnQgZml4ZWRcbiAgKiBjb3VudGVycyksIHRoaXMgbWlycm9ycyBob3cgZml4ZWQgY291bnRlcnMgYXJlIG1hcHBlZCB0byBQRVJGX0dMT0JBTF9DVFJMXG4gICogYW5kIHNpbWlsYXIgTVNScywgaS5lLiB0cmFja2luZyBmaXhlZCBjb3VudGVycyBhdCBiYXNlIGluZGV4IDMyIHJlZHVjZXMgdGhlXG4tICogYW1vdW50ZXIgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uXG4tICogZW5hYmxpbmcvZGlzYWJsZS9yZXNldCBvcGVyYXRpb25zLlxuJiM0MzsgKiBhbW91bnQgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uXG4mIzQzOyAqIGVuYWJsZS9kaXNhYmxlL3Jlc2V0IG9wZXJhdGlvbnMuXG4gICpcbiAgKiBXQVJOSU5HISAgVGhpcyBoZWxwZXIgaXMgb25seSBmb3IgbG9va3VwcyB0aGF0IGFyZSBpbml0aWF0ZWQgYnkgS1ZNLCBpdCBpc1xuICAqIE5PVCBzYWZlIGZvciBndWVzdCBsb29rdXBzLCBlLmcuIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGlmIHBhc3NlZCBhIHJhd1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmMgYi9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jXG5pbmRleCBhNzNhOTUxNWQ5NmNkNS4uNzBlZjg0YWExYTIyM2QgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jXG5AQCAtNzk1LDcgJiM0Mzs3OTUsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wbXVfd3JpdGVfZ2xvYmFsX2N0cmwodTY0IGdsb2JhbF9jdHJsKVxuIFx0dm1jc193cml0ZTY0KEdVRVNUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTCwgZ2xvYmFsX2N0cmwpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBpbnRlbF9tZWRpYXRlZF9wbXVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0c3RydWN0IGt2bV9wbXUgKnBtdSA9IHZjcHVfdG9fcG11KHZjcHUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuY1xuaW5kZXggZGM2YWZhYzNhYTkxOTUuLjY3N2RjMjM1MzU0ODdmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfY291bnRlcnNfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9jb3VudGVyc190ZXN0LmNcbkBAIC0xNDYsNyAmIzQzOzE0Niw3IEBAIHN0YXRpYyB1OCBndWVzdF9nZXRfcG11X3ZlcnNpb24odm9pZClcbiBcbiAvKlxuICAqIElmIGFuIGFyY2hpdGVjdHVyYWwgZXZlbnQgaXMgc3VwcG9ydGVkIGFuZCBndWFyYW50ZWVkIHRvIGdlbmVyYXRlIGF0IGxlYXN0XG4tICogb25lIFwmIzM0O2hpdCwgYXNzZXJ0IHRoYXQgaXRzIGNvdW50IGlzIG5vbi16ZXJvLiAgSWYgYW4gZXZlbnQgaXNuJiMzOTt0IHN1cHBvcnRlZCBvclxuJiM0MzsgKiBvbmUgaGl0LCBhc3NlcnQgdGhhdCBpdHMgY291bnQgaXMgbm9uLXplcm8uICBJZiBhbiBldmVudCBpc24mIzM5O3Qgc3VwcG9ydGVkIG9yXG4gICogdGhlIHRlc3QgY2FuJiMzOTt0IGd1YXJhbnRlZSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24gd2lsbCBvY2N1ciwgdGhlbiBhbGwgYmV0cyBhcmVcbiAgKiBvZmYgcmVnYXJkaW5nIHRoZSBjb3VudCwgaS5lLiBubyBjaGVja3MgY2FuIGJlIGRvbmUuXG4gICpcbkBAIC01OTgsNyAmIzQzOzU5OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW50ZWxfY291bnRlcnModm9pZClcbiBcdCAqIFRvIGtlZXAgdGhlIHRvdGFsIHJ1bnRpbWUgcmVhc29uYWJsZSwgdGVzdCBvbmx5IGEgaGFuZGZ1bCBvZiBzZWxlY3QsXG4gXHQgKiBzZW1pLWFyYml0cmFyeSB2YWx1ZXMgZm9yIHRoZSBtYXNrIG9mIHVuYXZhaWxhYmxlIFBNVSBldmVudHMuICBUZXN0XG4gXHQgKiAwIChhbGwgZXZlbnRzIGF2YWlsYWJsZSkgYW5kIGFsbCBvbmVzIChubyBldmVudHMgYXZhaWxhYmxlKSBhcyB3ZWxsXG4tXHQgKiBhcyBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY3VlcywgZS5nLiB0byBkZXRlY3QgaWYgS1ZNIGlzIGNoZWNraW5nIHRoZVxuJiM0MztcdCAqIGFzIGFsdGVybmF0aW5nIGJpdCBzZXF1ZW5jZXMsIGUuZy4gdG8gZGV0ZWN0IGlmIEtWTSBpcyBjaGVja2luZyB0aGVcbiBcdCAqIHdyb25nIGJpdChzKS5cbiBcdCAqL1xuIFx0Y29uc3QgdTMyIHVuYXZhaWxhYmxlX21hc2tzW10gPSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2V2ZW50X2ZpbHRlcl90ZXN0LmNcbmluZGV4IDg0ZTRjNmNhNjdhM2Q2Li4yZDQwMWZmMDkxMTI0MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2V2ZW50X2ZpbHRlcl90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2V2ZW50X2ZpbHRlcl90ZXN0LmNcbkBAIC02Miw3ICYjNDM7NjIsNyBAQCBzdHJ1Y3Qge1xuIFxuIC8qXG4gICogSWYgd2UgZW5jb3VudGVyIGEgI0dQIGR1cmluZyB0aGUgZ3Vlc3QgUE1VIHNhbml0eSBjaGVjaywgdGhlbiB0aGUgZ3Vlc3Rcbi0gKiBQTVUgaXMgbm90IGZ1bmN0aW9uYWwuIEluZm9ybSB0aGUgaHlwZXJ2aXNvciB2aWEgR1VFU1RfU1lOQygwKS5cbiYjNDM7ICogUE1VIGlzIG5vdCBmdW5jdGlvbmFsLiBJbmZvcm0gdGhlIGh5cGVydmlzb3IgdmlhIEdVRVNUX1NZTkMoLUVGQVVMVCkuXG4gICovXG4gc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncylcbiB7XG5AQCAtNzMsNyAmIzQzOzczLDcgQEAgc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncylcbiAgKiBDaGVjayB0aGF0IHdlIGNhbiB3cml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZ2l2ZW4gTVNSIGFuZCByZWFkIGl0IGJhY2suXG4gICogVGhlIGNhbGxlciBzaG91bGQgcHJvdmlkZSBhIG5vbi1lbXB0eSBzZXQgb2YgYml0cyB0aGF0IGFyZSBzYWZlIHRvIGZsaXAuXG4gICpcbi0gKiBSZXR1cm4gb24gc3VjY2Vzcy4gR1VFU1RfU1lOQygwKSBvbiBlcnJvci5cbiYjNDM7ICogUmV0dXJuIG9uIHN1Y2Nlc3MsIEdVRVNUX1NZTkMoLUVJTykgb24gZXJyb3IuXG4gICovXG4gc3RhdGljIHZvaWQgY2hlY2tfbXNyKHUzMiBtc3IsIHU2NCBiaXRzX3RvX2ZsaXApXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDEwOjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29zbWV0aWMgY2hhbmdlczogdHlwbyBmaXhlcyBpbiBjb21tZW50cyBhbmQgcmVtb3ZhbCBvZiBleHRyYSBibGFuayBsaW5lcy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI2NGZiMjc0NzlhZDlhMGE3OTU1OTc4NDkwYjAxM2Y4MjM1MDMxMTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAxMDo1OToxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9wbXUuYyBiL2FyY2gveDg2L2t2bS9wbXUuYwppbmRleCBiOTJkZDJlNTgzMzU2Ny4uZTdmNjM1YjljNGQ3ODQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9wbXUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vcG11LmMKQEAgLTQwMyw3ICYjNDM7NDAzLDcgQEAgdm9pZCBwbWNfd3JpdGVfY291bnRlcihzdHJ1Y3Qga3ZtX3BtYyAqcG1jLCB1NjQgdmFsKQogCSAqIERyb3AgYW55IHVuY29uc3VtZWQgYWNjdW11bGF0ZWQgY291bnRzLCB0aGUgV1JNU1IgaXMgYSB3cml0ZSwgbm90IGEKIAkgKiByZWFkLW1vZGlmeS13cml0ZS4gIEFkanVzdCB0aGUgY291bnRlciB2YWx1ZSBzbyB0aGF0IGl0cyB2YWx1ZSBpcwogCSAqIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGNvdW50LCBhcyByZWFkaW5nIHRoZSBjdXJyZW50IGNvdW50IGZyb20KLQkgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcGdyb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0bwomIzQzOwkgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcHJvZ3JhbW1pbmcgdGhlIGV2ZW50IGluIG9yZGVyIHRvCiAJICogcmVzZXQgaXQgdG8gJiMzOTswJiMzOTsuICBOb3RlLCB0aGlzIHZlcnkgc25lYWtpbHkgb2Zmc2V0cyB0aGUgYWNjdW11bGF0ZWQKIAkgKiBlbXVsYXRlZCBjb3VudCB0b28sIGJ5IHVzaW5nIHBtY19yZWFkX2NvdW50ZXIoKSEKIAkgKi8KQEAgLTQyMiw3ICYjNDM7NDIyLDYgQEAgc3RhdGljIGludCBmaWx0ZXJfY21wKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYiwgdTY0IG1hc2spCiAJcmV0dXJuIChhICZndDsgYikgLSAoYSAmbHQ7IGIpOwogfQogCi0KIHN0YXRpYyBpbnQgZmlsdGVyX3NvcnRfY21wKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYikKIHsKIAlyZXR1cm4gZmlsdGVyX2NtcChwYSwgcGIsIChLVk1fUE1VX01BU0tFRF9FTlRSWV9FVkVOVF9TRUxFQ1QgfApAQCAtNjU4LDcgJiM0Mzs2NTcsNyBAQCB2b2lkIGt2bV9wbXVfaGFuZGxlX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkvKgogCSAqIFRoZSByZXByb2dyYW1taW5nIGJpdG1hcCBjYW4gYmUgd3JpdHRlbiBhc3luY2hyb25vdXNseSBieSBzb21ldGhpbmcKIAkgKiBvdGhlciB0aGFuIHRoZSB0YXNrIHRoYXQgaG9sZHMgdmNwdS0mZ3Q7bXV0ZXgsIHRha2UgY2FyZSB0byBjbGVhciBvbmx5Ci0JICogdGhlIGJpdHMgdGhhdCB3aWxsIGFjdHVhbGx5IHByb2Nlc3NlZC4KJiM0MzsJICogdGhlIGJpdHMgdGhhdCB3aWxsIGFjdHVhbGx5IGJlIHByb2Nlc3NlZC4KIAkgKi8KIAlCVUlMRF9CVUdfT04oc2l6ZW9mKGJpdG1hcCkgIT0gc2l6ZW9mKGF0b21pYzY0X3QpKTsKIAlhdG9taWM2NF9hbmRub3QoKihzNjQgKiliaXRtYXAsICZhbXA7cG11LSZndDtfX3JlcHJvZ3JhbV9wbWkpOwpAQCAtNjY2LDkgJiM0Mzs2NjUsOSBAQCB2b2lkIGt2bV9wbXVfaGFuZGxlX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlrdm1fZm9yX2VhY2hfcG1jKHBtdSwgcG1jLCBiaXQsIGJpdG1hcCkgewogCQkvKgogCQkgKiBJZiByZXByb2dyYW1taW5nIGZhaWxzLCBlLmcuIGR1ZSB0byBjb250ZW50aW9uLCByZS1zZXQgdGhlCi0JCSAqIHJlZ3Byb2dyYW0gYml0IHNldCwgaS5lLiBvcHBvcnR1bmlzdGljYWxseSB0cnkgYWdhaW4gb24gdGhlCi0JCSAqIG5leHQgUE1VIHJlZnJlc2guICBEb24mIzM5O3QgbWFrZSBhIG5ldyByZXF1ZXN0IGFzIGRvaW5nIHNvIGNhbgotCQkgKiBzdGFsbCB0aGUgZ3Vlc3QgaWYgcmVwcm9ncmFtbWluZyByZXBlYXRlZGx5IGZhaWxzLgomIzQzOwkJICogcmVwcm9ncmFtIGJpdCwgaS5lLiBvcHBvcnR1bmlzdGljYWxseSB0cnkgYWdhaW4gb24gdGhlIG5leHQKJiM0MzsJCSAqIFBNVSByZWZyZXNoLiAgRG9uJiMzOTt0IG1ha2UgYSBuZXcgcmVxdWVzdCBhcyBkb2luZyBzbyBjYW4gc3RhbGwKJiM0MzsJCSAqIHRoZSBndWVzdCBpZiByZXByb2dyYW1taW5nIHJlcGVhdGVkbHkgZmFpbHMuCiAJCSAqLwogCQlpZiAocmVwcm9ncmFtX2NvdW50ZXIocG1jKSkKIAkJCXNldF9iaXQocG1jLSZndDtpZHgsIHBtdS0mZ3Q7cmVwcm9ncmFtX3BtaSk7CkBAIC05NTYsNyAmIzQzOzk1NSw2IEBAIHN0YXRpYyB2b2lkIGt2bV9wbXVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWt2bV9wbXVfY2FsbChyZXNldCkodmNwdSk7CiB9CiAKLQogLyoKICAqIFJlZnJlc2ggdGhlIFBNVSBjb25maWd1cmF0aW9uIGZvciB0aGUgdkNQVSwgZS5nLiBpZiB1c2Vyc3BhY2UgY2hhbmdlcyBDUFVJRAogICogYW5kL29yIFBFUkZfQ0FQQUJJTElUSUVTLgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3BtdS5oIGIvYXJjaC94ODYva3ZtL3BtdS5oCmluZGV4IGE1ODIxZDdjODdmOTM1Li4wOTBjOWJiYjc0ZjQ4MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3BtdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9wbXUuaApAQCAtOTQsOCAmIzQzOzk0LDggQEAgc3RhdGljIGlubGluZSBib29sIGt2bV92Y3B1X2hhc19tZWRpYXRlZF9wbXUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogICogaXMgdHJhY2tlZCBpbnRlcm5hbGx5IHZpYSBpbmRleCAzMi4gIE9uIEludGVsLCAoQU1EIGRvZXNuJiMzOTt0IHN1cHBvcnQgZml4ZWQKICAqIGNvdW50ZXJzKSwgdGhpcyBtaXJyb3JzIGhvdyBmaXhlZCBjb3VudGVycyBhcmUgbWFwcGVkIHRvIFBFUkZfR0xPQkFMX0NUUkwKICAqIGFuZCBzaW1pbGFyIE1TUnMsIGkuZS4gdHJhY2tpbmcgZml4ZWQgY291bnRlcnMgYXQgYmFzZSBpbmRleCAzMiByZWR1Y2VzIHRoZQotICogYW1vdW50ZXIgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uCi0gKiBlbmFibGluZy9kaXNhYmxlL3Jlc2V0IG9wZXJhdGlvbnMuCiYjNDM7ICogYW1vdW50IG9mIGJvaWxlcnBsYXRlIG5lZWRlZCB0byBpdGVyYXRlIG92ZXIgUE1DcyAqYW5kKiBzaW1wbGlmaWVzIGNvbW1vbgomIzQzOyAqIGVuYWJsZS9kaXNhYmxlL3Jlc2V0IG9wZXJhdGlvbnMuCiAgKgogICogV0FSTklORyEgIFRoaXMgaGVscGVyIGlzIG9ubHkgZm9yIGxvb2t1cHMgdGhhdCBhcmUgaW5pdGlhdGVkIGJ5IEtWTSwgaXQgaXMKICAqIE5PVCBzYWZlIGZvciBndWVzdCBsb29rdXBzLCBlLmcuIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGlmIHBhc3NlZCBhIHJhdwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuYyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmMKaW5kZXggYTczYTk1MTVkOTZjZDUuLjcwZWY4NGFhMWEyMjNkIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmMKQEAgLTc5NSw3ICYjNDM7Nzk1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG11X3dyaXRlX2dsb2JhbF9jdHJsKHU2NCBnbG9iYWxfY3RybCkKIAl2bWNzX3dyaXRlNjQoR1VFU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMLCBnbG9iYWxfY3RybCk7CiB9CiAKLQogc3RhdGljIHZvaWQgaW50ZWxfbWVkaWF0ZWRfcG11X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCBrdm1fcG11ICpwbXUgPSB2Y3B1X3RvX3BtdSh2Y3B1KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuYwppbmRleCBkYzZhZmFjM2FhOTE5NS4uNjc3ZGMyMzUzNTQ4N2YgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9jb3VudGVyc190ZXN0LmMKQEAgLTE0Niw3ICYjNDM7MTQ2LDcgQEAgc3RhdGljIHU4IGd1ZXN0X2dldF9wbXVfdmVyc2lvbih2b2lkKQogCiAvKgogICogSWYgYW4gYXJjaGl0ZWN0dXJhbCBldmVudCBpcyBzdXBwb3J0ZWQgYW5kIGd1YXJhbnRlZWQgdG8gZ2VuZXJhdGUgYXQgbGVhc3QKLSAqIG9uZSAmIzM0O2hpdCwgYXNzZXJ0IHRoYXQgaXRzIGNvdW50IGlzIG5vbi16ZXJvLiAgSWYgYW4gZXZlbnQgaXNuJiMzOTt0IHN1cHBvcnRlZCBvcgomIzQzOyAqIG9uZSBoaXQsIGFzc2VydCB0aGF0IGl0cyBjb3VudCBpcyBub24temVyby4gIElmIGFuIGV2ZW50IGlzbiYjMzk7dCBzdXBwb3J0ZWQgb3IKICAqIHRoZSB0ZXN0IGNhbiYjMzk7dCBndWFyYW50ZWUgdGhlIGFzc29jaWF0ZWQgYWN0aW9uIHdpbGwgb2NjdXIsIHRoZW4gYWxsIGJldHMgYXJlCiAgKiBvZmYgcmVnYXJkaW5nIHRoZSBjb3VudCwgaS5lLiBubyBjaGVja3MgY2FuIGJlIGRvbmUuCiAgKgpAQCAtNTk4LDcgJiM0Mzs1OTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludGVsX2NvdW50ZXJzKHZvaWQpCiAJICogVG8ga2VlcCB0aGUgdG90YWwgcnVudGltZSByZWFzb25hYmxlLCB0ZXN0IG9ubHkgYSBoYW5kZnVsIG9mIHNlbGVjdCwKIAkgKiBzZW1pLWFyYml0cmFyeSB2YWx1ZXMgZm9yIHRoZSBtYXNrIG9mIHVuYXZhaWxhYmxlIFBNVSBldmVudHMuICBUZXN0CiAJICogMCAoYWxsIGV2ZW50cyBhdmFpbGFibGUpIGFuZCBhbGwgb25lcyAobm8gZXZlbnRzIGF2YWlsYWJsZSkgYXMgd2VsbAotCSAqIGFzIGFsdGVybmF0aW5nIGJpdCBzZXF1ZW5jdWVzLCBlLmcuIHRvIGRldGVjdCBpZiBLVk0gaXMgY2hlY2tpbmcgdGhlCiYjNDM7CSAqIGFzIGFsdGVybmF0aW5nIGJpdCBzZXF1ZW5jZXMsIGUuZy4gdG8gZGV0ZWN0IGlmIEtWTSBpcyBjaGVja2luZyB0aGUKIAkgKiB3cm9uZyBiaXQocykuCiAJICovCiAJY29uc3QgdTMyIHVuYXZhaWxhYmxlX21hc2tzW10gPSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9ldmVudF9maWx0ZXJfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuYwppbmRleCA4NGU0YzZjYTY3YTNkNi4uMmQ0MDFmZjA5MTEyNDAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2V2ZW50X2ZpbHRlcl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuYwpAQCAtNjIsNyAmIzQzOzYyLDcgQEAgc3RydWN0IHsKIAogLyoKICAqIElmIHdlIGVuY291bnRlciBhICNHUCBkdXJpbmcgdGhlIGd1ZXN0IFBNVSBzYW5pdHkgY2hlY2ssIHRoZW4gdGhlIGd1ZXN0Ci0gKiBQTVUgaXMgbm90IGZ1bmN0aW9uYWwuIEluZm9ybSB0aGUgaHlwZXJ2aXNvciB2aWEgR1VFU1RfU1lOQygwKS4KJiM0MzsgKiBQTVUgaXMgbm90IGZ1bmN0aW9uYWwuIEluZm9ybSB0aGUgaHlwZXJ2aXNvciB2aWEgR1VFU1RfU1lOQygtRUZBVUxUKS4KICAqLwogc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncykKIHsKQEAgLTczLDcgJiM0Mzs3Myw3IEBAIHN0YXRpYyB2b2lkIGd1ZXN0X2dwX2hhbmRsZXIoc3RydWN0IGV4X3JlZ3MgKnJlZ3MpCiAgKiBDaGVjayB0aGF0IHdlIGNhbiB3cml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZ2l2ZW4gTVNSIGFuZCByZWFkIGl0IGJhY2suCiAgKiBUaGUgY2FsbGVyIHNob3VsZCBwcm92aWRlIGEgbm9uLWVtcHR5IHNldCBvZiBiaXRzIHRoYXQgYXJlIHNhZmUgdG8gZmxpcC4KICAqCi0gKiBSZXR1cm4gb24gc3VjY2Vzcy4gR1VFU1RfU1lOQygwKSBvbiBlcnJvci4KJiM0MzsgKiBSZXR1cm4gb24gc3VjY2VzcywgR1VFU1RfU1lOQygtRUlPKSBvbiBlcnJvci4KICAqLwogc3RhdGljIHZvaWQgY2hlY2tfbXNyKHUzMiBtc3IsIHU2NCBiaXRzX3RvX2ZsaXApCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDEwOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTEKCQkJCQkJCW91dHB1dDogNTgKCQkJCQkJCXRob3VnaHRzOiAyNjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvc21ldGljIENsZWFudXAgLSBObyBGdW5jdGlvbmFsIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBqdXN0IHJldmlld2VkIGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHNldmVyYWwgZmlsZXMgd2l0aGluIHRoZSBLVk0veDg2IFBNVSBjb2RlLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCYjMzk7cyAqZW50aXJlbHkqIGNvc21ldGljLiBXZSYjMzk7cmUgbG9va2luZyBhdCB1cGRhdGVzIGluIGBhcmNoL3g4Ni9rdm0vcG11LmNgLCBgYXJjaC94ODYva3ZtL3BtdS5oYCwgYGFyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmNgLCBhbmQgc29tZSBvZiB0aGUgc2VsZi10ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9gLgoKU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlOgoKKiAgICoqVHlwb3M6KiogVGhlcmUmIzM5O3MgYSBzdHJpbmcgb2YgdHlwbyBjb3JyZWN0aW9uczogJiMzNDtyZXBncm9ncmFtbWluZyYjMzQ7IC0mZ3Q7ICYjMzQ7cmVwcm9ncmFtbWluZyYjMzQ7LCAmIzM0O2FjdHVhbGx5IHByb2Nlc3NlZCYjMzQ7IC0mZ3Q7ICYjMzQ7YWN0dWFsbHkgYmUgcHJvY2Vzc2VkJiMzNDssICYjMzQ7cmVncHJvZ3JhbSYjMzQ7IC0mZ3Q7ICYjMzQ7cmVwcm9ncmFtJiMzNDssICYjMzQ7YW1vdW50ZXImIzM0OyAtJmd0OyAmIzM0O2Ftb3VudCYjMzQ7LCAmIzM0O2VuYWJsaW5nL2Rpc2FibGUvcmVzZXQmIzM0OyAtJmd0OyAmIzM0O2VuYWJsZS9kaXNhYmxlL3Jlc2V0JiMzNDssIGAmIzM0O2hpdGAgLSZndDsgYCYjMzQ7aGl0JiMzNDtgIGFuZCAmIzM0O3NlcXVlbmN1ZXMmIzM0OyAtJmd0OyAmIzM0O3NlcXVlbmNlcyYjMzQ7LgoqICAgKipXaGl0ZXNwYWNlOioqIEV4dHJhIGJsYW5rIGxpbmVzIGFyZSBiZWluZyByZW1vdmVkIGluIGEgZmV3IHBsYWNlcy4KKiAgICoqQ29tbWVudHM6KiogIFRoZSBjb21tZW50cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY2AgYXJlIGJlaW5nIHVwZGF0ZWQgZm9yIGVycm9yIGNvbmRpdGlvbnM6IGBHVUVTVF9TWU5DKDApYCAtJmd0OyBgR1VFU1RfU1lOQygtRUZBVUxUKWAgYW5kIGBHVUVTVF9TWU5DKDApYCAtJmd0OyBgR1VFU1RfU1lOQygtRUlPKWAuCgpJJiMzOTt2ZSBjYXJlZnVsbHkgZXhhbWluZWQgdGhlIGRpZmYgYW5kLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgKm5vbmUqIG9mIHRoZXNlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgUE1VIGNvZGUuIEl0JiMzOTtzIGFsbCBhYm91dCBtYWtpbmcgdGhlIGNvZGUgY2xlYW5lciBhbmQgbW9yZSByZWFkYWJsZSwgd2hpY2ggaXMgYWx3YXlzIHdlbGNvbWUsIGJ1dCBpdCBkb2VzbiYjMzk7dCByZXByZXNlbnQgYSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHBlcmZvcm1hbmNlLCBvciBzZWN1cml0eS4gVGhlcmVmb3JlLCBpbiBteSBwcm9mZXNzaW9uYWwgb3BpbmlvbiBhcyBhbiBleHBlcnQsIHRoZXJlIGlzICpubyogcmVhc29uIHRvIGNvbnNpZGVyIHRoaXMgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTA6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvc21ldGljIGNoYW5nZXM6IHR5cG8gZml4ZXMgaW4gY29tbWVudHMgYW5kIHJlbW92YWwgb2YgZXh0cmEgYmxhbmsgbGluZXMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvc21ldGljIGNoYW5nZXM6IHR5cG8gZml4ZXMgaW4gY29tbWVudHMgYW5kIHJlbW92YWwgb2YgZXh0cmEgYmxhbmsgbGluZXMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTA6NTk6MTYuNTcwNzc3NzQ2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNDk1ODYxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29zbWV0aWMgY2hhbmdlczogdHlwbyBmaXhlcyBpbiBjb21tZW50cyBhbmQgcmVtb3ZhbCBvZiBleHRyYSBibGFuayBsaW5lcy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDEwOjU5OjE2LjU3MDc4MTExNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwMDMzNjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjY0ZmIyNzQ3OWFkOWEwYTc5NTU5Nzg0OTBiMDEzZjgyMzUwMzExOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAxMDo1OToxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcG11LmMgYi9hcmNoL3g4Ni9rdm0vcG11LmNcXG5pbmRleCBiOTJkZDJlNTgzMzU2Ny4uZTdmNjM1YjljNGQ3ODQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3BtdS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3BtdS5jXFxuQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIHBtY193cml0ZV9jb3VudGVyKHN0cnVjdCBrdm1fcG1jICpwbWMsIHU2NCB2YWwpXFxuIFxcdCAqIERyb3AgYW55IHVuY29uc3VtZWQgYWNjdW11bGF0ZWQgY291bnRzLCB0aGUgV1JNU1IgaXMgYSB3cml0ZSwgbm90IGFcXG4gXFx0ICogcmVhZC1tb2RpZnktd3JpdGUuICBBZGp1c3QgdGhlIGNvdW50ZXIgdmFsdWUgc28gdGhhdCBpdHMgdmFsdWUgaXNcXG4gXFx0ICogcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgY291bnQsIGFzIHJlYWRpbmcgdGhlIGN1cnJlbnQgY291bnQgZnJvbVxcbi1cXHQgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcGdyb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0b1xcbitcXHQgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcHJvZ3JhbW1pbmcgdGhlIGV2ZW50IGluIG9yZGVyIHRvXFxuIFxcdCAqIHJlc2V0IGl0IHRvICcwJy4gIE5vdGUsIHRoaXMgdmVyeSBzbmVha2lseSBvZmZzZXRzIHRoZSBhY2N1bXVsYXRlZFxcbiBcXHQgKiBlbXVsYXRlZCBjb3VudCB0b28sIGJ5IHVzaW5nIHBtY19yZWFkX2NvdW50ZXIoKSFcXG4gXFx0ICovXFxuQEAgLTQyMiw3ICs0MjIsNiBAQCBzdGF0aWMgaW50IGZpbHRlcl9jbXAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiLCB1NjQgbWFzaylcXG4gXFx0cmV0dXJuIChhIFxcdTAwM2UgYikgLSAoYSBcXHUwMDNjIGIpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIGludCBmaWx0ZXJfc29ydF9jbXAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiKVxcbiB7XFxuIFxcdHJldHVybiBmaWx0ZXJfY21wKHBhLCBwYiwgKEtWTV9QTVVfTUFTS0VEX0VOVFJZX0VWRU5UX1NFTEVDVCB8XFxuQEAgLTY1OCw3ICs2NTcsNyBAQCB2b2lkIGt2bV9wbXVfaGFuZGxlX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0LypcXG4gXFx0ICogVGhlIHJlcHJvZ3JhbW1pbmcgYml0bWFwIGNhbiBiZSB3cml0dGVuIGFzeW5jaHJvbm91c2x5IGJ5IHNvbWV0aGluZ1xcbiBcXHQgKiBvdGhlciB0aGFuIHRoZSB0YXNrIHRoYXQgaG9sZHMgdmNwdS1cXHUwMDNlbXV0ZXgsIHRha2UgY2FyZSB0byBjbGVhciBvbmx5XFxuLVxcdCAqIHRoZSBiaXRzIHRoYXQgd2lsbCBhY3R1YWxseSBwcm9jZXNzZWQuXFxuK1xcdCAqIHRoZSBiaXRzIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBwcm9jZXNzZWQuXFxuIFxcdCAqL1xcbiBcXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGJpdG1hcCkgIT0gc2l6ZW9mKGF0b21pYzY0X3QpKTtcXG4gXFx0YXRvbWljNjRfYW5kbm90KCooczY0ICopYml0bWFwLCBcXHUwMDI2cG11LVxcdTAwM2VfX3JlcHJvZ3JhbV9wbWkpO1xcbkBAIC02NjYsOSArNjY1LDkgQEAgdm9pZCBrdm1fcG11X2hhbmRsZV9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGt2bV9mb3JfZWFjaF9wbWMocG11LCBwbWMsIGJpdCwgYml0bWFwKSB7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIElmIHJlcHJvZ3JhbW1pbmcgZmFpbHMsIGUuZy4gZHVlIHRvIGNvbnRlbnRpb24sIHJlLXNldCB0aGVcXG4tXFx0XFx0ICogcmVncHJvZ3JhbSBiaXQgc2V0LCBpLmUuIG9wcG9ydHVuaXN0aWNhbGx5IHRyeSBhZ2FpbiBvbiB0aGVcXG4tXFx0XFx0ICogbmV4dCBQTVUgcmVmcmVzaC4gIERvbid0IG1ha2UgYSBuZXcgcmVxdWVzdCBhcyBkb2luZyBzbyBjYW5cXG4tXFx0XFx0ICogc3RhbGwgdGhlIGd1ZXN0IGlmIHJlcHJvZ3JhbW1pbmcgcmVwZWF0ZWRseSBmYWlscy5cXG4rXFx0XFx0ICogcmVwcm9ncmFtIGJpdCwgaS5lLiBvcHBvcnR1bmlzdGljYWxseSB0cnkgYWdhaW4gb24gdGhlIG5leHRcXG4rXFx0XFx0ICogUE1VIHJlZnJlc2guICBEb24ndCBtYWtlIGEgbmV3IHJlcXVlc3QgYXMgZG9pbmcgc28gY2FuIHN0YWxsXFxuK1xcdFxcdCAqIHRoZSBndWVzdCBpZiByZXByb2dyYW1taW5nIHJlcGVhdGVkbHkgZmFpbHMuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAocmVwcm9ncmFtX2NvdW50ZXIocG1jKSlcXG4gXFx0XFx0XFx0c2V0X2JpdChwbWMtXFx1MDAzZWlkeCwgcG11LVxcdTAwM2VyZXByb2dyYW1fcG1pKTtcXG5AQCAtOTU2LDcgKzk1NSw2IEBAIHN0YXRpYyB2b2lkIGt2bV9wbXVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRrdm1fcG11X2NhbGwocmVzZXQpKHZjcHUpO1xcbiB9XFxuIFxcbi1cXG4gLypcXG4gICogUmVmcmVzaCB0aGUgUE1VIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB2Q1BVLCBlLmcuIGlmIHVzZXJzcGFjZSBjaGFuZ2VzIENQVUlEXFxuICAqIGFuZC9vciBQRVJGX0NBUEFCSUxJVElFUy5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3BtdS5oIGIvYXJjaC94ODYva3ZtL3BtdS5oXFxuaW5kZXggYTU4MjFkN2M4N2Y5MzUuLjA5MGM5YmJiNzRmNDgzIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9wbXUuaFxcbisrKyBiL2FyY2gveDg2L2t2bS9wbXUuaFxcbkBAIC05NCw4ICs5NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fdmNwdV9oYXNfbWVkaWF0ZWRfcG11KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gICogaXMgdHJhY2tlZCBpbnRlcm5hbGx5IHZpYSBpbmRleCAzMi4gIE9uIEludGVsLCAoQU1EIGRvZXNuJ3Qgc3VwcG9ydCBmaXhlZFxcbiAgKiBjb3VudGVycyksIHRoaXMgbWlycm9ycyBob3cgZml4ZWQgY291bnRlcnMgYXJlIG1hcHBlZCB0byBQRVJGX0dMT0JBTF9DVFJMXFxuICAqIGFuZCBzaW1pbGFyIE1TUnMsIGkuZS4gdHJhY2tpbmcgZml4ZWQgY291bnRlcnMgYXQgYmFzZSBpbmRleCAzMiByZWR1Y2VzIHRoZVxcbi0gKiBhbW91bnRlciBvZiBib2lsZXJwbGF0ZSBuZWVkZWQgdG8gaXRlcmF0ZSBvdmVyIFBNQ3MgKmFuZCogc2ltcGxpZmllcyBjb21tb25cXG4tICogZW5hYmxpbmcvZGlzYWJsZS9yZXNldCBvcGVyYXRpb25zLlxcbisgKiBhbW91bnQgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uXFxuKyAqIGVuYWJsZS9kaXNhYmxlL3Jlc2V0IG9wZXJhdGlvbnMuXFxuICAqXFxuICAqIFdBUk5JTkchICBUaGlzIGhlbHBlciBpcyBvbmx5IGZvciBsb29rdXBzIHRoYXQgYXJlIGluaXRpYXRlZCBieSBLVk0sIGl0IGlzXFxuICAqIE5PVCBzYWZlIGZvciBndWVzdCBsb29rdXBzLCBlLmcuIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGlmIHBhc3NlZCBhIHJhd1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jIGIvYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuY1xcbmluZGV4IGE3M2E5NTE1ZDk2Y2Q1Li43MGVmODRhYTFhMjIzZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuY1xcbkBAIC03OTUsNyArNzk1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG11X3dyaXRlX2dsb2JhbF9jdHJsKHU2NCBnbG9iYWxfY3RybClcXG4gXFx0dm1jc193cml0ZTY0KEdVRVNUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTCwgZ2xvYmFsX2N0cmwpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgaW50ZWxfbWVkaWF0ZWRfcG11X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fcG11ICpwbXUgPSB2Y3B1X3RvX3BtdSh2Y3B1KTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfY291bnRlcnNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfY291bnRlcnNfdGVzdC5jXFxuaW5kZXggZGM2YWZhYzNhYTkxOTUuLjY3N2RjMjM1MzU0ODdmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuY1xcbkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIHU4IGd1ZXN0X2dldF9wbXVfdmVyc2lvbih2b2lkKVxcbiBcXG4gLypcXG4gICogSWYgYW4gYXJjaGl0ZWN0dXJhbCBldmVudCBpcyBzdXBwb3J0ZWQgYW5kIGd1YXJhbnRlZWQgdG8gZ2VuZXJhdGUgYXQgbGVhc3RcXG4tICogb25lIFxcXCJoaXQsIGFzc2VydCB0aGF0IGl0cyBjb3VudCBpcyBub24temVyby4gIElmIGFuIGV2ZW50IGlzbid0IHN1cHBvcnRlZCBvclxcbisgKiBvbmUgaGl0LCBhc3NlcnQgdGhhdCBpdHMgY291bnQgaXMgbm9uLXplcm8uICBJZiBhbiBldmVudCBpc24ndCBzdXBwb3J0ZWQgb3JcXG4gICogdGhlIHRlc3QgY2FuJ3QgZ3VhcmFudGVlIHRoZSBhc3NvY2lhdGVkIGFjdGlvbiB3aWxsIG9jY3VyLCB0aGVuIGFsbCBiZXRzIGFyZVxcbiAgKiBvZmYgcmVnYXJkaW5nIHRoZSBjb3VudCwgaS5lLiBubyBjaGVja3MgY2FuIGJlIGRvbmUuXFxuICAqXFxuQEAgLTU5OCw3ICs1OTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludGVsX2NvdW50ZXJzKHZvaWQpXFxuIFxcdCAqIFRvIGtlZXAgdGhlIHRvdGFsIHJ1bnRpbWUgcmVhc29uYWJsZSwgdGVzdCBvbmx5IGEgaGFuZGZ1bCBvZiBzZWxlY3QsXFxuIFxcdCAqIHNlbWktYXJiaXRyYXJ5IHZhbHVlcyBmb3IgdGhlIG1hc2sgb2YgdW5hdmFpbGFibGUgUE1VIGV2ZW50cy4gIFRlc3RcXG4gXFx0ICogMCAoYWxsIGV2ZW50cyBhdmFpbGFibGUpIGFuZCBhbGwgb25lcyAobm8gZXZlbnRzIGF2YWlsYWJsZSkgYXMgd2VsbFxcbi1cXHQgKiBhcyBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY3VlcywgZS5nLiB0byBkZXRlY3QgaWYgS1ZNIGlzIGNoZWNraW5nIHRoZVxcbitcXHQgKiBhcyBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY2VzLCBlLmcuIHRvIGRldGVjdCBpZiBLVk0gaXMgY2hlY2tpbmcgdGhlXFxuIFxcdCAqIHdyb25nIGJpdChzKS5cXG4gXFx0ICovXFxuIFxcdGNvbnN0IHUzMiB1bmF2YWlsYWJsZV9tYXNrc1tdID0ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9ldmVudF9maWx0ZXJfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xcbmluZGV4IDg0ZTRjNmNhNjdhM2Q2Li4yZDQwMWZmMDkxMTI0MCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9ldmVudF9maWx0ZXJfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xcbkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCB7XFxuIFxcbiAvKlxcbiAgKiBJZiB3ZSBlbmNvdW50ZXIgYSAjR1AgZHVyaW5nIHRoZSBndWVzdCBQTVUgc2FuaXR5IGNoZWNrLCB0aGVuIHRoZSBndWVzdFxcbi0gKiBQTVUgaXMgbm90IGZ1bmN0aW9uYWwuIEluZm9ybSB0aGUgaHlwZXJ2aXNvciB2aWEgR1VFU1RfU1lOQygwKS5cXG4rICogUE1VIGlzIG5vdCBmdW5jdGlvbmFsLiBJbmZvcm0gdGhlIGh5cGVydmlzb3IgdmlhIEdVRVNUX1NZTkMoLUVGQVVMVCkuXFxuICAqL1xcbiBzdGF0aWMgdm9pZCBndWVzdF9ncF9oYW5kbGVyKHN0cnVjdCBleF9yZWdzICpyZWdzKVxcbiB7XFxuQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncylcXG4gICogQ2hlY2sgdGhhdCB3ZSBjYW4gd3JpdGUgYSBuZXcgdmFsdWUgdG8gdGhlIGdpdmVuIE1TUiBhbmQgcmVhZCBpdCBiYWNrLlxcbiAgKiBUaGUgY2FsbGVyIHNob3VsZCBwcm92aWRlIGEgbm9uLWVtcHR5IHNldCBvZiBiaXRzIHRoYXQgYXJlIHNhZmUgdG8gZmxpcC5cXG4gICpcXG4tICogUmV0dXJuIG9uIHN1Y2Nlc3MuIEdVRVNUX1NZTkMoMCkgb24gZXJyb3IuXFxuKyAqIFJldHVybiBvbiBzdWNjZXNzLCBHVUVTVF9TWU5DKC1FSU8pIG9uIGVycm9yLlxcbiAgKi9cXG4gc3RhdGljIHZvaWQgY2hlY2tfbXNyKHUzMiBtc3IsIHU2NCBiaXRzX3RvX2ZsaXApXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTA6NTk6MTcuMDQxNDk2Nzk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDU3ODg2MTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBjb250YWlucyBjb3NtZXRpYyBjaGFuZ2VzOiB0eXBvIGZpeGVzIGluIGNvbW1lbnRzIGFuZCByZW1vdmFsIG9mIGV4dHJhIGJsYW5rIGxpbmVzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNjRmYjI3NDc5YWQ5YTBhNzk1NTk3ODQ5MGIwMTNmODIzNTAzMTE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMTA6NTk6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcG11LmMgYi9hcmNoL3g4Ni9rdm0vcG11LmNcbmluZGV4IGI5MmRkMmU1ODMzNTY3Li5lN2Y2MzViOWM0ZDc4NCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9wbXUuY1xuKysrIGIvYXJjaC94ODYva3ZtL3BtdS5jXG5AQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgcG1jX3dyaXRlX2NvdW50ZXIoc3RydWN0IGt2bV9wbWMgKnBtYywgdTY0IHZhbClcbiBcdCAqIERyb3AgYW55IHVuY29uc3VtZWQgYWNjdW11bGF0ZWQgY291bnRzLCB0aGUgV1JNU1IgaXMgYSB3cml0ZSwgbm90IGFcbiBcdCAqIHJlYWQtbW9kaWZ5LXdyaXRlLiAgQWRqdXN0IHRoZSBjb3VudGVyIHZhbHVlIHNvIHRoYXQgaXRzIHZhbHVlIGlzXG4gXHQgKiByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBjb3VudCwgYXMgcmVhZGluZyB0aGUgY3VycmVudCBjb3VudCBmcm9tXG4tXHQgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcGdyb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0b1xuK1x0ICogcGVyZiBpcyBmYXN0ZXIgdGhhbiBwYXVzaW5nIGFuZCByZXByb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0b1xuIFx0ICogcmVzZXQgaXQgdG8gJzAnLiAgTm90ZSwgdGhpcyB2ZXJ5IHNuZWFraWx5IG9mZnNldHMgdGhlIGFjY3VtdWxhdGVkXG4gXHQgKiBlbXVsYXRlZCBjb3VudCB0b28sIGJ5IHVzaW5nIHBtY19yZWFkX2NvdW50ZXIoKSFcbiBcdCAqL1xuQEAgLTQyMiw3ICs0MjIsNiBAQCBzdGF0aWMgaW50IGZpbHRlcl9jbXAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiLCB1NjQgbWFzaylcbiBcdHJldHVybiAoYSBcdTAwM2UgYikgLSAoYSBcdTAwM2MgYik7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgZmlsdGVyX3NvcnRfY21wKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYilcbiB7XG4gXHRyZXR1cm4gZmlsdGVyX2NtcChwYSwgcGIsIChLVk1fUE1VX01BU0tFRF9FTlRSWV9FVkVOVF9TRUxFQ1QgfFxuQEAgLTY1OCw3ICs2NTcsNyBAQCB2b2lkIGt2bV9wbXVfaGFuZGxlX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdC8qXG4gXHQgKiBUaGUgcmVwcm9ncmFtbWluZyBiaXRtYXAgY2FuIGJlIHdyaXR0ZW4gYXN5bmNocm9ub3VzbHkgYnkgc29tZXRoaW5nXG4gXHQgKiBvdGhlciB0aGFuIHRoZSB0YXNrIHRoYXQgaG9sZHMgdmNwdS1cdTAwM2VtdXRleCwgdGFrZSBjYXJlIHRvIGNsZWFyIG9ubHlcbi1cdCAqIHRoZSBiaXRzIHRoYXQgd2lsbCBhY3R1YWxseSBwcm9jZXNzZWQuXG4rXHQgKiB0aGUgYml0cyB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgcHJvY2Vzc2VkLlxuIFx0ICovXG4gXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGJpdG1hcCkgIT0gc2l6ZW9mKGF0b21pYzY0X3QpKTtcbiBcdGF0b21pYzY0X2FuZG5vdCgqKHM2NCAqKWJpdG1hcCwgXHUwMDI2cG11LVx1MDAzZV9fcmVwcm9ncmFtX3BtaSk7XG5AQCAtNjY2LDkgKzY2NSw5IEBAIHZvaWQga3ZtX3BtdV9oYW5kbGVfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0a3ZtX2Zvcl9lYWNoX3BtYyhwbXUsIHBtYywgYml0LCBiaXRtYXApIHtcbiBcdFx0LypcbiBcdFx0ICogSWYgcmVwcm9ncmFtbWluZyBmYWlscywgZS5nLiBkdWUgdG8gY29udGVudGlvbiwgcmUtc2V0IHRoZVxuLVx0XHQgKiByZWdwcm9ncmFtIGJpdCBzZXQsIGkuZS4gb3Bwb3J0dW5pc3RpY2FsbHkgdHJ5IGFnYWluIG9uIHRoZVxuLVx0XHQgKiBuZXh0IFBNVSByZWZyZXNoLiAgRG9uJ3QgbWFrZSBhIG5ldyByZXF1ZXN0IGFzIGRvaW5nIHNvIGNhblxuLVx0XHQgKiBzdGFsbCB0aGUgZ3Vlc3QgaWYgcmVwcm9ncmFtbWluZyByZXBlYXRlZGx5IGZhaWxzLlxuK1x0XHQgKiByZXByb2dyYW0gYml0LCBpLmUuIG9wcG9ydHVuaXN0aWNhbGx5IHRyeSBhZ2FpbiBvbiB0aGUgbmV4dFxuK1x0XHQgKiBQTVUgcmVmcmVzaC4gIERvbid0IG1ha2UgYSBuZXcgcmVxdWVzdCBhcyBkb2luZyBzbyBjYW4gc3RhbGxcbitcdFx0ICogdGhlIGd1ZXN0IGlmIHJlcHJvZ3JhbW1pbmcgcmVwZWF0ZWRseSBmYWlscy5cbiBcdFx0ICovXG4gXHRcdGlmIChyZXByb2dyYW1fY291bnRlcihwbWMpKVxuIFx0XHRcdHNldF9iaXQocG1jLVx1MDAzZWlkeCwgcG11LVx1MDAzZXJlcHJvZ3JhbV9wbWkpO1xuQEAgLTk1Niw3ICs5NTUsNiBAQCBzdGF0aWMgdm9pZCBrdm1fcG11X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGt2bV9wbXVfY2FsbChyZXNldCkodmNwdSk7XG4gfVxuIFxuLVxuIC8qXG4gICogUmVmcmVzaCB0aGUgUE1VIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB2Q1BVLCBlLmcuIGlmIHVzZXJzcGFjZSBjaGFuZ2VzIENQVUlEXG4gICogYW5kL29yIFBFUkZfQ0FQQUJJTElUSUVTLlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9wbXUuaCBiL2FyY2gveDg2L2t2bS9wbXUuaFxuaW5kZXggYTU4MjFkN2M4N2Y5MzUuLjA5MGM5YmJiNzRmNDgzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3BtdS5oXG4rKysgYi9hcmNoL3g4Ni9rdm0vcG11LmhcbkBAIC05NCw4ICs5NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fdmNwdV9oYXNfbWVkaWF0ZWRfcG11KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiAgKiBpcyB0cmFja2VkIGludGVybmFsbHkgdmlhIGluZGV4IDMyLiAgT24gSW50ZWwsIChBTUQgZG9lc24ndCBzdXBwb3J0IGZpeGVkXG4gICogY291bnRlcnMpLCB0aGlzIG1pcnJvcnMgaG93IGZpeGVkIGNvdW50ZXJzIGFyZSBtYXBwZWQgdG8gUEVSRl9HTE9CQUxfQ1RSTFxuICAqIGFuZCBzaW1pbGFyIE1TUnMsIGkuZS4gdHJhY2tpbmcgZml4ZWQgY291bnRlcnMgYXQgYmFzZSBpbmRleCAzMiByZWR1Y2VzIHRoZVxuLSAqIGFtb3VudGVyIG9mIGJvaWxlcnBsYXRlIG5lZWRlZCB0byBpdGVyYXRlIG92ZXIgUE1DcyAqYW5kKiBzaW1wbGlmaWVzIGNvbW1vblxuLSAqIGVuYWJsaW5nL2Rpc2FibGUvcmVzZXQgb3BlcmF0aW9ucy5cbisgKiBhbW91bnQgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uXG4rICogZW5hYmxlL2Rpc2FibGUvcmVzZXQgb3BlcmF0aW9ucy5cbiAgKlxuICAqIFdBUk5JTkchICBUaGlzIGhlbHBlciBpcyBvbmx5IGZvciBsb29rdXBzIHRoYXQgYXJlIGluaXRpYXRlZCBieSBLVk0sIGl0IGlzXG4gICogTk9UIHNhZmUgZm9yIGd1ZXN0IGxvb2t1cHMsIGUuZy4gd2lsbCBkbyB0aGUgd3JvbmcgdGhpbmcgaWYgcGFzc2VkIGEgcmF3XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuYyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmNcbmluZGV4IGE3M2E5NTE1ZDk2Y2Q1Li43MGVmODRhYTFhMjIzZCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmNcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmNcbkBAIC03OTUsNyArNzk1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG11X3dyaXRlX2dsb2JhbF9jdHJsKHU2NCBnbG9iYWxfY3RybClcbiBcdHZtY3Nfd3JpdGU2NChHVUVTVF9JQTMyX1BFUkZfR0xPQkFMX0NUUkwsIGdsb2JhbF9jdHJsKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgaW50ZWxfbWVkaWF0ZWRfcG11X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBrdm1fcG11ICpwbXUgPSB2Y3B1X3RvX3BtdSh2Y3B1KTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9jb3VudGVyc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9jb3VudGVyc190ZXN0LmNcbmluZGV4IGRjNmFmYWMzYWE5MTk1Li42NzdkYzIzNTM1NDg3ZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfY291bnRlcnNfdGVzdC5jXG5AQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB1OCBndWVzdF9nZXRfcG11X3ZlcnNpb24odm9pZClcbiBcbiAvKlxuICAqIElmIGFuIGFyY2hpdGVjdHVyYWwgZXZlbnQgaXMgc3VwcG9ydGVkIGFuZCBndWFyYW50ZWVkIHRvIGdlbmVyYXRlIGF0IGxlYXN0XG4tICogb25lIFwiaGl0LCBhc3NlcnQgdGhhdCBpdHMgY291bnQgaXMgbm9uLXplcm8uICBJZiBhbiBldmVudCBpc24ndCBzdXBwb3J0ZWQgb3JcbisgKiBvbmUgaGl0LCBhc3NlcnQgdGhhdCBpdHMgY291bnQgaXMgbm9uLXplcm8uICBJZiBhbiBldmVudCBpc24ndCBzdXBwb3J0ZWQgb3JcbiAgKiB0aGUgdGVzdCBjYW4ndCBndWFyYW50ZWUgdGhlIGFzc29jaWF0ZWQgYWN0aW9uIHdpbGwgb2NjdXIsIHRoZW4gYWxsIGJldHMgYXJlXG4gICogb2ZmIHJlZ2FyZGluZyB0aGUgY291bnQsIGkuZS4gbm8gY2hlY2tzIGNhbiBiZSBkb25lLlxuICAqXG5AQCAtNTk4LDcgKzU5OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW50ZWxfY291bnRlcnModm9pZClcbiBcdCAqIFRvIGtlZXAgdGhlIHRvdGFsIHJ1bnRpbWUgcmVhc29uYWJsZSwgdGVzdCBvbmx5IGEgaGFuZGZ1bCBvZiBzZWxlY3QsXG4gXHQgKiBzZW1pLWFyYml0cmFyeSB2YWx1ZXMgZm9yIHRoZSBtYXNrIG9mIHVuYXZhaWxhYmxlIFBNVSBldmVudHMuICBUZXN0XG4gXHQgKiAwIChhbGwgZXZlbnRzIGF2YWlsYWJsZSkgYW5kIGFsbCBvbmVzIChubyBldmVudHMgYXZhaWxhYmxlKSBhcyB3ZWxsXG4tXHQgKiBhcyBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY3VlcywgZS5nLiB0byBkZXRlY3QgaWYgS1ZNIGlzIGNoZWNraW5nIHRoZVxuK1x0ICogYXMgYWx0ZXJuYXRpbmcgYml0IHNlcXVlbmNlcywgZS5nLiB0byBkZXRlY3QgaWYgS1ZNIGlzIGNoZWNraW5nIHRoZVxuIFx0ICogd3JvbmcgYml0KHMpLlxuIFx0ICovXG4gXHRjb25zdCB1MzIgdW5hdmFpbGFibGVfbWFza3NbXSA9IHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9ldmVudF9maWx0ZXJfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xuaW5kZXggODRlNGM2Y2E2N2EzZDYuLjJkNDAxZmYwOTExMjQwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xuQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IHtcbiBcbiAvKlxuICAqIElmIHdlIGVuY291bnRlciBhICNHUCBkdXJpbmcgdGhlIGd1ZXN0IFBNVSBzYW5pdHkgY2hlY2ssIHRoZW4gdGhlIGd1ZXN0XG4tICogUE1VIGlzIG5vdCBmdW5jdGlvbmFsLiBJbmZvcm0gdGhlIGh5cGVydmlzb3IgdmlhIEdVRVNUX1NZTkMoMCkuXG4rICogUE1VIGlzIG5vdCBmdW5jdGlvbmFsLiBJbmZvcm0gdGhlIGh5cGVydmlzb3IgdmlhIEdVRVNUX1NZTkMoLUVGQVVMVCkuXG4gICovXG4gc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncylcbiB7XG5AQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9ncF9oYW5kbGVyKHN0cnVjdCBleF9yZWdzICpyZWdzKVxuICAqIENoZWNrIHRoYXQgd2UgY2FuIHdyaXRlIGEgbmV3IHZhbHVlIHRvIHRoZSBnaXZlbiBNU1IgYW5kIHJlYWQgaXQgYmFjay5cbiAgKiBUaGUgY2FsbGVyIHNob3VsZCBwcm92aWRlIGEgbm9uLWVtcHR5IHNldCBvZiBiaXRzIHRoYXQgYXJlIHNhZmUgdG8gZmxpcC5cbiAgKlxuLSAqIFJldHVybiBvbiBzdWNjZXNzLiBHVUVTVF9TWU5DKDApIG9uIGVycm9yLlxuKyAqIFJldHVybiBvbiBzdWNjZXNzLCBHVUVTVF9TWU5DKC1FSU8pIG9uIGVycm9yLlxuICAqL1xuIHN0YXRpYyB2b2lkIGNoZWNrX21zcih1MzIgbXNyLCB1NjQgYml0c190b19mbGlwKVxuIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDEwOjU5OjE3LjA0MTQ5ODA1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNTc4ODM3MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvc21ldGljIENsZWFudXAgLSBObyBGdW5jdGlvbmFsIEltcGFjdCoqXG5cbk9rYXksIHNvIEkndmUganVzdCByZXZpZXdlZCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBzZXZlcmFsIGZpbGVzIHdpdGhpbiB0aGUgS1ZNL3g4NiBQTVUgY29kZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQncyAqZW50aXJlbHkqIGNvc21ldGljLiBXZSdyZSBsb29raW5nIGF0IHVwZGF0ZXMgaW4gYGFyY2gveDg2L2t2bS9wbXUuY2AsIGBhcmNoL3g4Ni9rdm0vcG11LmhgLCBgYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuY2AsIGFuZCBzb21lIG9mIHRoZSBzZWxmLXRlc3RzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2AuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZTpcblxuKiAgICoqVHlwb3M6KiogVGhlcmUncyBhIHN0cmluZyBvZiB0eXBvIGNvcnJlY3Rpb25zOiBcInJlcGdyb2dyYW1taW5nXCIgLVx1MDAzZSBcInJlcHJvZ3JhbW1pbmdcIiwgXCJhY3R1YWxseSBwcm9jZXNzZWRcIiAtXHUwMDNlIFwiYWN0dWFsbHkgYmUgcHJvY2Vzc2VkXCIsIFwicmVncHJvZ3JhbVwiIC1cdTAwM2UgXCJyZXByb2dyYW1cIiwgXCJhbW91bnRlclwiIC1cdTAwM2UgXCJhbW91bnRcIiwgXCJlbmFibGluZy9kaXNhYmxlL3Jlc2V0XCIgLVx1MDAzZSBcImVuYWJsZS9kaXNhYmxlL3Jlc2V0XCIsIGBcImhpdGAgLVx1MDAzZSBgXCJoaXRcImAgYW5kIFwic2VxdWVuY3Vlc1wiIC1cdTAwM2UgXCJzZXF1ZW5jZXNcIi5cbiogICAqKldoaXRlc3BhY2U6KiogRXh0cmEgYmxhbmsgbGluZXMgYXJlIGJlaW5nIHJlbW92ZWQgaW4gYSBmZXcgcGxhY2VzLlxuKiAgICoqQ29tbWVudHM6KiogIFRoZSBjb21tZW50cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY2AgYXJlIGJlaW5nIHVwZGF0ZWQgZm9yIGVycm9yIGNvbmRpdGlvbnM6IGBHVUVTVF9TWU5DKDApYCAtXHUwMDNlIGBHVUVTVF9TWU5DKC1FRkFVTFQpYCBhbmQgYEdVRVNUX1NZTkMoMClgIC1cdTAwM2UgYEdVRVNUX1NZTkMoLUVJTylgLlxuXG5JJ3ZlIGNhcmVmdWxseSBleGFtaW5lZCB0aGUgZGlmZiBhbmQsIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCAqbm9uZSogb2YgdGhlc2UgY2hhbmdlcyBhbHRlciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBQTVUgY29kZS4gSXQncyBhbGwgYWJvdXQgbWFraW5nIHRoZSBjb2RlIGNsZWFuZXIgYW5kIG1vcmUgcmVhZGFibGUsIHdoaWNoIGlzIGFsd2F5cyB3ZWxjb21lLCBidXQgaXQgZG9lc24ndCByZXByZXNlbnQgYSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHBlcmZvcm1hbmNlLCBvciBzZWN1cml0eS4gVGhlcmVmb3JlLCBpbiBteSBwcm9mZXNzaW9uYWwgb3BpbmlvbiBhcyBhbiBleHBlcnQsIHRoZXJlIGlzICpubyogcmVhc29uIHRvIGNvbnNpZGVyIHRoaXMgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTEsIk91dHB1dFRva2VucyI6NTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTA6NTk6MzcuNjIwMzM3MDU0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvc21ldGljIGNoYW5nZXM6IHR5cG8gZml4ZXMgaW4gY29tbWVudHMgYW5kIHJlbW92YWwgb2YgZXh0cmEgYmxhbmsgbGluZXMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvc21ldGljIGNoYW5nZXM6IHR5cG8gZml4ZXMgaW4gY29tbWVudHMgYW5kIHJlbW92YWwgb2YgZXh0cmEgYmxhbmsgbGluZXMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowzwzx8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 10:49:59 +0000 UTC FinishedAt: 2026-06-26 10:59:39 +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+CgkJCTx0ZD4yMDI2LzA2LzI2IDEwOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29zbWV0aWMgY2hhbmdlczogdHlwbyBmaXhlcyBpbiBjb21tZW50cyBhbmQgcmVtb3ZhbCBvZiBleHRyYSBibGFuayBsaW5lcy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTA6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyNjRmYjI3NDc5YWQ5YTBhNzk1NTk3ODQ5MGIwMTNmODIzNTAzMTE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMTA6NTk6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3BtdS5jIGIvYXJjaC94ODYva3ZtL3BtdS5jXG5pbmRleCBiOTJkZDJlNTgzMzU2Ny4uZTdmNjM1YjljNGQ3ODQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vcG11LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9wbXUuY1xuQEAgLTQwMyw3ICYjNDM7NDAzLDcgQEAgdm9pZCBwbWNfd3JpdGVfY291bnRlcihzdHJ1Y3Qga3ZtX3BtYyAqcG1jLCB1NjQgdmFsKVxuIFx0ICogRHJvcCBhbnkgdW5jb25zdW1lZCBhY2N1bXVsYXRlZCBjb3VudHMsIHRoZSBXUk1TUiBpcyBhIHdyaXRlLCBub3QgYVxuIFx0ICogcmVhZC1tb2RpZnktd3JpdGUuICBBZGp1c3QgdGhlIGNvdW50ZXIgdmFsdWUgc28gdGhhdCBpdHMgdmFsdWUgaXNcbiBcdCAqIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGNvdW50LCBhcyByZWFkaW5nIHRoZSBjdXJyZW50IGNvdW50IGZyb21cbi1cdCAqIHBlcmYgaXMgZmFzdGVyIHRoYW4gcGF1c2luZyBhbmQgcmVwZ3JvZ3JhbW1pbmcgdGhlIGV2ZW50IGluIG9yZGVyIHRvXG4mIzQzO1x0ICogcGVyZiBpcyBmYXN0ZXIgdGhhbiBwYXVzaW5nIGFuZCByZXByb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0b1xuIFx0ICogcmVzZXQgaXQgdG8gJiMzOTswJiMzOTsuICBOb3RlLCB0aGlzIHZlcnkgc25lYWtpbHkgb2Zmc2V0cyB0aGUgYWNjdW11bGF0ZWRcbiBcdCAqIGVtdWxhdGVkIGNvdW50IHRvbywgYnkgdXNpbmcgcG1jX3JlYWRfY291bnRlcigpIVxuIFx0ICovXG5AQCAtNDIyLDcgJiM0Mzs0MjIsNiBAQCBzdGF0aWMgaW50IGZpbHRlcl9jbXAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiLCB1NjQgbWFzaylcbiBcdHJldHVybiAoYSBcdTAwM2UgYikgLSAoYSBcdTAwM2MgYik7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgZmlsdGVyX3NvcnRfY21wKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYilcbiB7XG4gXHRyZXR1cm4gZmlsdGVyX2NtcChwYSwgcGIsIChLVk1fUE1VX01BU0tFRF9FTlRSWV9FVkVOVF9TRUxFQ1QgfFxuQEAgLTY1OCw3ICYjNDM7NjU3LDcgQEAgdm9pZCBrdm1fcG11X2hhbmRsZV9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHQvKlxuIFx0ICogVGhlIHJlcHJvZ3JhbW1pbmcgYml0bWFwIGNhbiBiZSB3cml0dGVuIGFzeW5jaHJvbm91c2x5IGJ5IHNvbWV0aGluZ1xuIFx0ICogb3RoZXIgdGhhbiB0aGUgdGFzayB0aGF0IGhvbGRzIHZjcHUtXHUwMDNlbXV0ZXgsIHRha2UgY2FyZSB0byBjbGVhciBvbmx5XG4tXHQgKiB0aGUgYml0cyB0aGF0IHdpbGwgYWN0dWFsbHkgcHJvY2Vzc2VkLlxuJiM0MztcdCAqIHRoZSBiaXRzIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBwcm9jZXNzZWQuXG4gXHQgKi9cbiBcdEJVSUxEX0JVR19PTihzaXplb2YoYml0bWFwKSAhPSBzaXplb2YoYXRvbWljNjRfdCkpO1xuIFx0YXRvbWljNjRfYW5kbm90KCooczY0ICopYml0bWFwLCBcdTAwMjZwbXUtXHUwMDNlX19yZXByb2dyYW1fcG1pKTtcbkBAIC02NjYsOSAmIzQzOzY2NSw5IEBAIHZvaWQga3ZtX3BtdV9oYW5kbGVfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0a3ZtX2Zvcl9lYWNoX3BtYyhwbXUsIHBtYywgYml0LCBiaXRtYXApIHtcbiBcdFx0LypcbiBcdFx0ICogSWYgcmVwcm9ncmFtbWluZyBmYWlscywgZS5nLiBkdWUgdG8gY29udGVudGlvbiwgcmUtc2V0IHRoZVxuLVx0XHQgKiByZWdwcm9ncmFtIGJpdCBzZXQsIGkuZS4gb3Bwb3J0dW5pc3RpY2FsbHkgdHJ5IGFnYWluIG9uIHRoZVxuLVx0XHQgKiBuZXh0IFBNVSByZWZyZXNoLiAgRG9uJiMzOTt0IG1ha2UgYSBuZXcgcmVxdWVzdCBhcyBkb2luZyBzbyBjYW5cbi1cdFx0ICogc3RhbGwgdGhlIGd1ZXN0IGlmIHJlcHJvZ3JhbW1pbmcgcmVwZWF0ZWRseSBmYWlscy5cbiYjNDM7XHRcdCAqIHJlcHJvZ3JhbSBiaXQsIGkuZS4gb3Bwb3J0dW5pc3RpY2FsbHkgdHJ5IGFnYWluIG9uIHRoZSBuZXh0XG4mIzQzO1x0XHQgKiBQTVUgcmVmcmVzaC4gIERvbiYjMzk7dCBtYWtlIGEgbmV3IHJlcXVlc3QgYXMgZG9pbmcgc28gY2FuIHN0YWxsXG4mIzQzO1x0XHQgKiB0aGUgZ3Vlc3QgaWYgcmVwcm9ncmFtbWluZyByZXBlYXRlZGx5IGZhaWxzLlxuIFx0XHQgKi9cbiBcdFx0aWYgKHJlcHJvZ3JhbV9jb3VudGVyKHBtYykpXG4gXHRcdFx0c2V0X2JpdChwbWMtXHUwMDNlaWR4LCBwbXUtXHUwMDNlcmVwcm9ncmFtX3BtaSk7XG5AQCAtOTU2LDcgJiM0Mzs5NTUsNiBAQCBzdGF0aWMgdm9pZCBrdm1fcG11X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGt2bV9wbXVfY2FsbChyZXNldCkodmNwdSk7XG4gfVxuIFxuLVxuIC8qXG4gICogUmVmcmVzaCB0aGUgUE1VIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB2Q1BVLCBlLmcuIGlmIHVzZXJzcGFjZSBjaGFuZ2VzIENQVUlEXG4gICogYW5kL29yIFBFUkZfQ0FQQUJJTElUSUVTLlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9wbXUuaCBiL2FyY2gveDg2L2t2bS9wbXUuaFxuaW5kZXggYTU4MjFkN2M4N2Y5MzUuLjA5MGM5YmJiNzRmNDgzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3BtdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vcG11LmhcbkBAIC05NCw4ICYjNDM7OTQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX3ZjcHVfaGFzX21lZGlhdGVkX3BtdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gICogaXMgdHJhY2tlZCBpbnRlcm5hbGx5IHZpYSBpbmRleCAzMi4gIE9uIEludGVsLCAoQU1EIGRvZXNuJiMzOTt0IHN1cHBvcnQgZml4ZWRcbiAgKiBjb3VudGVycyksIHRoaXMgbWlycm9ycyBob3cgZml4ZWQgY291bnRlcnMgYXJlIG1hcHBlZCB0byBQRVJGX0dMT0JBTF9DVFJMXG4gICogYW5kIHNpbWlsYXIgTVNScywgaS5lLiB0cmFja2luZyBmaXhlZCBjb3VudGVycyBhdCBiYXNlIGluZGV4IDMyIHJlZHVjZXMgdGhlXG4tICogYW1vdW50ZXIgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uXG4tICogZW5hYmxpbmcvZGlzYWJsZS9yZXNldCBvcGVyYXRpb25zLlxuJiM0MzsgKiBhbW91bnQgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uXG4mIzQzOyAqIGVuYWJsZS9kaXNhYmxlL3Jlc2V0IG9wZXJhdGlvbnMuXG4gICpcbiAgKiBXQVJOSU5HISAgVGhpcyBoZWxwZXIgaXMgb25seSBmb3IgbG9va3VwcyB0aGF0IGFyZSBpbml0aWF0ZWQgYnkgS1ZNLCBpdCBpc1xuICAqIE5PVCBzYWZlIGZvciBndWVzdCBsb29rdXBzLCBlLmcuIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGlmIHBhc3NlZCBhIHJhd1xuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmMgYi9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jXG5pbmRleCBhNzNhOTUxNWQ5NmNkNS4uNzBlZjg0YWExYTIyM2QgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jXG5AQCAtNzk1LDcgJiM0Mzs3OTUsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wbXVfd3JpdGVfZ2xvYmFsX2N0cmwodTY0IGdsb2JhbF9jdHJsKVxuIFx0dm1jc193cml0ZTY0KEdVRVNUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTCwgZ2xvYmFsX2N0cmwpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBpbnRlbF9tZWRpYXRlZF9wbXVfbG9hZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuIFx0c3RydWN0IGt2bV9wbXUgKnBtdSA9IHZjcHVfdG9fcG11KHZjcHUpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuY1xuaW5kZXggZGM2YWZhYzNhYTkxOTUuLjY3N2RjMjM1MzU0ODdmIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfY291bnRlcnNfdGVzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9jb3VudGVyc190ZXN0LmNcbkBAIC0xNDYsNyAmIzQzOzE0Niw3IEBAIHN0YXRpYyB1OCBndWVzdF9nZXRfcG11X3ZlcnNpb24odm9pZClcbiBcbiAvKlxuICAqIElmIGFuIGFyY2hpdGVjdHVyYWwgZXZlbnQgaXMgc3VwcG9ydGVkIGFuZCBndWFyYW50ZWVkIHRvIGdlbmVyYXRlIGF0IGxlYXN0XG4tICogb25lIFwmIzM0O2hpdCwgYXNzZXJ0IHRoYXQgaXRzIGNvdW50IGlzIG5vbi16ZXJvLiAgSWYgYW4gZXZlbnQgaXNuJiMzOTt0IHN1cHBvcnRlZCBvclxuJiM0MzsgKiBvbmUgaGl0LCBhc3NlcnQgdGhhdCBpdHMgY291bnQgaXMgbm9uLXplcm8uICBJZiBhbiBldmVudCBpc24mIzM5O3Qgc3VwcG9ydGVkIG9yXG4gICogdGhlIHRlc3QgY2FuJiMzOTt0IGd1YXJhbnRlZSB0aGUgYXNzb2NpYXRlZCBhY3Rpb24gd2lsbCBvY2N1ciwgdGhlbiBhbGwgYmV0cyBhcmVcbiAgKiBvZmYgcmVnYXJkaW5nIHRoZSBjb3VudCwgaS5lLiBubyBjaGVja3MgY2FuIGJlIGRvbmUuXG4gICpcbkBAIC01OTgsNyAmIzQzOzU5OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW50ZWxfY291bnRlcnModm9pZClcbiBcdCAqIFRvIGtlZXAgdGhlIHRvdGFsIHJ1bnRpbWUgcmVhc29uYWJsZSwgdGVzdCBvbmx5IGEgaGFuZGZ1bCBvZiBzZWxlY3QsXG4gXHQgKiBzZW1pLWFyYml0cmFyeSB2YWx1ZXMgZm9yIHRoZSBtYXNrIG9mIHVuYXZhaWxhYmxlIFBNVSBldmVudHMuICBUZXN0XG4gXHQgKiAwIChhbGwgZXZlbnRzIGF2YWlsYWJsZSkgYW5kIGFsbCBvbmVzIChubyBldmVudHMgYXZhaWxhYmxlKSBhcyB3ZWxsXG4tXHQgKiBhcyBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY3VlcywgZS5nLiB0byBkZXRlY3QgaWYgS1ZNIGlzIGNoZWNraW5nIHRoZVxuJiM0MztcdCAqIGFzIGFsdGVybmF0aW5nIGJpdCBzZXF1ZW5jZXMsIGUuZy4gdG8gZGV0ZWN0IGlmIEtWTSBpcyBjaGVja2luZyB0aGVcbiBcdCAqIHdyb25nIGJpdChzKS5cbiBcdCAqL1xuIFx0Y29uc3QgdTMyIHVuYXZhaWxhYmxlX21hc2tzW10gPSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2V2ZW50X2ZpbHRlcl90ZXN0LmNcbmluZGV4IDg0ZTRjNmNhNjdhM2Q2Li4yZDQwMWZmMDkxMTI0MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2V2ZW50X2ZpbHRlcl90ZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2V2ZW50X2ZpbHRlcl90ZXN0LmNcbkBAIC02Miw3ICYjNDM7NjIsNyBAQCBzdHJ1Y3Qge1xuIFxuIC8qXG4gICogSWYgd2UgZW5jb3VudGVyIGEgI0dQIGR1cmluZyB0aGUgZ3Vlc3QgUE1VIHNhbml0eSBjaGVjaywgdGhlbiB0aGUgZ3Vlc3Rcbi0gKiBQTVUgaXMgbm90IGZ1bmN0aW9uYWwuIEluZm9ybSB0aGUgaHlwZXJ2aXNvciB2aWEgR1VFU1RfU1lOQygwKS5cbiYjNDM7ICogUE1VIGlzIG5vdCBmdW5jdGlvbmFsLiBJbmZvcm0gdGhlIGh5cGVydmlzb3IgdmlhIEdVRVNUX1NZTkMoLUVGQVVMVCkuXG4gICovXG4gc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncylcbiB7XG5AQCAtNzMsNyAmIzQzOzczLDcgQEAgc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncylcbiAgKiBDaGVjayB0aGF0IHdlIGNhbiB3cml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZ2l2ZW4gTVNSIGFuZCByZWFkIGl0IGJhY2suXG4gICogVGhlIGNhbGxlciBzaG91bGQgcHJvdmlkZSBhIG5vbi1lbXB0eSBzZXQgb2YgYml0cyB0aGF0IGFyZSBzYWZlIHRvIGZsaXAuXG4gICpcbi0gKiBSZXR1cm4gb24gc3VjY2Vzcy4gR1VFU1RfU1lOQygwKSBvbiBlcnJvci5cbiYjNDM7ICogUmV0dXJuIG9uIHN1Y2Nlc3MsIEdVRVNUX1NZTkMoLUVJTykgb24gZXJyb3IuXG4gICovXG4gc3RhdGljIHZvaWQgY2hlY2tfbXNyKHUzMiBtc3IsIHU2NCBiaXRzX3RvX2ZsaXApXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDEwOjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29zbWV0aWMgY2hhbmdlczogdHlwbyBmaXhlcyBpbiBjb21tZW50cyBhbmQgcmVtb3ZhbCBvZiBleHRyYSBibGFuayBsaW5lcy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI2NGZiMjc0NzlhZDlhMGE3OTU1OTc4NDkwYjAxM2Y4MjM1MDMxMTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAxMDo1OToxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9wbXUuYyBiL2FyY2gveDg2L2t2bS9wbXUuYwppbmRleCBiOTJkZDJlNTgzMzU2Ny4uZTdmNjM1YjljNGQ3ODQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9wbXUuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vcG11LmMKQEAgLTQwMyw3ICYjNDM7NDAzLDcgQEAgdm9pZCBwbWNfd3JpdGVfY291bnRlcihzdHJ1Y3Qga3ZtX3BtYyAqcG1jLCB1NjQgdmFsKQogCSAqIERyb3AgYW55IHVuY29uc3VtZWQgYWNjdW11bGF0ZWQgY291bnRzLCB0aGUgV1JNU1IgaXMgYSB3cml0ZSwgbm90IGEKIAkgKiByZWFkLW1vZGlmeS13cml0ZS4gIEFkanVzdCB0aGUgY291bnRlciB2YWx1ZSBzbyB0aGF0IGl0cyB2YWx1ZSBpcwogCSAqIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGNvdW50LCBhcyByZWFkaW5nIHRoZSBjdXJyZW50IGNvdW50IGZyb20KLQkgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcGdyb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0bwomIzQzOwkgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcHJvZ3JhbW1pbmcgdGhlIGV2ZW50IGluIG9yZGVyIHRvCiAJICogcmVzZXQgaXQgdG8gJiMzOTswJiMzOTsuICBOb3RlLCB0aGlzIHZlcnkgc25lYWtpbHkgb2Zmc2V0cyB0aGUgYWNjdW11bGF0ZWQKIAkgKiBlbXVsYXRlZCBjb3VudCB0b28sIGJ5IHVzaW5nIHBtY19yZWFkX2NvdW50ZXIoKSEKIAkgKi8KQEAgLTQyMiw3ICYjNDM7NDIyLDYgQEAgc3RhdGljIGludCBmaWx0ZXJfY21wKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYiwgdTY0IG1hc2spCiAJcmV0dXJuIChhICZndDsgYikgLSAoYSAmbHQ7IGIpOwogfQogCi0KIHN0YXRpYyBpbnQgZmlsdGVyX3NvcnRfY21wKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYikKIHsKIAlyZXR1cm4gZmlsdGVyX2NtcChwYSwgcGIsIChLVk1fUE1VX01BU0tFRF9FTlRSWV9FVkVOVF9TRUxFQ1QgfApAQCAtNjU4LDcgJiM0Mzs2NTcsNyBAQCB2b2lkIGt2bV9wbXVfaGFuZGxlX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkvKgogCSAqIFRoZSByZXByb2dyYW1taW5nIGJpdG1hcCBjYW4gYmUgd3JpdHRlbiBhc3luY2hyb25vdXNseSBieSBzb21ldGhpbmcKIAkgKiBvdGhlciB0aGFuIHRoZSB0YXNrIHRoYXQgaG9sZHMgdmNwdS0mZ3Q7bXV0ZXgsIHRha2UgY2FyZSB0byBjbGVhciBvbmx5Ci0JICogdGhlIGJpdHMgdGhhdCB3aWxsIGFjdHVhbGx5IHByb2Nlc3NlZC4KJiM0MzsJICogdGhlIGJpdHMgdGhhdCB3aWxsIGFjdHVhbGx5IGJlIHByb2Nlc3NlZC4KIAkgKi8KIAlCVUlMRF9CVUdfT04oc2l6ZW9mKGJpdG1hcCkgIT0gc2l6ZW9mKGF0b21pYzY0X3QpKTsKIAlhdG9taWM2NF9hbmRub3QoKihzNjQgKiliaXRtYXAsICZhbXA7cG11LSZndDtfX3JlcHJvZ3JhbV9wbWkpOwpAQCAtNjY2LDkgJiM0Mzs2NjUsOSBAQCB2b2lkIGt2bV9wbXVfaGFuZGxlX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlrdm1fZm9yX2VhY2hfcG1jKHBtdSwgcG1jLCBiaXQsIGJpdG1hcCkgewogCQkvKgogCQkgKiBJZiByZXByb2dyYW1taW5nIGZhaWxzLCBlLmcuIGR1ZSB0byBjb250ZW50aW9uLCByZS1zZXQgdGhlCi0JCSAqIHJlZ3Byb2dyYW0gYml0IHNldCwgaS5lLiBvcHBvcnR1bmlzdGljYWxseSB0cnkgYWdhaW4gb24gdGhlCi0JCSAqIG5leHQgUE1VIHJlZnJlc2guICBEb24mIzM5O3QgbWFrZSBhIG5ldyByZXF1ZXN0IGFzIGRvaW5nIHNvIGNhbgotCQkgKiBzdGFsbCB0aGUgZ3Vlc3QgaWYgcmVwcm9ncmFtbWluZyByZXBlYXRlZGx5IGZhaWxzLgomIzQzOwkJICogcmVwcm9ncmFtIGJpdCwgaS5lLiBvcHBvcnR1bmlzdGljYWxseSB0cnkgYWdhaW4gb24gdGhlIG5leHQKJiM0MzsJCSAqIFBNVSByZWZyZXNoLiAgRG9uJiMzOTt0IG1ha2UgYSBuZXcgcmVxdWVzdCBhcyBkb2luZyBzbyBjYW4gc3RhbGwKJiM0MzsJCSAqIHRoZSBndWVzdCBpZiByZXByb2dyYW1taW5nIHJlcGVhdGVkbHkgZmFpbHMuCiAJCSAqLwogCQlpZiAocmVwcm9ncmFtX2NvdW50ZXIocG1jKSkKIAkJCXNldF9iaXQocG1jLSZndDtpZHgsIHBtdS0mZ3Q7cmVwcm9ncmFtX3BtaSk7CkBAIC05NTYsNyAmIzQzOzk1NSw2IEBAIHN0YXRpYyB2b2lkIGt2bV9wbXVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWt2bV9wbXVfY2FsbChyZXNldCkodmNwdSk7CiB9CiAKLQogLyoKICAqIFJlZnJlc2ggdGhlIFBNVSBjb25maWd1cmF0aW9uIGZvciB0aGUgdkNQVSwgZS5nLiBpZiB1c2Vyc3BhY2UgY2hhbmdlcyBDUFVJRAogICogYW5kL29yIFBFUkZfQ0FQQUJJTElUSUVTLgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3BtdS5oIGIvYXJjaC94ODYva3ZtL3BtdS5oCmluZGV4IGE1ODIxZDdjODdmOTM1Li4wOTBjOWJiYjc0ZjQ4MyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3BtdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9wbXUuaApAQCAtOTQsOCAmIzQzOzk0LDggQEAgc3RhdGljIGlubGluZSBib29sIGt2bV92Y3B1X2hhc19tZWRpYXRlZF9wbXUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogICogaXMgdHJhY2tlZCBpbnRlcm5hbGx5IHZpYSBpbmRleCAzMi4gIE9uIEludGVsLCAoQU1EIGRvZXNuJiMzOTt0IHN1cHBvcnQgZml4ZWQKICAqIGNvdW50ZXJzKSwgdGhpcyBtaXJyb3JzIGhvdyBmaXhlZCBjb3VudGVycyBhcmUgbWFwcGVkIHRvIFBFUkZfR0xPQkFMX0NUUkwKICAqIGFuZCBzaW1pbGFyIE1TUnMsIGkuZS4gdHJhY2tpbmcgZml4ZWQgY291bnRlcnMgYXQgYmFzZSBpbmRleCAzMiByZWR1Y2VzIHRoZQotICogYW1vdW50ZXIgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uCi0gKiBlbmFibGluZy9kaXNhYmxlL3Jlc2V0IG9wZXJhdGlvbnMuCiYjNDM7ICogYW1vdW50IG9mIGJvaWxlcnBsYXRlIG5lZWRlZCB0byBpdGVyYXRlIG92ZXIgUE1DcyAqYW5kKiBzaW1wbGlmaWVzIGNvbW1vbgomIzQzOyAqIGVuYWJsZS9kaXNhYmxlL3Jlc2V0IG9wZXJhdGlvbnMuCiAgKgogICogV0FSTklORyEgIFRoaXMgaGVscGVyIGlzIG9ubHkgZm9yIGxvb2t1cHMgdGhhdCBhcmUgaW5pdGlhdGVkIGJ5IEtWTSwgaXQgaXMKICAqIE5PVCBzYWZlIGZvciBndWVzdCBsb29rdXBzLCBlLmcuIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGlmIHBhc3NlZCBhIHJhdwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuYyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmMKaW5kZXggYTczYTk1MTVkOTZjZDUuLjcwZWY4NGFhMWEyMjNkIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmMKQEAgLTc5NSw3ICYjNDM7Nzk1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG11X3dyaXRlX2dsb2JhbF9jdHJsKHU2NCBnbG9iYWxfY3RybCkKIAl2bWNzX3dyaXRlNjQoR1VFU1RfSUEzMl9QRVJGX0dMT0JBTF9DVFJMLCBnbG9iYWxfY3RybCk7CiB9CiAKLQogc3RhdGljIHZvaWQgaW50ZWxfbWVkaWF0ZWRfcG11X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXN0cnVjdCBrdm1fcG11ICpwbXUgPSB2Y3B1X3RvX3BtdSh2Y3B1KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuYwppbmRleCBkYzZhZmFjM2FhOTE5NS4uNjc3ZGMyMzUzNTQ4N2YgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9jb3VudGVyc190ZXN0LmMKQEAgLTE0Niw3ICYjNDM7MTQ2LDcgQEAgc3RhdGljIHU4IGd1ZXN0X2dldF9wbXVfdmVyc2lvbih2b2lkKQogCiAvKgogICogSWYgYW4gYXJjaGl0ZWN0dXJhbCBldmVudCBpcyBzdXBwb3J0ZWQgYW5kIGd1YXJhbnRlZWQgdG8gZ2VuZXJhdGUgYXQgbGVhc3QKLSAqIG9uZSAmIzM0O2hpdCwgYXNzZXJ0IHRoYXQgaXRzIGNvdW50IGlzIG5vbi16ZXJvLiAgSWYgYW4gZXZlbnQgaXNuJiMzOTt0IHN1cHBvcnRlZCBvcgomIzQzOyAqIG9uZSBoaXQsIGFzc2VydCB0aGF0IGl0cyBjb3VudCBpcyBub24temVyby4gIElmIGFuIGV2ZW50IGlzbiYjMzk7dCBzdXBwb3J0ZWQgb3IKICAqIHRoZSB0ZXN0IGNhbiYjMzk7dCBndWFyYW50ZWUgdGhlIGFzc29jaWF0ZWQgYWN0aW9uIHdpbGwgb2NjdXIsIHRoZW4gYWxsIGJldHMgYXJlCiAgKiBvZmYgcmVnYXJkaW5nIHRoZSBjb3VudCwgaS5lLiBubyBjaGVja3MgY2FuIGJlIGRvbmUuCiAgKgpAQCAtNTk4LDcgJiM0Mzs1OTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludGVsX2NvdW50ZXJzKHZvaWQpCiAJICogVG8ga2VlcCB0aGUgdG90YWwgcnVudGltZSByZWFzb25hYmxlLCB0ZXN0IG9ubHkgYSBoYW5kZnVsIG9mIHNlbGVjdCwKIAkgKiBzZW1pLWFyYml0cmFyeSB2YWx1ZXMgZm9yIHRoZSBtYXNrIG9mIHVuYXZhaWxhYmxlIFBNVSBldmVudHMuICBUZXN0CiAJICogMCAoYWxsIGV2ZW50cyBhdmFpbGFibGUpIGFuZCBhbGwgb25lcyAobm8gZXZlbnRzIGF2YWlsYWJsZSkgYXMgd2VsbAotCSAqIGFzIGFsdGVybmF0aW5nIGJpdCBzZXF1ZW5jdWVzLCBlLmcuIHRvIGRldGVjdCBpZiBLVk0gaXMgY2hlY2tpbmcgdGhlCiYjNDM7CSAqIGFzIGFsdGVybmF0aW5nIGJpdCBzZXF1ZW5jZXMsIGUuZy4gdG8gZGV0ZWN0IGlmIEtWTSBpcyBjaGVja2luZyB0aGUKIAkgKiB3cm9uZyBiaXQocykuCiAJICovCiAJY29uc3QgdTMyIHVuYXZhaWxhYmxlX21hc2tzW10gPSB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9ldmVudF9maWx0ZXJfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuYwppbmRleCA4NGU0YzZjYTY3YTNkNi4uMmQ0MDFmZjA5MTEyNDAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2V2ZW50X2ZpbHRlcl90ZXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuYwpAQCAtNjIsNyAmIzQzOzYyLDcgQEAgc3RydWN0IHsKIAogLyoKICAqIElmIHdlIGVuY291bnRlciBhICNHUCBkdXJpbmcgdGhlIGd1ZXN0IFBNVSBzYW5pdHkgY2hlY2ssIHRoZW4gdGhlIGd1ZXN0Ci0gKiBQTVUgaXMgbm90IGZ1bmN0aW9uYWwuIEluZm9ybSB0aGUgaHlwZXJ2aXNvciB2aWEgR1VFU1RfU1lOQygwKS4KJiM0MzsgKiBQTVUgaXMgbm90IGZ1bmN0aW9uYWwuIEluZm9ybSB0aGUgaHlwZXJ2aXNvciB2aWEgR1VFU1RfU1lOQygtRUZBVUxUKS4KICAqLwogc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncykKIHsKQEAgLTczLDcgJiM0Mzs3Myw3IEBAIHN0YXRpYyB2b2lkIGd1ZXN0X2dwX2hhbmRsZXIoc3RydWN0IGV4X3JlZ3MgKnJlZ3MpCiAgKiBDaGVjayB0aGF0IHdlIGNhbiB3cml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZ2l2ZW4gTVNSIGFuZCByZWFkIGl0IGJhY2suCiAgKiBUaGUgY2FsbGVyIHNob3VsZCBwcm92aWRlIGEgbm9uLWVtcHR5IHNldCBvZiBiaXRzIHRoYXQgYXJlIHNhZmUgdG8gZmxpcC4KICAqCi0gKiBSZXR1cm4gb24gc3VjY2Vzcy4gR1VFU1RfU1lOQygwKSBvbiBlcnJvci4KJiM0MzsgKiBSZXR1cm4gb24gc3VjY2VzcywgR1VFU1RfU1lOQygtRUlPKSBvbiBlcnJvci4KICAqLwogc3RhdGljIHZvaWQgY2hlY2tfbXNyKHUzMiBtc3IsIHU2NCBiaXRzX3RvX2ZsaXApCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDEwOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTEKCQkJCQkJCW91dHB1dDogNTgKCQkJCQkJCXRob3VnaHRzOiAyNjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvc21ldGljIENsZWFudXAgLSBObyBGdW5jdGlvbmFsIEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBqdXN0IHJldmlld2VkIGEgcGF0Y2ggdGhhdCB0b3VjaGVzIHNldmVyYWwgZmlsZXMgd2l0aGluIHRoZSBLVk0veDg2IFBNVSBjb2RlLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCYjMzk7cyAqZW50aXJlbHkqIGNvc21ldGljLiBXZSYjMzk7cmUgbG9va2luZyBhdCB1cGRhdGVzIGluIGBhcmNoL3g4Ni9rdm0vcG11LmNgLCBgYXJjaC94ODYva3ZtL3BtdS5oYCwgYGFyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmNgLCBhbmQgc29tZSBvZiB0aGUgc2VsZi10ZXN0cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9gLgoKU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlOgoKKiAgICoqVHlwb3M6KiogVGhlcmUmIzM5O3MgYSBzdHJpbmcgb2YgdHlwbyBjb3JyZWN0aW9uczogJiMzNDtyZXBncm9ncmFtbWluZyYjMzQ7IC0mZ3Q7ICYjMzQ7cmVwcm9ncmFtbWluZyYjMzQ7LCAmIzM0O2FjdHVhbGx5IHByb2Nlc3NlZCYjMzQ7IC0mZ3Q7ICYjMzQ7YWN0dWFsbHkgYmUgcHJvY2Vzc2VkJiMzNDssICYjMzQ7cmVncHJvZ3JhbSYjMzQ7IC0mZ3Q7ICYjMzQ7cmVwcm9ncmFtJiMzNDssICYjMzQ7YW1vdW50ZXImIzM0OyAtJmd0OyAmIzM0O2Ftb3VudCYjMzQ7LCAmIzM0O2VuYWJsaW5nL2Rpc2FibGUvcmVzZXQmIzM0OyAtJmd0OyAmIzM0O2VuYWJsZS9kaXNhYmxlL3Jlc2V0JiMzNDssIGAmIzM0O2hpdGAgLSZndDsgYCYjMzQ7aGl0JiMzNDtgIGFuZCAmIzM0O3NlcXVlbmN1ZXMmIzM0OyAtJmd0OyAmIzM0O3NlcXVlbmNlcyYjMzQ7LgoqICAgKipXaGl0ZXNwYWNlOioqIEV4dHJhIGJsYW5rIGxpbmVzIGFyZSBiZWluZyByZW1vdmVkIGluIGEgZmV3IHBsYWNlcy4KKiAgICoqQ29tbWVudHM6KiogIFRoZSBjb21tZW50cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY2AgYXJlIGJlaW5nIHVwZGF0ZWQgZm9yIGVycm9yIGNvbmRpdGlvbnM6IGBHVUVTVF9TWU5DKDApYCAtJmd0OyBgR1VFU1RfU1lOQygtRUZBVUxUKWAgYW5kIGBHVUVTVF9TWU5DKDApYCAtJmd0OyBgR1VFU1RfU1lOQygtRUlPKWAuCgpJJiMzOTt2ZSBjYXJlZnVsbHkgZXhhbWluZWQgdGhlIGRpZmYgYW5kLCBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgKm5vbmUqIG9mIHRoZXNlIGNoYW5nZXMgYWx0ZXIgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgUE1VIGNvZGUuIEl0JiMzOTtzIGFsbCBhYm91dCBtYWtpbmcgdGhlIGNvZGUgY2xlYW5lciBhbmQgbW9yZSByZWFkYWJsZSwgd2hpY2ggaXMgYWx3YXlzIHdlbGNvbWUsIGJ1dCBpdCBkb2VzbiYjMzk7dCByZXByZXNlbnQgYSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHBlcmZvcm1hbmNlLCBvciBzZWN1cml0eS4gVGhlcmVmb3JlLCBpbiBteSBwcm9mZXNzaW9uYWwgb3BpbmlvbiBhcyBhbiBleHBlcnQsIHRoZXJlIGlzICpubyogcmVhc29uIHRvIGNvbnNpZGVyIHRoaXMgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMTA6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvc21ldGljIGNoYW5nZXM6IHR5cG8gZml4ZXMgaW4gY29tbWVudHMgYW5kIHJlbW92YWwgb2YgZXh0cmEgYmxhbmsgbGluZXMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvc21ldGljIGNoYW5nZXM6IHR5cG8gZml4ZXMgaW4gY29tbWVudHMgYW5kIHJlbW92YWwgb2YgZXh0cmEgYmxhbmsgbGluZXMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTA6NTk6MTYuNTcwNzc3NzQ2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNDk1ODYxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29zbWV0aWMgY2hhbmdlczogdHlwbyBmaXhlcyBpbiBjb21tZW50cyBhbmQgcmVtb3ZhbCBvZiBleHRyYSBibGFuayBsaW5lcy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDEwOjU5OjE2LjU3MDc4MTExNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwMDMzNjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjY0ZmIyNzQ3OWFkOWEwYTc5NTU5Nzg0OTBiMDEzZjgyMzUwMzExOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAxMDo1OToxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcG11LmMgYi9hcmNoL3g4Ni9rdm0vcG11LmNcXG5pbmRleCBiOTJkZDJlNTgzMzU2Ny4uZTdmNjM1YjljNGQ3ODQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3BtdS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3BtdS5jXFxuQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIHBtY193cml0ZV9jb3VudGVyKHN0cnVjdCBrdm1fcG1jICpwbWMsIHU2NCB2YWwpXFxuIFxcdCAqIERyb3AgYW55IHVuY29uc3VtZWQgYWNjdW11bGF0ZWQgY291bnRzLCB0aGUgV1JNU1IgaXMgYSB3cml0ZSwgbm90IGFcXG4gXFx0ICogcmVhZC1tb2RpZnktd3JpdGUuICBBZGp1c3QgdGhlIGNvdW50ZXIgdmFsdWUgc28gdGhhdCBpdHMgdmFsdWUgaXNcXG4gXFx0ICogcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgY291bnQsIGFzIHJlYWRpbmcgdGhlIGN1cnJlbnQgY291bnQgZnJvbVxcbi1cXHQgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcGdyb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0b1xcbitcXHQgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcHJvZ3JhbW1pbmcgdGhlIGV2ZW50IGluIG9yZGVyIHRvXFxuIFxcdCAqIHJlc2V0IGl0IHRvICcwJy4gIE5vdGUsIHRoaXMgdmVyeSBzbmVha2lseSBvZmZzZXRzIHRoZSBhY2N1bXVsYXRlZFxcbiBcXHQgKiBlbXVsYXRlZCBjb3VudCB0b28sIGJ5IHVzaW5nIHBtY19yZWFkX2NvdW50ZXIoKSFcXG4gXFx0ICovXFxuQEAgLTQyMiw3ICs0MjIsNiBAQCBzdGF0aWMgaW50IGZpbHRlcl9jbXAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiLCB1NjQgbWFzaylcXG4gXFx0cmV0dXJuIChhIFxcdTAwM2UgYikgLSAoYSBcXHUwMDNjIGIpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIGludCBmaWx0ZXJfc29ydF9jbXAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiKVxcbiB7XFxuIFxcdHJldHVybiBmaWx0ZXJfY21wKHBhLCBwYiwgKEtWTV9QTVVfTUFTS0VEX0VOVFJZX0VWRU5UX1NFTEVDVCB8XFxuQEAgLTY1OCw3ICs2NTcsNyBAQCB2b2lkIGt2bV9wbXVfaGFuZGxlX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0LypcXG4gXFx0ICogVGhlIHJlcHJvZ3JhbW1pbmcgYml0bWFwIGNhbiBiZSB3cml0dGVuIGFzeW5jaHJvbm91c2x5IGJ5IHNvbWV0aGluZ1xcbiBcXHQgKiBvdGhlciB0aGFuIHRoZSB0YXNrIHRoYXQgaG9sZHMgdmNwdS1cXHUwMDNlbXV0ZXgsIHRha2UgY2FyZSB0byBjbGVhciBvbmx5XFxuLVxcdCAqIHRoZSBiaXRzIHRoYXQgd2lsbCBhY3R1YWxseSBwcm9jZXNzZWQuXFxuK1xcdCAqIHRoZSBiaXRzIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBwcm9jZXNzZWQuXFxuIFxcdCAqL1xcbiBcXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGJpdG1hcCkgIT0gc2l6ZW9mKGF0b21pYzY0X3QpKTtcXG4gXFx0YXRvbWljNjRfYW5kbm90KCooczY0ICopYml0bWFwLCBcXHUwMDI2cG11LVxcdTAwM2VfX3JlcHJvZ3JhbV9wbWkpO1xcbkBAIC02NjYsOSArNjY1LDkgQEAgdm9pZCBrdm1fcG11X2hhbmRsZV9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuIFxcdGt2bV9mb3JfZWFjaF9wbWMocG11LCBwbWMsIGJpdCwgYml0bWFwKSB7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIElmIHJlcHJvZ3JhbW1pbmcgZmFpbHMsIGUuZy4gZHVlIHRvIGNvbnRlbnRpb24sIHJlLXNldCB0aGVcXG4tXFx0XFx0ICogcmVncHJvZ3JhbSBiaXQgc2V0LCBpLmUuIG9wcG9ydHVuaXN0aWNhbGx5IHRyeSBhZ2FpbiBvbiB0aGVcXG4tXFx0XFx0ICogbmV4dCBQTVUgcmVmcmVzaC4gIERvbid0IG1ha2UgYSBuZXcgcmVxdWVzdCBhcyBkb2luZyBzbyBjYW5cXG4tXFx0XFx0ICogc3RhbGwgdGhlIGd1ZXN0IGlmIHJlcHJvZ3JhbW1pbmcgcmVwZWF0ZWRseSBmYWlscy5cXG4rXFx0XFx0ICogcmVwcm9ncmFtIGJpdCwgaS5lLiBvcHBvcnR1bmlzdGljYWxseSB0cnkgYWdhaW4gb24gdGhlIG5leHRcXG4rXFx0XFx0ICogUE1VIHJlZnJlc2guICBEb24ndCBtYWtlIGEgbmV3IHJlcXVlc3QgYXMgZG9pbmcgc28gY2FuIHN0YWxsXFxuK1xcdFxcdCAqIHRoZSBndWVzdCBpZiByZXByb2dyYW1taW5nIHJlcGVhdGVkbHkgZmFpbHMuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAocmVwcm9ncmFtX2NvdW50ZXIocG1jKSlcXG4gXFx0XFx0XFx0c2V0X2JpdChwbWMtXFx1MDAzZWlkeCwgcG11LVxcdTAwM2VyZXByb2dyYW1fcG1pKTtcXG5AQCAtOTU2LDcgKzk1NSw2IEBAIHN0YXRpYyB2b2lkIGt2bV9wbXVfcmVzZXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRrdm1fcG11X2NhbGwocmVzZXQpKHZjcHUpO1xcbiB9XFxuIFxcbi1cXG4gLypcXG4gICogUmVmcmVzaCB0aGUgUE1VIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB2Q1BVLCBlLmcuIGlmIHVzZXJzcGFjZSBjaGFuZ2VzIENQVUlEXFxuICAqIGFuZC9vciBQRVJGX0NBUEFCSUxJVElFUy5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3BtdS5oIGIvYXJjaC94ODYva3ZtL3BtdS5oXFxuaW5kZXggYTU4MjFkN2M4N2Y5MzUuLjA5MGM5YmJiNzRmNDgzIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9wbXUuaFxcbisrKyBiL2FyY2gveDg2L2t2bS9wbXUuaFxcbkBAIC05NCw4ICs5NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fdmNwdV9oYXNfbWVkaWF0ZWRfcG11KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gICogaXMgdHJhY2tlZCBpbnRlcm5hbGx5IHZpYSBpbmRleCAzMi4gIE9uIEludGVsLCAoQU1EIGRvZXNuJ3Qgc3VwcG9ydCBmaXhlZFxcbiAgKiBjb3VudGVycyksIHRoaXMgbWlycm9ycyBob3cgZml4ZWQgY291bnRlcnMgYXJlIG1hcHBlZCB0byBQRVJGX0dMT0JBTF9DVFJMXFxuICAqIGFuZCBzaW1pbGFyIE1TUnMsIGkuZS4gdHJhY2tpbmcgZml4ZWQgY291bnRlcnMgYXQgYmFzZSBpbmRleCAzMiByZWR1Y2VzIHRoZVxcbi0gKiBhbW91bnRlciBvZiBib2lsZXJwbGF0ZSBuZWVkZWQgdG8gaXRlcmF0ZSBvdmVyIFBNQ3MgKmFuZCogc2ltcGxpZmllcyBjb21tb25cXG4tICogZW5hYmxpbmcvZGlzYWJsZS9yZXNldCBvcGVyYXRpb25zLlxcbisgKiBhbW91bnQgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uXFxuKyAqIGVuYWJsZS9kaXNhYmxlL3Jlc2V0IG9wZXJhdGlvbnMuXFxuICAqXFxuICAqIFdBUk5JTkchICBUaGlzIGhlbHBlciBpcyBvbmx5IGZvciBsb29rdXBzIHRoYXQgYXJlIGluaXRpYXRlZCBieSBLVk0sIGl0IGlzXFxuICAqIE5PVCBzYWZlIGZvciBndWVzdCBsb29rdXBzLCBlLmcuIHdpbGwgZG8gdGhlIHdyb25nIHRoaW5nIGlmIHBhc3NlZCBhIHJhd1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jIGIvYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuY1xcbmluZGV4IGE3M2E5NTE1ZDk2Y2Q1Li43MGVmODRhYTFhMjIzZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3BtdV9pbnRlbC5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuY1xcbkBAIC03OTUsNyArNzk1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG11X3dyaXRlX2dsb2JhbF9jdHJsKHU2NCBnbG9iYWxfY3RybClcXG4gXFx0dm1jc193cml0ZTY0KEdVRVNUX0lBMzJfUEVSRl9HTE9CQUxfQ1RSTCwgZ2xvYmFsX2N0cmwpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgaW50ZWxfbWVkaWF0ZWRfcG11X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuIFxcdHN0cnVjdCBrdm1fcG11ICpwbXUgPSB2Y3B1X3RvX3BtdSh2Y3B1KTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfY291bnRlcnNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfY291bnRlcnNfdGVzdC5jXFxuaW5kZXggZGM2YWZhYzNhYTkxOTUuLjY3N2RjMjM1MzU0ODdmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuY1xcbkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIHU4IGd1ZXN0X2dldF9wbXVfdmVyc2lvbih2b2lkKVxcbiBcXG4gLypcXG4gICogSWYgYW4gYXJjaGl0ZWN0dXJhbCBldmVudCBpcyBzdXBwb3J0ZWQgYW5kIGd1YXJhbnRlZWQgdG8gZ2VuZXJhdGUgYXQgbGVhc3RcXG4tICogb25lIFxcXCJoaXQsIGFzc2VydCB0aGF0IGl0cyBjb3VudCBpcyBub24temVyby4gIElmIGFuIGV2ZW50IGlzbid0IHN1cHBvcnRlZCBvclxcbisgKiBvbmUgaGl0LCBhc3NlcnQgdGhhdCBpdHMgY291bnQgaXMgbm9uLXplcm8uICBJZiBhbiBldmVudCBpc24ndCBzdXBwb3J0ZWQgb3JcXG4gICogdGhlIHRlc3QgY2FuJ3QgZ3VhcmFudGVlIHRoZSBhc3NvY2lhdGVkIGFjdGlvbiB3aWxsIG9jY3VyLCB0aGVuIGFsbCBiZXRzIGFyZVxcbiAgKiBvZmYgcmVnYXJkaW5nIHRoZSBjb3VudCwgaS5lLiBubyBjaGVja3MgY2FuIGJlIGRvbmUuXFxuICAqXFxuQEAgLTU5OCw3ICs1OTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2ludGVsX2NvdW50ZXJzKHZvaWQpXFxuIFxcdCAqIFRvIGtlZXAgdGhlIHRvdGFsIHJ1bnRpbWUgcmVhc29uYWJsZSwgdGVzdCBvbmx5IGEgaGFuZGZ1bCBvZiBzZWxlY3QsXFxuIFxcdCAqIHNlbWktYXJiaXRyYXJ5IHZhbHVlcyBmb3IgdGhlIG1hc2sgb2YgdW5hdmFpbGFibGUgUE1VIGV2ZW50cy4gIFRlc3RcXG4gXFx0ICogMCAoYWxsIGV2ZW50cyBhdmFpbGFibGUpIGFuZCBhbGwgb25lcyAobm8gZXZlbnRzIGF2YWlsYWJsZSkgYXMgd2VsbFxcbi1cXHQgKiBhcyBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY3VlcywgZS5nLiB0byBkZXRlY3QgaWYgS1ZNIGlzIGNoZWNraW5nIHRoZVxcbitcXHQgKiBhcyBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY2VzLCBlLmcuIHRvIGRldGVjdCBpZiBLVk0gaXMgY2hlY2tpbmcgdGhlXFxuIFxcdCAqIHdyb25nIGJpdChzKS5cXG4gXFx0ICovXFxuIFxcdGNvbnN0IHUzMiB1bmF2YWlsYWJsZV9tYXNrc1tdID0ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9ldmVudF9maWx0ZXJfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xcbmluZGV4IDg0ZTRjNmNhNjdhM2Q2Li4yZDQwMWZmMDkxMTI0MCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9ldmVudF9maWx0ZXJfdGVzdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xcbkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCB7XFxuIFxcbiAvKlxcbiAgKiBJZiB3ZSBlbmNvdW50ZXIgYSAjR1AgZHVyaW5nIHRoZSBndWVzdCBQTVUgc2FuaXR5IGNoZWNrLCB0aGVuIHRoZSBndWVzdFxcbi0gKiBQTVUgaXMgbm90IGZ1bmN0aW9uYWwuIEluZm9ybSB0aGUgaHlwZXJ2aXNvciB2aWEgR1VFU1RfU1lOQygwKS5cXG4rICogUE1VIGlzIG5vdCBmdW5jdGlvbmFsLiBJbmZvcm0gdGhlIGh5cGVydmlzb3IgdmlhIEdVRVNUX1NZTkMoLUVGQVVMVCkuXFxuICAqL1xcbiBzdGF0aWMgdm9pZCBndWVzdF9ncF9oYW5kbGVyKHN0cnVjdCBleF9yZWdzICpyZWdzKVxcbiB7XFxuQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncylcXG4gICogQ2hlY2sgdGhhdCB3ZSBjYW4gd3JpdGUgYSBuZXcgdmFsdWUgdG8gdGhlIGdpdmVuIE1TUiBhbmQgcmVhZCBpdCBiYWNrLlxcbiAgKiBUaGUgY2FsbGVyIHNob3VsZCBwcm92aWRlIGEgbm9uLWVtcHR5IHNldCBvZiBiaXRzIHRoYXQgYXJlIHNhZmUgdG8gZmxpcC5cXG4gICpcXG4tICogUmV0dXJuIG9uIHN1Y2Nlc3MuIEdVRVNUX1NZTkMoMCkgb24gZXJyb3IuXFxuKyAqIFJldHVybiBvbiBzdWNjZXNzLCBHVUVTVF9TWU5DKC1FSU8pIG9uIGVycm9yLlxcbiAgKi9cXG4gc3RhdGljIHZvaWQgY2hlY2tfbXNyKHUzMiBtc3IsIHU2NCBiaXRzX3RvX2ZsaXApXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTA6NTk6MTcuMDQxNDk2Nzk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDU3ODg2MTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBjb250YWlucyBjb3NtZXRpYyBjaGFuZ2VzOiB0eXBvIGZpeGVzIGluIGNvbW1lbnRzIGFuZCByZW1vdmFsIG9mIGV4dHJhIGJsYW5rIGxpbmVzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNjRmYjI3NDc5YWQ5YTBhNzk1NTk3ODQ5MGIwMTNmODIzNTAzMTE5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMTA6NTk6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcG11LmMgYi9hcmNoL3g4Ni9rdm0vcG11LmNcbmluZGV4IGI5MmRkMmU1ODMzNTY3Li5lN2Y2MzViOWM0ZDc4NCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9wbXUuY1xuKysrIGIvYXJjaC94ODYva3ZtL3BtdS5jXG5AQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgcG1jX3dyaXRlX2NvdW50ZXIoc3RydWN0IGt2bV9wbWMgKnBtYywgdTY0IHZhbClcbiBcdCAqIERyb3AgYW55IHVuY29uc3VtZWQgYWNjdW11bGF0ZWQgY291bnRzLCB0aGUgV1JNU1IgaXMgYSB3cml0ZSwgbm90IGFcbiBcdCAqIHJlYWQtbW9kaWZ5LXdyaXRlLiAgQWRqdXN0IHRoZSBjb3VudGVyIHZhbHVlIHNvIHRoYXQgaXRzIHZhbHVlIGlzXG4gXHQgKiByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBjb3VudCwgYXMgcmVhZGluZyB0aGUgY3VycmVudCBjb3VudCBmcm9tXG4tXHQgKiBwZXJmIGlzIGZhc3RlciB0aGFuIHBhdXNpbmcgYW5kIHJlcGdyb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0b1xuK1x0ICogcGVyZiBpcyBmYXN0ZXIgdGhhbiBwYXVzaW5nIGFuZCByZXByb2dyYW1taW5nIHRoZSBldmVudCBpbiBvcmRlciB0b1xuIFx0ICogcmVzZXQgaXQgdG8gJzAnLiAgTm90ZSwgdGhpcyB2ZXJ5IHNuZWFraWx5IG9mZnNldHMgdGhlIGFjY3VtdWxhdGVkXG4gXHQgKiBlbXVsYXRlZCBjb3VudCB0b28sIGJ5IHVzaW5nIHBtY19yZWFkX2NvdW50ZXIoKSFcbiBcdCAqL1xuQEAgLTQyMiw3ICs0MjIsNiBAQCBzdGF0aWMgaW50IGZpbHRlcl9jbXAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiLCB1NjQgbWFzaylcbiBcdHJldHVybiAoYSBcdTAwM2UgYikgLSAoYSBcdTAwM2MgYik7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgZmlsdGVyX3NvcnRfY21wKGNvbnN0IHZvaWQgKnBhLCBjb25zdCB2b2lkICpwYilcbiB7XG4gXHRyZXR1cm4gZmlsdGVyX2NtcChwYSwgcGIsIChLVk1fUE1VX01BU0tFRF9FTlRSWV9FVkVOVF9TRUxFQ1QgfFxuQEAgLTY1OCw3ICs2NTcsNyBAQCB2b2lkIGt2bV9wbXVfaGFuZGxlX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdC8qXG4gXHQgKiBUaGUgcmVwcm9ncmFtbWluZyBiaXRtYXAgY2FuIGJlIHdyaXR0ZW4gYXN5bmNocm9ub3VzbHkgYnkgc29tZXRoaW5nXG4gXHQgKiBvdGhlciB0aGFuIHRoZSB0YXNrIHRoYXQgaG9sZHMgdmNwdS1cdTAwM2VtdXRleCwgdGFrZSBjYXJlIHRvIGNsZWFyIG9ubHlcbi1cdCAqIHRoZSBiaXRzIHRoYXQgd2lsbCBhY3R1YWxseSBwcm9jZXNzZWQuXG4rXHQgKiB0aGUgYml0cyB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgcHJvY2Vzc2VkLlxuIFx0ICovXG4gXHRCVUlMRF9CVUdfT04oc2l6ZW9mKGJpdG1hcCkgIT0gc2l6ZW9mKGF0b21pYzY0X3QpKTtcbiBcdGF0b21pYzY0X2FuZG5vdCgqKHM2NCAqKWJpdG1hcCwgXHUwMDI2cG11LVx1MDAzZV9fcmVwcm9ncmFtX3BtaSk7XG5AQCAtNjY2LDkgKzY2NSw5IEBAIHZvaWQga3ZtX3BtdV9oYW5kbGVfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0a3ZtX2Zvcl9lYWNoX3BtYyhwbXUsIHBtYywgYml0LCBiaXRtYXApIHtcbiBcdFx0LypcbiBcdFx0ICogSWYgcmVwcm9ncmFtbWluZyBmYWlscywgZS5nLiBkdWUgdG8gY29udGVudGlvbiwgcmUtc2V0IHRoZVxuLVx0XHQgKiByZWdwcm9ncmFtIGJpdCBzZXQsIGkuZS4gb3Bwb3J0dW5pc3RpY2FsbHkgdHJ5IGFnYWluIG9uIHRoZVxuLVx0XHQgKiBuZXh0IFBNVSByZWZyZXNoLiAgRG9uJ3QgbWFrZSBhIG5ldyByZXF1ZXN0IGFzIGRvaW5nIHNvIGNhblxuLVx0XHQgKiBzdGFsbCB0aGUgZ3Vlc3QgaWYgcmVwcm9ncmFtbWluZyByZXBlYXRlZGx5IGZhaWxzLlxuK1x0XHQgKiByZXByb2dyYW0gYml0LCBpLmUuIG9wcG9ydHVuaXN0aWNhbGx5IHRyeSBhZ2FpbiBvbiB0aGUgbmV4dFxuK1x0XHQgKiBQTVUgcmVmcmVzaC4gIERvbid0IG1ha2UgYSBuZXcgcmVxdWVzdCBhcyBkb2luZyBzbyBjYW4gc3RhbGxcbitcdFx0ICogdGhlIGd1ZXN0IGlmIHJlcHJvZ3JhbW1pbmcgcmVwZWF0ZWRseSBmYWlscy5cbiBcdFx0ICovXG4gXHRcdGlmIChyZXByb2dyYW1fY291bnRlcihwbWMpKVxuIFx0XHRcdHNldF9iaXQocG1jLVx1MDAzZWlkeCwgcG11LVx1MDAzZXJlcHJvZ3JhbV9wbWkpO1xuQEAgLTk1Niw3ICs5NTUsNiBAQCBzdGF0aWMgdm9pZCBrdm1fcG11X3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGt2bV9wbXVfY2FsbChyZXNldCkodmNwdSk7XG4gfVxuIFxuLVxuIC8qXG4gICogUmVmcmVzaCB0aGUgUE1VIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB2Q1BVLCBlLmcuIGlmIHVzZXJzcGFjZSBjaGFuZ2VzIENQVUlEXG4gICogYW5kL29yIFBFUkZfQ0FQQUJJTElUSUVTLlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9wbXUuaCBiL2FyY2gveDg2L2t2bS9wbXUuaFxuaW5kZXggYTU4MjFkN2M4N2Y5MzUuLjA5MGM5YmJiNzRmNDgzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3BtdS5oXG4rKysgYi9hcmNoL3g4Ni9rdm0vcG11LmhcbkBAIC05NCw4ICs5NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fdmNwdV9oYXNfbWVkaWF0ZWRfcG11KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiAgKiBpcyB0cmFja2VkIGludGVybmFsbHkgdmlhIGluZGV4IDMyLiAgT24gSW50ZWwsIChBTUQgZG9lc24ndCBzdXBwb3J0IGZpeGVkXG4gICogY291bnRlcnMpLCB0aGlzIG1pcnJvcnMgaG93IGZpeGVkIGNvdW50ZXJzIGFyZSBtYXBwZWQgdG8gUEVSRl9HTE9CQUxfQ1RSTFxuICAqIGFuZCBzaW1pbGFyIE1TUnMsIGkuZS4gdHJhY2tpbmcgZml4ZWQgY291bnRlcnMgYXQgYmFzZSBpbmRleCAzMiByZWR1Y2VzIHRoZVxuLSAqIGFtb3VudGVyIG9mIGJvaWxlcnBsYXRlIG5lZWRlZCB0byBpdGVyYXRlIG92ZXIgUE1DcyAqYW5kKiBzaW1wbGlmaWVzIGNvbW1vblxuLSAqIGVuYWJsaW5nL2Rpc2FibGUvcmVzZXQgb3BlcmF0aW9ucy5cbisgKiBhbW91bnQgb2YgYm9pbGVycGxhdGUgbmVlZGVkIHRvIGl0ZXJhdGUgb3ZlciBQTUNzICphbmQqIHNpbXBsaWZpZXMgY29tbW9uXG4rICogZW5hYmxlL2Rpc2FibGUvcmVzZXQgb3BlcmF0aW9ucy5cbiAgKlxuICAqIFdBUk5JTkchICBUaGlzIGhlbHBlciBpcyBvbmx5IGZvciBsb29rdXBzIHRoYXQgYXJlIGluaXRpYXRlZCBieSBLVk0sIGl0IGlzXG4gICogTk9UIHNhZmUgZm9yIGd1ZXN0IGxvb2t1cHMsIGUuZy4gd2lsbCBkbyB0aGUgd3JvbmcgdGhpbmcgaWYgcGFzc2VkIGEgcmF3XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuYyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmNcbmluZGV4IGE3M2E5NTE1ZDk2Y2Q1Li43MGVmODRhYTFhMjIzZCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmNcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmNcbkBAIC03OTUsNyArNzk1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG11X3dyaXRlX2dsb2JhbF9jdHJsKHU2NCBnbG9iYWxfY3RybClcbiBcdHZtY3Nfd3JpdGU2NChHVUVTVF9JQTMyX1BFUkZfR0xPQkFMX0NUUkwsIGdsb2JhbF9jdHJsKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgaW50ZWxfbWVkaWF0ZWRfcG11X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiBcdHN0cnVjdCBrdm1fcG11ICpwbXUgPSB2Y3B1X3RvX3BtdSh2Y3B1KTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9jb3VudGVyc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9jb3VudGVyc190ZXN0LmNcbmluZGV4IGRjNmFmYWMzYWE5MTk1Li42NzdkYzIzNTM1NDg3ZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvcG11X2NvdW50ZXJzX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfY291bnRlcnNfdGVzdC5jXG5AQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB1OCBndWVzdF9nZXRfcG11X3ZlcnNpb24odm9pZClcbiBcbiAvKlxuICAqIElmIGFuIGFyY2hpdGVjdHVyYWwgZXZlbnQgaXMgc3VwcG9ydGVkIGFuZCBndWFyYW50ZWVkIHRvIGdlbmVyYXRlIGF0IGxlYXN0XG4tICogb25lIFwiaGl0LCBhc3NlcnQgdGhhdCBpdHMgY291bnQgaXMgbm9uLXplcm8uICBJZiBhbiBldmVudCBpc24ndCBzdXBwb3J0ZWQgb3JcbisgKiBvbmUgaGl0LCBhc3NlcnQgdGhhdCBpdHMgY291bnQgaXMgbm9uLXplcm8uICBJZiBhbiBldmVudCBpc24ndCBzdXBwb3J0ZWQgb3JcbiAgKiB0aGUgdGVzdCBjYW4ndCBndWFyYW50ZWUgdGhlIGFzc29jaWF0ZWQgYWN0aW9uIHdpbGwgb2NjdXIsIHRoZW4gYWxsIGJldHMgYXJlXG4gICogb2ZmIHJlZ2FyZGluZyB0aGUgY291bnQsIGkuZS4gbm8gY2hlY2tzIGNhbiBiZSBkb25lLlxuICAqXG5AQCAtNTk4LDcgKzU5OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfaW50ZWxfY291bnRlcnModm9pZClcbiBcdCAqIFRvIGtlZXAgdGhlIHRvdGFsIHJ1bnRpbWUgcmVhc29uYWJsZSwgdGVzdCBvbmx5IGEgaGFuZGZ1bCBvZiBzZWxlY3QsXG4gXHQgKiBzZW1pLWFyYml0cmFyeSB2YWx1ZXMgZm9yIHRoZSBtYXNrIG9mIHVuYXZhaWxhYmxlIFBNVSBldmVudHMuICBUZXN0XG4gXHQgKiAwIChhbGwgZXZlbnRzIGF2YWlsYWJsZSkgYW5kIGFsbCBvbmVzIChubyBldmVudHMgYXZhaWxhYmxlKSBhcyB3ZWxsXG4tXHQgKiBhcyBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY3VlcywgZS5nLiB0byBkZXRlY3QgaWYgS1ZNIGlzIGNoZWNraW5nIHRoZVxuK1x0ICogYXMgYWx0ZXJuYXRpbmcgYml0IHNlcXVlbmNlcywgZS5nLiB0byBkZXRlY3QgaWYgS1ZNIGlzIGNoZWNraW5nIHRoZVxuIFx0ICogd3JvbmcgYml0KHMpLlxuIFx0ICovXG4gXHRjb25zdCB1MzIgdW5hdmFpbGFibGVfbWFza3NbXSA9IHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3BtdV9ldmVudF9maWx0ZXJfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xuaW5kZXggODRlNGM2Y2E2N2EzZDYuLjJkNDAxZmYwOTExMjQwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY1xuQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IHtcbiBcbiAvKlxuICAqIElmIHdlIGVuY291bnRlciBhICNHUCBkdXJpbmcgdGhlIGd1ZXN0IFBNVSBzYW5pdHkgY2hlY2ssIHRoZW4gdGhlIGd1ZXN0XG4tICogUE1VIGlzIG5vdCBmdW5jdGlvbmFsLiBJbmZvcm0gdGhlIGh5cGVydmlzb3IgdmlhIEdVRVNUX1NZTkMoMCkuXG4rICogUE1VIGlzIG5vdCBmdW5jdGlvbmFsLiBJbmZvcm0gdGhlIGh5cGVydmlzb3IgdmlhIEdVRVNUX1NZTkMoLUVGQVVMVCkuXG4gICovXG4gc3RhdGljIHZvaWQgZ3Vlc3RfZ3BfaGFuZGxlcihzdHJ1Y3QgZXhfcmVncyAqcmVncylcbiB7XG5AQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgdm9pZCBndWVzdF9ncF9oYW5kbGVyKHN0cnVjdCBleF9yZWdzICpyZWdzKVxuICAqIENoZWNrIHRoYXQgd2UgY2FuIHdyaXRlIGEgbmV3IHZhbHVlIHRvIHRoZSBnaXZlbiBNU1IgYW5kIHJlYWQgaXQgYmFjay5cbiAgKiBUaGUgY2FsbGVyIHNob3VsZCBwcm92aWRlIGEgbm9uLWVtcHR5IHNldCBvZiBiaXRzIHRoYXQgYXJlIHNhZmUgdG8gZmxpcC5cbiAgKlxuLSAqIFJldHVybiBvbiBzdWNjZXNzLiBHVUVTVF9TWU5DKDApIG9uIGVycm9yLlxuKyAqIFJldHVybiBvbiBzdWNjZXNzLCBHVUVTVF9TWU5DKC1FSU8pIG9uIGVycm9yLlxuICAqL1xuIHN0YXRpYyB2b2lkIGNoZWNrX21zcih1MzIgbXNyLCB1NjQgYml0c190b19mbGlwKVxuIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDEwOjU5OjE3LjA0MTQ5ODA1OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNTc4ODM3MzM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvc21ldGljIENsZWFudXAgLSBObyBGdW5jdGlvbmFsIEltcGFjdCoqXG5cbk9rYXksIHNvIEkndmUganVzdCByZXZpZXdlZCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBzZXZlcmFsIGZpbGVzIHdpdGhpbiB0aGUgS1ZNL3g4NiBQTVUgY29kZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQncyAqZW50aXJlbHkqIGNvc21ldGljLiBXZSdyZSBsb29raW5nIGF0IHVwZGF0ZXMgaW4gYGFyY2gveDg2L2t2bS9wbXUuY2AsIGBhcmNoL3g4Ni9rdm0vcG11LmhgLCBgYXJjaC94ODYva3ZtL3ZteC9wbXVfaW50ZWwuY2AsIGFuZCBzb21lIG9mIHRoZSBzZWxmLXRlc3RzIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L2AuXG5cblNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZTpcblxuKiAgICoqVHlwb3M6KiogVGhlcmUncyBhIHN0cmluZyBvZiB0eXBvIGNvcnJlY3Rpb25zOiBcInJlcGdyb2dyYW1taW5nXCIgLVx1MDAzZSBcInJlcHJvZ3JhbW1pbmdcIiwgXCJhY3R1YWxseSBwcm9jZXNzZWRcIiAtXHUwMDNlIFwiYWN0dWFsbHkgYmUgcHJvY2Vzc2VkXCIsIFwicmVncHJvZ3JhbVwiIC1cdTAwM2UgXCJyZXByb2dyYW1cIiwgXCJhbW91bnRlclwiIC1cdTAwM2UgXCJhbW91bnRcIiwgXCJlbmFibGluZy9kaXNhYmxlL3Jlc2V0XCIgLVx1MDAzZSBcImVuYWJsZS9kaXNhYmxlL3Jlc2V0XCIsIGBcImhpdGAgLVx1MDAzZSBgXCJoaXRcImAgYW5kIFwic2VxdWVuY3Vlc1wiIC1cdTAwM2UgXCJzZXF1ZW5jZXNcIi5cbiogICAqKldoaXRlc3BhY2U6KiogRXh0cmEgYmxhbmsgbGluZXMgYXJlIGJlaW5nIHJlbW92ZWQgaW4gYSBmZXcgcGxhY2VzLlxuKiAgICoqQ29tbWVudHM6KiogIFRoZSBjb21tZW50cyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9wbXVfZXZlbnRfZmlsdGVyX3Rlc3QuY2AgYXJlIGJlaW5nIHVwZGF0ZWQgZm9yIGVycm9yIGNvbmRpdGlvbnM6IGBHVUVTVF9TWU5DKDApYCAtXHUwMDNlIGBHVUVTVF9TWU5DKC1FRkFVTFQpYCBhbmQgYEdVRVNUX1NZTkMoMClgIC1cdTAwM2UgYEdVRVNUX1NZTkMoLUVJTylgLlxuXG5JJ3ZlIGNhcmVmdWxseSBleGFtaW5lZCB0aGUgZGlmZiBhbmQsIGFzIGZhciBhcyBJIGNhbiB0ZWxsLCAqbm9uZSogb2YgdGhlc2UgY2hhbmdlcyBhbHRlciB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBQTVUgY29kZS4gSXQncyBhbGwgYWJvdXQgbWFraW5nIHRoZSBjb2RlIGNsZWFuZXIgYW5kIG1vcmUgcmVhZGFibGUsIHdoaWNoIGlzIGFsd2F5cyB3ZWxjb21lLCBidXQgaXQgZG9lc24ndCByZXByZXNlbnQgYSBjaGFuZ2UgaW4gYmVoYXZpb3IsIHBlcmZvcm1hbmNlLCBvciBzZWN1cml0eS4gVGhlcmVmb3JlLCBpbiBteSBwcm9mZXNzaW9uYWwgb3BpbmlvbiBhcyBhbiBleHBlcnQsIHRoZXJlIGlzICpubyogcmVhc29uIHRvIGNvbnNpZGVyIHRoaXMgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTEsIk91dHB1dFRva2VucyI6NTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMTA6NTk6MzcuNjIwMzM3MDU0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvc21ldGljIGNoYW5nZXM6IHR5cG8gZml4ZXMgaW4gY29tbWVudHMgYW5kIHJlbW92YWwgb2YgZXh0cmEgYmxhbmsgbGluZXMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvc21ldGljIGNoYW5nZXM6IHR5cG8gZml4ZXMgaW4gY29tbWVudHMgYW5kIHJlbW92YWwgb2YgZXh0cmEgYmxhbmsgbGluZXMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowzwzx8[1] Phase: Running StartedAt: 2026-06-26 10:59:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzwzx8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-26 10:59:49 +0000 UTC FinishedAt: 2026-06-26 10:59:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}