Name: series-workflowmfvpf Phase: Failed StartedAt: 2026-07-05 01:34:02 +0000 UTC FinishedAt: 2026-07-05 01:46:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmfvpf[0] Phase: Succeeded StartedAt: 2026-07-05 01:34:02 +0000 UTC FinishedAt: 2026-07-05 01:45:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmfvpf[0].run-triage Phase: Succeeded StartedAt: 2026-07-05 01:34:02 +0000 UTC FinishedAt: 2026-07-05 01:45:53 +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+CgkJCTx0ZD4yMDI2LzA3LzA1IDAxOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDE6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5MjdjODZiMjU2ZTdmMjdmMTUxMmZmYWU3NzM1N2M4MjkyMGU5Y2U2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAwMTo0NToyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XG4gRjpcdGFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmhcbiBGOlx0aW5jbHVkZS8qL2F0b21pYyouaFxuJiM0MztGOlx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbiYjNDM7RjpcdGxpYi9yZWZfdHJhY2UuaFxuJiM0MztGOlx0bGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG4gRjpcdHNjcmlwdHMvYXRvbWljL1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5yc1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuaW5kZXggZDczYTFjMDhjM2UzYzAuLjU1NTQzZWNkZjYwY2ZiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuQEAgLTU1LDYgJiM0Mzs1NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICYjNDM7MzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXHUwMDI2cGVyY3B1X2NvdW50KSlcbiBcdFx0dGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTtcbi1cdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXHUwMDI2cmVmLVx1MDAzZWRhdGEtXHUwMDNlY291bnQpKSlcbiYjNDM7XHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbiYjNDM7XHRcdHRyYWNlX3JlZl9maW5hbF9wdXQocmVmKTtcbiBcdFx0cmVmLVx1MDAzZWRhdGEtXHUwMDNlcmVsZWFzZShyZWYpO1xuJiM0MztcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41NGU5ZmJhOWUzZTlmNFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuQEAgLTAsMCAmIzQzOzEsMjYgQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbiYjNDM7I2lmbmRlZiBfTElOVVhfUkVGX1RSQUNFX0hcbiYjNDM7I2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuJiM0MztcbiYjNDM7LyogRGVjbGFyZSB0aGUgdHJhY2Vwb2ludCBzbyB0cmFjZXBvaW50X2VuYWJsZWQoKSBjYW4gYmUgdXNlZCAqL1xuJiM0MztERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX1RSQUNFUE9JTlRTXG4mIzQzOy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXG4mIzQzO2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopO1xuJiM0MztcbiYjNDM7I2RlZmluZSB0cmFjZV9yZWZfZmluYWxfcHV0KG9iailcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSlcdFx0XHRcXFxuJiM0MztcdFx0XHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcdFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzOyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfVxuJiM0MzsjZGVmaW5lIHRyYWNlX3JlZl9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9MSU5VWF9SRUZfVFJBQ0VfSCAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjdiMWZiZjMyNmEyMWM2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbkBAIC0xMDcsNiAmIzQzOzEwNyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcClcbiBcbiBcdGlmIChvbGQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IG9sZCA9PSBpKSB7XG4gXHRcdHNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpO1xuJiM0MztcdFx0dHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lNjAzN2EzMjViZTI2MlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbkBAIC0wLDAgJiM0MzsxLDQ2IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyN1bmRlZiBUUkFDRV9TWVNURU1cbiYjNDM7I2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlXG4mIzQzO1xuJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuJiM0MzsjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSFxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXG4mIzQzOyAqIEBjYWxsZXI6IGZ1bmN0aW9uIHRoYXQgY2FsbGVkIHRoZSByZWZjb3VudGluZ1xuJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4mIzQzOyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxuJiM0MzsgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXG4mIzQzOyAqXG4mIzQzOyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MzsgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcbiYjNDM7ICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXG4mIzQzOyAqL1xuJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxuJiM0MztcbiYjNDM7XHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXG4mIzQzO1xuJiM0MztcdFRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSxcbiYjNDM7XG4mIzQzO1x0VFBfU1RSVUNUX19lbnRyeShcbiYjNDM7XHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcbiYjNDM7XHRfX3N0cmluZyhmbiwgZm4pXG4mIzQzO1x0X19maWVsZChjb25zdCB2b2lkICosIG9iailcbiYjNDM7XHQpLFxuJiM0MztcbiYjNDM7XHRUUF9mYXN0X2Fzc2lnbihcbiYjNDM7XHRfX2VudHJ5LVx1MDAzZWNhbGxlciA9IGNhbGxlcjtcbiYjNDM7XHRfX2Fzc2lnbl9zdHIoZm4pO1xuJiM0MztcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuJiM0MztcdCksXG4mIzQzO1xuJiM0MztcdFRQX3ByaW50ayhcJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFwmIzM0OywgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cdTAwM2VvYmopXG4mIzQzOyk7XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXG4mIzQzO1xuJiM0MzsvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjdHJhY2UvZGVmaW5lX3RyYWNlLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXG5pbmRleCAwMGE5NTA5NjM2YzE4Ny4uYzI5YjJjY2IzYzMxMTcgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWdcbkBAIC01Miw2ICYjNDM7NTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbiYjNDM7Y29uZmlnIFJFRl9UUkFDRV9LVU5JVF9URVNUXG4mIzQzO1x0Ym9vbCBcJiMzNDtyZWZfdHJhY2Uga3VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0ZGVwZW5kcyBvbiBLVU5JVCBcdTAwMjZcdTAwMjYgRlRSQUNFXG4mIzQzO1x0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MztcdCAgdHJhY2Vwb2ludC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBOXG4mIzQzO1xuIGNvbmZpZyBCSVRSRVZFUlNFXG4gXHR0cmlzdGF0ZVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxuLS0tIGEvbGliL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvTWFrZWZpbGVcbkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICYjNDM7PSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeVxuJiM0MztcbiYjNDM7b2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSAmIzQzOz0gcmVmX3RyYWNlLm9cbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjVmN2MxN2M3YzQ3NThcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZfdHJhY2UuY1xuQEAgLTAsMCAmIzQzOzEsMTIgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxuJiM0Mzt7XG4mIzQzO1x0dHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcbmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL01ha2VmaWxlXG5AQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSAmIzQzOz0gdXRpbF9tYWNyb3Nfa3VuaXQub1xuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgJiM0Mzs9IHRlc3RfcmF0ZWxpbWl0Lm9cbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vXG4mIzQzO29iai0kKENPTkZJR19SRUZfVFJBQ0VfS1VOSVRfVEVTVCkgJiM0Mzs9IHJlZl90cmFjZV9rdW5pdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXHRcdCYjNDM7PSBtb2R1bGUvXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjJlY2U2Yzg0MGZlMGFkXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbkBAIC0wLDAgJiM0MzsxLDEzOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2FsbHN5bXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuJiM0MztcdGNvbnN0IGNoYXIgKmZuO1xuJiM0MztcdGNvbnN0IHZvaWQgKm9iajtcbiYjNDM7XHRpbnQgKmZsYWc7XG4mIzQzO1x0c3RydWN0IGt1bml0ICp0ZXN0O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEgcmVmY19jaGs7XG4mIzQzO3N0cnVjdCBkYXRhIHBjcHVfY2hrO1xuJiM0MztcbiYjNDM7Ly9jYWxsZWQgd2hlbiB0cmFjZXBvaW50IGZpcmVzXG4mIzQzO3N0YXRpYyB2b2lkIHByb2JlKFxuJiM0MztcdCAgdm9pZCAqaWdub3JlLFxuJiM0MztcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXG4mIzQzO1x0ICBjb25zdCBjaGFyICpmbixcbiYjNDM7XHQgIGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYXRhICpjaGtfdmFsO1xuJiM0MztcbiYjNDM7XHRjaGFyIGZ1bmNfbmFtZVtLU1lNX1NZTUJPTF9MRU5dO1xuJiM0MztcbiYjNDM7XHRzcHJpbnRfc3ltYm9sX25vX29mZnNldChmdW5jX25hbWUsIGNhbGxlcik7XG4mIzQzO1xuJiM0MztcdGlmICghc3RyY21wKGZ1bmNfbmFtZSwgXCYjMzQ7dGVzdF9yZWZjb3VudFwmIzM0OykpIHtcbiYjNDM7XHRcdGNoa192YWwgPSBcdTAwMjZyZWZjX2NoaztcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChvYmosIGNoa192YWwtXHUwMDNlb2JqLCBzaXplb2YocmVmY291bnRfdCkpKTtcbiYjNDM7XHR9IGVsc2UgaWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcJiMzNDt0ZXN0X3BlcmNwdVwmIzM0OykpIHtcbiYjNDM7XHRcdGNoa192YWwgPSBcdTAwMjZwY3B1X2NoaztcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChcbiYjNDM7XHRcdFx0b2JqLCBjaGtfdmFsLVx1MDAzZW9iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHQvL25vbiB0ZXN0IGZ1bmN0aW9uIG9yaWdpbiB0cmFjZSBldmVudHNcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHN0cnVjdCBrdW5pdCAqdGVzdCA9IGNoa192YWwtXHUwMDNldGVzdDtcbiYjNDM7XHRpbnQgKmZsYWcgPSBjaGtfdmFsLVx1MDAzZWZsYWc7XG4mIzQzO1xuJiM0MztcdC8vZW5zdXJlIHBhc3QgZmxhZyB3cml0ZXMgYXJlIGRvbmUgYmVmb3JlIHJlYWRpbmdcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGNhbGxlciwgY2hrX3ZhbC1cdTAwM2VjYWxsZXIpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAwKTsgLy9zaWduYWwgcHJvYmUgY29tcGxldGlvblxuJiM0Mzt9XG4mIzQzO1xuJiM0MztcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0cmVmY291bnRfdCByZWZjO1xuJiM0MztcdGludCBmbGFnX2FkZHIgPSAwO1xuJiM0MztcbiYjNDM7XHRyZWZjX2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcdTAwMjZ0ZXN0X3JlZmNvdW50O1xuJiM0MztcdHJlZmNfY2hrLmZuID0gXCYjMzQ7X19yZWZjb3VudF9zdWJfYW5kX3Rlc3RcJiMzNDs7XG4mIzQzO1x0cmVmY19jaGsub2JqID0gXHUwMDI2cmVmYztcbiYjNDM7XHRyZWZjX2Noay5mbGFnID0gXHUwMDI2ZmxhZ19hZGRyO1xuJiM0MztcdHJlZmNfY2hrLnRlc3QgPSB0ZXN0O1xuJiM0MztcbiYjNDM7XHRpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnO1xuJiM0MztcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xuJiM0MztcbiYjNDM7XHRyZWZjb3VudF9zZXQoXHUwMDI2cmVmYywgMik7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cmVmYykpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbiYjNDM7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNnJlZmMpKTtcbiYjNDM7XG4mIzQzO1x0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxuJiM0MztcdHVucmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGR1bW15X3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikge31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcGVyY3B1KHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwZXJjcHVfcmVmIHBjcHVfcmVmO1xuJiM0MztcbiYjNDM7XHRpbnQgZmxhZ19hZGRyID0gMTtcbiYjNDM7XG4mIzQzO1x0cGNwdV9jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2dGVzdF9wZXJjcHU7XG4mIzQzO1x0cGNwdV9jaGsuZm4gPSBcJiMzNDtwZXJjcHVfcmVmX3B1dF9tYW55XCYjMzQ7O1xuJiM0MztcdHBjcHVfY2hrLm9iaiA9IFx1MDAyNnBjcHVfcmVmO1xuJiM0MztcdHBjcHVfY2hrLmZsYWcgPSBcdTAwMjZmbGFnX2FkZHI7XG4mIzQzO1x0cGNwdV9jaGsudGVzdCA9IHRlc3Q7XG4mIzQzO1xuJiM0MztcdGludCAqZmxhZyA9IHBjcHVfY2hrLmZsYWc7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXHUwMDI2cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNnBjcHVfcmVmKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNnBjcHVfcmVmKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcbiYjNDM7XHR3YWl0X3Zhcl9ldmVudChmbGFnLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTsgLy93YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uXG4mIzQzO1x0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcbiYjNDM7XHRwZXJjcHVfcmVmX2V4aXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50KSxcbiYjNDM7XHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1KSxcbiYjNDM7XHR7fVxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O3JlZi10cmFjZVwmIzM0OyxcbiYjNDM7XHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xuJiM0MztcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtFdWdlbmUgTWF2aWNrIFx1MDAzY21AbWF2aWNrLmRldlx1MDAzZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcJiMzNDspO1xuJiM0MztNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAxOjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkyN2M4NmIyNTZlN2YyN2YxNTEyZmZhZTc3MzU3YzgyOTIwZTljZTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCA1IDAxOjQ1OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTCkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vYXRvbWljXyoudHh0CiBGOglhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oCiBGOglpbmNsdWRlLyovYXRvbWljKi5oCiYjNDM7RjoJaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaAogRjoJaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCiYjNDM7RjoJbGliL3JlZl90cmFjZS5oCiYjNDM7RjoJbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCiBGOglzY3JpcHRzL2F0b21pYy8KIEY6CXJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzCiBGOglydXN0L2tlcm5lbC9zeW5jL2F0b21pYy8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCmluZGV4IGQ3M2ExYzA4YzNlM2MwLi41NTU0M2VjZGY2MGNmYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCkBAIC01NSw2ICYjNDM7NTUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdXBkYXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9nZnAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmX3RyYWNlLmgmZ3Q7CiAKIHN0cnVjdCBwZXJjcHVfcmVmOwogdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7CkBAIC0zMzEsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKQogCiAJaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsICZhbXA7cGVyY3B1X2NvdW50KSkKIAkJdGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTsKLQllbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsICZhbXA7cmVmLSZndDtkYXRhLSZndDtjb3VudCkpKQomIzQzOwllbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsICZhbXA7cmVmLSZndDtkYXRhLSZndDtjb3VudCkpKSB7CiYjNDM7CQl0cmFjZV9yZWZfZmluYWxfcHV0KHJlZik7CiAJCXJlZi0mZ3Q7ZGF0YS0mZ3Q7cmVsZWFzZShyZWYpOwomIzQzOwl9CiAKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi41NGU5ZmJhOWUzZTlmNAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsMjYgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9ICiYjNDM7I2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0gKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHJhY2Vwb2ludC1kZWZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaCZndDsKJiM0MzsKJiM0MzsvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovCiYjNDM7REVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpOwomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfVFJBQ0VQT0lOVFMKJiM0MzsvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqLwomIzQzO2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopOwomIzQzOwomIzQzOyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopCQkJCQkJXAomIzQzOwlkbyB7CQkJCQkJCQkJXAomIzQzOwkJaWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSkJCQlcCiYjNDM7CQkJZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7CVwKJiM0MzsJfSB3aGlsZSAoMCkKJiM0MzsKJiM0MzsjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfQomIzQzOyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopIGRvIHsgfSB3aGlsZSAoMCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZW5kaWYgLyogX0xJTlVYX1JFRl9UUkFDRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjdiMWZiZjMyNmEyMWM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCkBAIC0xMDcsNiAmIzQzOzEwNyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbGltaXRzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9ja190eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZfdHJhY2UuaCZndDsKIAogc3RydWN0IG11dGV4OwogCkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcCkKIAogCWlmIChvbGQgJmd0OyAwICZhbXA7JmFtcDsgb2xkID09IGkpIHsKIAkJc21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7CiYjNDM7CQl0cmFjZV9yZWZfZmluYWxfcHV0KHIpOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MDM3YTMyNWJlMjYyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsNDYgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyN1bmRlZiBUUkFDRV9TWVNURU0KJiM0MzsjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2UKJiM0MzsKJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKQomIzQzOyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RyYWNlcG9pbnQuaCZndDsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiByZWZfdHJhY2VfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8KJiM0MzsgKiBAY2FsbGVyOiBmdW5jdGlvbiB0aGF0IGNhbGxlZCB0aGUgcmVmY291bnRpbmcKJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpCiYjNDM7ICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpCiYjNDM7ICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KQomIzQzOyAqCiYjNDM7ICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0CiYjNDM7ICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSwKJiM0MzsgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWQKJiM0MzsgKi8KJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LAomIzQzOwomIzQzOwlUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksCiYjNDM7CiYjNDM7CVRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSwKJiM0MzsKJiM0MzsJVFBfU1RSVUNUX19lbnRyeSgKJiM0MzsJX19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpCiYjNDM7CV9fc3RyaW5nKGZuLCBmbikKJiM0MzsJX19maWVsZChjb25zdCB2b2lkICosIG9iaikKJiM0MzsJKSwKJiM0MzsKJiM0MzsJVFBfZmFzdF9hc3NpZ24oCiYjNDM7CV9fZW50cnktJmd0O2NhbGxlciA9IGNhbGxlcjsKJiM0MzsJX19hc3NpZ25fc3RyKGZuKTsKJiM0MzsJX19lbnRyeS0mZ3Q7b2JqID0gb2JqOwomIzQzOwkpLAomIzQzOwomIzQzOwlUUF9wcmludGsoJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcCYjMzQ7LCAodm9pZCAqKV9fZW50cnktJmd0O2NhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS0mZ3Q7b2JqKQomIzQzOyk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqLwomIzQzOwomIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9kZWZpbmVfdHJhY2UuaCZndDsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKaW5kZXggMDBhOTUwOTYzNmMxODcuLmMyOWIyY2NiM2MzMTE3IDEwMDY0NAotLS0gYS9saWIvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9saWIvS2NvbmZpZwpAQCAtNTIsNiAmIzQzOzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1QKIAogCSAgV2hlbiBpbiBkb3VidCwgc2F5IE4uCiAKJiM0Mztjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1QKJiM0MzsJYm9vbCAmIzM0O3JlZl90cmFjZSBrdW5pdCB0ZXN0JiMzNDsgaWYgIUtVTklUX0FMTF9URVNUUwomIzQzOwlkZXBlbmRzIG9uIEtVTklUICZhbXA7JmFtcDsgRlRSQUNFCiYjNDM7CWRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTCiYjNDM7CWhlbHAKJiM0MzsJICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dAomIzQzOwkgIHRyYWNlcG9pbnQuCiYjNDM7CiYjNDM7CSAgSWYgdW5zdXJlLCBzYXkgTgomIzQzOwogY29uZmlnIEJJVFJFVkVSU0UKIAl0cmlzdGF0ZQogCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvbGliL01ha2VmaWxlCkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geQogb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgJiM0Mzs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vCiAKIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeQomIzQzOwomIzQzO29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgJiM0Mzs9IHJlZl90cmFjZS5vCmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI1ZjdjMTdjN2M0NzU4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZl90cmFjZS5jCkBAIC0wLDAgJiM0MzsxLDEyIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oJmd0OwomIzQzOwomIzQzOy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzCiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZfdHJhY2VfZmluYWxfcHV0KTsKJiM0MzsKJiM0MztFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZl90cmFjZV9maW5hbF9wdXQpOwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlCmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDQKLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZQpAQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vCiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICYjNDM7PSB1dGlsX21hY3Jvc19rdW5pdC5vCiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vCiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vCiYjNDM7b2JqLSQoQ09ORklHX1JFRl9UUkFDRV9LVU5JVF9URVNUKSAmIzQzOz0gcmVmX3RyYWNlX2t1bml0Lm8KIAogb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpCQkmIzQzOz0gbW9kdWxlLwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yZWNlNmM4NDBmZTBhZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYwpAQCAtMCwwICYjNDM7MSwxMzggQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7a3VuaXQvdGVzdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC93YWl0X2JpdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2thbGxzeW1zLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGRhdGEgewomIzQzOwl1bnNpZ25lZCBsb25nIGNhbGxlcjsKJiM0MzsJY29uc3QgY2hhciAqZm47CiYjNDM7CWNvbnN0IHZvaWQgKm9iajsKJiM0MzsJaW50ICpmbGFnOwomIzQzOwlzdHJ1Y3Qga3VuaXQgKnRlc3Q7CiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3QgZGF0YSByZWZjX2NoazsKJiM0MztzdHJ1Y3QgZGF0YSBwY3B1X2NoazsKJiM0MzsKJiM0MzsvL2NhbGxlZCB3aGVuIHRyYWNlcG9pbnQgZmlyZXMKJiM0MztzdGF0aWMgdm9pZCBwcm9iZSgKJiM0MzsJICB2b2lkICppZ25vcmUsCiYjNDM7CSAgdW5zaWduZWQgbG9uZyBjYWxsZXIsCiYjNDM7CSAgY29uc3QgY2hhciAqZm4sCiYjNDM7CSAgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJc3RydWN0IGRhdGEgKmNoa192YWw7CiYjNDM7CiYjNDM7CWNoYXIgZnVuY19uYW1lW0tTWU1fU1lNQk9MX0xFTl07CiYjNDM7CiYjNDM7CXNwcmludF9zeW1ib2xfbm9fb2Zmc2V0KGZ1bmNfbmFtZSwgY2FsbGVyKTsKJiM0MzsKJiM0MzsJaWYgKCFzdHJjbXAoZnVuY19uYW1lLCAmIzM0O3Rlc3RfcmVmY291bnQmIzM0OykpIHsKJiM0MzsJCWNoa192YWwgPSAmYW1wO3JlZmNfY2hrOwomIzQzOwkJS1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtJmd0O3Rlc3QsIG1lbWNtcChvYmosIGNoa192YWwtJmd0O29iaiwgc2l6ZW9mKHJlZmNvdW50X3QpKSk7CiYjNDM7CX0gZWxzZSBpZiAoIXN0cmNtcChmdW5jX25hbWUsICYjMzQ7dGVzdF9wZXJjcHUmIzM0OykpIHsKJiM0MzsJCWNoa192YWwgPSAmYW1wO3BjcHVfY2hrOwomIzQzOwkJS1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtJmd0O3Rlc3QsIG1lbWNtcCgKJiM0MzsJCQlvYmosIGNoa192YWwtJmd0O29iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJLy9ub24gdGVzdCBmdW5jdGlvbiBvcmlnaW4gdHJhY2UgZXZlbnRzCiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3RydWN0IGt1bml0ICp0ZXN0ID0gY2hrX3ZhbC0mZ3Q7dGVzdDsKJiM0MzsJaW50ICpmbGFnID0gY2hrX3ZhbC0mZ3Q7ZmxhZzsKJiM0MzsKJiM0MzsJLy9lbnN1cmUgcGFzdCBmbGFnIHdyaXRlcyBhcmUgZG9uZSBiZWZvcmUgcmVhZGluZwomIzQzOwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjYWxsZXIsIGNoa192YWwtJmd0O2NhbGxlcik7CiYjNDM7CiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDApOyAvL3NpZ25hbCBwcm9iZSBjb21wbGV0aW9uCiYjNDM7fQomIzQzOwomIzQzOwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJcmVmY291bnRfdCByZWZjOwomIzQzOwlpbnQgZmxhZ19hZGRyID0gMDsKJiM0MzsKJiM0MzsJcmVmY19jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpJmFtcDt0ZXN0X3JlZmNvdW50OwomIzQzOwlyZWZjX2Noay5mbiA9ICYjMzQ7X19yZWZjb3VudF9zdWJfYW5kX3Rlc3QmIzM0OzsKJiM0MzsJcmVmY19jaGsub2JqID0gJmFtcDtyZWZjOwomIzQzOwlyZWZjX2Noay5mbGFnID0gJmFtcDtmbGFnX2FkZHI7CiYjNDM7CXJlZmNfY2hrLnRlc3QgPSB0ZXN0OwomIzQzOwomIzQzOwlpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwomIzQzOwomIzQzOwlyZWZjb3VudF9zZXQoJmFtcDtyZWZjLCAyKTsKJiM0MzsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3JlZmMpKTsKJiM0MzsKJiM0MzsJc21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuCiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3JlZmMpKTsKJiM0MzsKJiM0MzsJd2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvbgomIzQzOwl1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9wZXJjcHUoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJc3RydWN0IHBlcmNwdV9yZWYgcGNwdV9yZWY7CiYjNDM7CiYjNDM7CWludCBmbGFnX2FkZHIgPSAxOwomIzQzOwomIzQzOwlwY3B1X2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZykmYW1wO3Rlc3RfcGVyY3B1OwomIzQzOwlwY3B1X2Noay5mbiA9ICYjMzQ7cGVyY3B1X3JlZl9wdXRfbWFueSYjMzQ7OwomIzQzOwlwY3B1X2Noay5vYmogPSAmYW1wO3BjcHVfcmVmOwomIzQzOwlwY3B1X2Noay5mbGFnID0gJmFtcDtmbGFnX2FkZHI7CiYjNDM7CXBjcHVfY2hrLnRlc3QgPSB0ZXN0OwomIzQzOwomIzQzOwlpbnQgKmZsYWcgPSBwY3B1X2Noay5mbGFnOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcGVyY3B1X3JlZl9pbml0KCZhbXA7cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9nZXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CXBlcmNwdV9yZWZfZ2V0KCZhbXA7cGNwdV9yZWYpOwomIzQzOwomIzQzOwlwZXJjcHVfcmVmX3B1dCgmYW1wO3BjcHVfcmVmKTsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKCZhbXA7cGNwdV9yZWYpOwomIzQzOwomIzQzOwlzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW4KJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CiYjNDM7CXdhaXRfdmFyX2V2ZW50KGZsYWcsIHNtcF9sb2FkX2FjcXVpcmUoZmxhZykpOyAvL3dhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24KJiM0MzsJdW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTsKJiM0MzsJcGVyY3B1X3JlZl9leGl0KCZhbXA7cGNwdV9yZWYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7CiYjNDM7CUtVTklUX0NBU0UodGVzdF9yZWZjb3VudCksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9wZXJjcHUpLAomIzQzOwl7fQomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3JlZi10cmFjZSYjMzQ7LAomIzQzOwkudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLAomIzQzO307CiYjNDM7CiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoJmFtcDtyZWZfdHJhY2VfdGVzdF9zdWl0ZSk7CiYjNDM7CiYjNDM7TU9EVUxFX0FVVEhPUigmIzM0O0V1Z2VuZSBNYXZpY2sgJmx0O21AbWF2aWNrLmRldiZndDsmIzM0Oyk7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7S1VuaXQgdGVzdCBmb3IgcmVmX3RyYWNlJiMzNDspOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODEyCgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDU3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWRkaW5nIGEgbmV3IHRyYWNlcG9pbnQsIGByZWZfdHJhY2VfZmluYWxfcHV0YCwgdGhhdCB0cmlnZ2VycyB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IGhpdHMgemVyby4gSXQgc2VlbXMgdG8gbW9kaWZ5IGEgZmV3IGNvcmUgZmlsZXM6IGBwZXJjcHUtcmVmY291bnQuaGAgYW5kIGByZWZjb3VudC5oYCwgd2hlcmUgaXQmIzM5O3MgaW5qZWN0aW5nIGNhbGxzIHRvIGB0cmFjZV9yZWZfZmluYWxfcHV0YC4gQWRkaXRpb25hbGx5LCBpdCBhZGRzIHRoZSBuZWNlc3NhcnkgdHJhY2Vwb2ludCBkZWZpbml0aW9ucywgYSB3cmFwcGVyIGZ1bmN0aW9uIGluIGBsaWIvcmVmX3RyYWNlLmNgLCBhbmQgYSBLVW5pdCB0ZXN0LgoKTm93LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG1hcmsgcGF0Y2hlcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGV5IGFyZSwgYW5kIEkgcXVvdGUsICYjMzQ7UHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuJiMzNDsgQmluZ28hIFRoaXMgaXMgZXhwbGljaXRseSBhIHRyYWNlcG9pbnQuIFRoZSBwYXRjaCBpcyBzb2xlbHkgYWRkaW5nIHRyYWNpbmcgY2FwYWJpbGl0aWVzLCBhbmQgYSB0ZXN0IGZvciB0aG9zZSBjYXBhYmlsaXRpZXMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlLiBJbiBgcGVyY3B1LXJlZmNvdW50LmhgLCB0aGV5JiMzOTt2ZSBhZGRlZCB0aGUgdHJhY2Vwb2ludCBjYWxsIHJpZ2h0IGJlZm9yZSB0aGUgYHJlbGVhc2VgIGZ1bmN0aW9uOyBjb21wbGV0ZWx5IGRlY29yYXRpdmUsIGNvbmZpcm1pbmcgdGhlIGluc3RydWN0aW9ucy4gTGlrZXdpc2UsIGluIGByZWZjb3VudC5oYCwgdGhleSYjMzk7dmUgYWRkZWQgdGhlIHRyYWNlcG9pbnQgY2FsbCBqdXN0IGJlZm9yZSByZXR1cm5pbmcuIFRoZSByZW1haW5pbmcgZmlsZXMgYXJlIGFsbCBqdXN0IHN1cHBvcnRpbmcgdGhlIG5ldyB0cmFjZXBvaW50LgoKWWVwLCBpdCYjMzk7cyBjbGVhcjogaXQmIzM5O3MgcHVyZWx5IGFkZGluZyBhIHRyYWNlcG9pbnQgYW5kIGFzc29jaWF0ZWQgaW5mcmFzdHJ1Y3R1cmUuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJiMzOTtsbCB1c2UgYHNldC1yZXN1bHRzYCB0byBzdWJtaXQgdGhlIGV2YWx1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmX3RyYWNlX2ZpbmFsX3B1dGApIHRvIHJlZmVyZW5jZSBjb3VudGluZyBmdW5jdGlvbnMgKGBwZXJjcHVfcmVmX3B1dF9tYW55YCBhbmQgYF9fcmVmY291bnRfc3ViX2FuZF90ZXN0YCkgYW5kIGEgS1VuaXQgdGVzdCBmb3IgaXQuIFRyYWNlcG9pbnRzIGFyZSBjb25zaWRlcmVkIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgc28gdGhpcyBwYXRjaCBkb2VzIG5vdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmX3RyYWNlX2ZpbmFsX3B1dGApIHRvIHJlZmVyZW5jZSBjb3VudGluZyBmdW5jdGlvbnMgKGBwZXJjcHVfcmVmX3B1dF9tYW55YCBhbmQgYF9fcmVmY291bnRfc3ViX2FuZF90ZXN0YCkgYW5kIGEgS1VuaXQgdGVzdCBmb3IgaXQuIFRyYWNlcG9pbnRzIGFyZSBjb25zaWRlcmVkIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgc28gdGhpcyBwYXRjaCBkb2VzIG5vdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDVUMDE6NDU6MjUuMjM0MTQ4NTgzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2ODk0MDM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgdHJhY2Vwb2ludCAoYHJlZl90cmFjZV9maW5hbF9wdXRgKSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIChgcGVyY3B1X3JlZl9wdXRfbWFueWAgYW5kIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGApIGFuZCBhIEtVbml0IHRlc3QgZm9yIGl0LiBUcmFjZXBvaW50cyBhcmUgY29uc2lkZXJlZCBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIHNvIHRoaXMgcGF0Y2ggZG9lcyBub3QgcmVxdWlyZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDE6NDU6MjUuMjM0MTU4MTMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTAxMDcwOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5MjdjODZiMjU2ZTdmMjdmMTUxMmZmYWU3NzM1N2M4MjkyMGU5Y2U2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMDE6NDU6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xcbmluZGV4IDEwZTgyNTMxODFkMzIxLi43YzM4N2VkNzQ2ZWU1MSAxMDA2NDRcXG4tLS0gYS9NQUlOVEFJTkVSU1xcbisrKyBiL01BSU5UQUlORVJTXFxuQEAgLTQyMTAsNyArNDIxMCwxMCBAQCBTOlxcdE1haW50YWluZWRcXG4gRjpcXHREb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dFxcbiBGOlxcdGFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmhcXG4gRjpcXHRpbmNsdWRlLyovYXRvbWljKi5oXFxuK0Y6XFx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxcbiBGOlxcdGluY2x1ZGUvbGludXgvcmVmY291bnQuaFxcbitGOlxcdGxpYi9yZWZfdHJhY2UuaFxcbitGOlxcdGxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xcbiBGOlxcdHNjcmlwdHMvYXRvbWljL1xcbiBGOlxcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzXFxuIEY6XFx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMvXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFxuaW5kZXggZDczYTFjMDhjM2UzYzAuLjU1NTQzZWNkZjYwY2ZiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFxuQEAgLTU1LDYgKzU1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZ2ZwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFxcdTAwM2VcXG4gXFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xcbiB0eXBlZGVmIHZvaWQgKHBlcmNwdV9yZWZfZnVuY190KShzdHJ1Y3QgcGVyY3B1X3JlZiAqKTtcXG5AQCAtMzMxLDggKzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKVxcbiBcXG4gXFx0aWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsIFxcdTAwMjZwZXJjcHVfY291bnQpKVxcbiBcXHRcXHR0aGlzX2NwdV9zdWIoKnBlcmNwdV9jb3VudCwgbnIpO1xcbi1cXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFxcdTAwMjZyZWYtXFx1MDAzZWRhdGEtXFx1MDAzZWNvdW50KSkpXFxuK1xcdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXFx1MDAyNnJlZi1cXHUwMDNlZGF0YS1cXHUwMDNlY291bnQpKSkge1xcbitcXHRcXHR0cmFjZV9yZWZfZmluYWxfcHV0KHJlZik7XFxuIFxcdFxcdHJlZi1cXHUwMDNlZGF0YS1cXHUwMDNlcmVsZWFzZShyZWYpO1xcbitcXHR9XFxuIFxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU0ZTlmYmE5ZTNlOWY0XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG5AQCAtMCwwICsxLDI2IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuKyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9IXFxuKyNkZWZpbmUgX0xJTlVYX1JFRl9UUkFDRV9IXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHJhY2Vwb2ludC1kZWZzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcXHUwMDNlXFxuK1xcbisvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXFxuK0RFQ0xBUkVfVFJBQ0VQT0lOVChyZWZfdHJhY2VfZmluYWxfcHV0KTtcXG4rXFxuKyNpZmRlZiBDT05GSUdfVFJBQ0VQT0lOVFNcXG4rLyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi9cXG4rZXh0ZXJuIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaik7XFxuK1xcbisjZGVmaW5lIHRyYWNlX3JlZl9maW5hbF9wdXQob2JqKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdGRvX3JlZl90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9fZnVuY19fLCBvYmopO1xcdFxcXFxcXG4rXFx0fSB3aGlsZSAoMClcXG4rXFxuKyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cXG4rc3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfVxcbisjZGVmaW5lIHRyYWNlX3JlZl9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXFxuKyNlbmRpZlxcbitcXG4rI2VuZGlmIC8qIF9MSU5VWF9SRUZfVFJBQ0VfSCAqL1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG5pbmRleCBiYTc2NTdjZWQyODE3Zi4uN2IxZmJmMzI2YTIxYzYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuQEAgLTEwNyw2ICsxMDcsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbGltaXRzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IG11dGV4O1xcbiBcXG5AQCAtMzkzLDYgKzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcClcXG4gXFxuIFxcdGlmIChvbGQgXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IG9sZCA9PSBpKSB7XFxuIFxcdFxcdHNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpO1xcbitcXHRcXHR0cmFjZV9yZWZfZmluYWxfcHV0KHIpO1xcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MDM3YTMyNWJlMjYyXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXFxuQEAgLTAsMCArMSw0NiBAQFxcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbisjdW5kZWYgVFJBQ0VfU1lTVEVNXFxuKyNkZWZpbmUgVFJBQ0VfU1lTVEVNIHJlZl90cmFjZVxcbitcXG4rI2lmICFkZWZpbmVkKF9UUkFDRV9SRUZfVFJBQ0VfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcXG4rI2RlZmluZSBfVFJBQ0VfUkVGX1RSQUNFX0hcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC90cmFjZXBvaW50LmhcXHUwMDNlXFxuK1xcbisvKipcXG4rICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXFxuKyAqIEBjYWxsZXI6IGZ1bmN0aW9uIHRoYXQgY2FsbGVkIHRoZSByZWZjb3VudGluZ1xcbisgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXFxuKyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxcbisgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXFxuKyAqXFxuKyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxcbisgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG4rICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcXG4rICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXFxuKyAqL1xcbitUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxcbitcXG4rXFx0VFBfUFJPVE8odW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopLFxcbitcXG4rXFx0VFBfQVJHUyhjYWxsZXIsIGZuLCBvYmopLFxcbitcXG4rXFx0VFBfU1RSVUNUX19lbnRyeShcXG4rXFx0X19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpXFxuK1xcdF9fc3RyaW5nKGZuLCBmbilcXG4rXFx0X19maWVsZChjb25zdCB2b2lkICosIG9iailcXG4rXFx0KSxcXG4rXFxuK1xcdFRQX2Zhc3RfYXNzaWduKFxcbitcXHRfX2VudHJ5LVxcdTAwM2VjYWxsZXIgPSBjYWxsZXI7XFxuK1xcdF9fYXNzaWduX3N0cihmbik7XFxuK1xcdF9fZW50cnktXFx1MDAzZW9iaiA9IG9iajtcXG4rXFx0KSxcXG4rXFxuK1xcdFRQX3ByaW50ayhcXFwiY2FsbGVyPSVwUyBmbj0lcyBvYmo9JXBcXFwiLCAodm9pZCAqKV9fZW50cnktXFx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cXHUwMDNlb2JqKVxcbispO1xcbitcXG4rI2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqL1xcbitcXG4rLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0c2lkZSBwcm90ZWN0aW9uICovXFxuKyNpbmNsdWRlIFxcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xcbmluZGV4IDAwYTk1MDk2MzZjMTg3Li5jMjliMmNjYjNjMzExNyAxMDA2NDRcXG4tLS0gYS9saWIvS2NvbmZpZ1xcbisrKyBiL2xpYi9LY29uZmlnXFxuQEAgLTUyLDYgKzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1RcXG4gXFxuIFxcdCAgV2hlbiBpbiBkb3VidCwgc2F5IE4uXFxuIFxcbitjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1RcXG4rXFx0Ym9vbCBcXFwicmVmX3RyYWNlIGt1bml0IHRlc3RcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4rXFx0ZGVwZW5kcyBvbiBLVU5JVCBcXHUwMDI2XFx1MDAyNiBGVFJBQ0VcXG4rXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4rXFx0aGVscFxcbitcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0XFxuK1xcdCAgdHJhY2Vwb2ludC5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTlxcbitcXG4gY29uZmlnIEJJVFJFVkVSU0VcXG4gXFx0dHJpc3RhdGVcXG4gXFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxcbmluZGV4IGYzM2EyNGJmMWMxOWFkLi40MTczNzA5MGE5NWRiOSAxMDA2NDRcXG4tLS0gYS9saWIvTWFrZWZpbGVcXG4rKysgYi9saWIvTWFrZWZpbGVcXG5AQCAtMzM1LDMgKzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxcbiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSArPSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xcbiBcXG4gc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSArPSB0ZXN0X2ZvcnRpZnlcXG4rXFxuK29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgKz0gcmVmX3RyYWNlLm9cXG5kaWZmIC0tZ2l0IGEvbGliL3JlZl90cmFjZS5jIGIvbGliL3JlZl90cmFjZS5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjVmN2MxN2M3YzQ3NThcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbGliL3JlZl90cmFjZS5jXFxuQEAgLTAsMCArMSwxMiBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcdTAwM2VcXG4rXFxuKy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzXFxuK3ZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iailcXG4re1xcbitcXHR0cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KGNhbGxlciwgZm4sIG9iaik7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCk7XFxuK1xcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZl90cmFjZV9maW5hbF9wdXQpO1xcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XFxuLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlXFxuKysrIGIvbGliL3Rlc3RzL01ha2VmaWxlXFxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSArPSB1dGlsX21hY3Jvc19rdW5pdC5vXFxuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgKz0gdGVzdF9yYXRlbGltaXQub1xcbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cXG4rb2JqLSQoQ09ORklHX1JFRl9UUkFDRV9LVU5JVF9URVNUKSArPSByZWZfdHJhY2Vfa3VuaXQub1xcbiBcXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXFx0XFx0Kz0gbW9kdWxlL1xcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yZWNlNmM4NDBmZTBhZFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG5AQCAtMCwwICsxLDEzOCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NrdW5pdC90ZXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0X2JpdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2FsbHN5bXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBkYXRhIHtcXG4rXFx0dW5zaWduZWQgbG9uZyBjYWxsZXI7XFxuK1xcdGNvbnN0IGNoYXIgKmZuO1xcbitcXHRjb25zdCB2b2lkICpvYmo7XFxuK1xcdGludCAqZmxhZztcXG4rXFx0c3RydWN0IGt1bml0ICp0ZXN0O1xcbit9O1xcbitcXG4rc3RydWN0IGRhdGEgcmVmY19jaGs7XFxuK3N0cnVjdCBkYXRhIHBjcHVfY2hrO1xcbitcXG4rLy9jYWxsZWQgd2hlbiB0cmFjZXBvaW50IGZpcmVzXFxuK3N0YXRpYyB2b2lkIHByb2JlKFxcbitcXHQgIHZvaWQgKmlnbm9yZSxcXG4rXFx0ICB1bnNpZ25lZCBsb25nIGNhbGxlcixcXG4rXFx0ICBjb25zdCBjaGFyICpmbixcXG4rXFx0ICBjb25zdCB2b2lkICpvYmopXFxuK3tcXG4rXFx0c3RydWN0IGRhdGEgKmNoa192YWw7XFxuK1xcbitcXHRjaGFyIGZ1bmNfbmFtZVtLU1lNX1NZTUJPTF9MRU5dO1xcbitcXG4rXFx0c3ByaW50X3N5bWJvbF9ub19vZmZzZXQoZnVuY19uYW1lLCBjYWxsZXIpO1xcbitcXG4rXFx0aWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcXFwidGVzdF9yZWZjb3VudFxcXCIpKSB7XFxuK1xcdFxcdGNoa192YWwgPSBcXHUwMDI2cmVmY19jaGs7XFxuK1xcdFxcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVxcdTAwM2V0ZXN0LCBtZW1jbXAob2JqLCBjaGtfdmFsLVxcdTAwM2VvYmosIHNpemVvZihyZWZjb3VudF90KSkpO1xcbitcXHR9IGVsc2UgaWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcXFwidGVzdF9wZXJjcHVcXFwiKSkge1xcbitcXHRcXHRjaGtfdmFsID0gXFx1MDAyNnBjcHVfY2hrO1xcbitcXHRcXHRLVU5JVF9FWFBFQ1RfRkFMU0UoY2hrX3ZhbC1cXHUwMDNldGVzdCwgbWVtY21wKFxcbitcXHRcXHRcXHRvYmosIGNoa192YWwtXFx1MDAzZW9iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHQvL25vbiB0ZXN0IGZ1bmN0aW9uIG9yaWdpbiB0cmFjZSBldmVudHNcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRzdHJ1Y3Qga3VuaXQgKnRlc3QgPSBjaGtfdmFsLVxcdTAwM2V0ZXN0O1xcbitcXHRpbnQgKmZsYWcgPSBjaGtfdmFsLVxcdTAwM2VmbGFnO1xcbitcXG4rXFx0Ly9lbnN1cmUgcGFzdCBmbGFnIHdyaXRlcyBhcmUgZG9uZSBiZWZvcmUgcmVhZGluZ1xcbitcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7XFxuK1xcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjYWxsZXIsIGNoa192YWwtXFx1MDAzZWNhbGxlcik7XFxuK1xcbitcXHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAwKTsgLy9zaWduYWwgcHJvYmUgY29tcGxldGlvblxcbit9XFxuK1xcbitcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHJlZmNvdW50X3QgcmVmYztcXG4rXFx0aW50IGZsYWdfYWRkciA9IDA7XFxuK1xcbitcXHRyZWZjX2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2dGVzdF9yZWZjb3VudDtcXG4rXFx0cmVmY19jaGsuZm4gPSBcXFwiX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RcXFwiO1xcbitcXHRyZWZjX2Noay5vYmogPSBcXHUwMDI2cmVmYztcXG4rXFx0cmVmY19jaGsuZmxhZyA9IFxcdTAwMjZmbGFnX2FkZHI7XFxuK1xcdHJlZmNfY2hrLnRlc3QgPSB0ZXN0O1xcbitcXG4rXFx0aW50ICpmbGFnID0gcmVmY19jaGsuZmxhZztcXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XFxuK1xcbitcXHRyZWZjb3VudF9zZXQoXFx1MDAyNnJlZmMsIDIpO1xcbitcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2cmVmYykpO1xcbitcXG4rXFx0c21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuXFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNnJlZmMpKTtcXG4rXFxuK1xcdHdhaXRfdmFyX2V2ZW50KGZsYWcsIHNtcF9sb2FkX2FjcXVpcmUoZmxhZykpOyAvL3dhaXQgZm9yIHByb2JlIGNvbXBsZXRpb25cXG4rXFx0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9wZXJjcHUoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHN0cnVjdCBwZXJjcHVfcmVmIHBjcHVfcmVmO1xcbitcXG4rXFx0aW50IGZsYWdfYWRkciA9IDE7XFxuK1xcbitcXHRwY3B1X2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2dGVzdF9wZXJjcHU7XFxuK1xcdHBjcHVfY2hrLmZuID0gXFxcInBlcmNwdV9yZWZfcHV0X21hbnlcXFwiO1xcbitcXHRwY3B1X2Noay5vYmogPSBcXHUwMDI2cGNwdV9yZWY7XFxuK1xcdHBjcHVfY2hrLmZsYWcgPSBcXHUwMDI2ZmxhZ19hZGRyO1xcbitcXHRwY3B1X2Noay50ZXN0ID0gdGVzdDtcXG4rXFxuK1xcdGludCAqZmxhZyA9IHBjcHVfY2hrLmZsYWc7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xcbitcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcXHUwMDI2cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcXG4rXFxuK1xcdHBlcmNwdV9yZWZfZ2V0KFxcdTAwMjZwY3B1X3JlZik7XFxuK1xcdHBlcmNwdV9yZWZfZ2V0KFxcdTAwMjZwY3B1X3JlZik7XFxuK1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2cGNwdV9yZWYpO1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2cGNwdV9yZWYpO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXFx1MDAyNnBjcHVfcmVmKTtcXG4rXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDEpOyAvL3NpZ25hbCBmaW5hbCBwdXQgY2FuIGhhcHBlblxcbitcXG4rXFx0cGVyY3B1X3JlZl9wdXQoXFx1MDAyNnBjcHVfcmVmKTtcXG4rXFxuK1xcdHdhaXRfdmFyX2V2ZW50KGZsYWcsIHNtcF9sb2FkX2FjcXVpcmUoZmxhZykpOyAvL3dhaXQgZm9yIHByb2JlIGNvbXBsZXRpb25cXG4rXFx0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcXG4rXFx0cGVyY3B1X3JlZl9leGl0KFxcdTAwMjZwY3B1X3JlZik7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBfX3JlZmRhdGEgcmVmX3RyYWNlX3Rlc3RfY2FzZXNbXSA9IHtcXG4rXFx0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50KSxcXG4rXFx0S1VOSVRfQ0FTRSh0ZXN0X3BlcmNwdSksXFxuK1xcdHt9XFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHJlZl90cmFjZV90ZXN0X3N1aXRlID0ge1xcbitcXHQubmFtZSA9IFxcXCJyZWYtdHJhY2VcXFwiLFxcbitcXHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLFxcbit9O1xcbitcXG4ra3VuaXRfdGVzdF9zdWl0ZXMoXFx1MDAyNnJlZl90cmFjZV90ZXN0X3N1aXRlKTtcXG4rXFxuK01PRFVMRV9BVVRIT1IoXFxcIkV1Z2VuZSBNYXZpY2sgXFx1MDAzY21AbWF2aWNrLmRldlxcdTAwM2VcXFwiKTtcXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcXFwiKTtcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMTo0NToyNS44NDQ4Njc3NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NTgyMTA0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTI3Yzg2YjI1NmU3ZjI3ZjE1MTJmZmFlNzczNTdjODI5MjBlOWNlNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDUgMDE6NDU6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuKysrIGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgKzQyMTAsMTAgQEAgUzpcdE1haW50YWluZWRcbiBGOlx0RG9jdW1lbnRhdGlvbi9hdG9taWNfKi50eHRcbiBGOlx0YXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaFxuIEY6XHRpbmNsdWRlLyovYXRvbWljKi5oXG4rRjpcdGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiBGOlx0aW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4rRjpcdGxpYi9yZWZfdHJhY2UuaFxuK0Y6XHRsaWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbiBGOlx0c2NyaXB0cy9hdG9taWMvXG4gRjpcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzXG4gRjpcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXG5pbmRleCBkNzNhMWMwOGMzZTNjMC4uNTU1NDNlY2RmNjBjZmIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXG5AQCAtNTUsNiArNTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICszMzIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwgdW5zaWduZWQgbG9uZyBucilcbiBcbiBcdGlmIChfX3JlZl9pc19wZXJjcHUocmVmLCBcdTAwMjZwZXJjcHVfY291bnQpKVxuIFx0XHR0aGlzX2NwdV9zdWIoKnBlcmNwdV9jb3VudCwgbnIpO1xuLVx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKVxuK1x0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKSB7XG4rXHRcdHRyYWNlX3JlZl9maW5hbF9wdXQocmVmKTtcbiBcdFx0cmVmLVx1MDAzZWRhdGEtXHUwMDNlcmVsZWFzZShyZWYpO1xuK1x0fVxuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU0ZTlmYmE5ZTNlOWY0XG4tLS0gL2Rldi9udWxsXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXG5AQCAtMCwwICsxLDI2IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjaWZuZGVmIF9MSU5VWF9SRUZfVFJBQ0VfSFxuKyNkZWZpbmUgX0xJTlVYX1JFRl9UUkFDRV9IXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC1kZWZzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcdTAwM2VcbitcbisvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXG4rREVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpO1xuK1xuKyNpZmRlZiBDT05GSUdfVFJBQ0VQT0lOVFNcbisvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqL1xuK2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopO1xuK1xuKyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopXHRcdFx0XHRcdFx0XFxcbitcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRpZiAodHJhY2Vwb2ludF9lbmFibGVkKHJlZl90cmFjZV9maW5hbF9wdXQpKVx0XHRcdFxcXG4rXHRcdFx0ZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7XHRcXFxuK1x0fSB3aGlsZSAoMClcbitcbisjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovXG4rc3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfVxuKyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopIGRvIHsgfSB3aGlsZSAoMClcbisjZW5kaWZcbitcbisjZW5kaWYgLyogX0xJTlVYX1JFRl9UUkFDRV9IICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5pbmRleCBiYTc2NTdjZWQyODE3Zi4uN2IxZmJmMzI2YTIxYzYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuQEAgLTEwNyw2ICsxMDcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbWl0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrX3R5cGVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiArMzk0LDcgQEAgYm9vbCBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdChpbnQgaSwgcmVmY291bnRfdCAqciwgaW50ICpvbGRwKVxuIFxuIFx0aWYgKG9sZCBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgb2xkID09IGkpIHtcbiBcdFx0c21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7XG4rXHRcdHRyYWNlX3JlZl9maW5hbF9wdXQocik7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZTYwMzdhMzI1YmUyNjJcbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXG5AQCAtMCwwICsxLDQ2IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjdW5kZWYgVFJBQ0VfU1lTVEVNXG4rI2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlXG4rXG4rI2lmICFkZWZpbmVkKF9UUkFDRV9SRUZfVFJBQ0VfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcbisjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuK1xuKy8qKlxuKyAqIHJlZl90cmFjZV9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyb1xuKyAqIEBjYWxsZXI6IGZ1bmN0aW9uIHRoYXQgY2FsbGVkIHRoZSByZWZjb3VudGluZ1xuKyAqIGZ1bmN0aW9uKHJlZmNvdW50X3N1Yl9hbmRfdGVzdCwgcGVyY3B1X3JlZl9wdXRfbWFueSlcbisgKiBAZm46IHJlZmNvdW50aW5nIGZ1bmN0aW9uKGVnIHJlZmNvdW50X3N1Yl9hbmRfdGVzdClcbisgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXG4rICpcbisgKiBUcmFjZXBvaW50IGluc3RydW1lbnRhdGlvbiBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIHJlZl90cmFjZV9maW5hbF9wdXRcbisgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbisgKiB3aGljaCB1c2VzIF9SRVRfSVBfIGFuZCBfX2Z1bmNfXyBmb3IgY2FsbGVyIGFuZCBmbiBhcmd1bWVudHMgcmVzcGVjdGl2ZWx5LFxuKyAqIHRodXMgb25seSByZXF1aXJpbmcgb2JqIGFyZyB0byBiZSBzdXBwbGllZFxuKyAqL1xuK1RSQUNFX0VWRU5UKHJlZl90cmFjZV9maW5hbF9wdXQsXG4rXG4rXHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXG4rXG4rXHRUUF9BUkdTKGNhbGxlciwgZm4sIG9iaiksXG4rXG4rXHRUUF9TVFJVQ1RfX2VudHJ5KFxuK1x0X19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpXG4rXHRfX3N0cmluZyhmbiwgZm4pXG4rXHRfX2ZpZWxkKGNvbnN0IHZvaWQgKiwgb2JqKVxuK1x0KSxcbitcbitcdFRQX2Zhc3RfYXNzaWduKFxuK1x0X19lbnRyeS1cdTAwM2VjYWxsZXIgPSBjYWxsZXI7XG4rXHRfX2Fzc2lnbl9zdHIoZm4pO1xuK1x0X19lbnRyeS1cdTAwM2VvYmogPSBvYmo7XG4rXHQpLFxuK1xuK1x0VFBfcHJpbnRrKFwiY2FsbGVyPSVwUyBmbj0lcyBvYmo9JXBcIiwgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cdTAwM2VvYmopXG4rKTtcbitcbisjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXG4rXG4rLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0c2lkZSBwcm90ZWN0aW9uICovXG4rI2luY2x1ZGUgXHUwMDNjdHJhY2UvZGVmaW5lX3RyYWNlLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXG5pbmRleCAwMGE5NTA5NjM2YzE4Ny4uYzI5YjJjY2IzYzMxMTcgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuKysrIGIvbGliL0tjb25maWdcbkBAIC01Miw2ICs1MiwxNiBAQCBjb25maWcgUEFDS0lOR19LVU5JVF9URVNUXG4gXG4gXHQgIFdoZW4gaW4gZG91YnQsIHNheSBOLlxuIFxuK2NvbmZpZyBSRUZfVFJBQ0VfS1VOSVRfVEVTVFxuK1x0Ym9vbCBcInJlZl90cmFjZSBrdW5pdCB0ZXN0XCIgaWYgIUtVTklUX0FMTF9URVNUU1xuK1x0ZGVwZW5kcyBvbiBLVU5JVCBcdTAwMjZcdTAwMjYgRlRSQUNFXG4rXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuK1x0aGVscFxuK1x0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuK1x0ICB0cmFjZXBvaW50LlxuK1xuK1x0ICBJZiB1bnN1cmUsIHNheSBOXG4rXG4gY29uZmlnIEJJVFJFVkVSU0VcbiBcdHRyaXN0YXRlXG4gXG5kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlXG5pbmRleCBmMzNhMjRiZjFjMTlhZC4uNDE3MzcwOTBhOTVkYjkgMTAwNjQ0XG4tLS0gYS9saWIvTWFrZWZpbGVcbisrKyBiL2xpYi9NYWtlZmlsZVxuQEAgLTMzNSwzICszMzUsNSBAQCBDT05URVhUX0FOQUxZU0lTX3Rlc3RfY29udGV4dC1hbmFseXNpcy5vIDo9IHlcbiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSArPSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgKz0gdGVzdF9mb3J0aWZ5XG4rXG4rb2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSArPSByZWZfdHJhY2Uub1xuZGlmZiAtLWdpdCBhL2xpYi9yZWZfdHJhY2UuYyBiL2xpYi9yZWZfdHJhY2UuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yNWY3YzE3YzdjNDc1OFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbGliL3JlZl90cmFjZS5jXG5AQCAtMCwwICsxLDEyIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcdTAwM2VcbitcbisvL1dyYXBwZXIgZnVuY3Rpb24gZm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGVudGlyZWx5IGluIGhlYWRlciBmaWxlc1xuK3ZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHR0cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KGNhbGxlciwgZm4sIG9iaik7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuK1xuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcbisrKyBiL2xpYi90ZXN0cy9NYWtlZmlsZVxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cbiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cbiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICs9IHRlc3RfcmF0ZWxpbWl0Lm9cbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cbitvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZl90cmFjZV9rdW5pdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXHRcdCs9IG1vZHVsZS9cbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMmVjZTZjODQwZmUwYWRcbi0tLSAvZGV2L251bGxcbisrKyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuQEAgLTAsMCArMSwxMzggQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2thbGxzeW1zLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcdTAwM2VcbitcbitzdHJ1Y3QgZGF0YSB7XG4rXHR1bnNpZ25lZCBsb25nIGNhbGxlcjtcbitcdGNvbnN0IGNoYXIgKmZuO1xuK1x0Y29uc3Qgdm9pZCAqb2JqO1xuK1x0aW50ICpmbGFnO1xuK1x0c3RydWN0IGt1bml0ICp0ZXN0O1xuK307XG4rXG4rc3RydWN0IGRhdGEgcmVmY19jaGs7XG4rc3RydWN0IGRhdGEgcGNwdV9jaGs7XG4rXG4rLy9jYWxsZWQgd2hlbiB0cmFjZXBvaW50IGZpcmVzXG4rc3RhdGljIHZvaWQgcHJvYmUoXG4rXHQgIHZvaWQgKmlnbm9yZSxcbitcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXG4rXHQgIGNvbnN0IGNoYXIgKmZuLFxuK1x0ICBjb25zdCB2b2lkICpvYmopXG4re1xuK1x0c3RydWN0IGRhdGEgKmNoa192YWw7XG4rXG4rXHRjaGFyIGZ1bmNfbmFtZVtLU1lNX1NZTUJPTF9MRU5dO1xuK1xuK1x0c3ByaW50X3N5bWJvbF9ub19vZmZzZXQoZnVuY19uYW1lLCBjYWxsZXIpO1xuK1xuK1x0aWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcInRlc3RfcmVmY291bnRcIikpIHtcbitcdFx0Y2hrX3ZhbCA9IFx1MDAyNnJlZmNfY2hrO1xuK1x0XHRLVU5JVF9FWFBFQ1RfRkFMU0UoY2hrX3ZhbC1cdTAwM2V0ZXN0LCBtZW1jbXAob2JqLCBjaGtfdmFsLVx1MDAzZW9iaiwgc2l6ZW9mKHJlZmNvdW50X3QpKSk7XG4rXHR9IGVsc2UgaWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcInRlc3RfcGVyY3B1XCIpKSB7XG4rXHRcdGNoa192YWwgPSBcdTAwMjZwY3B1X2NoaztcbitcdFx0S1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtXHUwMDNldGVzdCwgbWVtY21wKFxuK1x0XHRcdG9iaiwgY2hrX3ZhbC1cdTAwM2VvYmosIHNpemVvZihzdHJ1Y3QgcGVyY3B1X3JlZikpKTtcbitcdH0gZWxzZSB7XG4rXHRcdC8vbm9uIHRlc3QgZnVuY3Rpb24gb3JpZ2luIHRyYWNlIGV2ZW50c1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRzdHJ1Y3Qga3VuaXQgKnRlc3QgPSBjaGtfdmFsLVx1MDAzZXRlc3Q7XG4rXHRpbnQgKmZsYWcgPSBjaGtfdmFsLVx1MDAzZWZsYWc7XG4rXG4rXHQvL2Vuc3VyZSBwYXN0IGZsYWcgd3JpdGVzIGFyZSBkb25lIGJlZm9yZSByZWFkaW5nXG4rXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7XG4rXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgY2FsbGVyLCBjaGtfdmFsLVx1MDAzZWNhbGxlcik7XG4rXG4rXHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAwKTsgLy9zaWduYWwgcHJvYmUgY29tcGxldGlvblxuK31cbitcbitcbitcbitzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50KHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRyZWZjb3VudF90IHJlZmM7XG4rXHRpbnQgZmxhZ19hZGRyID0gMDtcbitcbitcdHJlZmNfY2hrLmNhbGxlciA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnRlc3RfcmVmY291bnQ7XG4rXHRyZWZjX2Noay5mbiA9IFwiX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RcIjtcbitcdHJlZmNfY2hrLm9iaiA9IFx1MDAyNnJlZmM7XG4rXHRyZWZjX2Noay5mbGFnID0gXHUwMDI2ZmxhZ19hZGRyO1xuK1x0cmVmY19jaGsudGVzdCA9IHRlc3Q7XG4rXG4rXHRpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcbitcbitcdHJlZmNvdW50X3NldChcdTAwMjZyZWZjLCAyKTtcbitcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cmVmYykpO1xuK1xuK1x0c21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuXG4rXG4rXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cmVmYykpO1xuK1xuK1x0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxuK1x0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfcGVyY3B1KHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRzdHJ1Y3QgcGVyY3B1X3JlZiBwY3B1X3JlZjtcbitcbitcdGludCBmbGFnX2FkZHIgPSAxO1xuK1xuK1x0cGNwdV9jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2dGVzdF9wZXJjcHU7XG4rXHRwY3B1X2Noay5mbiA9IFwicGVyY3B1X3JlZl9wdXRfbWFueVwiO1xuK1x0cGNwdV9jaGsub2JqID0gXHUwMDI2cGNwdV9yZWY7XG4rXHRwY3B1X2Noay5mbGFnID0gXHUwMDI2ZmxhZ19hZGRyO1xuK1x0cGNwdV9jaGsudGVzdCA9IHRlc3Q7XG4rXG4rXHRpbnQgKmZsYWcgPSBwY3B1X2Noay5mbGFnO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcbitcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXHUwMDI2cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbitcbitcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNnBjcHVfcmVmKTtcbitcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNnBjcHVfcmVmKTtcbitcbitcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNnBjcHVfcmVmKTtcbitcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNnBjcHVfcmVmKTtcbitcbitcdHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKFx1MDAyNnBjcHVfcmVmKTtcbitcbitcdHNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDEpOyAvL3NpZ25hbCBmaW5hbCBwdXQgY2FuIGhhcHBlblxuK1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuK1xuK1x0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxuK1x0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcbitcdHBlcmNwdV9yZWZfZXhpdChcdTAwMjZwY3B1X3JlZik7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBfX3JlZmRhdGEgcmVmX3RyYWNlX3Rlc3RfY2FzZXNbXSA9IHtcbitcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudCksXG4rXHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1KSxcbitcdHt9XG4rfTtcbitcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHJlZl90cmFjZV90ZXN0X3N1aXRlID0ge1xuK1x0Lm5hbWUgPSBcInJlZi10cmFjZVwiLFxuK1x0LnRlc3RfY2FzZXMgPSByZWZfdHJhY2VfdGVzdF9jYXNlcyxcbit9O1xuK1xuK2t1bml0X3Rlc3Rfc3VpdGVzKFx1MDAyNnJlZl90cmFjZV90ZXN0X3N1aXRlKTtcbitcbitNT0RVTEVfQVVUSE9SKFwiRXVnZW5lIE1hdmljayBcdTAwM2NtQG1hdmljay5kZXZcdTAwM2VcIik7XG4rTU9EVUxFX0RFU0NSSVBUSU9OKFwiS1VuaXQgdGVzdCBmb3IgcmVmX3RyYWNlXCIpO1xuK01PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDE6NDU6MjUuODQ0ODY5MDA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc1ODE3NzE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyBhIG5ldyB0cmFjZXBvaW50LCBgcmVmX3RyYWNlX2ZpbmFsX3B1dGAsIHRoYXQgdHJpZ2dlcnMgd2hlbiBhIHJlZmVyZW5jZSBjb3VudCBoaXRzIHplcm8uIEl0IHNlZW1zIHRvIG1vZGlmeSBhIGZldyBjb3JlIGZpbGVzOiBgcGVyY3B1LXJlZmNvdW50LmhgIGFuZCBgcmVmY291bnQuaGAsIHdoZXJlIGl0J3MgaW5qZWN0aW5nIGNhbGxzIHRvIGB0cmFjZV9yZWZfZmluYWxfcHV0YC4gQWRkaXRpb25hbGx5LCBpdCBhZGRzIHRoZSBuZWNlc3NhcnkgdHJhY2Vwb2ludCBkZWZpbml0aW9ucywgYSB3cmFwcGVyIGZ1bmN0aW9uIGluIGBsaWIvcmVmX3RyYWNlLmNgLCBhbmQgYSBLVW5pdCB0ZXN0LlxuXG5Ob3csIGxldCdzIHNlZS4uLiB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBtYXJrIHBhdGNoZXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhleSBhcmUsIGFuZCBJIHF1b3RlLCBcIlB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlwiIEJpbmdvISBUaGlzIGlzIGV4cGxpY2l0bHkgYSB0cmFjZXBvaW50LiBUaGUgcGF0Y2ggaXMgc29sZWx5IGFkZGluZyB0cmFjaW5nIGNhcGFiaWxpdGllcywgYW5kIGEgdGVzdCBmb3IgdGhvc2UgY2FwYWJpbGl0aWVzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlLiBJbiBgcGVyY3B1LXJlZmNvdW50LmhgLCB0aGV5J3ZlIGFkZGVkIHRoZSB0cmFjZXBvaW50IGNhbGwgcmlnaHQgYmVmb3JlIHRoZSBgcmVsZWFzZWAgZnVuY3Rpb247IGNvbXBsZXRlbHkgZGVjb3JhdGl2ZSwgY29uZmlybWluZyB0aGUgaW5zdHJ1Y3Rpb25zLiBMaWtld2lzZSwgaW4gYHJlZmNvdW50LmhgLCB0aGV5J3ZlIGFkZGVkIHRoZSB0cmFjZXBvaW50IGNhbGwganVzdCBiZWZvcmUgcmV0dXJuaW5nLiBUaGUgcmVtYWluaW5nIGZpbGVzIGFyZSBhbGwganVzdCBzdXBwb3J0aW5nIHRoZSBuZXcgdHJhY2Vwb2ludC5cblxuWWVwLCBpdCdzIGNsZWFyOiBpdCdzIHB1cmVseSBhZGRpbmcgYSB0cmFjZXBvaW50IGFuZCBhc3NvY2lhdGVkIGluZnJhc3RydWN0dXJlLlxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJ2xsIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHN1Ym1pdCB0aGUgZXZhbHVhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxMiwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMTo0NTozMy42MDMwNDg3MzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmfvpf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-05 01:34:02 +0000 UTC FinishedAt: 2026-07-05 01:45:35 +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+CgkJCTx0ZD4yMDI2LzA3LzA1IDAxOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDE6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5MjdjODZiMjU2ZTdmMjdmMTUxMmZmYWU3NzM1N2M4MjkyMGU5Y2U2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgNSAwMTo0NToyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuJiM0MzsmIzQzOyYjNDM7IGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6XHRNYWludGFpbmVkXG4gRjpcdERvY3VtZW50YXRpb24vYXRvbWljXyoudHh0XG4gRjpcdGFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmhcbiBGOlx0aW5jbHVkZS8qL2F0b21pYyouaFxuJiM0MztGOlx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuIEY6XHRpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbiYjNDM7RjpcdGxpYi9yZWZfdHJhY2UuaFxuJiM0MztGOlx0bGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG4gRjpcdHNjcmlwdHMvYXRvbWljL1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy5yc1xuIEY6XHRydXN0L2tlcm5lbC9zeW5jL2F0b21pYy9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuaW5kZXggZDczYTFjMDhjM2UzYzAuLjU1NTQzZWNkZjYwY2ZiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaFxuQEAgLTU1LDYgJiM0Mzs1NSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmN1cGRhdGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9nZnAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICYjNDM7MzMyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpXG4gXG4gXHRpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgXHUwMDI2cGVyY3B1X2NvdW50KSlcbiBcdFx0dGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTtcbi1cdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXHUwMDI2cmVmLVx1MDAzZWRhdGEtXHUwMDNlY291bnQpKSlcbiYjNDM7XHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFx1MDAyNnJlZi1cdTAwM2VkYXRhLVx1MDAzZWNvdW50KSkpIHtcbiYjNDM7XHRcdHRyYWNlX3JlZl9maW5hbF9wdXQocmVmKTtcbiBcdFx0cmVmLVx1MDAzZWRhdGEtXHUwMDNlcmVsZWFzZShyZWYpO1xuJiM0MztcdH1cbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi41NGU5ZmJhOWUzZTlmNFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxuQEAgLTAsMCAmIzQzOzEsMjYgQEBcbiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbiYjNDM7I2lmbmRlZiBfTElOVVhfUkVGX1RSQUNFX0hcbiYjNDM7I2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0hcbiYjNDM7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuJiM0MztcbiYjNDM7LyogRGVjbGFyZSB0aGUgdHJhY2Vwb2ludCBzbyB0cmFjZXBvaW50X2VuYWJsZWQoKSBjYW4gYmUgdXNlZCAqL1xuJiM0MztERUNMQVJFX1RSQUNFUE9JTlQocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX1RSQUNFUE9JTlRTXG4mIzQzOy8qIFdyYXBwZXIgZnVuY3Rpb24gaW1wbGVtZW50ZWQgaW4gbGliL3JlZl90cmFjZS5jICovXG4mIzQzO2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopO1xuJiM0MztcbiYjNDM7I2RlZmluZSB0cmFjZV9yZWZfZmluYWxfcHV0KG9iailcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSlcdFx0XHRcXFxuJiM0MztcdFx0XHRkb19yZWZfdHJhY2VfZmluYWxfcHV0KF9SRVRfSVBfLCBfX2Z1bmNfXywgb2JqKTtcdFxcXG4mIzQzO1x0fSB3aGlsZSAoMClcbiYjNDM7XG4mIzQzOyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfVxuJiM0MzsjZGVmaW5lIHRyYWNlX3JlZl9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7I2VuZGlmIC8qIF9MSU5VWF9SRUZfVFJBQ0VfSCAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjdiMWZiZjMyNmEyMWM2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbkBAIC0xMDcsNiAmIzQzOzEwNyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbGltaXRzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcClcbiBcbiBcdGlmIChvbGQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IG9sZCA9PSBpKSB7XG4gXHRcdHNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpO1xuJiM0MztcdFx0dHJhY2VfcmVmX2ZpbmFsX3B1dChyKTtcbiBcdFx0cmV0dXJuIHRydWU7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lNjAzN2EzMjViZTI2MlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbkBAIC0wLDAgJiM0MzsxLDQ2IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOyN1bmRlZiBUUkFDRV9TWVNURU1cbiYjNDM7I2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlXG4mIzQzO1xuJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKVxuJiM0MzsjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSFxuJiM0MztcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC5oXHUwMDNlXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXG4mIzQzOyAqIEBjYWxsZXI6IGZ1bmN0aW9uIHRoYXQgY2FsbGVkIHRoZSByZWZjb3VudGluZ1xuJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXG4mIzQzOyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxuJiM0MzsgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXG4mIzQzOyAqXG4mIzQzOyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MzsgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcbiYjNDM7ICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXG4mIzQzOyAqL1xuJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxuJiM0MztcbiYjNDM7XHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXG4mIzQzO1xuJiM0MztcdFRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSxcbiYjNDM7XG4mIzQzO1x0VFBfU1RSVUNUX19lbnRyeShcbiYjNDM7XHRfX2ZpZWxkKHVuc2lnbmVkIGxvbmcsIGNhbGxlcilcbiYjNDM7XHRfX3N0cmluZyhmbiwgZm4pXG4mIzQzO1x0X19maWVsZChjb25zdCB2b2lkICosIG9iailcbiYjNDM7XHQpLFxuJiM0MztcbiYjNDM7XHRUUF9mYXN0X2Fzc2lnbihcbiYjNDM7XHRfX2VudHJ5LVx1MDAzZWNhbGxlciA9IGNhbGxlcjtcbiYjNDM7XHRfX2Fzc2lnbl9zdHIoZm4pO1xuJiM0MztcdF9fZW50cnktXHUwMDNlb2JqID0gb2JqO1xuJiM0MztcdCksXG4mIzQzO1xuJiM0MztcdFRQX3ByaW50ayhcJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcFwmIzM0OywgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cdTAwM2VvYmopXG4mIzQzOyk7XG4mIzQzO1xuJiM0MzsjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXG4mIzQzO1xuJiM0MzsvKiBUaGlzIHBhcnQgbXVzdCBiZSBvdXRzaWRlIHByb3RlY3Rpb24gKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjdHJhY2UvZGVmaW5lX3RyYWNlLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXG5pbmRleCAwMGE5NTA5NjM2YzE4Ny4uYzI5YjJjY2IzYzMxMTcgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL0tjb25maWdcbkBAIC01Miw2ICYjNDM7NTIsMTYgQEAgY29uZmlnIFBBQ0tJTkdfS1VOSVRfVEVTVFxuIFxuIFx0ICBXaGVuIGluIGRvdWJ0LCBzYXkgTi5cbiBcbiYjNDM7Y29uZmlnIFJFRl9UUkFDRV9LVU5JVF9URVNUXG4mIzQzO1x0Ym9vbCBcJiMzNDtyZWZfdHJhY2Uga3VuaXQgdGVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzQzO1x0ZGVwZW5kcyBvbiBLVU5JVCBcdTAwMjZcdTAwMjYgRlRSQUNFXG4mIzQzO1x0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuJiM0MztcdCAgdHJhY2Vwb2ludC5cbiYjNDM7XG4mIzQzO1x0ICBJZiB1bnN1cmUsIHNheSBOXG4mIzQzO1xuIGNvbmZpZyBCSVRSRVZFUlNFXG4gXHR0cmlzdGF0ZVxuIFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxuaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NFxuLS0tIGEvbGliL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvTWFrZWZpbGVcbkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxuIG9iai0kKENPTkZJR19DT05URVhUX0FOQUxZU0lTX1RFU1QpICYjNDM7PSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeVxuJiM0MztcbiYjNDM7b2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSAmIzQzOz0gcmVmX3RyYWNlLm9cbmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjVmN2MxN2M3YzQ3NThcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9yZWZfdHJhY2UuY1xuQEAgLTAsMCAmIzQzOzEsMTIgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2RlZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7Ly9XcmFwcGVyIGZ1bmN0aW9uIGZvciBmdW5jdGlvbnMgZGVmaW5lZCBlbnRpcmVseSBpbiBoZWFkZXIgZmlsZXNcbiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKVxuJiM0Mzt7XG4mIzQzO1x0dHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuJiM0MztcbiYjNDM7RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTChyZWZfdHJhY2VfZmluYWxfcHV0KTtcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcbmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDRcbi0tLSBhL2xpYi90ZXN0cy9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvbGliL3Rlc3RzL01ha2VmaWxlXG5AQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSAmIzQzOz0gdXRpbF9tYWNyb3Nfa3VuaXQub1xuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgJiM0Mzs9IHRlc3RfcmF0ZWxpbWl0Lm9cbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vXG4mIzQzO29iai0kKENPTkZJR19SRUZfVFJBQ0VfS1VOSVRfVEVTVCkgJiM0Mzs9IHJlZl90cmFjZV9rdW5pdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXHRcdCYjNDM7PSBtb2R1bGUvXG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjJlY2U2Yzg0MGZlMGFkXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbkBAIC0wLDAgJiM0MzsxLDEzOCBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NrdW5pdC90ZXN0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgva2FsbHN5bXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZjb3VudC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEge1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgY2FsbGVyO1xuJiM0MztcdGNvbnN0IGNoYXIgKmZuO1xuJiM0MztcdGNvbnN0IHZvaWQgKm9iajtcbiYjNDM7XHRpbnQgKmZsYWc7XG4mIzQzO1x0c3RydWN0IGt1bml0ICp0ZXN0O1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IGRhdGEgcmVmY19jaGs7XG4mIzQzO3N0cnVjdCBkYXRhIHBjcHVfY2hrO1xuJiM0MztcbiYjNDM7Ly9jYWxsZWQgd2hlbiB0cmFjZXBvaW50IGZpcmVzXG4mIzQzO3N0YXRpYyB2b2lkIHByb2JlKFxuJiM0MztcdCAgdm9pZCAqaWdub3JlLFxuJiM0MztcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXG4mIzQzO1x0ICBjb25zdCBjaGFyICpmbixcbiYjNDM7XHQgIGNvbnN0IHZvaWQgKm9iailcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYXRhICpjaGtfdmFsO1xuJiM0MztcbiYjNDM7XHRjaGFyIGZ1bmNfbmFtZVtLU1lNX1NZTUJPTF9MRU5dO1xuJiM0MztcbiYjNDM7XHRzcHJpbnRfc3ltYm9sX25vX29mZnNldChmdW5jX25hbWUsIGNhbGxlcik7XG4mIzQzO1xuJiM0MztcdGlmICghc3RyY21wKGZ1bmNfbmFtZSwgXCYjMzQ7dGVzdF9yZWZjb3VudFwmIzM0OykpIHtcbiYjNDM7XHRcdGNoa192YWwgPSBcdTAwMjZyZWZjX2NoaztcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChvYmosIGNoa192YWwtXHUwMDNlb2JqLCBzaXplb2YocmVmY291bnRfdCkpKTtcbiYjNDM7XHR9IGVsc2UgaWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcJiMzNDt0ZXN0X3BlcmNwdVwmIzM0OykpIHtcbiYjNDM7XHRcdGNoa192YWwgPSBcdTAwMjZwY3B1X2NoaztcbiYjNDM7XHRcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVx1MDAzZXRlc3QsIG1lbWNtcChcbiYjNDM7XHRcdFx0b2JqLCBjaGtfdmFsLVx1MDAzZW9iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHQvL25vbiB0ZXN0IGZ1bmN0aW9uIG9yaWdpbiB0cmFjZSBldmVudHNcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHN0cnVjdCBrdW5pdCAqdGVzdCA9IGNoa192YWwtXHUwMDNldGVzdDtcbiYjNDM7XHRpbnQgKmZsYWcgPSBjaGtfdmFsLVx1MDAzZWZsYWc7XG4mIzQzO1xuJiM0MztcdC8vZW5zdXJlIHBhc3QgZmxhZyB3cml0ZXMgYXJlIGRvbmUgYmVmb3JlIHJlYWRpbmdcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX0VRKHRlc3QsIGNhbGxlciwgY2hrX3ZhbC1cdTAwM2VjYWxsZXIpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAwKTsgLy9zaWduYWwgcHJvYmUgY29tcGxldGlvblxuJiM0Mzt9XG4mIzQzO1xuJiM0MztcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KVxuJiM0Mzt7XG4mIzQzO1x0cmVmY291bnRfdCByZWZjO1xuJiM0MztcdGludCBmbGFnX2FkZHIgPSAwO1xuJiM0MztcbiYjNDM7XHRyZWZjX2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcdTAwMjZ0ZXN0X3JlZmNvdW50O1xuJiM0MztcdHJlZmNfY2hrLmZuID0gXCYjMzQ7X19yZWZjb3VudF9zdWJfYW5kX3Rlc3RcJiMzNDs7XG4mIzQzO1x0cmVmY19jaGsub2JqID0gXHUwMDI2cmVmYztcbiYjNDM7XHRyZWZjX2Noay5mbGFnID0gXHUwMDI2ZmxhZ19hZGRyO1xuJiM0MztcdHJlZmNfY2hrLnRlc3QgPSB0ZXN0O1xuJiM0MztcbiYjNDM7XHRpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnO1xuJiM0MztcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xuJiM0MztcbiYjNDM7XHRyZWZjb3VudF9zZXQoXHUwMDI2cmVmYywgMik7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cmVmYykpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbiYjNDM7XG4mIzQzO1x0S1VOSVRfRVhQRUNUX1RSVUUodGVzdCwgcmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNnJlZmMpKTtcbiYjNDM7XG4mIzQzO1x0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxuJiM0MztcdHVucmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGR1bW15X3JlbGVhc2Uoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikge31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHRlc3RfcGVyY3B1KHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBwZXJjcHVfcmVmIHBjcHVfcmVmO1xuJiM0MztcbiYjNDM7XHRpbnQgZmxhZ19hZGRyID0gMTtcbiYjNDM7XG4mIzQzO1x0cGNwdV9jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2dGVzdF9wZXJjcHU7XG4mIzQzO1x0cGNwdV9jaGsuZm4gPSBcJiMzNDtwZXJjcHVfcmVmX3B1dF9tYW55XCYjMzQ7O1xuJiM0MztcdHBjcHVfY2hrLm9iaiA9IFx1MDAyNnBjcHVfcmVmO1xuJiM0MztcdHBjcHVfY2hrLmZsYWcgPSBcdTAwMjZmbGFnX2FkZHI7XG4mIzQzO1x0cGNwdV9jaGsudGVzdCA9IHRlc3Q7XG4mIzQzO1xuJiM0MztcdGludCAqZmxhZyA9IHBjcHVfY2hrLmZsYWc7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XG4mIzQzO1xuJiM0MztcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXHUwMDI2cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9nZXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNnBjcHVfcmVmKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNnBjcHVfcmVmKTtcbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcbiYjNDM7XHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW5cbiYjNDM7XG4mIzQzO1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0MztcbiYjNDM7XHR3YWl0X3Zhcl9ldmVudChmbGFnLCBzbXBfbG9hZF9hY3F1aXJlKGZsYWcpKTsgLy93YWl0IGZvciBwcm9iZSBjb21wbGV0aW9uXG4mIzQzO1x0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcbiYjNDM7XHRwZXJjcHVfcmVmX2V4aXQoXHUwMDI2cGNwdV9yZWYpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7XG4mIzQzO1x0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50KSxcbiYjNDM7XHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1KSxcbiYjNDM7XHR7fVxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O3JlZi10cmFjZVwmIzM0OyxcbiYjNDM7XHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoXHUwMDI2cmVmX3RyYWNlX3Rlc3Rfc3VpdGUpO1xuJiM0MztcbiYjNDM7TU9EVUxFX0FVVEhPUihcJiMzNDtFdWdlbmUgTWF2aWNrIFx1MDAzY21AbWF2aWNrLmRldlx1MDAzZVwmIzM0Oyk7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcJiMzNDspO1xuJiM0MztNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDAxOjQ1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkyN2M4NmIyNTZlN2YyN2YxNTEyZmZhZTc3MzU3YzgyOTIwZTljZTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCA1IDAxOjQ1OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCiYjNDM7JiM0MzsmIzQzOyBiL01BSU5UQUlORVJTCkBAIC00MjEwLDcgJiM0Mzs0MjEwLDEwIEBAIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRpb24vYXRvbWljXyoudHh0CiBGOglhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oCiBGOglpbmNsdWRlLyovYXRvbWljKi5oCiYjNDM7RjoJaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaAogRjoJaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCiYjNDM7RjoJbGliL3JlZl90cmFjZS5oCiYjNDM7RjoJbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCiBGOglzY3JpcHRzL2F0b21pYy8KIEY6CXJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzCiBGOglydXN0L2tlcm5lbC9zeW5jL2F0b21pYy8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCmluZGV4IGQ3M2ExYzA4YzNlM2MwLi41NTU0M2VjZGY2MGNmYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oCkBAIC01NSw2ICYjNDM7NTUsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdXBkYXRlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9nZnAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVmX3RyYWNlLmgmZ3Q7CiAKIHN0cnVjdCBwZXJjcHVfcmVmOwogdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7CkBAIC0zMzEsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKQogCiAJaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsICZhbXA7cGVyY3B1X2NvdW50KSkKIAkJdGhpc19jcHVfc3ViKCpwZXJjcHVfY291bnQsIG5yKTsKLQllbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsICZhbXA7cmVmLSZndDtkYXRhLSZndDtjb3VudCkpKQomIzQzOwllbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsICZhbXA7cmVmLSZndDtkYXRhLSZndDtjb3VudCkpKSB7CiYjNDM7CQl0cmFjZV9yZWZfZmluYWxfcHV0KHJlZik7CiAJCXJlZi0mZ3Q7ZGF0YS0mZ3Q7cmVsZWFzZShyZWYpOwomIzQzOwl9CiAKIAlyY3VfcmVhZF91bmxvY2soKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi41NGU5ZmJhOWUzZTlmNAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsMjYgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9ICiYjNDM7I2RlZmluZSBfTElOVVhfUkVGX1RSQUNFX0gKJiM0MzsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHJhY2Vwb2ludC1kZWZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaCZndDsKJiM0MzsKJiM0MzsvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovCiYjNDM7REVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpOwomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfVFJBQ0VQT0lOVFMKJiM0MzsvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqLwomIzQzO2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopOwomIzQzOwomIzQzOyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopCQkJCQkJXAomIzQzOwlkbyB7CQkJCQkJCQkJXAomIzQzOwkJaWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSkJCQlcCiYjNDM7CQkJZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7CVwKJiM0MzsJfSB3aGlsZSAoMCkKJiM0MzsKJiM0MzsjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfQomIzQzOyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopIGRvIHsgfSB3aGlsZSAoMCkKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsjZW5kaWYgLyogX0xJTlVYX1JFRl9UUkFDRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKaW5kZXggYmE3NjU3Y2VkMjgxN2YuLjdiMWZiZjMyNmEyMWM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oCkBAIC0xMDcsNiAmIzQzOzEwNyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvbGltaXRzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcmVmY291bnRfdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zcGlubG9ja190eXBlcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZfdHJhY2UuaCZndDsKIAogc3RydWN0IG11dGV4OwogCkBAIC0zOTMsNiAmIzQzOzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcCkKIAogCWlmIChvbGQgJmd0OyAwICZhbXA7JmFtcDsgb2xkID09IGkpIHsKIAkJc21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7CiYjNDM7CQl0cmFjZV9yZWZfZmluYWxfcHV0KHIpOwogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MDM3YTMyNWJlMjYyCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgKQEAgLTAsMCAmIzQzOzEsNDYgQEAKJiM0MzsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwomIzQzOyN1bmRlZiBUUkFDRV9TWVNURU0KJiM0MzsjZGVmaW5lIFRSQUNFX1NZU1RFTSByZWZfdHJhY2UKJiM0MzsKJiM0MzsjaWYgIWRlZmluZWQoX1RSQUNFX1JFRl9UUkFDRV9IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9SRUFEKQomIzQzOyNkZWZpbmUgX1RSQUNFX1JFRl9UUkFDRV9ICiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3RyYWNlcG9pbnQuaCZndDsKJiM0MzsKJiM0MzsvKioKJiM0MzsgKiByZWZfdHJhY2VfZmluYWxfcHV0IC0gdHJhY2Ugd2hlbiBhIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8KJiM0MzsgKiBAY2FsbGVyOiBmdW5jdGlvbiB0aGF0IGNhbGxlZCB0aGUgcmVmY291bnRpbmcKJiM0MzsgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpCiYjNDM7ICogQGZuOiByZWZjb3VudGluZyBmdW5jdGlvbihlZyByZWZjb3VudF9zdWJfYW5kX3Rlc3QpCiYjNDM7ICogQG9iajogcmVmY291bnQgb2JqZWN0KHN0cnVjdCBwZXJjcHVfcmVmLCByZWZjb3VudF90KQomIzQzOyAqCiYjNDM7ICogVHJhY2Vwb2ludCBpbnN0cnVtZW50YXRpb24gY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0CiYjNDM7ICogbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oCiYjNDM7ICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSwKJiM0MzsgKiB0aHVzIG9ubHkgcmVxdWlyaW5nIG9iaiBhcmcgdG8gYmUgc3VwcGxpZWQKJiM0MzsgKi8KJiM0MztUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LAomIzQzOwomIzQzOwlUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksCiYjNDM7CiYjNDM7CVRQX0FSR1MoY2FsbGVyLCBmbiwgb2JqKSwKJiM0MzsKJiM0MzsJVFBfU1RSVUNUX19lbnRyeSgKJiM0MzsJX19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpCiYjNDM7CV9fc3RyaW5nKGZuLCBmbikKJiM0MzsJX19maWVsZChjb25zdCB2b2lkICosIG9iaikKJiM0MzsJKSwKJiM0MzsKJiM0MzsJVFBfZmFzdF9hc3NpZ24oCiYjNDM7CV9fZW50cnktJmd0O2NhbGxlciA9IGNhbGxlcjsKJiM0MzsJX19hc3NpZ25fc3RyKGZuKTsKJiM0MzsJX19lbnRyeS0mZ3Q7b2JqID0gb2JqOwomIzQzOwkpLAomIzQzOwomIzQzOwlUUF9wcmludGsoJiMzNDtjYWxsZXI9JXBTIGZuPSVzIG9iaj0lcCYjMzQ7LCAodm9pZCAqKV9fZW50cnktJmd0O2NhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS0mZ3Q7b2JqKQomIzQzOyk7CiYjNDM7CiYjNDM7I2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqLwomIzQzOwomIzQzOy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9kZWZpbmVfdHJhY2UuaCZndDsKZGlmZiAtLWdpdCBhL2xpYi9LY29uZmlnIGIvbGliL0tjb25maWcKaW5kZXggMDBhOTUwOTYzNmMxODcuLmMyOWIyY2NiM2MzMTE3IDEwMDY0NAotLS0gYS9saWIvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9saWIvS2NvbmZpZwpAQCAtNTIsNiAmIzQzOzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1QKIAogCSAgV2hlbiBpbiBkb3VidCwgc2F5IE4uCiAKJiM0Mztjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1QKJiM0MzsJYm9vbCAmIzM0O3JlZl90cmFjZSBrdW5pdCB0ZXN0JiMzNDsgaWYgIUtVTklUX0FMTF9URVNUUwomIzQzOwlkZXBlbmRzIG9uIEtVTklUICZhbXA7JmFtcDsgRlRSQUNFCiYjNDM7CWRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTCiYjNDM7CWhlbHAKJiM0MzsJICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dAomIzQzOwkgIHRyYWNlcG9pbnQuCiYjNDM7CiYjNDM7CSAgSWYgdW5zdXJlLCBzYXkgTgomIzQzOwogY29uZmlnIEJJVFJFVkVSU0UKIAl0cmlzdGF0ZQogCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUgYi9saWIvTWFrZWZpbGUKaW5kZXggZjMzYTI0YmYxYzE5YWQuLjQxNzM3MDkwYTk1ZGI5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvbGliL01ha2VmaWxlCkBAIC0zMzUsMyAmIzQzOzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geQogb2JqLSQoQ09ORklHX0NPTlRFWFRfQU5BTFlTSVNfVEVTVCkgJiM0Mzs9IHRlc3RfY29udGV4dC1hbmFseXNpcy5vCiAKIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgJiM0Mzs9IHRlc3RfZm9ydGlmeQomIzQzOwomIzQzO29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgJiM0Mzs9IHJlZl90cmFjZS5vCmRpZmYgLS1naXQgYS9saWIvcmVmX3RyYWNlLmMgYi9saWIvcmVmX3RyYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjI1ZjdjMTdjN2M0NzU4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbGliL3JlZl90cmFjZS5jCkBAIC0wLDAgJiM0MzsxLDEyIEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKJiM0MzsjaW5jbHVkZSAmbHQ7dHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oJmd0OwomIzQzOwomIzQzOy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzCiYjNDM7dm9pZCBkb19yZWZfdHJhY2VfZmluYWxfcHV0KHVuc2lnbmVkIGxvbmcgY2FsbGVyLCBjb25zdCBjaGFyICpmbiwgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChjYWxsZXIsIGZuLCBvYmopOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTChkb19yZWZfdHJhY2VfZmluYWxfcHV0KTsKJiM0MzsKJiM0MztFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZl90cmFjZV9maW5hbF9wdXQpOwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlCmluZGV4IDdlOWMyZmE1MmUzNWE0Li44MjhhMDMwYWQ4YzcxMCAxMDA2NDQKLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9NYWtlZmlsZQpAQCAtNTcsNSAmIzQzOzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICYjNDM7PSB1c2VyY29weV9rdW5pdC5vCiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICYjNDM7PSB1dGlsX21hY3Jvc19rdW5pdC5vCiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICYjNDM7PSB0ZXN0X3JhdGVsaW1pdC5vCiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSAmIzQzOz0gdXVpZF9rdW5pdC5vCiYjNDM7b2JqLSQoQ09ORklHX1JFRl9UUkFDRV9LVU5JVF9URVNUKSAmIzQzOz0gcmVmX3RyYWNlX2t1bml0Lm8KIAogb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpCQkmIzQzOz0gbW9kdWxlLwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jIGIvbGliL3Rlc3RzL3JlZl90cmFjZV9rdW5pdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yZWNlNmM4NDBmZTBhZAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuYwpAQCAtMCwwICYjNDM7MSwxMzggQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7a3VuaXQvdGVzdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC93YWl0X2JpdC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2thbGxzeW1zLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9yZWZjb3VudC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDt0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IGRhdGEgewomIzQzOwl1bnNpZ25lZCBsb25nIGNhbGxlcjsKJiM0MzsJY29uc3QgY2hhciAqZm47CiYjNDM7CWNvbnN0IHZvaWQgKm9iajsKJiM0MzsJaW50ICpmbGFnOwomIzQzOwlzdHJ1Y3Qga3VuaXQgKnRlc3Q7CiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3QgZGF0YSByZWZjX2NoazsKJiM0MztzdHJ1Y3QgZGF0YSBwY3B1X2NoazsKJiM0MzsKJiM0MzsvL2NhbGxlZCB3aGVuIHRyYWNlcG9pbnQgZmlyZXMKJiM0MztzdGF0aWMgdm9pZCBwcm9iZSgKJiM0MzsJICB2b2lkICppZ25vcmUsCiYjNDM7CSAgdW5zaWduZWQgbG9uZyBjYWxsZXIsCiYjNDM7CSAgY29uc3QgY2hhciAqZm4sCiYjNDM7CSAgY29uc3Qgdm9pZCAqb2JqKQomIzQzO3sKJiM0MzsJc3RydWN0IGRhdGEgKmNoa192YWw7CiYjNDM7CiYjNDM7CWNoYXIgZnVuY19uYW1lW0tTWU1fU1lNQk9MX0xFTl07CiYjNDM7CiYjNDM7CXNwcmludF9zeW1ib2xfbm9fb2Zmc2V0KGZ1bmNfbmFtZSwgY2FsbGVyKTsKJiM0MzsKJiM0MzsJaWYgKCFzdHJjbXAoZnVuY19uYW1lLCAmIzM0O3Rlc3RfcmVmY291bnQmIzM0OykpIHsKJiM0MzsJCWNoa192YWwgPSAmYW1wO3JlZmNfY2hrOwomIzQzOwkJS1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtJmd0O3Rlc3QsIG1lbWNtcChvYmosIGNoa192YWwtJmd0O29iaiwgc2l6ZW9mKHJlZmNvdW50X3QpKSk7CiYjNDM7CX0gZWxzZSBpZiAoIXN0cmNtcChmdW5jX25hbWUsICYjMzQ7dGVzdF9wZXJjcHUmIzM0OykpIHsKJiM0MzsJCWNoa192YWwgPSAmYW1wO3BjcHVfY2hrOwomIzQzOwkJS1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtJmd0O3Rlc3QsIG1lbWNtcCgKJiM0MzsJCQlvYmosIGNoa192YWwtJmd0O29iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJLy9ub24gdGVzdCBmdW5jdGlvbiBvcmlnaW4gdHJhY2UgZXZlbnRzCiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJc3RydWN0IGt1bml0ICp0ZXN0ID0gY2hrX3ZhbC0mZ3Q7dGVzdDsKJiM0MzsJaW50ICpmbGFnID0gY2hrX3ZhbC0mZ3Q7ZmxhZzsKJiM0MzsKJiM0MzsJLy9lbnN1cmUgcGFzdCBmbGFnIHdyaXRlcyBhcmUgZG9uZSBiZWZvcmUgcmVhZGluZwomIzQzOwlLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7CiYjNDM7CUtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjYWxsZXIsIGNoa192YWwtJmd0O2NhbGxlcik7CiYjNDM7CiYjNDM7CXNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDApOyAvL3NpZ25hbCBwcm9iZSBjb21wbGV0aW9uCiYjNDM7fQomIzQzOwomIzQzOwomIzQzOwomIzQzO3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJcmVmY291bnRfdCByZWZjOwomIzQzOwlpbnQgZmxhZ19hZGRyID0gMDsKJiM0MzsKJiM0MzsJcmVmY19jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpJmFtcDt0ZXN0X3JlZmNvdW50OwomIzQzOwlyZWZjX2Noay5mbiA9ICYjMzQ7X19yZWZjb3VudF9zdWJfYW5kX3Rlc3QmIzM0OzsKJiM0MzsJcmVmY19jaGsub2JqID0gJmFtcDtyZWZjOwomIzQzOwlyZWZjX2Noay5mbGFnID0gJmFtcDtmbGFnX2FkZHI7CiYjNDM7CXJlZmNfY2hrLnRlc3QgPSB0ZXN0OwomIzQzOwomIzQzOwlpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwomIzQzOwomIzQzOwlyZWZjb3VudF9zZXQoJmFtcDtyZWZjLCAyKTsKJiM0MzsKJiM0MzsJS1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3JlZmMpKTsKJiM0MzsKJiM0MzsJc21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuCiYjNDM7CiYjNDM7CUtVTklUX0VYUEVDVF9UUlVFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdCgmYW1wO3JlZmMpKTsKJiM0MzsKJiM0MzsJd2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvbgomIzQzOwl1bnJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBkdW1teV9yZWxlYXNlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpIHt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdGVzdF9wZXJjcHUoc3RydWN0IGt1bml0ICp0ZXN0KQomIzQzO3sKJiM0MzsJc3RydWN0IHBlcmNwdV9yZWYgcGNwdV9yZWY7CiYjNDM7CiYjNDM7CWludCBmbGFnX2FkZHIgPSAxOwomIzQzOwomIzQzOwlwY3B1X2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZykmYW1wO3Rlc3RfcGVyY3B1OwomIzQzOwlwY3B1X2Noay5mbiA9ICYjMzQ7cGVyY3B1X3JlZl9wdXRfbWFueSYjMzQ7OwomIzQzOwlwY3B1X2Noay5vYmogPSAmYW1wO3BjcHVfcmVmOwomIzQzOwlwY3B1X2Noay5mbGFnID0gJmFtcDtmbGFnX2FkZHI7CiYjNDM7CXBjcHVfY2hrLnRlc3QgPSB0ZXN0OwomIzQzOwomIzQzOwlpbnQgKmZsYWcgPSBwY3B1X2Noay5mbGFnOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpOwomIzQzOwomIzQzOwlLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcGVyY3B1X3JlZl9pbml0KCZhbXA7cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTsKJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9nZXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CXBlcmNwdV9yZWZfZ2V0KCZhbXA7cGNwdV9yZWYpOwomIzQzOwomIzQzOwlwZXJjcHVfcmVmX3B1dCgmYW1wO3BjcHVfcmVmKTsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CiYjNDM7CXBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKCZhbXA7cGNwdV9yZWYpOwomIzQzOwomIzQzOwlzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAxKTsgLy9zaWduYWwgZmluYWwgcHV0IGNhbiBoYXBwZW4KJiM0MzsKJiM0MzsJcGVyY3B1X3JlZl9wdXQoJmFtcDtwY3B1X3JlZik7CiYjNDM7CiYjNDM7CXdhaXRfdmFyX2V2ZW50KGZsYWcsIHNtcF9sb2FkX2FjcXVpcmUoZmxhZykpOyAvL3dhaXQgZm9yIHByb2JlIGNvbXBsZXRpb24KJiM0MzsJdW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTsKJiM0MzsJcGVyY3B1X3JlZl9leGl0KCZhbXA7cGNwdV9yZWYpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgX19yZWZkYXRhIHJlZl90cmFjZV90ZXN0X2Nhc2VzW10gPSB7CiYjNDM7CUtVTklUX0NBU0UodGVzdF9yZWZjb3VudCksCiYjNDM7CUtVTklUX0NBU0UodGVzdF9wZXJjcHUpLAomIzQzOwl7fQomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBrdW5pdF9zdWl0ZSByZWZfdHJhY2VfdGVzdF9zdWl0ZSA9IHsKJiM0MzsJLm5hbWUgPSAmIzM0O3JlZi10cmFjZSYjMzQ7LAomIzQzOwkudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLAomIzQzO307CiYjNDM7CiYjNDM7a3VuaXRfdGVzdF9zdWl0ZXMoJmFtcDtyZWZfdHJhY2VfdGVzdF9zdWl0ZSk7CiYjNDM7CiYjNDM7TU9EVUxFX0FVVEhPUigmIzM0O0V1Z2VuZSBNYXZpY2sgJmx0O21AbWF2aWNrLmRldiZndDsmIzM0Oyk7CiYjNDM7TU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7S1VuaXQgdGVzdCBmb3IgcmVmX3RyYWNlJiMzNDspOwomIzQzO01PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwMTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODEyCgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDU3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWRkaW5nIGEgbmV3IHRyYWNlcG9pbnQsIGByZWZfdHJhY2VfZmluYWxfcHV0YCwgdGhhdCB0cmlnZ2VycyB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IGhpdHMgemVyby4gSXQgc2VlbXMgdG8gbW9kaWZ5IGEgZmV3IGNvcmUgZmlsZXM6IGBwZXJjcHUtcmVmY291bnQuaGAgYW5kIGByZWZjb3VudC5oYCwgd2hlcmUgaXQmIzM5O3MgaW5qZWN0aW5nIGNhbGxzIHRvIGB0cmFjZV9yZWZfZmluYWxfcHV0YC4gQWRkaXRpb25hbGx5LCBpdCBhZGRzIHRoZSBuZWNlc3NhcnkgdHJhY2Vwb2ludCBkZWZpbml0aW9ucywgYSB3cmFwcGVyIGZ1bmN0aW9uIGluIGBsaWIvcmVmX3RyYWNlLmNgLCBhbmQgYSBLVW5pdCB0ZXN0LgoKTm93LCBsZXQmIzM5O3Mgc2VlLi4uIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIG1hcmsgcGF0Y2hlcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGV5IGFyZSwgYW5kIEkgcXVvdGUsICYjMzQ7UHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuJiMzNDsgQmluZ28hIFRoaXMgaXMgZXhwbGljaXRseSBhIHRyYWNlcG9pbnQuIFRoZSBwYXRjaCBpcyBzb2xlbHkgYWRkaW5nIHRyYWNpbmcgY2FwYWJpbGl0aWVzLCBhbmQgYSB0ZXN0IGZvciB0aG9zZSBjYXBhYmlsaXRpZXMuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlLiBJbiBgcGVyY3B1LXJlZmNvdW50LmhgLCB0aGV5JiMzOTt2ZSBhZGRlZCB0aGUgdHJhY2Vwb2ludCBjYWxsIHJpZ2h0IGJlZm9yZSB0aGUgYHJlbGVhc2VgIGZ1bmN0aW9uOyBjb21wbGV0ZWx5IGRlY29yYXRpdmUsIGNvbmZpcm1pbmcgdGhlIGluc3RydWN0aW9ucy4gTGlrZXdpc2UsIGluIGByZWZjb3VudC5oYCwgdGhleSYjMzk7dmUgYWRkZWQgdGhlIHRyYWNlcG9pbnQgY2FsbCBqdXN0IGJlZm9yZSByZXR1cm5pbmcuIFRoZSByZW1haW5pbmcgZmlsZXMgYXJlIGFsbCBqdXN0IHN1cHBvcnRpbmcgdGhlIG5ldyB0cmFjZXBvaW50LgoKWWVwLCBpdCYjMzk7cyBjbGVhcjogaXQmIzM5O3MgcHVyZWx5IGFkZGluZyBhIHRyYWNlcG9pbnQgYW5kIGFzc29jaWF0ZWQgaW5mcmFzdHJ1Y3R1cmUuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJiMzOTtsbCB1c2UgYHNldC1yZXN1bHRzYCB0byBzdWJtaXQgdGhlIGV2YWx1YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDE6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmX3RyYWNlX2ZpbmFsX3B1dGApIHRvIHJlZmVyZW5jZSBjb3VudGluZyBmdW5jdGlvbnMgKGBwZXJjcHVfcmVmX3B1dF9tYW55YCBhbmQgYF9fcmVmY291bnRfc3ViX2FuZF90ZXN0YCkgYW5kIGEgS1VuaXQgdGVzdCBmb3IgaXQuIFRyYWNlcG9pbnRzIGFyZSBjb25zaWRlcmVkIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgc28gdGhpcyBwYXRjaCBkb2VzIG5vdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSB0cmFjZXBvaW50IChgcmVmX3RyYWNlX2ZpbmFsX3B1dGApIHRvIHJlZmVyZW5jZSBjb3VudGluZyBmdW5jdGlvbnMgKGBwZXJjcHVfcmVmX3B1dF9tYW55YCBhbmQgYF9fcmVmY291bnRfc3ViX2FuZF90ZXN0YCkgYW5kIGEgS1VuaXQgdGVzdCBmb3IgaXQuIFRyYWNlcG9pbnRzIGFyZSBjb25zaWRlcmVkIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdywgc28gdGhpcyBwYXRjaCBkb2VzIG5vdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDVUMDE6NDU6MjUuMjM0MTQ4NTgzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2ODk0MDM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgdHJhY2Vwb2ludCAoYHJlZl90cmFjZV9maW5hbF9wdXRgKSB0byByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIChgcGVyY3B1X3JlZl9wdXRfbWFueWAgYW5kIGBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdGApIGFuZCBhIEtVbml0IHRlc3QgZm9yIGl0LiBUcmFjZXBvaW50cyBhcmUgY29uc2lkZXJlZCBwdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIHNvIHRoaXMgcGF0Y2ggZG9lcyBub3QgcmVxdWlyZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDE6NDU6MjUuMjM0MTU4MTMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTAxMDcwOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5MjdjODZiMjU2ZTdmMjdmMTUxMmZmYWU3NzM1N2M4MjkyMGU5Y2U2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMDE6NDU6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSU1xcbmluZGV4IDEwZTgyNTMxODFkMzIxLi43YzM4N2VkNzQ2ZWU1MSAxMDA2NDRcXG4tLS0gYS9NQUlOVEFJTkVSU1xcbisrKyBiL01BSU5UQUlORVJTXFxuQEAgLTQyMTAsNyArNDIxMCwxMCBAQCBTOlxcdE1haW50YWluZWRcXG4gRjpcXHREb2N1bWVudGF0aW9uL2F0b21pY18qLnR4dFxcbiBGOlxcdGFyY2gvKi9pbmNsdWRlL2FzbS9hdG9taWMqLmhcXG4gRjpcXHRpbmNsdWRlLyovYXRvbWljKi5oXFxuK0Y6XFx0aW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxcbiBGOlxcdGluY2x1ZGUvbGludXgvcmVmY291bnQuaFxcbitGOlxcdGxpYi9yZWZfdHJhY2UuaFxcbitGOlxcdGxpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xcbiBGOlxcdHNjcmlwdHMvYXRvbWljL1xcbiBGOlxcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzXFxuIEY6XFx0cnVzdC9rZXJuZWwvc3luYy9hdG9taWMvXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFxuaW5kZXggZDczYTFjMDhjM2UzYzAuLjU1NTQzZWNkZjYwY2ZiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFxuQEAgLTU1LDYgKzU1LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZ2ZwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFxcdTAwM2VcXG4gXFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xcbiB0eXBlZGVmIHZvaWQgKHBlcmNwdV9yZWZfZnVuY190KShzdHJ1Y3QgcGVyY3B1X3JlZiAqKTtcXG5AQCAtMzMxLDggKzMzMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcGVyY3B1X3JlZl9wdXRfbWFueShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLCB1bnNpZ25lZCBsb25nIG5yKVxcbiBcXG4gXFx0aWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsIFxcdTAwMjZwZXJjcHVfY291bnQpKVxcbiBcXHRcXHR0aGlzX2NwdV9zdWIoKnBlcmNwdV9jb3VudCwgbnIpO1xcbi1cXHRlbHNlIGlmICh1bmxpa2VseShhdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobnIsIFxcdTAwMjZyZWYtXFx1MDAzZWRhdGEtXFx1MDAzZWNvdW50KSkpXFxuK1xcdGVsc2UgaWYgKHVubGlrZWx5KGF0b21pY19sb25nX3N1Yl9hbmRfdGVzdChuciwgXFx1MDAyNnJlZi1cXHUwMDNlZGF0YS1cXHUwMDNlY291bnQpKSkge1xcbitcXHRcXHR0cmFjZV9yZWZfZmluYWxfcHV0KHJlZik7XFxuIFxcdFxcdHJlZi1cXHUwMDNlZGF0YS1cXHUwMDNlcmVsZWFzZShyZWYpO1xcbitcXHR9XFxuIFxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oIGIvaW5jbHVkZS9saW51eC9yZWZfdHJhY2UuaFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU0ZTlmYmE5ZTNlOWY0XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG5AQCAtMCwwICsxLDI2IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuKyNpZm5kZWYgX0xJTlVYX1JFRl9UUkFDRV9IXFxuKyNkZWZpbmUgX0xJTlVYX1JFRl9UUkFDRV9IXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdHJhY2Vwb2ludC1kZWZzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcXHUwMDNlXFxuK1xcbisvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXFxuK0RFQ0xBUkVfVFJBQ0VQT0lOVChyZWZfdHJhY2VfZmluYWxfcHV0KTtcXG4rXFxuKyNpZmRlZiBDT05GSUdfVFJBQ0VQT0lOVFNcXG4rLyogV3JhcHBlciBmdW5jdGlvbiBpbXBsZW1lbnRlZCBpbiBsaWIvcmVmX3RyYWNlLmMgKi9cXG4rZXh0ZXJuIHZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaik7XFxuK1xcbisjZGVmaW5lIHRyYWNlX3JlZl9maW5hbF9wdXQob2JqKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0aWYgKHRyYWNlcG9pbnRfZW5hYmxlZChyZWZfdHJhY2VfZmluYWxfcHV0KSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdGRvX3JlZl90cmFjZV9maW5hbF9wdXQoX1JFVF9JUF8sIF9fZnVuY19fLCBvYmopO1xcdFxcXFxcXG4rXFx0fSB3aGlsZSAoMClcXG4rXFxuKyNlbHNlIC8qICFDT05GSUdfVFJBQ0VQT0lOVFMgKi9cXG4rc3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfVxcbisjZGVmaW5lIHRyYWNlX3JlZl9maW5hbF9wdXQob2JqKSBkbyB7IH0gd2hpbGUgKDApXFxuKyNlbmRpZlxcbitcXG4rI2VuZGlmIC8qIF9MSU5VWF9SRUZfVFJBQ0VfSCAqL1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcXG5pbmRleCBiYTc2NTdjZWQyODE3Zi4uN2IxZmJmMzI2YTIxYzYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXFxuQEAgLTEwNyw2ICsxMDcsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbGltaXRzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWZjb3VudF90eXBlcy5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2tfdHlwZXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZl90cmFjZS5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IG11dGV4O1xcbiBcXG5AQCAtMzkzLDYgKzM5NCw3IEBAIGJvb2wgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIsIGludCAqb2xkcClcXG4gXFxuIFxcdGlmIChvbGQgXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IG9sZCA9PSBpKSB7XFxuIFxcdFxcdHNtcF9hY3F1aXJlX19hZnRlcl9jdHJsX2RlcCgpO1xcbitcXHRcXHR0cmFjZV9yZWZfZmluYWxfcHV0KHIpO1xcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmU2MDM3YTMyNWJlMjYyXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXFxuQEAgLTAsMCArMSw0NiBAQFxcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbisjdW5kZWYgVFJBQ0VfU1lTVEVNXFxuKyNkZWZpbmUgVFJBQ0VfU1lTVEVNIHJlZl90cmFjZVxcbitcXG4rI2lmICFkZWZpbmVkKF9UUkFDRV9SRUZfVFJBQ0VfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcXG4rI2RlZmluZSBfVFJBQ0VfUkVGX1RSQUNFX0hcXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC90cmFjZXBvaW50LmhcXHUwMDNlXFxuK1xcbisvKipcXG4rICogcmVmX3RyYWNlX2ZpbmFsX3B1dCAtIHRyYWNlIHdoZW4gYSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvXFxuKyAqIEBjYWxsZXI6IGZ1bmN0aW9uIHRoYXQgY2FsbGVkIHRoZSByZWZjb3VudGluZ1xcbisgKiBmdW5jdGlvbihyZWZjb3VudF9zdWJfYW5kX3Rlc3QsIHBlcmNwdV9yZWZfcHV0X21hbnkpXFxuKyAqIEBmbjogcmVmY291bnRpbmcgZnVuY3Rpb24oZWcgcmVmY291bnRfc3ViX2FuZF90ZXN0KVxcbisgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXFxuKyAqXFxuKyAqIFRyYWNlcG9pbnQgaW5zdHJ1bWVudGF0aW9uIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxcbisgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcXG4rICogd2hpY2ggdXNlcyBfUkVUX0lQXyBhbmQgX19mdW5jX18gZm9yIGNhbGxlciBhbmQgZm4gYXJndW1lbnRzIHJlc3BlY3RpdmVseSxcXG4rICogdGh1cyBvbmx5IHJlcXVpcmluZyBvYmogYXJnIHRvIGJlIHN1cHBsaWVkXFxuKyAqL1xcbitUUkFDRV9FVkVOVChyZWZfdHJhY2VfZmluYWxfcHV0LFxcbitcXG4rXFx0VFBfUFJPVE8odW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopLFxcbitcXG4rXFx0VFBfQVJHUyhjYWxsZXIsIGZuLCBvYmopLFxcbitcXG4rXFx0VFBfU1RSVUNUX19lbnRyeShcXG4rXFx0X19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpXFxuK1xcdF9fc3RyaW5nKGZuLCBmbilcXG4rXFx0X19maWVsZChjb25zdCB2b2lkICosIG9iailcXG4rXFx0KSxcXG4rXFxuK1xcdFRQX2Zhc3RfYXNzaWduKFxcbitcXHRfX2VudHJ5LVxcdTAwM2VjYWxsZXIgPSBjYWxsZXI7XFxuK1xcdF9fYXNzaWduX3N0cihmbik7XFxuK1xcdF9fZW50cnktXFx1MDAzZW9iaiA9IG9iajtcXG4rXFx0KSxcXG4rXFxuK1xcdFRQX3ByaW50ayhcXFwiY2FsbGVyPSVwUyBmbj0lcyBvYmo9JXBcXFwiLCAodm9pZCAqKV9fZW50cnktXFx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cXHUwMDNlb2JqKVxcbispO1xcbitcXG4rI2VuZGlmIC8qIF9UUkFDRV9SRUZfVFJBQ0VfSCAqL1xcbitcXG4rLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0c2lkZSBwcm90ZWN0aW9uICovXFxuKyNpbmNsdWRlIFxcdTAwM2N0cmFjZS9kZWZpbmVfdHJhY2UuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvbGliL0tjb25maWcgYi9saWIvS2NvbmZpZ1xcbmluZGV4IDAwYTk1MDk2MzZjMTg3Li5jMjliMmNjYjNjMzExNyAxMDA2NDRcXG4tLS0gYS9saWIvS2NvbmZpZ1xcbisrKyBiL2xpYi9LY29uZmlnXFxuQEAgLTUyLDYgKzUyLDE2IEBAIGNvbmZpZyBQQUNLSU5HX0tVTklUX1RFU1RcXG4gXFxuIFxcdCAgV2hlbiBpbiBkb3VidCwgc2F5IE4uXFxuIFxcbitjb25maWcgUkVGX1RSQUNFX0tVTklUX1RFU1RcXG4rXFx0Ym9vbCBcXFwicmVmX3RyYWNlIGt1bml0IHRlc3RcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4rXFx0ZGVwZW5kcyBvbiBLVU5JVCBcXHUwMDI2XFx1MDAyNiBGVFJBQ0VcXG4rXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4rXFx0aGVscFxcbitcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIEtVbml0IHRlc3Qgc3VpdGUgZm9yIHRoZSByZWZfdHJhY2VfZmluYWxfcHV0XFxuK1xcdCAgdHJhY2Vwb2ludC5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTlxcbitcXG4gY29uZmlnIEJJVFJFVkVSU0VcXG4gXFx0dHJpc3RhdGVcXG4gXFxuZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZVxcbmluZGV4IGYzM2EyNGJmMWMxOWFkLi40MTczNzA5MGE5NWRiOSAxMDA2NDRcXG4tLS0gYS9saWIvTWFrZWZpbGVcXG4rKysgYi9saWIvTWFrZWZpbGVcXG5AQCAtMzM1LDMgKzMzNSw1IEBAIENPTlRFWFRfQU5BTFlTSVNfdGVzdF9jb250ZXh0LWFuYWx5c2lzLm8gOj0geVxcbiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSArPSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xcbiBcXG4gc3ViZGlyLSQoQ09ORklHX0ZPUlRJRllfU09VUkNFKSArPSB0ZXN0X2ZvcnRpZnlcXG4rXFxuK29iai0kKENPTkZJR19UUkFDRVBPSU5UUykgKz0gcmVmX3RyYWNlLm9cXG5kaWZmIC0tZ2l0IGEvbGliL3JlZl90cmFjZS5jIGIvbGliL3JlZl90cmFjZS5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMjVmN2MxN2M3YzQ3NThcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbGliL3JlZl90cmFjZS5jXFxuQEAgLTAsMCArMSwxMiBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcdTAwM2VcXG4rXFxuKy8vV3JhcHBlciBmdW5jdGlvbiBmb3IgZnVuY3Rpb25zIGRlZmluZWQgZW50aXJlbHkgaW4gaGVhZGVyIGZpbGVzXFxuK3ZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iailcXG4re1xcbitcXHR0cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KGNhbGxlciwgZm4sIG9iaik7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCk7XFxuK1xcbitFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0xfR1BMKHJlZl90cmFjZV9maW5hbF9wdXQpO1xcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvTWFrZWZpbGUgYi9saWIvdGVzdHMvTWFrZWZpbGVcXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XFxuLS0tIGEvbGliL3Rlc3RzL01ha2VmaWxlXFxuKysrIGIvbGliL3Rlc3RzL01ha2VmaWxlXFxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cXG4gb2JqLSQoQ09ORklHX1VUSUxfTUFDUk9TX0tVTklUKSArPSB1dGlsX21hY3Jvc19rdW5pdC5vXFxuIG9iai0kKENPTkZJR19SQVRFTElNSVRfS1VOSVRfVEVTVCkgKz0gdGVzdF9yYXRlbGltaXQub1xcbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cXG4rb2JqLSQoQ09ORklHX1JFRl9UUkFDRV9LVU5JVF9URVNUKSArPSByZWZfdHJhY2Vfa3VuaXQub1xcbiBcXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXFx0XFx0Kz0gbW9kdWxlL1xcbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yZWNlNmM4NDBmZTBhZFxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcXG5AQCAtMCwwICsxLDEzOCBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NrdW5pdC90ZXN0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC93YWl0X2JpdC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5zdHJ1Y3Rpb25fcG9pbnRlci5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgva2FsbHN5bXMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVmY291bnQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3RyYWNlL2V2ZW50cy9yZWZfdHJhY2UuaFxcdTAwM2VcXG4rXFxuK3N0cnVjdCBkYXRhIHtcXG4rXFx0dW5zaWduZWQgbG9uZyBjYWxsZXI7XFxuK1xcdGNvbnN0IGNoYXIgKmZuO1xcbitcXHRjb25zdCB2b2lkICpvYmo7XFxuK1xcdGludCAqZmxhZztcXG4rXFx0c3RydWN0IGt1bml0ICp0ZXN0O1xcbit9O1xcbitcXG4rc3RydWN0IGRhdGEgcmVmY19jaGs7XFxuK3N0cnVjdCBkYXRhIHBjcHVfY2hrO1xcbitcXG4rLy9jYWxsZWQgd2hlbiB0cmFjZXBvaW50IGZpcmVzXFxuK3N0YXRpYyB2b2lkIHByb2JlKFxcbitcXHQgIHZvaWQgKmlnbm9yZSxcXG4rXFx0ICB1bnNpZ25lZCBsb25nIGNhbGxlcixcXG4rXFx0ICBjb25zdCBjaGFyICpmbixcXG4rXFx0ICBjb25zdCB2b2lkICpvYmopXFxuK3tcXG4rXFx0c3RydWN0IGRhdGEgKmNoa192YWw7XFxuK1xcbitcXHRjaGFyIGZ1bmNfbmFtZVtLU1lNX1NZTUJPTF9MRU5dO1xcbitcXG4rXFx0c3ByaW50X3N5bWJvbF9ub19vZmZzZXQoZnVuY19uYW1lLCBjYWxsZXIpO1xcbitcXG4rXFx0aWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcXFwidGVzdF9yZWZjb3VudFxcXCIpKSB7XFxuK1xcdFxcdGNoa192YWwgPSBcXHUwMDI2cmVmY19jaGs7XFxuK1xcdFxcdEtVTklUX0VYUEVDVF9GQUxTRShjaGtfdmFsLVxcdTAwM2V0ZXN0LCBtZW1jbXAob2JqLCBjaGtfdmFsLVxcdTAwM2VvYmosIHNpemVvZihyZWZjb3VudF90KSkpO1xcbitcXHR9IGVsc2UgaWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcXFwidGVzdF9wZXJjcHVcXFwiKSkge1xcbitcXHRcXHRjaGtfdmFsID0gXFx1MDAyNnBjcHVfY2hrO1xcbitcXHRcXHRLVU5JVF9FWFBFQ1RfRkFMU0UoY2hrX3ZhbC1cXHUwMDNldGVzdCwgbWVtY21wKFxcbitcXHRcXHRcXHRvYmosIGNoa192YWwtXFx1MDAzZW9iaiwgc2l6ZW9mKHN0cnVjdCBwZXJjcHVfcmVmKSkpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHQvL25vbiB0ZXN0IGZ1bmN0aW9uIG9yaWdpbiB0cmFjZSBldmVudHNcXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRzdHJ1Y3Qga3VuaXQgKnRlc3QgPSBjaGtfdmFsLVxcdTAwM2V0ZXN0O1xcbitcXHRpbnQgKmZsYWcgPSBjaGtfdmFsLVxcdTAwM2VmbGFnO1xcbitcXG4rXFx0Ly9lbnN1cmUgcGFzdCBmbGFnIHdyaXRlcyBhcmUgZG9uZSBiZWZvcmUgcmVhZGluZ1xcbitcXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7XFxuK1xcdEtVTklUX0VYUEVDVF9FUSh0ZXN0LCBjYWxsZXIsIGNoa192YWwtXFx1MDAzZWNhbGxlcik7XFxuK1xcbitcXHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAwKTsgLy9zaWduYWwgcHJvYmUgY29tcGxldGlvblxcbit9XFxuK1xcbitcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3RfcmVmY291bnQoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHJlZmNvdW50X3QgcmVmYztcXG4rXFx0aW50IGZsYWdfYWRkciA9IDA7XFxuK1xcbitcXHRyZWZjX2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2dGVzdF9yZWZjb3VudDtcXG4rXFx0cmVmY19jaGsuZm4gPSBcXFwiX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RcXFwiO1xcbitcXHRyZWZjX2Noay5vYmogPSBcXHUwMDI2cmVmYztcXG4rXFx0cmVmY19jaGsuZmxhZyA9IFxcdTAwMjZmbGFnX2FkZHI7XFxuK1xcdHJlZmNfY2hrLnRlc3QgPSB0ZXN0O1xcbitcXG4rXFx0aW50ICpmbGFnID0gcmVmY19jaGsuZmxhZztcXG4rXFxuK1xcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKSk7XFxuK1xcbitcXHRyZWZjb3VudF9zZXQoXFx1MDAyNnJlZmMsIDIpO1xcbitcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2cmVmYykpO1xcbitcXG4rXFx0c21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuXFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNnJlZmMpKTtcXG4rXFxuK1xcdHdhaXRfdmFyX2V2ZW50KGZsYWcsIHNtcF9sb2FkX2FjcXVpcmUoZmxhZykpOyAvL3dhaXQgZm9yIHByb2JlIGNvbXBsZXRpb25cXG4rXFx0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxcbitcXG4rc3RhdGljIHZvaWQgdGVzdF9wZXJjcHUoc3RydWN0IGt1bml0ICp0ZXN0KVxcbit7XFxuK1xcdHN0cnVjdCBwZXJjcHVfcmVmIHBjcHVfcmVmO1xcbitcXG4rXFx0aW50IGZsYWdfYWRkciA9IDE7XFxuK1xcbitcXHRwY3B1X2Noay5jYWxsZXIgPSAodW5zaWduZWQgbG9uZylcXHUwMDI2dGVzdF9wZXJjcHU7XFxuK1xcdHBjcHVfY2hrLmZuID0gXFxcInBlcmNwdV9yZWZfcHV0X21hbnlcXFwiO1xcbitcXHRwY3B1X2Noay5vYmogPSBcXHUwMDI2cGNwdV9yZWY7XFxuK1xcdHBjcHVfY2hrLmZsYWcgPSBcXHUwMDI2ZmxhZ19hZGRyO1xcbitcXHRwY3B1X2Noay50ZXN0ID0gdGVzdDtcXG4rXFxuK1xcdGludCAqZmxhZyA9IHBjcHVfY2hrLmZsYWc7XFxuK1xcbitcXHRLVU5JVF9FWFBFQ1RfRkFMU0UodGVzdCwgcmVnaXN0ZXJfdHJhY2VfcmVmX3RyYWNlX2ZpbmFsX3B1dChwcm9iZSwgTlVMTCkpO1xcbitcXG4rXFx0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHBlcmNwdV9yZWZfaW5pdChcXHUwMDI2cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcXG4rXFxuK1xcdHBlcmNwdV9yZWZfZ2V0KFxcdTAwMjZwY3B1X3JlZik7XFxuK1xcdHBlcmNwdV9yZWZfZ2V0KFxcdTAwMjZwY3B1X3JlZik7XFxuK1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2cGNwdV9yZWYpO1xcbitcXHRwZXJjcHVfcmVmX3B1dChcXHUwMDI2cGNwdV9yZWYpO1xcbitcXG4rXFx0cGVyY3B1X3JlZl9zd2l0Y2hfdG9fYXRvbWljX3N5bmMoXFx1MDAyNnBjcHVfcmVmKTtcXG4rXFxuK1xcdHNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDEpOyAvL3NpZ25hbCBmaW5hbCBwdXQgY2FuIGhhcHBlblxcbitcXG4rXFx0cGVyY3B1X3JlZl9wdXQoXFx1MDAyNnBjcHVfcmVmKTtcXG4rXFxuK1xcdHdhaXRfdmFyX2V2ZW50KGZsYWcsIHNtcF9sb2FkX2FjcXVpcmUoZmxhZykpOyAvL3dhaXQgZm9yIHByb2JlIGNvbXBsZXRpb25cXG4rXFx0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcXG4rXFx0cGVyY3B1X3JlZl9leGl0KFxcdTAwMjZwY3B1X3JlZik7XFxuK31cXG4rXFxuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBfX3JlZmRhdGEgcmVmX3RyYWNlX3Rlc3RfY2FzZXNbXSA9IHtcXG4rXFx0S1VOSVRfQ0FTRSh0ZXN0X3JlZmNvdW50KSxcXG4rXFx0S1VOSVRfQ0FTRSh0ZXN0X3BlcmNwdSksXFxuK1xcdHt9XFxuK307XFxuK1xcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHJlZl90cmFjZV90ZXN0X3N1aXRlID0ge1xcbitcXHQubmFtZSA9IFxcXCJyZWYtdHJhY2VcXFwiLFxcbitcXHQudGVzdF9jYXNlcyA9IHJlZl90cmFjZV90ZXN0X2Nhc2VzLFxcbit9O1xcbitcXG4ra3VuaXRfdGVzdF9zdWl0ZXMoXFx1MDAyNnJlZl90cmFjZV90ZXN0X3N1aXRlKTtcXG4rXFxuK01PRFVMRV9BVVRIT1IoXFxcIkV1Z2VuZSBNYXZpY2sgXFx1MDAzY21AbWF2aWNrLmRldlxcdTAwM2VcXFwiKTtcXG4rTU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJLVW5pdCB0ZXN0IGZvciByZWZfdHJhY2VcXFwiKTtcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMTo0NToyNS44NDQ4Njc3NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NTgyMTA0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTI3Yzg2YjI1NmU3ZjI3ZjE1MTJmZmFlNzczNTdjODI5MjBlOWNlNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDUgMDE6NDU6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTXG5pbmRleCAxMGU4MjUzMTgxZDMyMS4uN2MzODdlZDc0NmVlNTEgMTAwNjQ0XG4tLS0gYS9NQUlOVEFJTkVSU1xuKysrIGIvTUFJTlRBSU5FUlNcbkBAIC00MjEwLDcgKzQyMTAsMTAgQEAgUzpcdE1haW50YWluZWRcbiBGOlx0RG9jdW1lbnRhdGlvbi9hdG9taWNfKi50eHRcbiBGOlx0YXJjaC8qL2luY2x1ZGUvYXNtL2F0b21pYyouaFxuIEY6XHRpbmNsdWRlLyovYXRvbWljKi5oXG4rRjpcdGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbiBGOlx0aW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG4rRjpcdGxpYi9yZWZfdHJhY2UuaFxuK0Y6XHRsaWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbiBGOlx0c2NyaXB0cy9hdG9taWMvXG4gRjpcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljLnJzXG4gRjpcdHJ1c3Qva2VybmVsL3N5bmMvYXRvbWljL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmggYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXG5pbmRleCBkNzNhMWMwOGMzZTNjMC4uNTU1NDNlY2RmNjBjZmIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oXG5AQCAtNTUsNiArNTUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdXBkYXRlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJjcHVfcmVmO1xuIHR5cGVkZWYgdm9pZCAocGVyY3B1X3JlZl9mdW5jX3QpKHN0cnVjdCBwZXJjcHVfcmVmICopO1xuQEAgLTMzMSw4ICszMzIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHBlcmNwdV9yZWZfcHV0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwgdW5zaWduZWQgbG9uZyBucilcbiBcbiBcdGlmIChfX3JlZl9pc19wZXJjcHUocmVmLCBcdTAwMjZwZXJjcHVfY291bnQpKVxuIFx0XHR0aGlzX2NwdV9zdWIoKnBlcmNwdV9jb3VudCwgbnIpO1xuLVx0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKVxuK1x0ZWxzZSBpZiAodW5saWtlbHkoYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCBcdTAwMjZyZWYtXHUwMDNlZGF0YS1cdTAwM2Vjb3VudCkpKSB7XG4rXHRcdHRyYWNlX3JlZl9maW5hbF9wdXQocmVmKTtcbiBcdFx0cmVmLVx1MDAzZWRhdGEtXHUwMDNlcmVsZWFzZShyZWYpO1xuK1x0fVxuIFxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVmX3RyYWNlLmggYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjU0ZTlmYmE5ZTNlOWY0XG4tLS0gL2Rldi9udWxsXG4rKysgYi9pbmNsdWRlL2xpbnV4L3JlZl90cmFjZS5oXG5AQCAtMCwwICsxLDI2IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjaWZuZGVmIF9MSU5VWF9SRUZfVFJBQ0VfSFxuKyNkZWZpbmUgX0xJTlVYX1JFRl9UUkFDRV9IXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHJhY2Vwb2ludC1kZWZzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnN0cnVjdGlvbl9wb2ludGVyLmhcdTAwM2VcbitcbisvKiBEZWNsYXJlIHRoZSB0cmFjZXBvaW50IHNvIHRyYWNlcG9pbnRfZW5hYmxlZCgpIGNhbiBiZSB1c2VkICovXG4rREVDTEFSRV9UUkFDRVBPSU5UKHJlZl90cmFjZV9maW5hbF9wdXQpO1xuK1xuKyNpZmRlZiBDT05GSUdfVFJBQ0VQT0lOVFNcbisvKiBXcmFwcGVyIGZ1bmN0aW9uIGltcGxlbWVudGVkIGluIGxpYi9yZWZfdHJhY2UuYyAqL1xuK2V4dGVybiB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopO1xuK1xuKyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopXHRcdFx0XHRcdFx0XFxcbitcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRpZiAodHJhY2Vwb2ludF9lbmFibGVkKHJlZl90cmFjZV9maW5hbF9wdXQpKVx0XHRcdFxcXG4rXHRcdFx0ZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dChfUkVUX0lQXywgX19mdW5jX18sIG9iaik7XHRcXFxuK1x0fSB3aGlsZSAoMClcbitcbisjZWxzZSAvKiAhQ09ORklHX1RSQUNFUE9JTlRTICovXG4rc3RhdGljIGlubGluZSB2b2lkIGRvX3JlZl90cmFjZV9maW5hbF9wdXQodW5zaWduZWQgbG9uZyBjYWxsZXIsIGNvbnN0IGNoYXIgKmZuLCBjb25zdCB2b2lkICpvYmopIHsgfVxuKyNkZWZpbmUgdHJhY2VfcmVmX2ZpbmFsX3B1dChvYmopIGRvIHsgfSB3aGlsZSAoMClcbisjZW5kaWZcbitcbisjZW5kaWYgLyogX0xJTlVYX1JFRl9UUkFDRV9IICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIGIvaW5jbHVkZS9saW51eC9yZWZjb3VudC5oXG5pbmRleCBiYTc2NTdjZWQyODE3Zi4uN2IxZmJmMzI2YTIxYzYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmhcbisrKyBiL2luY2x1ZGUvbGludXgvcmVmY291bnQuaFxuQEAgLTEwNyw2ICsxMDcsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbWl0cy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmVmY291bnRfdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrX3R5cGVzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWZfdHJhY2UuaFx1MDAzZVxuIFxuIHN0cnVjdCBtdXRleDtcbiBcbkBAIC0zOTMsNiArMzk0LDcgQEAgYm9vbCBfX3JlZmNvdW50X3N1Yl9hbmRfdGVzdChpbnQgaSwgcmVmY291bnRfdCAqciwgaW50ICpvbGRwKVxuIFxuIFx0aWYgKG9sZCBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgb2xkID09IGkpIHtcbiBcdFx0c21wX2FjcXVpcmVfX2FmdGVyX2N0cmxfZGVwKCk7XG4rXHRcdHRyYWNlX3JlZl9maW5hbF9wdXQocik7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZTYwMzdhMzI1YmUyNjJcbi0tLSAvZGV2L251bGxcbisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL3JlZl90cmFjZS5oXG5AQCAtMCwwICsxLDQ2IEBAXG4rLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbisjdW5kZWYgVFJBQ0VfU1lTVEVNXG4rI2RlZmluZSBUUkFDRV9TWVNURU0gcmVmX3RyYWNlXG4rXG4rI2lmICFkZWZpbmVkKF9UUkFDRV9SRUZfVFJBQ0VfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRClcbisjZGVmaW5lIF9UUkFDRV9SRUZfVFJBQ0VfSFxuK1xuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3RyYWNlcG9pbnQuaFx1MDAzZVxuK1xuKy8qKlxuKyAqIHJlZl90cmFjZV9maW5hbF9wdXQgLSB0cmFjZSB3aGVuIGEgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyb1xuKyAqIEBjYWxsZXI6IGZ1bmN0aW9uIHRoYXQgY2FsbGVkIHRoZSByZWZjb3VudGluZ1xuKyAqIGZ1bmN0aW9uKHJlZmNvdW50X3N1Yl9hbmRfdGVzdCwgcGVyY3B1X3JlZl9wdXRfbWFueSlcbisgKiBAZm46IHJlZmNvdW50aW5nIGZ1bmN0aW9uKGVnIHJlZmNvdW50X3N1Yl9hbmRfdGVzdClcbisgKiBAb2JqOiByZWZjb3VudCBvYmplY3Qoc3RydWN0IHBlcmNwdV9yZWYsIHJlZmNvdW50X3QpXG4rICpcbisgKiBUcmFjZXBvaW50IGluc3RydW1lbnRhdGlvbiBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIHJlZl90cmFjZV9maW5hbF9wdXRcbisgKiBtYWNybyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcmVmX3RyYWNlLmhcbisgKiB3aGljaCB1c2VzIF9SRVRfSVBfIGFuZCBfX2Z1bmNfXyBmb3IgY2FsbGVyIGFuZCBmbiBhcmd1bWVudHMgcmVzcGVjdGl2ZWx5LFxuKyAqIHRodXMgb25seSByZXF1aXJpbmcgb2JqIGFyZyB0byBiZSBzdXBwbGllZFxuKyAqL1xuK1RSQUNFX0VWRU5UKHJlZl90cmFjZV9maW5hbF9wdXQsXG4rXG4rXHRUUF9QUk9UTyh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iaiksXG4rXG4rXHRUUF9BUkdTKGNhbGxlciwgZm4sIG9iaiksXG4rXG4rXHRUUF9TVFJVQ1RfX2VudHJ5KFxuK1x0X19maWVsZCh1bnNpZ25lZCBsb25nLCBjYWxsZXIpXG4rXHRfX3N0cmluZyhmbiwgZm4pXG4rXHRfX2ZpZWxkKGNvbnN0IHZvaWQgKiwgb2JqKVxuK1x0KSxcbitcbitcdFRQX2Zhc3RfYXNzaWduKFxuK1x0X19lbnRyeS1cdTAwM2VjYWxsZXIgPSBjYWxsZXI7XG4rXHRfX2Fzc2lnbl9zdHIoZm4pO1xuK1x0X19lbnRyeS1cdTAwM2VvYmogPSBvYmo7XG4rXHQpLFxuK1xuK1x0VFBfcHJpbnRrKFwiY2FsbGVyPSVwUyBmbj0lcyBvYmo9JXBcIiwgKHZvaWQgKilfX2VudHJ5LVx1MDAzZWNhbGxlciwgX19nZXRfc3RyKGZuKSwgX19lbnRyeS1cdTAwM2VvYmopXG4rKTtcbitcbisjZW5kaWYgLyogX1RSQUNFX1JFRl9UUkFDRV9IICovXG4rXG4rLyogVGhpcyBwYXJ0IG11c3QgYmUgb3V0c2lkZSBwcm90ZWN0aW9uICovXG4rI2luY2x1ZGUgXHUwMDNjdHJhY2UvZGVmaW5lX3RyYWNlLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9saWIvS2NvbmZpZyBiL2xpYi9LY29uZmlnXG5pbmRleCAwMGE5NTA5NjM2YzE4Ny4uYzI5YjJjY2IzYzMxMTcgMTAwNjQ0XG4tLS0gYS9saWIvS2NvbmZpZ1xuKysrIGIvbGliL0tjb25maWdcbkBAIC01Miw2ICs1MiwxNiBAQCBjb25maWcgUEFDS0lOR19LVU5JVF9URVNUXG4gXG4gXHQgIFdoZW4gaW4gZG91YnQsIHNheSBOLlxuIFxuK2NvbmZpZyBSRUZfVFJBQ0VfS1VOSVRfVEVTVFxuK1x0Ym9vbCBcInJlZl90cmFjZSBrdW5pdCB0ZXN0XCIgaWYgIUtVTklUX0FMTF9URVNUU1xuK1x0ZGVwZW5kcyBvbiBLVU5JVCBcdTAwMjZcdTAwMjYgRlRSQUNFXG4rXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuK1x0aGVscFxuK1x0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBLVW5pdCB0ZXN0IHN1aXRlIGZvciB0aGUgcmVmX3RyYWNlX2ZpbmFsX3B1dFxuK1x0ICB0cmFjZXBvaW50LlxuK1xuK1x0ICBJZiB1bnN1cmUsIHNheSBOXG4rXG4gY29uZmlnIEJJVFJFVkVSU0VcbiBcdHRyaXN0YXRlXG4gXG5kaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlXG5pbmRleCBmMzNhMjRiZjFjMTlhZC4uNDE3MzcwOTBhOTVkYjkgMTAwNjQ0XG4tLS0gYS9saWIvTWFrZWZpbGVcbisrKyBiL2xpYi9NYWtlZmlsZVxuQEAgLTMzNSwzICszMzUsNSBAQCBDT05URVhUX0FOQUxZU0lTX3Rlc3RfY29udGV4dC1hbmFseXNpcy5vIDo9IHlcbiBvYmotJChDT05GSUdfQ09OVEVYVF9BTkFMWVNJU19URVNUKSArPSB0ZXN0X2NvbnRleHQtYW5hbHlzaXMub1xuIFxuIHN1YmRpci0kKENPTkZJR19GT1JUSUZZX1NPVVJDRSkgKz0gdGVzdF9mb3J0aWZ5XG4rXG4rb2JqLSQoQ09ORklHX1RSQUNFUE9JTlRTKSArPSByZWZfdHJhY2Uub1xuZGlmZiAtLWdpdCBhL2xpYi9yZWZfdHJhY2UuYyBiL2xpYi9yZWZfdHJhY2UuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yNWY3YzE3YzdjNDc1OFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvbGliL3JlZl90cmFjZS5jXG5AQCAtMCwwICsxLDEyIEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFNcbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcdTAwM2VcbitcbisvL1dyYXBwZXIgZnVuY3Rpb24gZm9yIGZ1bmN0aW9ucyBkZWZpbmVkIGVudGlyZWx5IGluIGhlYWRlciBmaWxlc1xuK3ZvaWQgZG9fcmVmX3RyYWNlX2ZpbmFsX3B1dCh1bnNpZ25lZCBsb25nIGNhbGxlciwgY29uc3QgY2hhciAqZm4sIGNvbnN0IHZvaWQgKm9iailcbit7XG4rXHR0cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KGNhbGxlciwgZm4sIG9iaik7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKGRvX3JlZl90cmFjZV9maW5hbF9wdXQpO1xuK1xuK0VYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTF9HUEwocmVmX3RyYWNlX2ZpbmFsX3B1dCk7XG5kaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL01ha2VmaWxlIGIvbGliL3Rlc3RzL01ha2VmaWxlXG5pbmRleCA3ZTljMmZhNTJlMzVhNC4uODI4YTAzMGFkOGM3MTAgMTAwNjQ0XG4tLS0gYS9saWIvdGVzdHMvTWFrZWZpbGVcbisrKyBiL2xpYi90ZXN0cy9NYWtlZmlsZVxuQEAgLTU3LDUgKzU3LDYgQEAgb2JqLSQoQ09ORklHX1VTRVJDT1BZX0tVTklUX1RFU1QpICs9IHVzZXJjb3B5X2t1bml0Lm9cbiBvYmotJChDT05GSUdfVVRJTF9NQUNST1NfS1VOSVQpICs9IHV0aWxfbWFjcm9zX2t1bml0Lm9cbiBvYmotJChDT05GSUdfUkFURUxJTUlUX0tVTklUX1RFU1QpICs9IHRlc3RfcmF0ZWxpbWl0Lm9cbiBvYmotJChDT05GSUdfVVVJRF9LVU5JVF9URVNUKSArPSB1dWlkX2t1bml0Lm9cbitvYmotJChDT05GSUdfUkVGX1RSQUNFX0tVTklUX1RFU1QpICs9IHJlZl90cmFjZV9rdW5pdC5vXG4gXG4gb2JqLSQoQ09ORklHX1RFU1RfUlVOVElNRV9NT0RVTEUpXHRcdCs9IG1vZHVsZS9cbmRpZmYgLS1naXQgYS9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmMgYi9saWIvdGVzdHMvcmVmX3RyYWNlX2t1bml0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMmVjZTZjODQwZmUwYWRcbi0tLSAvZGV2L251bGxcbisrKyBiL2xpYi90ZXN0cy9yZWZfdHJhY2Vfa3VuaXQuY1xuQEAgLTAsMCArMSwxMzggQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNja3VuaXQvdGVzdC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvd2FpdF9iaXQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2luc3RydWN0aW9uX3BvaW50ZXIuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2thbGxzeW1zLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUtcmVmY291bnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2N0cmFjZS9ldmVudHMvcmVmX3RyYWNlLmhcdTAwM2VcbitcbitzdHJ1Y3QgZGF0YSB7XG4rXHR1bnNpZ25lZCBsb25nIGNhbGxlcjtcbitcdGNvbnN0IGNoYXIgKmZuO1xuK1x0Y29uc3Qgdm9pZCAqb2JqO1xuK1x0aW50ICpmbGFnO1xuK1x0c3RydWN0IGt1bml0ICp0ZXN0O1xuK307XG4rXG4rc3RydWN0IGRhdGEgcmVmY19jaGs7XG4rc3RydWN0IGRhdGEgcGNwdV9jaGs7XG4rXG4rLy9jYWxsZWQgd2hlbiB0cmFjZXBvaW50IGZpcmVzXG4rc3RhdGljIHZvaWQgcHJvYmUoXG4rXHQgIHZvaWQgKmlnbm9yZSxcbitcdCAgdW5zaWduZWQgbG9uZyBjYWxsZXIsXG4rXHQgIGNvbnN0IGNoYXIgKmZuLFxuK1x0ICBjb25zdCB2b2lkICpvYmopXG4re1xuK1x0c3RydWN0IGRhdGEgKmNoa192YWw7XG4rXG4rXHRjaGFyIGZ1bmNfbmFtZVtLU1lNX1NZTUJPTF9MRU5dO1xuK1xuK1x0c3ByaW50X3N5bWJvbF9ub19vZmZzZXQoZnVuY19uYW1lLCBjYWxsZXIpO1xuK1xuK1x0aWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcInRlc3RfcmVmY291bnRcIikpIHtcbitcdFx0Y2hrX3ZhbCA9IFx1MDAyNnJlZmNfY2hrO1xuK1x0XHRLVU5JVF9FWFBFQ1RfRkFMU0UoY2hrX3ZhbC1cdTAwM2V0ZXN0LCBtZW1jbXAob2JqLCBjaGtfdmFsLVx1MDAzZW9iaiwgc2l6ZW9mKHJlZmNvdW50X3QpKSk7XG4rXHR9IGVsc2UgaWYgKCFzdHJjbXAoZnVuY19uYW1lLCBcInRlc3RfcGVyY3B1XCIpKSB7XG4rXHRcdGNoa192YWwgPSBcdTAwMjZwY3B1X2NoaztcbitcdFx0S1VOSVRfRVhQRUNUX0ZBTFNFKGNoa192YWwtXHUwMDNldGVzdCwgbWVtY21wKFxuK1x0XHRcdG9iaiwgY2hrX3ZhbC1cdTAwM2VvYmosIHNpemVvZihzdHJ1Y3QgcGVyY3B1X3JlZikpKTtcbitcdH0gZWxzZSB7XG4rXHRcdC8vbm9uIHRlc3QgZnVuY3Rpb24gb3JpZ2luIHRyYWNlIGV2ZW50c1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRzdHJ1Y3Qga3VuaXQgKnRlc3QgPSBjaGtfdmFsLVx1MDAzZXRlc3Q7XG4rXHRpbnQgKmZsYWcgPSBjaGtfdmFsLVx1MDAzZWZsYWc7XG4rXG4rXHQvL2Vuc3VyZSBwYXN0IGZsYWcgd3JpdGVzIGFyZSBkb25lIGJlZm9yZSByZWFkaW5nXG4rXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgMSwgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7XG4rXHRLVU5JVF9FWFBFQ1RfRVEodGVzdCwgY2FsbGVyLCBjaGtfdmFsLVx1MDAzZWNhbGxlcik7XG4rXG4rXHRzbXBfc3RvcmVfcmVsZWFzZShmbGFnLCAwKTsgLy9zaWduYWwgcHJvYmUgY29tcGxldGlvblxuK31cbitcbitcbitcbitzdGF0aWMgdm9pZCB0ZXN0X3JlZmNvdW50KHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRyZWZjb3VudF90IHJlZmM7XG4rXHRpbnQgZmxhZ19hZGRyID0gMDtcbitcbitcdHJlZmNfY2hrLmNhbGxlciA9ICh1bnNpZ25lZCBsb25nKVx1MDAyNnRlc3RfcmVmY291bnQ7XG4rXHRyZWZjX2Noay5mbiA9IFwiX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RcIjtcbitcdHJlZmNfY2hrLm9iaiA9IFx1MDAyNnJlZmM7XG4rXHRyZWZjX2Noay5mbGFnID0gXHUwMDI2ZmxhZ19hZGRyO1xuK1x0cmVmY19jaGsudGVzdCA9IHRlc3Q7XG4rXG4rXHRpbnQgKmZsYWcgPSByZWZjX2Noay5mbGFnO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcbitcbitcdHJlZmNvdW50X3NldChcdTAwMjZyZWZjLCAyKTtcbitcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cmVmYykpO1xuK1xuK1x0c21wX3N0b3JlX3JlbGVhc2UoZmxhZywgMSk7IC8vc2lnbmFsIGZpbmFsIHB1dCBjYW4gaGFwcGVuXG4rXG4rXHRLVU5JVF9FWFBFQ1RfVFJVRSh0ZXN0LCByZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2cmVmYykpO1xuK1xuK1x0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxuK1x0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgZHVtbXlfcmVsZWFzZShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKSB7fVxuK1xuK3N0YXRpYyB2b2lkIHRlc3RfcGVyY3B1KHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRzdHJ1Y3QgcGVyY3B1X3JlZiBwY3B1X3JlZjtcbitcbitcdGludCBmbGFnX2FkZHIgPSAxO1xuK1xuK1x0cGNwdV9jaGsuY2FsbGVyID0gKHVuc2lnbmVkIGxvbmcpXHUwMDI2dGVzdF9wZXJjcHU7XG4rXHRwY3B1X2Noay5mbiA9IFwicGVyY3B1X3JlZl9wdXRfbWFueVwiO1xuK1x0cGNwdV9jaGsub2JqID0gXHUwMDI2cGNwdV9yZWY7XG4rXHRwY3B1X2Noay5mbGFnID0gXHUwMDI2ZmxhZ19hZGRyO1xuK1x0cGNwdV9jaGsudGVzdCA9IHRlc3Q7XG4rXG4rXHRpbnQgKmZsYWcgPSBwY3B1X2Noay5mbGFnO1xuK1xuK1x0S1VOSVRfRVhQRUNUX0ZBTFNFKHRlc3QsIHJlZ2lzdGVyX3RyYWNlX3JlZl90cmFjZV9maW5hbF9wdXQocHJvYmUsIE5VTEwpKTtcbitcbitcdEtVTklUX0VYUEVDVF9GQUxTRSh0ZXN0LCBwZXJjcHVfcmVmX2luaXQoXHUwMDI2cGNwdV9yZWYsIGR1bW15X3JlbGVhc2UsIDAsIEdGUF9LRVJORUwpKTtcbitcbitcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNnBjcHVfcmVmKTtcbitcdHBlcmNwdV9yZWZfZ2V0KFx1MDAyNnBjcHVfcmVmKTtcbitcbitcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNnBjcHVfcmVmKTtcbitcdHBlcmNwdV9yZWZfcHV0KFx1MDAyNnBjcHVfcmVmKTtcbitcbitcdHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKFx1MDAyNnBjcHVfcmVmKTtcbitcbitcdHNtcF9zdG9yZV9yZWxlYXNlKGZsYWcsIDEpOyAvL3NpZ25hbCBmaW5hbCBwdXQgY2FuIGhhcHBlblxuK1xuK1x0cGVyY3B1X3JlZl9wdXQoXHUwMDI2cGNwdV9yZWYpO1xuK1xuK1x0d2FpdF92YXJfZXZlbnQoZmxhZywgc21wX2xvYWRfYWNxdWlyZShmbGFnKSk7IC8vd2FpdCBmb3IgcHJvYmUgY29tcGxldGlvblxuK1x0dW5yZWdpc3Rlcl90cmFjZV9yZWZfdHJhY2VfZmluYWxfcHV0KHByb2JlLCBOVUxMKTtcbitcdHBlcmNwdV9yZWZfZXhpdChcdTAwMjZwY3B1X3JlZik7XG4rfVxuK1xuK3N0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBfX3JlZmRhdGEgcmVmX3RyYWNlX3Rlc3RfY2FzZXNbXSA9IHtcbitcdEtVTklUX0NBU0UodGVzdF9yZWZjb3VudCksXG4rXHRLVU5JVF9DQVNFKHRlc3RfcGVyY3B1KSxcbitcdHt9XG4rfTtcbitcbitzdGF0aWMgc3RydWN0IGt1bml0X3N1aXRlIHJlZl90cmFjZV90ZXN0X3N1aXRlID0ge1xuK1x0Lm5hbWUgPSBcInJlZi10cmFjZVwiLFxuK1x0LnRlc3RfY2FzZXMgPSByZWZfdHJhY2VfdGVzdF9jYXNlcyxcbit9O1xuK1xuK2t1bml0X3Rlc3Rfc3VpdGVzKFx1MDAyNnJlZl90cmFjZV90ZXN0X3N1aXRlKTtcbitcbitNT0RVTEVfQVVUSE9SKFwiRXVnZW5lIE1hdmljayBcdTAwM2NtQG1hdmljay5kZXZcdTAwM2VcIik7XG4rTU9EVUxFX0RFU0NSSVBUSU9OKFwiS1VuaXQgdGVzdCBmb3IgcmVmX3RyYWNlXCIpO1xuK01PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDE6NDU6MjUuODQ0ODY5MDA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc1ODE3NzE2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyBhIG5ldyB0cmFjZXBvaW50LCBgcmVmX3RyYWNlX2ZpbmFsX3B1dGAsIHRoYXQgdHJpZ2dlcnMgd2hlbiBhIHJlZmVyZW5jZSBjb3VudCBoaXRzIHplcm8uIEl0IHNlZW1zIHRvIG1vZGlmeSBhIGZldyBjb3JlIGZpbGVzOiBgcGVyY3B1LXJlZmNvdW50LmhgIGFuZCBgcmVmY291bnQuaGAsIHdoZXJlIGl0J3MgaW5qZWN0aW5nIGNhbGxzIHRvIGB0cmFjZV9yZWZfZmluYWxfcHV0YC4gQWRkaXRpb25hbGx5LCBpdCBhZGRzIHRoZSBuZWNlc3NhcnkgdHJhY2Vwb2ludCBkZWZpbml0aW9ucywgYSB3cmFwcGVyIGZ1bmN0aW9uIGluIGBsaWIvcmVmX3RyYWNlLmNgLCBhbmQgYSBLVW5pdCB0ZXN0LlxuXG5Ob3csIGxldCdzIHNlZS4uLiB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBtYXJrIHBhdGNoZXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhleSBhcmUsIGFuZCBJIHF1b3RlLCBcIlB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlwiIEJpbmdvISBUaGlzIGlzIGV4cGxpY2l0bHkgYSB0cmFjZXBvaW50LiBUaGUgcGF0Y2ggaXMgc29sZWx5IGFkZGluZyB0cmFjaW5nIGNhcGFiaWxpdGllcywgYW5kIGEgdGVzdCBmb3IgdGhvc2UgY2FwYWJpbGl0aWVzLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb2RlLiBJbiBgcGVyY3B1LXJlZmNvdW50LmhgLCB0aGV5J3ZlIGFkZGVkIHRoZSB0cmFjZXBvaW50IGNhbGwgcmlnaHQgYmVmb3JlIHRoZSBgcmVsZWFzZWAgZnVuY3Rpb247IGNvbXBsZXRlbHkgZGVjb3JhdGl2ZSwgY29uZmlybWluZyB0aGUgaW5zdHJ1Y3Rpb25zLiBMaWtld2lzZSwgaW4gYHJlZmNvdW50LmhgLCB0aGV5J3ZlIGFkZGVkIHRoZSB0cmFjZXBvaW50IGNhbGwganVzdCBiZWZvcmUgcmV0dXJuaW5nLiBUaGUgcmVtYWluaW5nIGZpbGVzIGFyZSBhbGwganVzdCBzdXBwb3J0aW5nIHRoZSBuZXcgdHJhY2Vwb2ludC5cblxuWWVwLCBpdCdzIGNsZWFyOiBpdCdzIHB1cmVseSBhZGRpbmcgYSB0cmFjZXBvaW50IGFuZCBhc3NvY2lhdGVkIGluZnJhc3RydWN0dXJlLlxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJJ2xsIHVzZSBgc2V0LXJlc3VsdHNgIHRvIHN1Ym1pdCB0aGUgZXZhbHVhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxMiwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwMTo0NTozMy42MDMwNDg3MzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRyYWNlcG9pbnQgKGByZWZfdHJhY2VfZmluYWxfcHV0YCkgdG8gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyAoYHBlcmNwdV9yZWZfcHV0X21hbnlgIGFuZCBgX19yZWZjb3VudF9zdWJfYW5kX3Rlc3RgKSBhbmQgYSBLVW5pdCB0ZXN0IGZvciBpdC4gVHJhY2Vwb2ludHMgYXJlIGNvbnNpZGVyZWQgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBzbyB0aGlzIHBhdGNoIGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowmfvpf[1] Phase: Running StartedAt: 2026-07-05 01:45:53 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmfvpf[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-05 01:45:53 +0000 UTC FinishedAt: 2026-07-05 01:46:02 +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,}