Name: series-workflow96vnx Phase: Failed StartedAt: 2026-08-13 10:18:22 +0000 UTC FinishedAt: 2026-08-13 11:10:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96vnx[0] Phase: Succeeded StartedAt: 2026-08-13 10:18:22 +0000 UTC FinishedAt: 2026-08-13 11:10:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96vnx[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 10:18:22 +0000 UTC FinishedAt: 2026-08-13 11:10:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzICh1c2VyLXNwYWNlIHRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8pIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTkwYjQ3NjgyYmZmYzJiZmZlNGI3YzY4NDlhZmEwNzNhN2IzNGNkN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDExOjEwOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmhcbmluZGV4IGUzYWNmMmFlOTg4MWUuLjY4NWJhZWZlYmRiMTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmhcbkBAIC0yNSw2ICYjNDM7MjUsMTkgQEBcbiAjZGVmaW5lIEdFVF9STShpbnNuKSAgICAgICAgICAgICgoKGluc24pIFx1MDAyNiBJTlNOX01BU0tfRlVOQ1QzKSBcdTAwM2VcdTAwM2UgSU5TTl9TSElGVF9GVU5DVDMpXG4gI2RlZmluZSBHRVRfQ1NSX05VTShpbnNuKSAgICAgICAoKChpbnNuKSBcdTAwMjYgSU5TTl9DU1JfTUFTSykgXHUwMDNlXHUwMDNlIElOU05fQ1NSX1NISUZUKVxuIFxuJiM0MzsvKiBWZWN0b3IgKFYpIGluc3RydWN0aW9uIGRlY29kaW5nLCBtYXRjaGluZyBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2luc24uaCAqL1xuJiM0MzsjZGVmaW5lIFJWX0lOU05fT1BDT0RFX01BU0tcdDB4N2ZcbiYjNDM7I2RlZmluZSBSVkdfT1BDT0RFX1NZU1RFTVx0MHg3M1xuJiM0MzsjZGVmaW5lIFJWVl9PUENPREVfVkVDVE9SXHQweDU3XG4mIzQzOyNkZWZpbmUgUlZWX09QQ09ERV9WTFx0XHQweDA3XG4mIzQzOyNkZWZpbmUgUlZWX09QQ09ERV9WU1x0XHQweDI3XG4mIzQzOyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzhcdDBcbiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfMTZcdDVcbiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfMzJcdDZcbiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfNjRcdDdcbiYjNDM7I2RlZmluZSBSVlZfRVhUUkFDVF9WTF9WU19XSURUSChpbnNuKVx0KCgoaW5zbikgXHUwMDNlXHUwMDNlIDEyKSBcdTAwMjYgMHg3KVxuJiM0MzsjZGVmaW5lIFJWR19FWFRSQUNUX1NZU1RFTV9DU1IoaW5zbilcdCgoKGluc24pIFx1MDAzZVx1MDAzZSAyMCkgXHUwMDI2IDB4ZmZmKVxuJiM0MztcbiBzdGF0aWMgaW5saW5lIHU2NCBfX2t2bV9yZWdfaWQodTY0IHR5cGUsIHU2NCBzdWJ0eXBlLCB1NjQgaWR4LCB1NjQgc2l6ZSlcbiB7XG4gXHRyZXR1cm4gS1ZNX1JFR19SSVNDViB8IHR5cGUgfCBzdWJ0eXBlIHwgaWR4IHwgc2l6ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9yaXNjdi9wcm9jZXNzb3IuY1xuaW5kZXggZGVkNTQyOWYzNDQ4My4uYzQxNzFhYWUyMjFkZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcbkBAIC0xNyw2ICYjNDM7MTcsMTEgQEBcbiBcbiBzdGF0aWMgZ3ZhX3QgZXhjZXB0aW9uX2hhbmRsZXJzO1xuIFxuJiM0MztzdHJ1Y3QgaGFuZGxlcnMge1xuJiM0MztcdGV4Y2VwdGlvbl9oYW5kbGVyX2ZuIGV4Y2VwdGlvbl9oYW5kbGVyc1tOUl9WRUNUT1JTXVtOUl9FWENFUFRJT05TXTtcbiYjNDM7XHRib29sIHZfYXZhaWxhYmxlO1xuJiM0Mzt9O1xuJiM0MztcbiBib29sIF9fdmNwdV9oYXNfZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGV4dClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHZhbHVlID0gMDtcbkBAIC0yOTgsMTMgJiM0MzszMDMsNiBAQCB2b2lkIHZjcHVfYXJjaF9kdW1wKEZJTEUgKnN0cmVhbSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCBpbmRlbnQpXG4gXHRcdGNvcmUucmVncy50MywgY29yZS5yZWdzLnQ0LCBjb3JlLnJlZ3MudDUsIGNvcmUucmVncy50Nik7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9fYWxpZ25lZCgxNikgZ3Vlc3RfdW5leHBfdHJhcCh2b2lkKVxuLXtcbi1cdHNiaV9lY2FsbChLVk1fUklTQ1ZfU0VMRlRFU1RTX1NCSV9FWFQsXG4tXHRcdCAgS1ZNX1JJU0NWX1NFTEZURVNUU19TQklfVU5FWFAsXG4tXHRcdCAgMCwgMCwgMCwgMCwgMCwgMCk7XG4tfVxuLVxuIHZvaWQgdmNwdV9hcmNoX3NldF9lbnRyeV9wb2ludChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHZvaWQgKmd1ZXN0X2NvZGUpXG4ge1xuIFx0dmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0NPUkVfUkVHKHJlZ3MucGMpLCAodW5zaWduZWQgbG9uZylndWVzdF9jb2RlKTtcbkBAIC0zNDgsOCAmIzQzOzM0NiwyNiBAQCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZtX2FyY2hfdmNwdV9hZGQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkKVxuIFx0LyogU2V0dXAgc3NjcmF0Y2ggZm9yIGd1ZXN0X2dldF92Y3B1aWQoKSAqL1xuIFx0dmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0dFTkVSQUxfQ1NSX1JFRyhzc2NyYXRjaCksIHZjcHVfaWQpO1xuIFxuLVx0LyogU2V0dXAgZGVmYXVsdCBleGNlcHRpb24gdmVjdG9yIG9mIGd1ZXN0ICovXG4tXHR2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfR0VORVJBTF9DU1JfUkVHKHN0dmVjKSwgKHVuc2lnbmVkIGxvbmcpZ3Vlc3RfdW5leHBfdHJhcCk7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBZHZlcnRpc2UgViB0byBLVk0gc28gLU8yIGF1dG8tdmVjdG9yaXphdGlvbiBpbiBndWVzdCBjb2RlIGlzIHZhbGlkO1xuJiM0MztcdCAqIGlnbm9yZSBlcnJvcnMgc2luY2UgdGhlIHRlc3RzIHdvcmsgd2l0aG91dCBWIHRvby4gVXNlIHRoZSBmdWxsXG4mIzQzO1x0ICogZXhjZXB0aW9uIHZlY3RvciB0YWJsZSAod2hpY2ggbGF6aWx5IGVuYWJsZXMgViBpbiByb3V0ZV9leGNlcHRpb24oKSlcbiYjNDM7XHQgKiBhcyB0aGUgZGVmYXVsdCBoYW5kbGVyOyB2bV9pbml0X3ZlY3Rvcl90YWJsZXMoKSBpcyBpZGVtcG90ZW50LlxuJiM0MztcdCAqL1xuJiM0MztcdF9fdmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0lTQV9FWFRfUkVHKEtWTV9SSVNDVl9JU0FfRVhUX1YpLCAxKTtcbiYjNDM7XHR2bV9pbml0X3ZlY3Rvcl90YWJsZXModm0pO1xuJiM0MztcdHZjcHVfaW5pdF92ZWN0b3JfdGFibGVzKHZjcHUpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFJlY29yZCBWIGF2YWlsYWJpbGl0eSBmb3Igcm91dGVfZXhjZXB0aW9uKCksIHdoaWNoIHJ1bnMgaW4gZ3Vlc3RcbiYjNDM7XHQgKiBjb250ZXh0LiBWIGlzIGVuYWJsZWQgdW5pZm9ybWx5IGZvciBldmVyeSB2Q1BVLCBzbyB0aGlzIGlzIGFcbiYjNDM7XHQgKiBWTS13aWRlIHByb3BlcnR5LlxuJiM0MztcdCAqL1xuJiM0MztcdHtcbiYjNDM7XHRcdHN0cnVjdCBoYW5kbGVycyAqaCA9IGFkZHJfZ3ZhMmh2YSh2bSwgdm0tXHUwMDNlaGFuZGxlcnMpO1xuJiM0MztcbiYjNDM7XHRcdGgtXHUwMDNldl9hdmFpbGFibGUgPSBfX3ZjcHVfaGFzX2lzYV9leHQodmNwdSwgS1ZNX1JJU0NWX0lTQV9FWFRfVik7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHZjcHU7XG4gfVxuQEAgLTQwOCwxOSAmIzQzOzQyNCw0MyBAQCB2b2lkIGFzc2VydF9vbl91bmhhbmRsZWRfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdHN0cnVjdCB1Y2FsbCB1YztcbiBcbiBcdGlmIChnZXRfdWNhbGwodmNwdSwgXHUwMDI2dWMpID09IFVDQUxMX1VOSEFORExFRCkge1xuJiM0MztcdFx0dmNwdV9kdW1wKHN0ZGVyciwgdmNwdSwgMik7XG4gXHRcdFRFU1RfRkFJTChcJiMzNDtVbmV4cGVjdGVkIGV4Y2VwdGlvbiAodmVjdG9yOjB4JWx4LCBlYzoweCVseClcJiMzNDssXG4gXHRcdFx0dWMuYXJnc1swXSwgdWMuYXJnc1sxXSk7XG4gXHR9XG4gfVxuIFxuLXN0cnVjdCBoYW5kbGVycyB7XG4tXHRleGNlcHRpb25faGFuZGxlcl9mbiBleGNlcHRpb25faGFuZGxlcnNbTlJfVkVDVE9SU11bTlJfRVhDRVBUSU9OU107XG4tfTtcbiYjNDM7c3RhdGljIGJvb2wgaW5zbl9pc192ZWN0b3IodTMyIGluc24pXG4mIzQzO3tcbiYjNDM7XHR1MzIgb3Bjb2RlID0gaW5zbiBcdTAwMjYgUlZfSU5TTl9PUENPREVfTUFTSztcbiYjNDM7XHR1MzIgd2lkdGgsIGNzcjtcbiYjNDM7XG4mIzQzO1x0LyogQWxsIFYtcmVsYXRlZCBpbnN0cnVjdGlvbnMgYXJlIDQtYnl0ZSwgaS5lLiBub3QgY29tcHJlc3NlZC4gKi9cbiYjNDM7XHRpZiAoKGluc24gXHUwMDI2IDB4MykgIT0gMHgzKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKG9wY29kZSkge1xuJiM0MztcdGNhc2UgUlZWX09QQ09ERV9WRUNUT1I6XG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRjYXNlIFJWVl9PUENPREVfVkw6XG4mIzQzO1x0Y2FzZSBSVlZfT1BDT0RFX1ZTOlxuJiM0MztcdFx0d2lkdGggPSBSVlZfRVhUUkFDVF9WTF9WU19XSURUSChpbnNuKTtcbiYjNDM7XHRcdHJldHVybiB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfOCB8fCB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfMTYgfHxcbiYjNDM7XHRcdCAgICAgICB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfMzIgfHwgd2lkdGggPT0gUlZWX1ZMX1ZTX1dJRFRIXzY0O1xuJiM0MztcdGNhc2UgUlZHX09QQ09ERV9TWVNURU06XG4mIzQzO1x0XHRjc3IgPSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pO1xuJiM0MztcdFx0cmV0dXJuIChjc3IgXHUwMDNlPSBDU1JfVlNUQVJUIFx1MDAyNlx1MDAyNiBjc3IgXHUwMDNjPSBDU1JfVkNTUikgfHxcbiYjNDM7XHRcdCAgICAgICAoY3NyIFx1MDAzZT0gQ1NSX1ZMIFx1MDAyNlx1MDAyNiBjc3IgXHUwMDNjPSBDU1JfVkxFTkIpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4gXG4gdm9pZCByb3V0ZV9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4ge1xuIFx0c3RydWN0IGhhbmRsZXJzICpoYW5kbGVycyA9IChzdHJ1Y3QgaGFuZGxlcnMgKilleGNlcHRpb25faGFuZGxlcnM7XG4tXHRpbnQgdmVjdG9yID0gMCwgZWM7XG4mIzQzO1x0aW50IHZlY3RvciA9IDA7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBlYztcbiBcbiBcdGVjID0gcmVncy1cdTAwM2VjYXVzZSBcdTAwMjYgfkNBVVNFX0lSUV9GTEFHO1xuIFx0aWYgKGVjIFx1MDAzZT0gTlJfRVhDRVBUSU9OUylcbkBAIC00MzIsNiAmIzQzOzQ3MiwyNyBAQCB2b2lkIHJvdXRlX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiBcdFx0ZWMgPSAwO1xuIFx0fVxuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogTGF6aWx5IGVuYWJsZSBWIG9uIHRoZSBmaXJzdCB2ZWN0b3IgaW5zdHJ1Y3Rpb246IGlmIHRoZSBmYXVsdGluZ1xuJiM0MztcdCAqIGluc3RydWN0aW9uIGRlY29kZXMgYXMgdmVjdG9yIHdoaWxlIFZTIGlzIG9mZiwgc2V0IFZTIHRvIEluaXRpYWxcbiYjNDM7XHQgKiBhbmQgcmUtZXhlY3V0ZSBpdCwgbGlrZSB0aGUga2VybmVsJiMzOTtzIHJpc2N2X3ZfZmlyc3RfdXNlX2hhbmRsZXIoKS5cbiYjNDM7XHQgKiBHZW51aW5lbHkgaWxsZWdhbCBpbnN0cnVjdGlvbnMgY29udGludWUgdG8gdGhlIHVuZXhwZWN0ZWQtZXhjZXB0aW9uXG4mIzQzO1x0ICogcGF0aC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIShyZWdzLVx1MDAzZWNhdXNlIFx1MDAyNiBDQVVTRV9JUlFfRkxBRykgXHUwMDI2XHUwMDI2IGVjID09IEVYQ19JTlNUX0lMTEVHQUwgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGhhbmRsZXJzIFx1MDAyNlx1MDAyNiBoYW5kbGVycy1cdTAwM2V2X2F2YWlsYWJsZSBcdTAwMjZcdTAwMjYgIShyZWdzLVx1MDAzZXN0YXR1cyBcdTAwMjYgU1JfVlMpKSB7XG4mIzQzO1x0XHR1MzIgaW5zbiA9ICh1MzIpcmVncy1cdTAwM2ViYWRhZGRyO1xuJiM0MztcbiYjNDM7XHRcdC8qIHN0dmFsIGlzIG5vdCBndWFyYW50ZWVkIHRvIGhvbGQgdGhlIGZhdWx0aW5nIGluc3RydWN0aW9uICovXG4mIzQzO1x0XHRpZiAoIWluc24pXG4mIzQzO1x0XHRcdGluc24gPSAqKHUzMiAqKXJlZ3MtXHUwMDNlZXBjO1xuJiM0MztcbiYjNDM7XHRcdGlmIChpbnNuX2lzX3ZlY3RvcihpbnNuKSkge1xuJiM0MztcdFx0XHRyZWdzLVx1MDAzZXN0YXR1cyB8PSBTUl9WU19JTklUSUFMO1xuJiM0MztcdFx0XHRyZXR1cm47XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChoYW5kbGVycyBcdTAwMjZcdTAwMjYgaGFuZGxlcnMtXHUwMDNlZXhjZXB0aW9uX2hhbmRsZXJzW3ZlY3Rvcl1bZWNdKVxuIFx0XHRyZXR1cm4gaGFuZGxlcnMtXHUwMDNlZXhjZXB0aW9uX2hhbmRsZXJzW3ZlY3Rvcl1bZWNdKHJlZ3MpO1xuIFxuQEAgLTQ0OCw2ICYjNDM7NTA5LDkgQEAgdm9pZCB2Y3B1X2luaXRfdmVjdG9yX3RhYmxlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gdm9pZCB2bV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92bSAqdm0pXG4ge1xuJiM0MztcdGlmICh2bS1cdTAwM2VoYW5kbGVycylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHR2bS1cdTAwM2VoYW5kbGVycyA9IF9fdm1fYWxsb2Modm0sIHNpemVvZihzdHJ1Y3QgaGFuZGxlcnMpLCB2bS1cdTAwM2VwYWdlX3NpemUsXG4gXHRcdFx0XHQgIE1FTV9SRUdJT05fREFUQSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyAodXNlci1zcGFjZSB0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE5MGI0NzY4MmJmZmMyYmZmZTRiN2M2ODQ5YWZhMDczYTdiMzRjZDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxMToxMDoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmgKaW5kZXggZTNhY2YyYWU5ODgxZS4uNjg1YmFlZmViZGIxMiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmgKQEAgLTI1LDYgJiM0MzsyNSwxOSBAQAogI2RlZmluZSBHRVRfUk0oaW5zbikgICAgICAgICAgICAoKChpbnNuKSAmYW1wOyBJTlNOX01BU0tfRlVOQ1QzKSAmZ3Q7Jmd0OyBJTlNOX1NISUZUX0ZVTkNUMykKICNkZWZpbmUgR0VUX0NTUl9OVU0oaW5zbikgICAgICAgKCgoaW5zbikgJmFtcDsgSU5TTl9DU1JfTUFTSykgJmd0OyZndDsgSU5TTl9DU1JfU0hJRlQpCiAKJiM0MzsvKiBWZWN0b3IgKFYpIGluc3RydWN0aW9uIGRlY29kaW5nLCBtYXRjaGluZyBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2luc24uaCAqLwomIzQzOyNkZWZpbmUgUlZfSU5TTl9PUENPREVfTUFTSwkweDdmCiYjNDM7I2RlZmluZSBSVkdfT1BDT0RFX1NZU1RFTQkweDczCiYjNDM7I2RlZmluZSBSVlZfT1BDT0RFX1ZFQ1RPUgkweDU3CiYjNDM7I2RlZmluZSBSVlZfT1BDT0RFX1ZMCQkweDA3CiYjNDM7I2RlZmluZSBSVlZfT1BDT0RFX1ZTCQkweDI3CiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfOAkwCiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfMTYJNQomIzQzOyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzMyCTYKJiM0MzsjZGVmaW5lIFJWVl9WTF9WU19XSURUSF82NAk3CiYjNDM7I2RlZmluZSBSVlZfRVhUUkFDVF9WTF9WU19XSURUSChpbnNuKQkoKChpbnNuKSAmZ3Q7Jmd0OyAxMikgJmFtcDsgMHg3KQomIzQzOyNkZWZpbmUgUlZHX0VYVFJBQ1RfU1lTVEVNX0NTUihpbnNuKQkoKChpbnNuKSAmZ3Q7Jmd0OyAyMCkgJmFtcDsgMHhmZmYpCiYjNDM7CiBzdGF0aWMgaW5saW5lIHU2NCBfX2t2bV9yZWdfaWQodTY0IHR5cGUsIHU2NCBzdWJ0eXBlLCB1NjQgaWR4LCB1NjQgc2l6ZSkKIHsKIAlyZXR1cm4gS1ZNX1JFR19SSVNDViB8IHR5cGUgfCBzdWJ0eXBlIHwgaWR4IHwgc2l6ZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jCmluZGV4IGRlZDU0MjlmMzQ0ODMuLmM0MTcxYWFlMjIxZGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9yaXNjdi9wcm9jZXNzb3IuYwpAQCAtMTcsNiAmIzQzOzE3LDExIEBACiAKIHN0YXRpYyBndmFfdCBleGNlcHRpb25faGFuZGxlcnM7CiAKJiM0MztzdHJ1Y3QgaGFuZGxlcnMgewomIzQzOwlleGNlcHRpb25faGFuZGxlcl9mbiBleGNlcHRpb25faGFuZGxlcnNbTlJfVkVDVE9SU11bTlJfRVhDRVBUSU9OU107CiYjNDM7CWJvb2wgdl9hdmFpbGFibGU7CiYjNDM7fTsKJiM0MzsKIGJvb2wgX192Y3B1X2hhc19leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZXh0KQogewogCXVuc2lnbmVkIGxvbmcgdmFsdWUgPSAwOwpAQCAtMjk4LDEzICYjNDM7MzAzLDYgQEAgdm9pZCB2Y3B1X2FyY2hfZHVtcChGSUxFICpzdHJlYW0sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggaW5kZW50KQogCQljb3JlLnJlZ3MudDMsIGNvcmUucmVncy50NCwgY29yZS5yZWdzLnQ1LCBjb3JlLnJlZ3MudDYpOwogfQogCi1zdGF0aWMgdm9pZCBfX2FsaWduZWQoMTYpIGd1ZXN0X3VuZXhwX3RyYXAodm9pZCkKLXsKLQlzYmlfZWNhbGwoS1ZNX1JJU0NWX1NFTEZURVNUU19TQklfRVhULAotCQkgIEtWTV9SSVNDVl9TRUxGVEVTVFNfU0JJX1VORVhQLAotCQkgIDAsIDAsIDAsIDAsIDAsIDApOwotfQotCiB2b2lkIHZjcHVfYXJjaF9zZXRfZW50cnlfcG9pbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkICpndWVzdF9jb2RlKQogewogCXZjcHVfc2V0X3JlZyh2Y3B1LCBSSVNDVl9DT1JFX1JFRyhyZWdzLnBjKSwgKHVuc2lnbmVkIGxvbmcpZ3Vlc3RfY29kZSk7CkBAIC0zNDgsOCAmIzQzOzM0NiwyNiBAQCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZtX2FyY2hfdmNwdV9hZGQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkKQogCS8qIFNldHVwIHNzY3JhdGNoIGZvciBndWVzdF9nZXRfdmNwdWlkKCkgKi8KIAl2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfR0VORVJBTF9DU1JfUkVHKHNzY3JhdGNoKSwgdmNwdV9pZCk7CiAKLQkvKiBTZXR1cCBkZWZhdWx0IGV4Y2VwdGlvbiB2ZWN0b3Igb2YgZ3Vlc3QgKi8KLQl2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfR0VORVJBTF9DU1JfUkVHKHN0dmVjKSwgKHVuc2lnbmVkIGxvbmcpZ3Vlc3RfdW5leHBfdHJhcCk7CiYjNDM7CS8qCiYjNDM7CSAqIEFkdmVydGlzZSBWIHRvIEtWTSBzbyAtTzIgYXV0by12ZWN0b3JpemF0aW9uIGluIGd1ZXN0IGNvZGUgaXMgdmFsaWQ7CiYjNDM7CSAqIGlnbm9yZSBlcnJvcnMgc2luY2UgdGhlIHRlc3RzIHdvcmsgd2l0aG91dCBWIHRvby4gVXNlIHRoZSBmdWxsCiYjNDM7CSAqIGV4Y2VwdGlvbiB2ZWN0b3IgdGFibGUgKHdoaWNoIGxhemlseSBlbmFibGVzIFYgaW4gcm91dGVfZXhjZXB0aW9uKCkpCiYjNDM7CSAqIGFzIHRoZSBkZWZhdWx0IGhhbmRsZXI7IHZtX2luaXRfdmVjdG9yX3RhYmxlcygpIGlzIGlkZW1wb3RlbnQuCiYjNDM7CSAqLwomIzQzOwlfX3ZjcHVfc2V0X3JlZyh2Y3B1LCBSSVNDVl9JU0FfRVhUX1JFRyhLVk1fUklTQ1ZfSVNBX0VYVF9WKSwgMSk7CiYjNDM7CXZtX2luaXRfdmVjdG9yX3RhYmxlcyh2bSk7CiYjNDM7CXZjcHVfaW5pdF92ZWN0b3JfdGFibGVzKHZjcHUpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZWNvcmQgViBhdmFpbGFiaWxpdHkgZm9yIHJvdXRlX2V4Y2VwdGlvbigpLCB3aGljaCBydW5zIGluIGd1ZXN0CiYjNDM7CSAqIGNvbnRleHQuIFYgaXMgZW5hYmxlZCB1bmlmb3JtbHkgZm9yIGV2ZXJ5IHZDUFUsIHNvIHRoaXMgaXMgYQomIzQzOwkgKiBWTS13aWRlIHByb3BlcnR5LgomIzQzOwkgKi8KJiM0MzsJewomIzQzOwkJc3RydWN0IGhhbmRsZXJzICpoID0gYWRkcl9ndmEyaHZhKHZtLCB2bS0mZ3Q7aGFuZGxlcnMpOwomIzQzOwomIzQzOwkJaC0mZ3Q7dl9hdmFpbGFibGUgPSBfX3ZjcHVfaGFzX2lzYV9leHQodmNwdSwgS1ZNX1JJU0NWX0lTQV9FWFRfVik7CiYjNDM7CX0KIAogCXJldHVybiB2Y3B1OwogfQpAQCAtNDA4LDE5ICYjNDM7NDI0LDQzIEBAIHZvaWQgYXNzZXJ0X29uX3VuaGFuZGxlZF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXN0cnVjdCB1Y2FsbCB1YzsKIAogCWlmIChnZXRfdWNhbGwodmNwdSwgJmFtcDt1YykgPT0gVUNBTExfVU5IQU5ETEVEKSB7CiYjNDM7CQl2Y3B1X2R1bXAoc3RkZXJyLCB2Y3B1LCAyKTsKIAkJVEVTVF9GQUlMKCYjMzQ7VW5leHBlY3RlZCBleGNlcHRpb24gKHZlY3RvcjoweCVseCwgZWM6MHglbHgpJiMzNDssCiAJCQl1Yy5hcmdzWzBdLCB1Yy5hcmdzWzFdKTsKIAl9CiB9CiAKLXN0cnVjdCBoYW5kbGVycyB7Ci0JZXhjZXB0aW9uX2hhbmRsZXJfZm4gZXhjZXB0aW9uX2hhbmRsZXJzW05SX1ZFQ1RPUlNdW05SX0VYQ0VQVElPTlNdOwotfTsKJiM0MztzdGF0aWMgYm9vbCBpbnNuX2lzX3ZlY3Rvcih1MzIgaW5zbikKJiM0Mzt7CiYjNDM7CXUzMiBvcGNvZGUgPSBpbnNuICZhbXA7IFJWX0lOU05fT1BDT0RFX01BU0s7CiYjNDM7CXUzMiB3aWR0aCwgY3NyOwomIzQzOwomIzQzOwkvKiBBbGwgVi1yZWxhdGVkIGluc3RydWN0aW9ucyBhcmUgNC1ieXRlLCBpLmUuIG5vdCBjb21wcmVzc2VkLiAqLwomIzQzOwlpZiAoKGluc24gJmFtcDsgMHgzKSAhPSAweDMpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXN3aXRjaCAob3Bjb2RlKSB7CiYjNDM7CWNhc2UgUlZWX09QQ09ERV9WRUNUT1I6CiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsJY2FzZSBSVlZfT1BDT0RFX1ZMOgomIzQzOwljYXNlIFJWVl9PUENPREVfVlM6CiYjNDM7CQl3aWR0aCA9IFJWVl9FWFRSQUNUX1ZMX1ZTX1dJRFRIKGluc24pOwomIzQzOwkJcmV0dXJuIHdpZHRoID09IFJWVl9WTF9WU19XSURUSF84IHx8IHdpZHRoID09IFJWVl9WTF9WU19XSURUSF8xNiB8fAomIzQzOwkJICAgICAgIHdpZHRoID09IFJWVl9WTF9WU19XSURUSF8zMiB8fCB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfNjQ7CiYjNDM7CWNhc2UgUlZHX09QQ09ERV9TWVNURU06CiYjNDM7CQljc3IgPSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pOwomIzQzOwkJcmV0dXJuIChjc3IgJmd0Oz0gQ1NSX1ZTVEFSVCAmYW1wOyZhbXA7IGNzciAmbHQ7PSBDU1JfVkNTUikgfHwKJiM0MzsJCSAgICAgICAoY3NyICZndDs9IENTUl9WTCAmYW1wOyZhbXA7IGNzciAmbHQ7PSBDU1JfVkxFTkIpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiAKIHZvaWQgcm91dGVfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXN0cnVjdCBoYW5kbGVycyAqaGFuZGxlcnMgPSAoc3RydWN0IGhhbmRsZXJzICopZXhjZXB0aW9uX2hhbmRsZXJzOwotCWludCB2ZWN0b3IgPSAwLCBlYzsKJiM0MzsJaW50IHZlY3RvciA9IDA7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZWM7CiAKIAllYyA9IHJlZ3MtJmd0O2NhdXNlICZhbXA7IH5DQVVTRV9JUlFfRkxBRzsKIAlpZiAoZWMgJmd0Oz0gTlJfRVhDRVBUSU9OUykKQEAgLTQzMiw2ICYjNDM7NDcyLDI3IEBAIHZvaWQgcm91dGVfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCQllYyA9IDA7CiAJfQogCiYjNDM7CS8qCiYjNDM7CSAqIExhemlseSBlbmFibGUgViBvbiB0aGUgZmlyc3QgdmVjdG9yIGluc3RydWN0aW9uOiBpZiB0aGUgZmF1bHRpbmcKJiM0MzsJICogaW5zdHJ1Y3Rpb24gZGVjb2RlcyBhcyB2ZWN0b3Igd2hpbGUgVlMgaXMgb2ZmLCBzZXQgVlMgdG8gSW5pdGlhbAomIzQzOwkgKiBhbmQgcmUtZXhlY3V0ZSBpdCwgbGlrZSB0aGUga2VybmVsJiMzOTtzIHJpc2N2X3ZfZmlyc3RfdXNlX2hhbmRsZXIoKS4KJiM0MzsJICogR2VudWluZWx5IGlsbGVnYWwgaW5zdHJ1Y3Rpb25zIGNvbnRpbnVlIHRvIHRoZSB1bmV4cGVjdGVkLWV4Y2VwdGlvbgomIzQzOwkgKiBwYXRoLgomIzQzOwkgKi8KJiM0MzsJaWYgKCEocmVncy0mZ3Q7Y2F1c2UgJmFtcDsgQ0FVU0VfSVJRX0ZMQUcpICZhbXA7JmFtcDsgZWMgPT0gRVhDX0lOU1RfSUxMRUdBTCAmYW1wOyZhbXA7CiYjNDM7CSAgICBoYW5kbGVycyAmYW1wOyZhbXA7IGhhbmRsZXJzLSZndDt2X2F2YWlsYWJsZSAmYW1wOyZhbXA7ICEocmVncy0mZ3Q7c3RhdHVzICZhbXA7IFNSX1ZTKSkgewomIzQzOwkJdTMyIGluc24gPSAodTMyKXJlZ3MtJmd0O2JhZGFkZHI7CiYjNDM7CiYjNDM7CQkvKiBzdHZhbCBpcyBub3QgZ3VhcmFudGVlZCB0byBob2xkIHRoZSBmYXVsdGluZyBpbnN0cnVjdGlvbiAqLwomIzQzOwkJaWYgKCFpbnNuKQomIzQzOwkJCWluc24gPSAqKHUzMiAqKXJlZ3MtJmd0O2VwYzsKJiM0MzsKJiM0MzsJCWlmIChpbnNuX2lzX3ZlY3RvcihpbnNuKSkgewomIzQzOwkJCXJlZ3MtJmd0O3N0YXR1cyB8PSBTUl9WU19JTklUSUFMOwomIzQzOwkJCXJldHVybjsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCWlmIChoYW5kbGVycyAmYW1wOyZhbXA7IGhhbmRsZXJzLSZndDtleGNlcHRpb25faGFuZGxlcnNbdmVjdG9yXVtlY10pCiAJCXJldHVybiBoYW5kbGVycy0mZ3Q7ZXhjZXB0aW9uX2hhbmRsZXJzW3ZlY3Rvcl1bZWNdKHJlZ3MpOwogCkBAIC00NDgsNiAmIzQzOzUwOSw5IEBAIHZvaWQgdmNwdV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiB2b2lkIHZtX2luaXRfdmVjdG9yX3RhYmxlcyhzdHJ1Y3Qga3ZtX3ZtICp2bSkKIHsKJiM0MzsJaWYgKHZtLSZndDtoYW5kbGVycykKJiM0MzsJCXJldHVybjsKJiM0MzsKIAl2bS0mZ3Q7aGFuZGxlcnMgPSBfX3ZtX2FsbG9jKHZtLCBzaXplb2Yoc3RydWN0IGhhbmRsZXJzKSwgdm0tJmd0O3BhZ2Vfc2l6ZSwKIAkJCQkgIE1FTV9SRUdJT05fREFUQSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE2NAoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDU5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBFdmFsdWF0aW9uOiBLVk0gU2VsZnRlc3RzIC0gV29ydGhGdXp6aW5nPWZhbHNlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTt2ZSBnb3QgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaGAgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jYC4gUmlnaHQgYXdheSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBmdXp6aW5nIGFuZCB3aGV0aGVyIHRoaXMgaXMgcmVsZXZhbnQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIHZlY3RvciBpbnN0cnVjdGlvbiBkZWNvZGluZyBhbmQgZW5hYmxpbmcgdGhlIFZlY3RvciBleHRlbnNpb24gZm9yIFJJU0MtViBLVk0gc2VsZnRlc3RzLiBTZWVtcyBpbXBvcnRhbnQsIGJ1dCB3YWl0IGEgbWludXRlLi4uIGl0JiMzOTtzIGFsbCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AuIFRoYXQmIzM5O3Mgbm90IHRoZSBjb3JlIGtlcm5lbCwgdGhhdCYjMzk7cyB0ZXN0IGNvZGUuCgpOb3csIEkgcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLCBub3QgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgY29uc3RhbnRzIHRoYXQgZG9uJiMzOTt0IGFsdGVyIGV4ZWN1dGlvbiwgdW5yZWFjaGFibGUgY29kZSwgb3IgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLiAqQW5kLCBjcml0aWNhbGx5LCogSSBzZWUgdGhlIGRpc3RpbmN0aW9uIC0gc2VsZnRlc3RzIGFyZSB1c2VyLXNwYWNlIHByb2dyYW1zLiBGdXp6aW5nIHRoZSBrZXJuZWwgZm9jdXNlcyBvbiB0aGUga2VybmVsIGl0c2VsZiwgbm90IGl0cyB0ZXN0IHN1aXRlLiBVbmxlc3Mgd2UmIzM5O3JlIHNwZWNpZmljYWxseSBmdXp6aW5nIHRoZSBzZWxmdGVzdHMgKnRoZW1zZWx2ZXMqICh3aGljaCBpc24mIzM5O3Qgd2hhdCBTeXprYWxsZXIsIGluIGdlbmVyYWwsIGRvZXMpLCB0aGlzIHBhdGNoIHNob3VsZG4mIzM5O3QgdHJpZ2dlciBmdXp6aW5nLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBubyBrZXJuZWwgc291cmNlIGZpbGVzIGFyZSBpbmNsdWRlZC4gVGhlIGRpZmYgY29uZmlybXMgdGhhdCBpdCAqb25seSogdG91Y2hlcyBmaWxlcyB1bmRlciBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYC4gQmVjYXVzZSBpdCYjMzk7cyBpc29sYXRlZCB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnksIGl0IGRvZXNuJiMzOTt0IGFmZmVjdCB0aGUga2VybmVsIGZ1bmN0aW9uYWxpdHkuCgpBbHJpZ2h0LCB0aGUgcmVhc29uaW5nIGlzIHNvdW5kLiBJdCYjMzk7cyB1c2VyLXNwYWNlIHRlc3QgY29kZSwgYW5kIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuIFdlJiMzOTtyZSBjbGVhci4gSSYjMzk7bGwgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyAodXNlci1zcGFjZSB0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzICh1c2VyLXNwYWNlIHRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8pIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMToxMDoxNi41ODI5OTMxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3OTMxMjEyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgKHVzZXItc3BhY2UgdGVzdCBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjEwOjE2LjU4MzAwMTYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkwMDU5Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTkwYjQ3NjgyYmZmYzJiZmZlNGI3YzY4NDlhZmEwNzNhN2IzNGNkN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxMToxMDoxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oXFxuaW5kZXggZTNhY2YyYWU5ODgxZS4uNjg1YmFlZmViZGIxMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oXFxuQEAgLTI1LDYgKzI1LDE5IEBAXFxuICNkZWZpbmUgR0VUX1JNKGluc24pICAgICAgICAgICAgKCgoaW5zbikgXFx1MDAyNiBJTlNOX01BU0tfRlVOQ1QzKSBcXHUwMDNlXFx1MDAzZSBJTlNOX1NISUZUX0ZVTkNUMylcXG4gI2RlZmluZSBHRVRfQ1NSX05VTShpbnNuKSAgICAgICAoKChpbnNuKSBcXHUwMDI2IElOU05fQ1NSX01BU0spIFxcdTAwM2VcXHUwMDNlIElOU05fQ1NSX1NISUZUKVxcbiBcXG4rLyogVmVjdG9yIChWKSBpbnN0cnVjdGlvbiBkZWNvZGluZywgbWF0Y2hpbmcgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pbnNuLmggKi9cXG4rI2RlZmluZSBSVl9JTlNOX09QQ09ERV9NQVNLXFx0MHg3ZlxcbisjZGVmaW5lIFJWR19PUENPREVfU1lTVEVNXFx0MHg3M1xcbisjZGVmaW5lIFJWVl9PUENPREVfVkVDVE9SXFx0MHg1N1xcbisjZGVmaW5lIFJWVl9PUENPREVfVkxcXHRcXHQweDA3XFxuKyNkZWZpbmUgUlZWX09QQ09ERV9WU1xcdFxcdDB4MjdcXG4rI2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfOFxcdDBcXG4rI2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfMTZcXHQ1XFxuKyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzMyXFx0NlxcbisjZGVmaW5lIFJWVl9WTF9WU19XSURUSF82NFxcdDdcXG4rI2RlZmluZSBSVlZfRVhUUkFDVF9WTF9WU19XSURUSChpbnNuKVxcdCgoKGluc24pIFxcdTAwM2VcXHUwMDNlIDEyKSBcXHUwMDI2IDB4NylcXG4rI2RlZmluZSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pXFx0KCgoaW5zbikgXFx1MDAzZVxcdTAwM2UgMjApIFxcdTAwMjYgMHhmZmYpXFxuK1xcbiBzdGF0aWMgaW5saW5lIHU2NCBfX2t2bV9yZWdfaWQodTY0IHR5cGUsIHU2NCBzdWJ0eXBlLCB1NjQgaWR4LCB1NjQgc2l6ZSlcXG4ge1xcbiBcXHRyZXR1cm4gS1ZNX1JFR19SSVNDViB8IHR5cGUgfCBzdWJ0eXBlIHwgaWR4IHwgc2l6ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9yaXNjdi9wcm9jZXNzb3IuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcXG5pbmRleCBkZWQ1NDI5ZjM0NDgzLi5jNDE3MWFhZTIyMWRmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jXFxuQEAgLTE3LDYgKzE3LDExIEBAXFxuIFxcbiBzdGF0aWMgZ3ZhX3QgZXhjZXB0aW9uX2hhbmRsZXJzO1xcbiBcXG4rc3RydWN0IGhhbmRsZXJzIHtcXG4rXFx0ZXhjZXB0aW9uX2hhbmRsZXJfZm4gZXhjZXB0aW9uX2hhbmRsZXJzW05SX1ZFQ1RPUlNdW05SX0VYQ0VQVElPTlNdO1xcbitcXHRib29sIHZfYXZhaWxhYmxlO1xcbit9O1xcbitcXG4gYm9vbCBfX3ZjcHVfaGFzX2V4dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBleHQpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyB2YWx1ZSA9IDA7XFxuQEAgLTI5OCwxMyArMzAzLDYgQEAgdm9pZCB2Y3B1X2FyY2hfZHVtcChGSUxFICpzdHJlYW0sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggaW5kZW50KVxcbiBcXHRcXHRjb3JlLnJlZ3MudDMsIGNvcmUucmVncy50NCwgY29yZS5yZWdzLnQ1LCBjb3JlLnJlZ3MudDYpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBfX2FsaWduZWQoMTYpIGd1ZXN0X3VuZXhwX3RyYXAodm9pZClcXG4te1xcbi1cXHRzYmlfZWNhbGwoS1ZNX1JJU0NWX1NFTEZURVNUU19TQklfRVhULFxcbi1cXHRcXHQgIEtWTV9SSVNDVl9TRUxGVEVTVFNfU0JJX1VORVhQLFxcbi1cXHRcXHQgIDAsIDAsIDAsIDAsIDAsIDApO1xcbi19XFxuLVxcbiB2b2lkIHZjcHVfYXJjaF9zZXRfZW50cnlfcG9pbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkICpndWVzdF9jb2RlKVxcbiB7XFxuIFxcdHZjcHVfc2V0X3JlZyh2Y3B1LCBSSVNDVl9DT1JFX1JFRyhyZWdzLnBjKSwgKHVuc2lnbmVkIGxvbmcpZ3Vlc3RfY29kZSk7XFxuQEAgLTM0OCw4ICszNDYsMjYgQEAgc3RydWN0IGt2bV92Y3B1ICp2bV9hcmNoX3ZjcHVfYWRkKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZClcXG4gXFx0LyogU2V0dXAgc3NjcmF0Y2ggZm9yIGd1ZXN0X2dldF92Y3B1aWQoKSAqL1xcbiBcXHR2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfR0VORVJBTF9DU1JfUkVHKHNzY3JhdGNoKSwgdmNwdV9pZCk7XFxuIFxcbi1cXHQvKiBTZXR1cCBkZWZhdWx0IGV4Y2VwdGlvbiB2ZWN0b3Igb2YgZ3Vlc3QgKi9cXG4tXFx0dmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0dFTkVSQUxfQ1NSX1JFRyhzdHZlYyksICh1bnNpZ25lZCBsb25nKWd1ZXN0X3VuZXhwX3RyYXApO1xcbitcXHQvKlxcbitcXHQgKiBBZHZlcnRpc2UgViB0byBLVk0gc28gLU8yIGF1dG8tdmVjdG9yaXphdGlvbiBpbiBndWVzdCBjb2RlIGlzIHZhbGlkO1xcbitcXHQgKiBpZ25vcmUgZXJyb3JzIHNpbmNlIHRoZSB0ZXN0cyB3b3JrIHdpdGhvdXQgViB0b28uIFVzZSB0aGUgZnVsbFxcbitcXHQgKiBleGNlcHRpb24gdmVjdG9yIHRhYmxlICh3aGljaCBsYXppbHkgZW5hYmxlcyBWIGluIHJvdXRlX2V4Y2VwdGlvbigpKVxcbitcXHQgKiBhcyB0aGUgZGVmYXVsdCBoYW5kbGVyOyB2bV9pbml0X3ZlY3Rvcl90YWJsZXMoKSBpcyBpZGVtcG90ZW50LlxcbitcXHQgKi9cXG4rXFx0X192Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfSVNBX0VYVF9SRUcoS1ZNX1JJU0NWX0lTQV9FWFRfViksIDEpO1xcbitcXHR2bV9pbml0X3ZlY3Rvcl90YWJsZXModm0pO1xcbitcXHR2Y3B1X2luaXRfdmVjdG9yX3RhYmxlcyh2Y3B1KTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFJlY29yZCBWIGF2YWlsYWJpbGl0eSBmb3Igcm91dGVfZXhjZXB0aW9uKCksIHdoaWNoIHJ1bnMgaW4gZ3Vlc3RcXG4rXFx0ICogY29udGV4dC4gViBpcyBlbmFibGVkIHVuaWZvcm1seSBmb3IgZXZlcnkgdkNQVSwgc28gdGhpcyBpcyBhXFxuK1xcdCAqIFZNLXdpZGUgcHJvcGVydHkuXFxuK1xcdCAqL1xcbitcXHR7XFxuK1xcdFxcdHN0cnVjdCBoYW5kbGVycyAqaCA9IGFkZHJfZ3ZhMmh2YSh2bSwgdm0tXFx1MDAzZWhhbmRsZXJzKTtcXG4rXFxuK1xcdFxcdGgtXFx1MDAzZXZfYXZhaWxhYmxlID0gX192Y3B1X2hhc19pc2FfZXh0KHZjcHUsIEtWTV9SSVNDVl9JU0FfRVhUX1YpO1xcbitcXHR9XFxuIFxcbiBcXHRyZXR1cm4gdmNwdTtcXG4gfVxcbkBAIC00MDgsMTkgKzQyNCw0MyBAQCB2b2lkIGFzc2VydF9vbl91bmhhbmRsZWRfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0c3RydWN0IHVjYWxsIHVjO1xcbiBcXG4gXFx0aWYgKGdldF91Y2FsbCh2Y3B1LCBcXHUwMDI2dWMpID09IFVDQUxMX1VOSEFORExFRCkge1xcbitcXHRcXHR2Y3B1X2R1bXAoc3RkZXJyLCB2Y3B1LCAyKTtcXG4gXFx0XFx0VEVTVF9GQUlMKFxcXCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiAodmVjdG9yOjB4JWx4LCBlYzoweCVseClcXFwiLFxcbiBcXHRcXHRcXHR1Yy5hcmdzWzBdLCB1Yy5hcmdzWzFdKTtcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdHJ1Y3QgaGFuZGxlcnMge1xcbi1cXHRleGNlcHRpb25faGFuZGxlcl9mbiBleGNlcHRpb25faGFuZGxlcnNbTlJfVkVDVE9SU11bTlJfRVhDRVBUSU9OU107XFxuLX07XFxuK3N0YXRpYyBib29sIGluc25faXNfdmVjdG9yKHUzMiBpbnNuKVxcbit7XFxuK1xcdHUzMiBvcGNvZGUgPSBpbnNuIFxcdTAwMjYgUlZfSU5TTl9PUENPREVfTUFTSztcXG4rXFx0dTMyIHdpZHRoLCBjc3I7XFxuK1xcbitcXHQvKiBBbGwgVi1yZWxhdGVkIGluc3RydWN0aW9ucyBhcmUgNC1ieXRlLCBpLmUuIG5vdCBjb21wcmVzc2VkLiAqL1xcbitcXHRpZiAoKGluc24gXFx1MDAyNiAweDMpICE9IDB4MylcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0c3dpdGNoIChvcGNvZGUpIHtcXG4rXFx0Y2FzZSBSVlZfT1BDT0RFX1ZFQ1RPUjpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdGNhc2UgUlZWX09QQ09ERV9WTDpcXG4rXFx0Y2FzZSBSVlZfT1BDT0RFX1ZTOlxcbitcXHRcXHR3aWR0aCA9IFJWVl9FWFRSQUNUX1ZMX1ZTX1dJRFRIKGluc24pO1xcbitcXHRcXHRyZXR1cm4gd2lkdGggPT0gUlZWX1ZMX1ZTX1dJRFRIXzggfHwgd2lkdGggPT0gUlZWX1ZMX1ZTX1dJRFRIXzE2IHx8XFxuK1xcdFxcdCAgICAgICB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfMzIgfHwgd2lkdGggPT0gUlZWX1ZMX1ZTX1dJRFRIXzY0O1xcbitcXHRjYXNlIFJWR19PUENPREVfU1lTVEVNOlxcbitcXHRcXHRjc3IgPSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pO1xcbitcXHRcXHRyZXR1cm4gKGNzciBcXHUwMDNlPSBDU1JfVlNUQVJUIFxcdTAwMjZcXHUwMDI2IGNzciBcXHUwMDNjPSBDU1JfVkNTUikgfHxcXG4rXFx0XFx0ICAgICAgIChjc3IgXFx1MDAzZT0gQ1NSX1ZMIFxcdTAwMjZcXHUwMDI2IGNzciBcXHUwMDNjPSBDU1JfVkxFTkIpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuK31cXG4gXFxuIHZvaWQgcm91dGVfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbiB7XFxuIFxcdHN0cnVjdCBoYW5kbGVycyAqaGFuZGxlcnMgPSAoc3RydWN0IGhhbmRsZXJzICopZXhjZXB0aW9uX2hhbmRsZXJzO1xcbi1cXHRpbnQgdmVjdG9yID0gMCwgZWM7XFxuK1xcdGludCB2ZWN0b3IgPSAwO1xcbitcXHR1bnNpZ25lZCBsb25nIGVjO1xcbiBcXG4gXFx0ZWMgPSByZWdzLVxcdTAwM2VjYXVzZSBcXHUwMDI2IH5DQVVTRV9JUlFfRkxBRztcXG4gXFx0aWYgKGVjIFxcdTAwM2U9IE5SX0VYQ0VQVElPTlMpXFxuQEAgLTQzMiw2ICs0NzIsMjcgQEAgdm9pZCByb3V0ZV9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuIFxcdFxcdGVjID0gMDtcXG4gXFx0fVxcbiBcXG4rXFx0LypcXG4rXFx0ICogTGF6aWx5IGVuYWJsZSBWIG9uIHRoZSBmaXJzdCB2ZWN0b3IgaW5zdHJ1Y3Rpb246IGlmIHRoZSBmYXVsdGluZ1xcbitcXHQgKiBpbnN0cnVjdGlvbiBkZWNvZGVzIGFzIHZlY3RvciB3aGlsZSBWUyBpcyBvZmYsIHNldCBWUyB0byBJbml0aWFsXFxuK1xcdCAqIGFuZCByZS1leGVjdXRlIGl0LCBsaWtlIHRoZSBrZXJuZWwncyByaXNjdl92X2ZpcnN0X3VzZV9oYW5kbGVyKCkuXFxuK1xcdCAqIEdlbnVpbmVseSBpbGxlZ2FsIGluc3RydWN0aW9ucyBjb250aW51ZSB0byB0aGUgdW5leHBlY3RlZC1leGNlcHRpb25cXG4rXFx0ICogcGF0aC5cXG4rXFx0ICovXFxuK1xcdGlmICghKHJlZ3MtXFx1MDAzZWNhdXNlIFxcdTAwMjYgQ0FVU0VfSVJRX0ZMQUcpIFxcdTAwMjZcXHUwMDI2IGVjID09IEVYQ19JTlNUX0lMTEVHQUwgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGhhbmRsZXJzIFxcdTAwMjZcXHUwMDI2IGhhbmRsZXJzLVxcdTAwM2V2X2F2YWlsYWJsZSBcXHUwMDI2XFx1MDAyNiAhKHJlZ3MtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IFNSX1ZTKSkge1xcbitcXHRcXHR1MzIgaW5zbiA9ICh1MzIpcmVncy1cXHUwMDNlYmFkYWRkcjtcXG4rXFxuK1xcdFxcdC8qIHN0dmFsIGlzIG5vdCBndWFyYW50ZWVkIHRvIGhvbGQgdGhlIGZhdWx0aW5nIGluc3RydWN0aW9uICovXFxuK1xcdFxcdGlmICghaW5zbilcXG4rXFx0XFx0XFx0aW5zbiA9ICoodTMyICopcmVncy1cXHUwMDNlZXBjO1xcbitcXG4rXFx0XFx0aWYgKGluc25faXNfdmVjdG9yKGluc24pKSB7XFxuK1xcdFxcdFxcdHJlZ3MtXFx1MDAzZXN0YXR1cyB8PSBTUl9WU19JTklUSUFMO1xcbitcXHRcXHRcXHRyZXR1cm47XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4gXFx0aWYgKGhhbmRsZXJzIFxcdTAwMjZcXHUwMDI2IGhhbmRsZXJzLVxcdTAwM2VleGNlcHRpb25faGFuZGxlcnNbdmVjdG9yXVtlY10pXFxuIFxcdFxcdHJldHVybiBoYW5kbGVycy1cXHUwMDNlZXhjZXB0aW9uX2hhbmRsZXJzW3ZlY3Rvcl1bZWNdKHJlZ3MpO1xcbiBcXG5AQCAtNDQ4LDYgKzUwOSw5IEBAIHZvaWQgdmNwdV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXG4gdm9pZCB2bV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92bSAqdm0pXFxuIHtcXG4rXFx0aWYgKHZtLVxcdTAwM2VoYW5kbGVycylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0dm0tXFx1MDAzZWhhbmRsZXJzID0gX192bV9hbGxvYyh2bSwgc2l6ZW9mKHN0cnVjdCBoYW5kbGVycyksIHZtLVxcdTAwM2VwYWdlX3NpemUsXFxuIFxcdFxcdFxcdFxcdCAgTUVNX1JFR0lPTl9EQVRBKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjEwOjE4LjA3MzkyNTEwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgzMDIxNzcyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyAodXNlci1zcGFjZSB0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTkwYjQ3NjgyYmZmYzJiZmZlNGI3YzY4NDlhZmEwNzNhN2IzNGNkN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDExOjEwOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaFxuaW5kZXggZTNhY2YyYWU5ODgxZS4uNjg1YmFlZmViZGIxMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaFxuQEAgLTI1LDYgKzI1LDE5IEBAXG4gI2RlZmluZSBHRVRfUk0oaW5zbikgICAgICAgICAgICAoKChpbnNuKSBcdTAwMjYgSU5TTl9NQVNLX0ZVTkNUMykgXHUwMDNlXHUwMDNlIElOU05fU0hJRlRfRlVOQ1QzKVxuICNkZWZpbmUgR0VUX0NTUl9OVU0oaW5zbikgICAgICAgKCgoaW5zbikgXHUwMDI2IElOU05fQ1NSX01BU0spIFx1MDAzZVx1MDAzZSBJTlNOX0NTUl9TSElGVClcbiBcbisvKiBWZWN0b3IgKFYpIGluc3RydWN0aW9uIGRlY29kaW5nLCBtYXRjaGluZyBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2luc24uaCAqL1xuKyNkZWZpbmUgUlZfSU5TTl9PUENPREVfTUFTS1x0MHg3ZlxuKyNkZWZpbmUgUlZHX09QQ09ERV9TWVNURU1cdDB4NzNcbisjZGVmaW5lIFJWVl9PUENPREVfVkVDVE9SXHQweDU3XG4rI2RlZmluZSBSVlZfT1BDT0RFX1ZMXHRcdDB4MDdcbisjZGVmaW5lIFJWVl9PUENPREVfVlNcdFx0MHgyN1xuKyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzhcdDBcbisjZGVmaW5lIFJWVl9WTF9WU19XSURUSF8xNlx0NVxuKyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzMyXHQ2XG4rI2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfNjRcdDdcbisjZGVmaW5lIFJWVl9FWFRSQUNUX1ZMX1ZTX1dJRFRIKGluc24pXHQoKChpbnNuKSBcdTAwM2VcdTAwM2UgMTIpIFx1MDAyNiAweDcpXG4rI2RlZmluZSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pXHQoKChpbnNuKSBcdTAwM2VcdTAwM2UgMjApIFx1MDAyNiAweGZmZilcbitcbiBzdGF0aWMgaW5saW5lIHU2NCBfX2t2bV9yZWdfaWQodTY0IHR5cGUsIHU2NCBzdWJ0eXBlLCB1NjQgaWR4LCB1NjQgc2l6ZSlcbiB7XG4gXHRyZXR1cm4gS1ZNX1JFR19SSVNDViB8IHR5cGUgfCBzdWJ0eXBlIHwgaWR4IHwgc2l6ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9yaXNjdi9wcm9jZXNzb3IuY1xuaW5kZXggZGVkNTQyOWYzNDQ4My4uYzQxNzFhYWUyMjFkZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcbkBAIC0xNyw2ICsxNywxMSBAQFxuIFxuIHN0YXRpYyBndmFfdCBleGNlcHRpb25faGFuZGxlcnM7XG4gXG4rc3RydWN0IGhhbmRsZXJzIHtcbitcdGV4Y2VwdGlvbl9oYW5kbGVyX2ZuIGV4Y2VwdGlvbl9oYW5kbGVyc1tOUl9WRUNUT1JTXVtOUl9FWENFUFRJT05TXTtcbitcdGJvb2wgdl9hdmFpbGFibGU7XG4rfTtcbitcbiBib29sIF9fdmNwdV9oYXNfZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGV4dClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHZhbHVlID0gMDtcbkBAIC0yOTgsMTMgKzMwMyw2IEBAIHZvaWQgdmNwdV9hcmNoX2R1bXAoRklMRSAqc3RyZWFtLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IGluZGVudClcbiBcdFx0Y29yZS5yZWdzLnQzLCBjb3JlLnJlZ3MudDQsIGNvcmUucmVncy50NSwgY29yZS5yZWdzLnQ2KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgX19hbGlnbmVkKDE2KSBndWVzdF91bmV4cF90cmFwKHZvaWQpXG4te1xuLVx0c2JpX2VjYWxsKEtWTV9SSVNDVl9TRUxGVEVTVFNfU0JJX0VYVCxcbi1cdFx0ICBLVk1fUklTQ1ZfU0VMRlRFU1RTX1NCSV9VTkVYUCxcbi1cdFx0ICAwLCAwLCAwLCAwLCAwLCAwKTtcbi19XG4tXG4gdm9pZCB2Y3B1X2FyY2hfc2V0X2VudHJ5X3BvaW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdm9pZCAqZ3Vlc3RfY29kZSlcbiB7XG4gXHR2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfQ09SRV9SRUcocmVncy5wYyksICh1bnNpZ25lZCBsb25nKWd1ZXN0X2NvZGUpO1xuQEAgLTM0OCw4ICszNDYsMjYgQEAgc3RydWN0IGt2bV92Y3B1ICp2bV9hcmNoX3ZjcHVfYWRkKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZClcbiBcdC8qIFNldHVwIHNzY3JhdGNoIGZvciBndWVzdF9nZXRfdmNwdWlkKCkgKi9cbiBcdHZjcHVfc2V0X3JlZyh2Y3B1LCBSSVNDVl9HRU5FUkFMX0NTUl9SRUcoc3NjcmF0Y2gpLCB2Y3B1X2lkKTtcbiBcbi1cdC8qIFNldHVwIGRlZmF1bHQgZXhjZXB0aW9uIHZlY3RvciBvZiBndWVzdCAqL1xuLVx0dmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0dFTkVSQUxfQ1NSX1JFRyhzdHZlYyksICh1bnNpZ25lZCBsb25nKWd1ZXN0X3VuZXhwX3RyYXApO1xuK1x0LypcbitcdCAqIEFkdmVydGlzZSBWIHRvIEtWTSBzbyAtTzIgYXV0by12ZWN0b3JpemF0aW9uIGluIGd1ZXN0IGNvZGUgaXMgdmFsaWQ7XG4rXHQgKiBpZ25vcmUgZXJyb3JzIHNpbmNlIHRoZSB0ZXN0cyB3b3JrIHdpdGhvdXQgViB0b28uIFVzZSB0aGUgZnVsbFxuK1x0ICogZXhjZXB0aW9uIHZlY3RvciB0YWJsZSAod2hpY2ggbGF6aWx5IGVuYWJsZXMgViBpbiByb3V0ZV9leGNlcHRpb24oKSlcbitcdCAqIGFzIHRoZSBkZWZhdWx0IGhhbmRsZXI7IHZtX2luaXRfdmVjdG9yX3RhYmxlcygpIGlzIGlkZW1wb3RlbnQuXG4rXHQgKi9cbitcdF9fdmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0lTQV9FWFRfUkVHKEtWTV9SSVNDVl9JU0FfRVhUX1YpLCAxKTtcbitcdHZtX2luaXRfdmVjdG9yX3RhYmxlcyh2bSk7XG4rXHR2Y3B1X2luaXRfdmVjdG9yX3RhYmxlcyh2Y3B1KTtcbitcbitcdC8qXG4rXHQgKiBSZWNvcmQgViBhdmFpbGFiaWxpdHkgZm9yIHJvdXRlX2V4Y2VwdGlvbigpLCB3aGljaCBydW5zIGluIGd1ZXN0XG4rXHQgKiBjb250ZXh0LiBWIGlzIGVuYWJsZWQgdW5pZm9ybWx5IGZvciBldmVyeSB2Q1BVLCBzbyB0aGlzIGlzIGFcbitcdCAqIFZNLXdpZGUgcHJvcGVydHkuXG4rXHQgKi9cbitcdHtcbitcdFx0c3RydWN0IGhhbmRsZXJzICpoID0gYWRkcl9ndmEyaHZhKHZtLCB2bS1cdTAwM2VoYW5kbGVycyk7XG4rXG4rXHRcdGgtXHUwMDNldl9hdmFpbGFibGUgPSBfX3ZjcHVfaGFzX2lzYV9leHQodmNwdSwgS1ZNX1JJU0NWX0lTQV9FWFRfVik7XG4rXHR9XG4gXG4gXHRyZXR1cm4gdmNwdTtcbiB9XG5AQCAtNDA4LDE5ICs0MjQsNDMgQEAgdm9pZCBhc3NlcnRfb25fdW5oYW5kbGVkX2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRzdHJ1Y3QgdWNhbGwgdWM7XG4gXG4gXHRpZiAoZ2V0X3VjYWxsKHZjcHUsIFx1MDAyNnVjKSA9PSBVQ0FMTF9VTkhBTkRMRUQpIHtcbitcdFx0dmNwdV9kdW1wKHN0ZGVyciwgdmNwdSwgMik7XG4gXHRcdFRFU1RfRkFJTChcIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICh2ZWN0b3I6MHglbHgsIGVjOjB4JWx4KVwiLFxuIFx0XHRcdHVjLmFyZ3NbMF0sIHVjLmFyZ3NbMV0pO1xuIFx0fVxuIH1cbiBcbi1zdHJ1Y3QgaGFuZGxlcnMge1xuLVx0ZXhjZXB0aW9uX2hhbmRsZXJfZm4gZXhjZXB0aW9uX2hhbmRsZXJzW05SX1ZFQ1RPUlNdW05SX0VYQ0VQVElPTlNdO1xuLX07XG4rc3RhdGljIGJvb2wgaW5zbl9pc192ZWN0b3IodTMyIGluc24pXG4re1xuK1x0dTMyIG9wY29kZSA9IGluc24gXHUwMDI2IFJWX0lOU05fT1BDT0RFX01BU0s7XG4rXHR1MzIgd2lkdGgsIGNzcjtcbitcbitcdC8qIEFsbCBWLXJlbGF0ZWQgaW5zdHJ1Y3Rpb25zIGFyZSA0LWJ5dGUsIGkuZS4gbm90IGNvbXByZXNzZWQuICovXG4rXHRpZiAoKGluc24gXHUwMDI2IDB4MykgIT0gMHgzKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRzd2l0Y2ggKG9wY29kZSkge1xuK1x0Y2FzZSBSVlZfT1BDT0RFX1ZFQ1RPUjpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHRjYXNlIFJWVl9PUENPREVfVkw6XG4rXHRjYXNlIFJWVl9PUENPREVfVlM6XG4rXHRcdHdpZHRoID0gUlZWX0VYVFJBQ1RfVkxfVlNfV0lEVEgoaW5zbik7XG4rXHRcdHJldHVybiB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfOCB8fCB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfMTYgfHxcbitcdFx0ICAgICAgIHdpZHRoID09IFJWVl9WTF9WU19XSURUSF8zMiB8fCB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfNjQ7XG4rXHRjYXNlIFJWR19PUENPREVfU1lTVEVNOlxuK1x0XHRjc3IgPSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pO1xuK1x0XHRyZXR1cm4gKGNzciBcdTAwM2U9IENTUl9WU1RBUlQgXHUwMDI2XHUwMDI2IGNzciBcdTAwM2M9IENTUl9WQ1NSKSB8fFxuK1x0XHQgICAgICAgKGNzciBcdTAwM2U9IENTUl9WTCBcdTAwMjZcdTAwMjYgY3NyIFx1MDAzYz0gQ1NSX1ZMRU5CKTtcbitcdH1cbitcbitcdHJldHVybiBmYWxzZTtcbit9XG4gXG4gdm9pZCByb3V0ZV9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4ge1xuIFx0c3RydWN0IGhhbmRsZXJzICpoYW5kbGVycyA9IChzdHJ1Y3QgaGFuZGxlcnMgKilleGNlcHRpb25faGFuZGxlcnM7XG4tXHRpbnQgdmVjdG9yID0gMCwgZWM7XG4rXHRpbnQgdmVjdG9yID0gMDtcbitcdHVuc2lnbmVkIGxvbmcgZWM7XG4gXG4gXHRlYyA9IHJlZ3MtXHUwMDNlY2F1c2UgXHUwMDI2IH5DQVVTRV9JUlFfRkxBRztcbiBcdGlmIChlYyBcdTAwM2U9IE5SX0VYQ0VQVElPTlMpXG5AQCAtNDMyLDYgKzQ3MiwyNyBAQCB2b2lkIHJvdXRlX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiBcdFx0ZWMgPSAwO1xuIFx0fVxuIFxuK1x0LypcbitcdCAqIExhemlseSBlbmFibGUgViBvbiB0aGUgZmlyc3QgdmVjdG9yIGluc3RydWN0aW9uOiBpZiB0aGUgZmF1bHRpbmdcbitcdCAqIGluc3RydWN0aW9uIGRlY29kZXMgYXMgdmVjdG9yIHdoaWxlIFZTIGlzIG9mZiwgc2V0IFZTIHRvIEluaXRpYWxcbitcdCAqIGFuZCByZS1leGVjdXRlIGl0LCBsaWtlIHRoZSBrZXJuZWwncyByaXNjdl92X2ZpcnN0X3VzZV9oYW5kbGVyKCkuXG4rXHQgKiBHZW51aW5lbHkgaWxsZWdhbCBpbnN0cnVjdGlvbnMgY29udGludWUgdG8gdGhlIHVuZXhwZWN0ZWQtZXhjZXB0aW9uXG4rXHQgKiBwYXRoLlxuK1x0ICovXG4rXHRpZiAoIShyZWdzLVx1MDAzZWNhdXNlIFx1MDAyNiBDQVVTRV9JUlFfRkxBRykgXHUwMDI2XHUwMDI2IGVjID09IEVYQ19JTlNUX0lMTEVHQUwgXHUwMDI2XHUwMDI2XG4rXHQgICAgaGFuZGxlcnMgXHUwMDI2XHUwMDI2IGhhbmRsZXJzLVx1MDAzZXZfYXZhaWxhYmxlIFx1MDAyNlx1MDAyNiAhKHJlZ3MtXHUwMDNlc3RhdHVzIFx1MDAyNiBTUl9WUykpIHtcbitcdFx0dTMyIGluc24gPSAodTMyKXJlZ3MtXHUwMDNlYmFkYWRkcjtcbitcbitcdFx0Lyogc3R2YWwgaXMgbm90IGd1YXJhbnRlZWQgdG8gaG9sZCB0aGUgZmF1bHRpbmcgaW5zdHJ1Y3Rpb24gKi9cbitcdFx0aWYgKCFpbnNuKVxuK1x0XHRcdGluc24gPSAqKHUzMiAqKXJlZ3MtXHUwMDNlZXBjO1xuK1xuK1x0XHRpZiAoaW5zbl9pc192ZWN0b3IoaW5zbikpIHtcbitcdFx0XHRyZWdzLVx1MDAzZXN0YXR1cyB8PSBTUl9WU19JTklUSUFMO1xuK1x0XHRcdHJldHVybjtcbitcdFx0fVxuK1x0fVxuK1xuIFx0aWYgKGhhbmRsZXJzIFx1MDAyNlx1MDAyNiBoYW5kbGVycy1cdTAwM2VleGNlcHRpb25faGFuZGxlcnNbdmVjdG9yXVtlY10pXG4gXHRcdHJldHVybiBoYW5kbGVycy1cdTAwM2VleGNlcHRpb25faGFuZGxlcnNbdmVjdG9yXVtlY10ocmVncyk7XG4gXG5AQCAtNDQ4LDYgKzUwOSw5IEBAIHZvaWQgdmNwdV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFxuIHZvaWQgdm1faW5pdF92ZWN0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKVxuIHtcbitcdGlmICh2bS1cdTAwM2VoYW5kbGVycylcbitcdFx0cmV0dXJuO1xuK1xuIFx0dm0tXHUwMDNlaGFuZGxlcnMgPSBfX3ZtX2FsbG9jKHZtLCBzaXplb2Yoc3RydWN0IGhhbmRsZXJzKSwgdm0tXHUwMDNlcGFnZV9zaXplLFxuIFx0XHRcdFx0ICBNRU1fUkVHSU9OX0RBVEEpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MTA6MTguMDczOTI2NDI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMwMjE1MjU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBFdmFsdWF0aW9uOiBLVk0gU2VsZnRlc3RzIC0gV29ydGhGdXp6aW5nPWZhbHNlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSd2ZSBnb3QgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNgLiBSaWdodCBhd2F5LCBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBhbmQgd2hldGhlciB0aGlzIGlzIHJlbGV2YW50LiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIHZlY3RvciBpbnN0cnVjdGlvbiBkZWNvZGluZyBhbmQgZW5hYmxpbmcgdGhlIFZlY3RvciBleHRlbnNpb24gZm9yIFJJU0MtViBLVk0gc2VsZnRlc3RzLiBTZWVtcyBpbXBvcnRhbnQsIGJ1dCB3YWl0IGEgbWludXRlLi4uIGl0J3MgYWxsIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYC4gVGhhdCdzIG5vdCB0aGUgY29yZSBrZXJuZWwsIHRoYXQncyB0ZXN0IGNvZGUuXG5cbk5vdywgSSByZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb25zLiBXZSdyZSBsb29raW5nIGZvciBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCwgbm90IG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIGV4ZWN1dGlvbiwgdW5yZWFjaGFibGUgY29kZSwgb3IgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLiAqQW5kLCBjcml0aWNhbGx5LCogSSBzZWUgdGhlIGRpc3RpbmN0aW9uIC0gc2VsZnRlc3RzIGFyZSB1c2VyLXNwYWNlIHByb2dyYW1zLiBGdXp6aW5nIHRoZSBrZXJuZWwgZm9jdXNlcyBvbiB0aGUga2VybmVsIGl0c2VsZiwgbm90IGl0cyB0ZXN0IHN1aXRlLiBVbmxlc3Mgd2UncmUgc3BlY2lmaWNhbGx5IGZ1enppbmcgdGhlIHNlbGZ0ZXN0cyAqdGhlbXNlbHZlcyogKHdoaWNoIGlzbid0IHdoYXQgU3l6a2FsbGVyLCBpbiBnZW5lcmFsLCBkb2VzKSwgdGhpcyBwYXRjaCBzaG91bGRuJ3QgdHJpZ2dlciBmdXp6aW5nLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG5vIGtlcm5lbCBzb3VyY2UgZmlsZXMgYXJlIGluY2x1ZGVkLiBUaGUgZGlmZiBjb25maXJtcyB0aGF0IGl0ICpvbmx5KiB0b3VjaGVzIGZpbGVzIHVuZGVyIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLiBCZWNhdXNlIGl0J3MgaXNvbGF0ZWQgd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5LCBpdCBkb2Vzbid0IGFmZmVjdCB0aGUga2VybmVsIGZ1bmN0aW9uYWxpdHkuXG5cbkFscmlnaHQsIHRoZSByZWFzb25pbmcgaXMgc291bmQuIEl0J3MgdXNlci1zcGFjZSB0ZXN0IGNvZGUsIGFuZCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuIFdlJ3JlIGNsZWFyLiBJJ2xsIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNjQsIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMToxMDoyNi4zNzYwODEwMTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyAodXNlci1zcGFjZSB0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzICh1c2VyLXNwYWNlIHRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8pIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMToxMDoyNi4zNzYxMDQwMjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow96vnx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 10:18:22 +0000 UTC FinishedAt: 2026-08-13 11:10:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzICh1c2VyLXNwYWNlIHRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8pIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTkwYjQ3NjgyYmZmYzJiZmZlNGI3YzY4NDlhZmEwNzNhN2IzNGNkN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDExOjEwOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmhcbmluZGV4IGUzYWNmMmFlOTg4MWUuLjY4NWJhZWZlYmRiMTIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmhcbkBAIC0yNSw2ICYjNDM7MjUsMTkgQEBcbiAjZGVmaW5lIEdFVF9STShpbnNuKSAgICAgICAgICAgICgoKGluc24pIFx1MDAyNiBJTlNOX01BU0tfRlVOQ1QzKSBcdTAwM2VcdTAwM2UgSU5TTl9TSElGVF9GVU5DVDMpXG4gI2RlZmluZSBHRVRfQ1NSX05VTShpbnNuKSAgICAgICAoKChpbnNuKSBcdTAwMjYgSU5TTl9DU1JfTUFTSykgXHUwMDNlXHUwMDNlIElOU05fQ1NSX1NISUZUKVxuIFxuJiM0MzsvKiBWZWN0b3IgKFYpIGluc3RydWN0aW9uIGRlY29kaW5nLCBtYXRjaGluZyBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2luc24uaCAqL1xuJiM0MzsjZGVmaW5lIFJWX0lOU05fT1BDT0RFX01BU0tcdDB4N2ZcbiYjNDM7I2RlZmluZSBSVkdfT1BDT0RFX1NZU1RFTVx0MHg3M1xuJiM0MzsjZGVmaW5lIFJWVl9PUENPREVfVkVDVE9SXHQweDU3XG4mIzQzOyNkZWZpbmUgUlZWX09QQ09ERV9WTFx0XHQweDA3XG4mIzQzOyNkZWZpbmUgUlZWX09QQ09ERV9WU1x0XHQweDI3XG4mIzQzOyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzhcdDBcbiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfMTZcdDVcbiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfMzJcdDZcbiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfNjRcdDdcbiYjNDM7I2RlZmluZSBSVlZfRVhUUkFDVF9WTF9WU19XSURUSChpbnNuKVx0KCgoaW5zbikgXHUwMDNlXHUwMDNlIDEyKSBcdTAwMjYgMHg3KVxuJiM0MzsjZGVmaW5lIFJWR19FWFRSQUNUX1NZU1RFTV9DU1IoaW5zbilcdCgoKGluc24pIFx1MDAzZVx1MDAzZSAyMCkgXHUwMDI2IDB4ZmZmKVxuJiM0MztcbiBzdGF0aWMgaW5saW5lIHU2NCBfX2t2bV9yZWdfaWQodTY0IHR5cGUsIHU2NCBzdWJ0eXBlLCB1NjQgaWR4LCB1NjQgc2l6ZSlcbiB7XG4gXHRyZXR1cm4gS1ZNX1JFR19SSVNDViB8IHR5cGUgfCBzdWJ0eXBlIHwgaWR4IHwgc2l6ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9yaXNjdi9wcm9jZXNzb3IuY1xuaW5kZXggZGVkNTQyOWYzNDQ4My4uYzQxNzFhYWUyMjFkZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcbkBAIC0xNyw2ICYjNDM7MTcsMTEgQEBcbiBcbiBzdGF0aWMgZ3ZhX3QgZXhjZXB0aW9uX2hhbmRsZXJzO1xuIFxuJiM0MztzdHJ1Y3QgaGFuZGxlcnMge1xuJiM0MztcdGV4Y2VwdGlvbl9oYW5kbGVyX2ZuIGV4Y2VwdGlvbl9oYW5kbGVyc1tOUl9WRUNUT1JTXVtOUl9FWENFUFRJT05TXTtcbiYjNDM7XHRib29sIHZfYXZhaWxhYmxlO1xuJiM0Mzt9O1xuJiM0MztcbiBib29sIF9fdmNwdV9oYXNfZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGV4dClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHZhbHVlID0gMDtcbkBAIC0yOTgsMTMgJiM0MzszMDMsNiBAQCB2b2lkIHZjcHVfYXJjaF9kdW1wKEZJTEUgKnN0cmVhbSwgc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCBpbmRlbnQpXG4gXHRcdGNvcmUucmVncy50MywgY29yZS5yZWdzLnQ0LCBjb3JlLnJlZ3MudDUsIGNvcmUucmVncy50Nik7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIF9fYWxpZ25lZCgxNikgZ3Vlc3RfdW5leHBfdHJhcCh2b2lkKVxuLXtcbi1cdHNiaV9lY2FsbChLVk1fUklTQ1ZfU0VMRlRFU1RTX1NCSV9FWFQsXG4tXHRcdCAgS1ZNX1JJU0NWX1NFTEZURVNUU19TQklfVU5FWFAsXG4tXHRcdCAgMCwgMCwgMCwgMCwgMCwgMCk7XG4tfVxuLVxuIHZvaWQgdmNwdV9hcmNoX3NldF9lbnRyeV9wb2ludChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHZvaWQgKmd1ZXN0X2NvZGUpXG4ge1xuIFx0dmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0NPUkVfUkVHKHJlZ3MucGMpLCAodW5zaWduZWQgbG9uZylndWVzdF9jb2RlKTtcbkBAIC0zNDgsOCAmIzQzOzM0NiwyNiBAQCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZtX2FyY2hfdmNwdV9hZGQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkKVxuIFx0LyogU2V0dXAgc3NjcmF0Y2ggZm9yIGd1ZXN0X2dldF92Y3B1aWQoKSAqL1xuIFx0dmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0dFTkVSQUxfQ1NSX1JFRyhzc2NyYXRjaCksIHZjcHVfaWQpO1xuIFxuLVx0LyogU2V0dXAgZGVmYXVsdCBleGNlcHRpb24gdmVjdG9yIG9mIGd1ZXN0ICovXG4tXHR2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfR0VORVJBTF9DU1JfUkVHKHN0dmVjKSwgKHVuc2lnbmVkIGxvbmcpZ3Vlc3RfdW5leHBfdHJhcCk7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBZHZlcnRpc2UgViB0byBLVk0gc28gLU8yIGF1dG8tdmVjdG9yaXphdGlvbiBpbiBndWVzdCBjb2RlIGlzIHZhbGlkO1xuJiM0MztcdCAqIGlnbm9yZSBlcnJvcnMgc2luY2UgdGhlIHRlc3RzIHdvcmsgd2l0aG91dCBWIHRvby4gVXNlIHRoZSBmdWxsXG4mIzQzO1x0ICogZXhjZXB0aW9uIHZlY3RvciB0YWJsZSAod2hpY2ggbGF6aWx5IGVuYWJsZXMgViBpbiByb3V0ZV9leGNlcHRpb24oKSlcbiYjNDM7XHQgKiBhcyB0aGUgZGVmYXVsdCBoYW5kbGVyOyB2bV9pbml0X3ZlY3Rvcl90YWJsZXMoKSBpcyBpZGVtcG90ZW50LlxuJiM0MztcdCAqL1xuJiM0MztcdF9fdmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0lTQV9FWFRfUkVHKEtWTV9SSVNDVl9JU0FfRVhUX1YpLCAxKTtcbiYjNDM7XHR2bV9pbml0X3ZlY3Rvcl90YWJsZXModm0pO1xuJiM0MztcdHZjcHVfaW5pdF92ZWN0b3JfdGFibGVzKHZjcHUpO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFJlY29yZCBWIGF2YWlsYWJpbGl0eSBmb3Igcm91dGVfZXhjZXB0aW9uKCksIHdoaWNoIHJ1bnMgaW4gZ3Vlc3RcbiYjNDM7XHQgKiBjb250ZXh0LiBWIGlzIGVuYWJsZWQgdW5pZm9ybWx5IGZvciBldmVyeSB2Q1BVLCBzbyB0aGlzIGlzIGFcbiYjNDM7XHQgKiBWTS13aWRlIHByb3BlcnR5LlxuJiM0MztcdCAqL1xuJiM0MztcdHtcbiYjNDM7XHRcdHN0cnVjdCBoYW5kbGVycyAqaCA9IGFkZHJfZ3ZhMmh2YSh2bSwgdm0tXHUwMDNlaGFuZGxlcnMpO1xuJiM0MztcbiYjNDM7XHRcdGgtXHUwMDNldl9hdmFpbGFibGUgPSBfX3ZjcHVfaGFzX2lzYV9leHQodmNwdSwgS1ZNX1JJU0NWX0lTQV9FWFRfVik7XG4mIzQzO1x0fVxuIFxuIFx0cmV0dXJuIHZjcHU7XG4gfVxuQEAgLTQwOCwxOSAmIzQzOzQyNCw0MyBAQCB2b2lkIGFzc2VydF9vbl91bmhhbmRsZWRfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdHN0cnVjdCB1Y2FsbCB1YztcbiBcbiBcdGlmIChnZXRfdWNhbGwodmNwdSwgXHUwMDI2dWMpID09IFVDQUxMX1VOSEFORExFRCkge1xuJiM0MztcdFx0dmNwdV9kdW1wKHN0ZGVyciwgdmNwdSwgMik7XG4gXHRcdFRFU1RfRkFJTChcJiMzNDtVbmV4cGVjdGVkIGV4Y2VwdGlvbiAodmVjdG9yOjB4JWx4LCBlYzoweCVseClcJiMzNDssXG4gXHRcdFx0dWMuYXJnc1swXSwgdWMuYXJnc1sxXSk7XG4gXHR9XG4gfVxuIFxuLXN0cnVjdCBoYW5kbGVycyB7XG4tXHRleGNlcHRpb25faGFuZGxlcl9mbiBleGNlcHRpb25faGFuZGxlcnNbTlJfVkVDVE9SU11bTlJfRVhDRVBUSU9OU107XG4tfTtcbiYjNDM7c3RhdGljIGJvb2wgaW5zbl9pc192ZWN0b3IodTMyIGluc24pXG4mIzQzO3tcbiYjNDM7XHR1MzIgb3Bjb2RlID0gaW5zbiBcdTAwMjYgUlZfSU5TTl9PUENPREVfTUFTSztcbiYjNDM7XHR1MzIgd2lkdGgsIGNzcjtcbiYjNDM7XG4mIzQzO1x0LyogQWxsIFYtcmVsYXRlZCBpbnN0cnVjdGlvbnMgYXJlIDQtYnl0ZSwgaS5lLiBub3QgY29tcHJlc3NlZC4gKi9cbiYjNDM7XHRpZiAoKGluc24gXHUwMDI2IDB4MykgIT0gMHgzKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKG9wY29kZSkge1xuJiM0MztcdGNhc2UgUlZWX09QQ09ERV9WRUNUT1I6XG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XHRjYXNlIFJWVl9PUENPREVfVkw6XG4mIzQzO1x0Y2FzZSBSVlZfT1BDT0RFX1ZTOlxuJiM0MztcdFx0d2lkdGggPSBSVlZfRVhUUkFDVF9WTF9WU19XSURUSChpbnNuKTtcbiYjNDM7XHRcdHJldHVybiB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfOCB8fCB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfMTYgfHxcbiYjNDM7XHRcdCAgICAgICB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfMzIgfHwgd2lkdGggPT0gUlZWX1ZMX1ZTX1dJRFRIXzY0O1xuJiM0MztcdGNhc2UgUlZHX09QQ09ERV9TWVNURU06XG4mIzQzO1x0XHRjc3IgPSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pO1xuJiM0MztcdFx0cmV0dXJuIChjc3IgXHUwMDNlPSBDU1JfVlNUQVJUIFx1MDAyNlx1MDAyNiBjc3IgXHUwMDNjPSBDU1JfVkNTUikgfHxcbiYjNDM7XHRcdCAgICAgICAoY3NyIFx1MDAzZT0gQ1NSX1ZMIFx1MDAyNlx1MDAyNiBjc3IgXHUwMDNjPSBDU1JfVkxFTkIpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4gXG4gdm9pZCByb3V0ZV9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4ge1xuIFx0c3RydWN0IGhhbmRsZXJzICpoYW5kbGVycyA9IChzdHJ1Y3QgaGFuZGxlcnMgKilleGNlcHRpb25faGFuZGxlcnM7XG4tXHRpbnQgdmVjdG9yID0gMCwgZWM7XG4mIzQzO1x0aW50IHZlY3RvciA9IDA7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBlYztcbiBcbiBcdGVjID0gcmVncy1cdTAwM2VjYXVzZSBcdTAwMjYgfkNBVVNFX0lSUV9GTEFHO1xuIFx0aWYgKGVjIFx1MDAzZT0gTlJfRVhDRVBUSU9OUylcbkBAIC00MzIsNiAmIzQzOzQ3MiwyNyBAQCB2b2lkIHJvdXRlX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiBcdFx0ZWMgPSAwO1xuIFx0fVxuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogTGF6aWx5IGVuYWJsZSBWIG9uIHRoZSBmaXJzdCB2ZWN0b3IgaW5zdHJ1Y3Rpb246IGlmIHRoZSBmYXVsdGluZ1xuJiM0MztcdCAqIGluc3RydWN0aW9uIGRlY29kZXMgYXMgdmVjdG9yIHdoaWxlIFZTIGlzIG9mZiwgc2V0IFZTIHRvIEluaXRpYWxcbiYjNDM7XHQgKiBhbmQgcmUtZXhlY3V0ZSBpdCwgbGlrZSB0aGUga2VybmVsJiMzOTtzIHJpc2N2X3ZfZmlyc3RfdXNlX2hhbmRsZXIoKS5cbiYjNDM7XHQgKiBHZW51aW5lbHkgaWxsZWdhbCBpbnN0cnVjdGlvbnMgY29udGludWUgdG8gdGhlIHVuZXhwZWN0ZWQtZXhjZXB0aW9uXG4mIzQzO1x0ICogcGF0aC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIShyZWdzLVx1MDAzZWNhdXNlIFx1MDAyNiBDQVVTRV9JUlFfRkxBRykgXHUwMDI2XHUwMDI2IGVjID09IEVYQ19JTlNUX0lMTEVHQUwgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGhhbmRsZXJzIFx1MDAyNlx1MDAyNiBoYW5kbGVycy1cdTAwM2V2X2F2YWlsYWJsZSBcdTAwMjZcdTAwMjYgIShyZWdzLVx1MDAzZXN0YXR1cyBcdTAwMjYgU1JfVlMpKSB7XG4mIzQzO1x0XHR1MzIgaW5zbiA9ICh1MzIpcmVncy1cdTAwM2ViYWRhZGRyO1xuJiM0MztcbiYjNDM7XHRcdC8qIHN0dmFsIGlzIG5vdCBndWFyYW50ZWVkIHRvIGhvbGQgdGhlIGZhdWx0aW5nIGluc3RydWN0aW9uICovXG4mIzQzO1x0XHRpZiAoIWluc24pXG4mIzQzO1x0XHRcdGluc24gPSAqKHUzMiAqKXJlZ3MtXHUwMDNlZXBjO1xuJiM0MztcbiYjNDM7XHRcdGlmIChpbnNuX2lzX3ZlY3RvcihpbnNuKSkge1xuJiM0MztcdFx0XHRyZWdzLVx1MDAzZXN0YXR1cyB8PSBTUl9WU19JTklUSUFMO1xuJiM0MztcdFx0XHRyZXR1cm47XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChoYW5kbGVycyBcdTAwMjZcdTAwMjYgaGFuZGxlcnMtXHUwMDNlZXhjZXB0aW9uX2hhbmRsZXJzW3ZlY3Rvcl1bZWNdKVxuIFx0XHRyZXR1cm4gaGFuZGxlcnMtXHUwMDNlZXhjZXB0aW9uX2hhbmRsZXJzW3ZlY3Rvcl1bZWNdKHJlZ3MpO1xuIFxuQEAgLTQ0OCw2ICYjNDM7NTA5LDkgQEAgdm9pZCB2Y3B1X2luaXRfdmVjdG9yX3RhYmxlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXG4gdm9pZCB2bV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92bSAqdm0pXG4ge1xuJiM0MztcdGlmICh2bS1cdTAwM2VoYW5kbGVycylcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHR2bS1cdTAwM2VoYW5kbGVycyA9IF9fdm1fYWxsb2Modm0sIHNpemVvZihzdHJ1Y3QgaGFuZGxlcnMpLCB2bS1cdTAwM2VwYWdlX3NpemUsXG4gXHRcdFx0XHQgIE1FTV9SRUdJT05fREFUQSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyAodXNlci1zcGFjZSB0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE5MGI0NzY4MmJmZmMyYmZmZTRiN2M2ODQ5YWZhMDczYTdiMzRjZDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxMToxMDoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmgKaW5kZXggZTNhY2YyYWU5ODgxZS4uNjg1YmFlZmViZGIxMiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmgKQEAgLTI1LDYgJiM0MzsyNSwxOSBAQAogI2RlZmluZSBHRVRfUk0oaW5zbikgICAgICAgICAgICAoKChpbnNuKSAmYW1wOyBJTlNOX01BU0tfRlVOQ1QzKSAmZ3Q7Jmd0OyBJTlNOX1NISUZUX0ZVTkNUMykKICNkZWZpbmUgR0VUX0NTUl9OVU0oaW5zbikgICAgICAgKCgoaW5zbikgJmFtcDsgSU5TTl9DU1JfTUFTSykgJmd0OyZndDsgSU5TTl9DU1JfU0hJRlQpCiAKJiM0MzsvKiBWZWN0b3IgKFYpIGluc3RydWN0aW9uIGRlY29kaW5nLCBtYXRjaGluZyBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2luc24uaCAqLwomIzQzOyNkZWZpbmUgUlZfSU5TTl9PUENPREVfTUFTSwkweDdmCiYjNDM7I2RlZmluZSBSVkdfT1BDT0RFX1NZU1RFTQkweDczCiYjNDM7I2RlZmluZSBSVlZfT1BDT0RFX1ZFQ1RPUgkweDU3CiYjNDM7I2RlZmluZSBSVlZfT1BDT0RFX1ZMCQkweDA3CiYjNDM7I2RlZmluZSBSVlZfT1BDT0RFX1ZTCQkweDI3CiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfOAkwCiYjNDM7I2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfMTYJNQomIzQzOyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzMyCTYKJiM0MzsjZGVmaW5lIFJWVl9WTF9WU19XSURUSF82NAk3CiYjNDM7I2RlZmluZSBSVlZfRVhUUkFDVF9WTF9WU19XSURUSChpbnNuKQkoKChpbnNuKSAmZ3Q7Jmd0OyAxMikgJmFtcDsgMHg3KQomIzQzOyNkZWZpbmUgUlZHX0VYVFJBQ1RfU1lTVEVNX0NTUihpbnNuKQkoKChpbnNuKSAmZ3Q7Jmd0OyAyMCkgJmFtcDsgMHhmZmYpCiYjNDM7CiBzdGF0aWMgaW5saW5lIHU2NCBfX2t2bV9yZWdfaWQodTY0IHR5cGUsIHU2NCBzdWJ0eXBlLCB1NjQgaWR4LCB1NjQgc2l6ZSkKIHsKIAlyZXR1cm4gS1ZNX1JFR19SSVNDViB8IHR5cGUgfCBzdWJ0eXBlIHwgaWR4IHwgc2l6ZTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jCmluZGV4IGRlZDU0MjlmMzQ0ODMuLmM0MTcxYWFlMjIxZGYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9yaXNjdi9wcm9jZXNzb3IuYwpAQCAtMTcsNiAmIzQzOzE3LDExIEBACiAKIHN0YXRpYyBndmFfdCBleGNlcHRpb25faGFuZGxlcnM7CiAKJiM0MztzdHJ1Y3QgaGFuZGxlcnMgewomIzQzOwlleGNlcHRpb25faGFuZGxlcl9mbiBleGNlcHRpb25faGFuZGxlcnNbTlJfVkVDVE9SU11bTlJfRVhDRVBUSU9OU107CiYjNDM7CWJvb2wgdl9hdmFpbGFibGU7CiYjNDM7fTsKJiM0MzsKIGJvb2wgX192Y3B1X2hhc19leHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZXh0KQogewogCXVuc2lnbmVkIGxvbmcgdmFsdWUgPSAwOwpAQCAtMjk4LDEzICYjNDM7MzAzLDYgQEAgdm9pZCB2Y3B1X2FyY2hfZHVtcChGSUxFICpzdHJlYW0sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggaW5kZW50KQogCQljb3JlLnJlZ3MudDMsIGNvcmUucmVncy50NCwgY29yZS5yZWdzLnQ1LCBjb3JlLnJlZ3MudDYpOwogfQogCi1zdGF0aWMgdm9pZCBfX2FsaWduZWQoMTYpIGd1ZXN0X3VuZXhwX3RyYXAodm9pZCkKLXsKLQlzYmlfZWNhbGwoS1ZNX1JJU0NWX1NFTEZURVNUU19TQklfRVhULAotCQkgIEtWTV9SSVNDVl9TRUxGVEVTVFNfU0JJX1VORVhQLAotCQkgIDAsIDAsIDAsIDAsIDAsIDApOwotfQotCiB2b2lkIHZjcHVfYXJjaF9zZXRfZW50cnlfcG9pbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkICpndWVzdF9jb2RlKQogewogCXZjcHVfc2V0X3JlZyh2Y3B1LCBSSVNDVl9DT1JFX1JFRyhyZWdzLnBjKSwgKHVuc2lnbmVkIGxvbmcpZ3Vlc3RfY29kZSk7CkBAIC0zNDgsOCAmIzQzOzM0NiwyNiBAQCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZtX2FyY2hfdmNwdV9hZGQoc3RydWN0IGt2bV92bSAqdm0sIHUzMiB2Y3B1X2lkKQogCS8qIFNldHVwIHNzY3JhdGNoIGZvciBndWVzdF9nZXRfdmNwdWlkKCkgKi8KIAl2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfR0VORVJBTF9DU1JfUkVHKHNzY3JhdGNoKSwgdmNwdV9pZCk7CiAKLQkvKiBTZXR1cCBkZWZhdWx0IGV4Y2VwdGlvbiB2ZWN0b3Igb2YgZ3Vlc3QgKi8KLQl2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfR0VORVJBTF9DU1JfUkVHKHN0dmVjKSwgKHVuc2lnbmVkIGxvbmcpZ3Vlc3RfdW5leHBfdHJhcCk7CiYjNDM7CS8qCiYjNDM7CSAqIEFkdmVydGlzZSBWIHRvIEtWTSBzbyAtTzIgYXV0by12ZWN0b3JpemF0aW9uIGluIGd1ZXN0IGNvZGUgaXMgdmFsaWQ7CiYjNDM7CSAqIGlnbm9yZSBlcnJvcnMgc2luY2UgdGhlIHRlc3RzIHdvcmsgd2l0aG91dCBWIHRvby4gVXNlIHRoZSBmdWxsCiYjNDM7CSAqIGV4Y2VwdGlvbiB2ZWN0b3IgdGFibGUgKHdoaWNoIGxhemlseSBlbmFibGVzIFYgaW4gcm91dGVfZXhjZXB0aW9uKCkpCiYjNDM7CSAqIGFzIHRoZSBkZWZhdWx0IGhhbmRsZXI7IHZtX2luaXRfdmVjdG9yX3RhYmxlcygpIGlzIGlkZW1wb3RlbnQuCiYjNDM7CSAqLwomIzQzOwlfX3ZjcHVfc2V0X3JlZyh2Y3B1LCBSSVNDVl9JU0FfRVhUX1JFRyhLVk1fUklTQ1ZfSVNBX0VYVF9WKSwgMSk7CiYjNDM7CXZtX2luaXRfdmVjdG9yX3RhYmxlcyh2bSk7CiYjNDM7CXZjcHVfaW5pdF92ZWN0b3JfdGFibGVzKHZjcHUpOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBSZWNvcmQgViBhdmFpbGFiaWxpdHkgZm9yIHJvdXRlX2V4Y2VwdGlvbigpLCB3aGljaCBydW5zIGluIGd1ZXN0CiYjNDM7CSAqIGNvbnRleHQuIFYgaXMgZW5hYmxlZCB1bmlmb3JtbHkgZm9yIGV2ZXJ5IHZDUFUsIHNvIHRoaXMgaXMgYQomIzQzOwkgKiBWTS13aWRlIHByb3BlcnR5LgomIzQzOwkgKi8KJiM0MzsJewomIzQzOwkJc3RydWN0IGhhbmRsZXJzICpoID0gYWRkcl9ndmEyaHZhKHZtLCB2bS0mZ3Q7aGFuZGxlcnMpOwomIzQzOwomIzQzOwkJaC0mZ3Q7dl9hdmFpbGFibGUgPSBfX3ZjcHVfaGFzX2lzYV9leHQodmNwdSwgS1ZNX1JJU0NWX0lTQV9FWFRfVik7CiYjNDM7CX0KIAogCXJldHVybiB2Y3B1OwogfQpAQCAtNDA4LDE5ICYjNDM7NDI0LDQzIEBAIHZvaWQgYXNzZXJ0X29uX3VuaGFuZGxlZF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXN0cnVjdCB1Y2FsbCB1YzsKIAogCWlmIChnZXRfdWNhbGwodmNwdSwgJmFtcDt1YykgPT0gVUNBTExfVU5IQU5ETEVEKSB7CiYjNDM7CQl2Y3B1X2R1bXAoc3RkZXJyLCB2Y3B1LCAyKTsKIAkJVEVTVF9GQUlMKCYjMzQ7VW5leHBlY3RlZCBleGNlcHRpb24gKHZlY3RvcjoweCVseCwgZWM6MHglbHgpJiMzNDssCiAJCQl1Yy5hcmdzWzBdLCB1Yy5hcmdzWzFdKTsKIAl9CiB9CiAKLXN0cnVjdCBoYW5kbGVycyB7Ci0JZXhjZXB0aW9uX2hhbmRsZXJfZm4gZXhjZXB0aW9uX2hhbmRsZXJzW05SX1ZFQ1RPUlNdW05SX0VYQ0VQVElPTlNdOwotfTsKJiM0MztzdGF0aWMgYm9vbCBpbnNuX2lzX3ZlY3Rvcih1MzIgaW5zbikKJiM0Mzt7CiYjNDM7CXUzMiBvcGNvZGUgPSBpbnNuICZhbXA7IFJWX0lOU05fT1BDT0RFX01BU0s7CiYjNDM7CXUzMiB3aWR0aCwgY3NyOwomIzQzOwomIzQzOwkvKiBBbGwgVi1yZWxhdGVkIGluc3RydWN0aW9ucyBhcmUgNC1ieXRlLCBpLmUuIG5vdCBjb21wcmVzc2VkLiAqLwomIzQzOwlpZiAoKGluc24gJmFtcDsgMHgzKSAhPSAweDMpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CXN3aXRjaCAob3Bjb2RlKSB7CiYjNDM7CWNhc2UgUlZWX09QQ09ERV9WRUNUT1I6CiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsJY2FzZSBSVlZfT1BDT0RFX1ZMOgomIzQzOwljYXNlIFJWVl9PUENPREVfVlM6CiYjNDM7CQl3aWR0aCA9IFJWVl9FWFRSQUNUX1ZMX1ZTX1dJRFRIKGluc24pOwomIzQzOwkJcmV0dXJuIHdpZHRoID09IFJWVl9WTF9WU19XSURUSF84IHx8IHdpZHRoID09IFJWVl9WTF9WU19XSURUSF8xNiB8fAomIzQzOwkJICAgICAgIHdpZHRoID09IFJWVl9WTF9WU19XSURUSF8zMiB8fCB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfNjQ7CiYjNDM7CWNhc2UgUlZHX09QQ09ERV9TWVNURU06CiYjNDM7CQljc3IgPSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pOwomIzQzOwkJcmV0dXJuIChjc3IgJmd0Oz0gQ1NSX1ZTVEFSVCAmYW1wOyZhbXA7IGNzciAmbHQ7PSBDU1JfVkNTUikgfHwKJiM0MzsJCSAgICAgICAoY3NyICZndDs9IENTUl9WTCAmYW1wOyZhbXA7IGNzciAmbHQ7PSBDU1JfVkxFTkIpOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiAKIHZvaWQgcm91dGVfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogewogCXN0cnVjdCBoYW5kbGVycyAqaGFuZGxlcnMgPSAoc3RydWN0IGhhbmRsZXJzICopZXhjZXB0aW9uX2hhbmRsZXJzOwotCWludCB2ZWN0b3IgPSAwLCBlYzsKJiM0MzsJaW50IHZlY3RvciA9IDA7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZWM7CiAKIAllYyA9IHJlZ3MtJmd0O2NhdXNlICZhbXA7IH5DQVVTRV9JUlFfRkxBRzsKIAlpZiAoZWMgJmd0Oz0gTlJfRVhDRVBUSU9OUykKQEAgLTQzMiw2ICYjNDM7NDcyLDI3IEBAIHZvaWQgcm91dGVfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCQllYyA9IDA7CiAJfQogCiYjNDM7CS8qCiYjNDM7CSAqIExhemlseSBlbmFibGUgViBvbiB0aGUgZmlyc3QgdmVjdG9yIGluc3RydWN0aW9uOiBpZiB0aGUgZmF1bHRpbmcKJiM0MzsJICogaW5zdHJ1Y3Rpb24gZGVjb2RlcyBhcyB2ZWN0b3Igd2hpbGUgVlMgaXMgb2ZmLCBzZXQgVlMgdG8gSW5pdGlhbAomIzQzOwkgKiBhbmQgcmUtZXhlY3V0ZSBpdCwgbGlrZSB0aGUga2VybmVsJiMzOTtzIHJpc2N2X3ZfZmlyc3RfdXNlX2hhbmRsZXIoKS4KJiM0MzsJICogR2VudWluZWx5IGlsbGVnYWwgaW5zdHJ1Y3Rpb25zIGNvbnRpbnVlIHRvIHRoZSB1bmV4cGVjdGVkLWV4Y2VwdGlvbgomIzQzOwkgKiBwYXRoLgomIzQzOwkgKi8KJiM0MzsJaWYgKCEocmVncy0mZ3Q7Y2F1c2UgJmFtcDsgQ0FVU0VfSVJRX0ZMQUcpICZhbXA7JmFtcDsgZWMgPT0gRVhDX0lOU1RfSUxMRUdBTCAmYW1wOyZhbXA7CiYjNDM7CSAgICBoYW5kbGVycyAmYW1wOyZhbXA7IGhhbmRsZXJzLSZndDt2X2F2YWlsYWJsZSAmYW1wOyZhbXA7ICEocmVncy0mZ3Q7c3RhdHVzICZhbXA7IFNSX1ZTKSkgewomIzQzOwkJdTMyIGluc24gPSAodTMyKXJlZ3MtJmd0O2JhZGFkZHI7CiYjNDM7CiYjNDM7CQkvKiBzdHZhbCBpcyBub3QgZ3VhcmFudGVlZCB0byBob2xkIHRoZSBmYXVsdGluZyBpbnN0cnVjdGlvbiAqLwomIzQzOwkJaWYgKCFpbnNuKQomIzQzOwkJCWluc24gPSAqKHUzMiAqKXJlZ3MtJmd0O2VwYzsKJiM0MzsKJiM0MzsJCWlmIChpbnNuX2lzX3ZlY3RvcihpbnNuKSkgewomIzQzOwkJCXJlZ3MtJmd0O3N0YXR1cyB8PSBTUl9WU19JTklUSUFMOwomIzQzOwkJCXJldHVybjsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCWlmIChoYW5kbGVycyAmYW1wOyZhbXA7IGhhbmRsZXJzLSZndDtleGNlcHRpb25faGFuZGxlcnNbdmVjdG9yXVtlY10pCiAJCXJldHVybiBoYW5kbGVycy0mZ3Q7ZXhjZXB0aW9uX2hhbmRsZXJzW3ZlY3Rvcl1bZWNdKHJlZ3MpOwogCkBAIC00NDgsNiAmIzQzOzUwOSw5IEBAIHZvaWQgdmNwdV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiB2b2lkIHZtX2luaXRfdmVjdG9yX3RhYmxlcyhzdHJ1Y3Qga3ZtX3ZtICp2bSkKIHsKJiM0MzsJaWYgKHZtLSZndDtoYW5kbGVycykKJiM0MzsJCXJldHVybjsKJiM0MzsKIAl2bS0mZ3Q7aGFuZGxlcnMgPSBfX3ZtX2FsbG9jKHZtLCBzaXplb2Yoc3RydWN0IGhhbmRsZXJzKSwgdm0tJmd0O3BhZ2Vfc2l6ZSwKIAkJCQkgIE1FTV9SRUdJT05fREFUQSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTE6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE2NAoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDU5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBFdmFsdWF0aW9uOiBLVk0gU2VsZnRlc3RzIC0gV29ydGhGdXp6aW5nPWZhbHNlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTt2ZSBnb3QgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaGAgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jYC4gUmlnaHQgYXdheSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBmdXp6aW5nIGFuZCB3aGV0aGVyIHRoaXMgaXMgcmVsZXZhbnQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIHZlY3RvciBpbnN0cnVjdGlvbiBkZWNvZGluZyBhbmQgZW5hYmxpbmcgdGhlIFZlY3RvciBleHRlbnNpb24gZm9yIFJJU0MtViBLVk0gc2VsZnRlc3RzLiBTZWVtcyBpbXBvcnRhbnQsIGJ1dCB3YWl0IGEgbWludXRlLi4uIGl0JiMzOTtzIGFsbCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2AuIFRoYXQmIzM5O3Mgbm90IHRoZSBjb3JlIGtlcm5lbCwgdGhhdCYjMzk7cyB0ZXN0IGNvZGUuCgpOb3csIEkgcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gV2UmIzM5O3JlIGxvb2tpbmcgZm9yIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLCBub3QgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgY29uc3RhbnRzIHRoYXQgZG9uJiMzOTt0IGFsdGVyIGV4ZWN1dGlvbiwgdW5yZWFjaGFibGUgY29kZSwgb3IgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLiAqQW5kLCBjcml0aWNhbGx5LCogSSBzZWUgdGhlIGRpc3RpbmN0aW9uIC0gc2VsZnRlc3RzIGFyZSB1c2VyLXNwYWNlIHByb2dyYW1zLiBGdXp6aW5nIHRoZSBrZXJuZWwgZm9jdXNlcyBvbiB0aGUga2VybmVsIGl0c2VsZiwgbm90IGl0cyB0ZXN0IHN1aXRlLiBVbmxlc3Mgd2UmIzM5O3JlIHNwZWNpZmljYWxseSBmdXp6aW5nIHRoZSBzZWxmdGVzdHMgKnRoZW1zZWx2ZXMqICh3aGljaCBpc24mIzM5O3Qgd2hhdCBTeXprYWxsZXIsIGluIGdlbmVyYWwsIGRvZXMpLCB0aGlzIHBhdGNoIHNob3VsZG4mIzM5O3QgdHJpZ2dlciBmdXp6aW5nLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBubyBrZXJuZWwgc291cmNlIGZpbGVzIGFyZSBpbmNsdWRlZC4gVGhlIGRpZmYgY29uZmlybXMgdGhhdCBpdCAqb25seSogdG91Y2hlcyBmaWxlcyB1bmRlciBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYC4gQmVjYXVzZSBpdCYjMzk7cyBpc29sYXRlZCB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnksIGl0IGRvZXNuJiMzOTt0IGFmZmVjdCB0aGUga2VybmVsIGZ1bmN0aW9uYWxpdHkuCgpBbHJpZ2h0LCB0aGUgcmVhc29uaW5nIGlzIHNvdW5kLiBJdCYjMzk7cyB1c2VyLXNwYWNlIHRlc3QgY29kZSwgYW5kIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuIFdlJiMzOTtyZSBjbGVhci4gSSYjMzk7bGwgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyAodXNlci1zcGFjZSB0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzICh1c2VyLXNwYWNlIHRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8pIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDExOjEwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMToxMDoxNi41ODI5OTMxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3OTMxMjEyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEtWTSBzZWxmdGVzdHMgKHVzZXItc3BhY2UgdGVzdCBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLykgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjEwOjE2LjU4MzAwMTYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDkwMDU5Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTkwYjQ3NjgyYmZmYzJiZmZlNGI3YzY4NDlhZmEwNzNhN2IzNGNkN1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxMToxMDoxNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oXFxuaW5kZXggZTNhY2YyYWU5ODgxZS4uNjg1YmFlZmViZGIxMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oXFxuQEAgLTI1LDYgKzI1LDE5IEBAXFxuICNkZWZpbmUgR0VUX1JNKGluc24pICAgICAgICAgICAgKCgoaW5zbikgXFx1MDAyNiBJTlNOX01BU0tfRlVOQ1QzKSBcXHUwMDNlXFx1MDAzZSBJTlNOX1NISUZUX0ZVTkNUMylcXG4gI2RlZmluZSBHRVRfQ1NSX05VTShpbnNuKSAgICAgICAoKChpbnNuKSBcXHUwMDI2IElOU05fQ1NSX01BU0spIFxcdTAwM2VcXHUwMDNlIElOU05fQ1NSX1NISUZUKVxcbiBcXG4rLyogVmVjdG9yIChWKSBpbnN0cnVjdGlvbiBkZWNvZGluZywgbWF0Y2hpbmcgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pbnNuLmggKi9cXG4rI2RlZmluZSBSVl9JTlNOX09QQ09ERV9NQVNLXFx0MHg3ZlxcbisjZGVmaW5lIFJWR19PUENPREVfU1lTVEVNXFx0MHg3M1xcbisjZGVmaW5lIFJWVl9PUENPREVfVkVDVE9SXFx0MHg1N1xcbisjZGVmaW5lIFJWVl9PUENPREVfVkxcXHRcXHQweDA3XFxuKyNkZWZpbmUgUlZWX09QQ09ERV9WU1xcdFxcdDB4MjdcXG4rI2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfOFxcdDBcXG4rI2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfMTZcXHQ1XFxuKyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzMyXFx0NlxcbisjZGVmaW5lIFJWVl9WTF9WU19XSURUSF82NFxcdDdcXG4rI2RlZmluZSBSVlZfRVhUUkFDVF9WTF9WU19XSURUSChpbnNuKVxcdCgoKGluc24pIFxcdTAwM2VcXHUwMDNlIDEyKSBcXHUwMDI2IDB4NylcXG4rI2RlZmluZSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pXFx0KCgoaW5zbikgXFx1MDAzZVxcdTAwM2UgMjApIFxcdTAwMjYgMHhmZmYpXFxuK1xcbiBzdGF0aWMgaW5saW5lIHU2NCBfX2t2bV9yZWdfaWQodTY0IHR5cGUsIHU2NCBzdWJ0eXBlLCB1NjQgaWR4LCB1NjQgc2l6ZSlcXG4ge1xcbiBcXHRyZXR1cm4gS1ZNX1JFR19SSVNDViB8IHR5cGUgfCBzdWJ0eXBlIHwgaWR4IHwgc2l6ZTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9yaXNjdi9wcm9jZXNzb3IuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcXG5pbmRleCBkZWQ1NDI5ZjM0NDgzLi5jNDE3MWFhZTIyMWRmIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jXFxuQEAgLTE3LDYgKzE3LDExIEBAXFxuIFxcbiBzdGF0aWMgZ3ZhX3QgZXhjZXB0aW9uX2hhbmRsZXJzO1xcbiBcXG4rc3RydWN0IGhhbmRsZXJzIHtcXG4rXFx0ZXhjZXB0aW9uX2hhbmRsZXJfZm4gZXhjZXB0aW9uX2hhbmRsZXJzW05SX1ZFQ1RPUlNdW05SX0VYQ0VQVElPTlNdO1xcbitcXHRib29sIHZfYXZhaWxhYmxlO1xcbit9O1xcbitcXG4gYm9vbCBfX3ZjcHVfaGFzX2V4dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBleHQpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyB2YWx1ZSA9IDA7XFxuQEAgLTI5OCwxMyArMzAzLDYgQEAgdm9pZCB2Y3B1X2FyY2hfZHVtcChGSUxFICpzdHJlYW0sIHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggaW5kZW50KVxcbiBcXHRcXHRjb3JlLnJlZ3MudDMsIGNvcmUucmVncy50NCwgY29yZS5yZWdzLnQ1LCBjb3JlLnJlZ3MudDYpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBfX2FsaWduZWQoMTYpIGd1ZXN0X3VuZXhwX3RyYXAodm9pZClcXG4te1xcbi1cXHRzYmlfZWNhbGwoS1ZNX1JJU0NWX1NFTEZURVNUU19TQklfRVhULFxcbi1cXHRcXHQgIEtWTV9SSVNDVl9TRUxGVEVTVFNfU0JJX1VORVhQLFxcbi1cXHRcXHQgIDAsIDAsIDAsIDAsIDAsIDApO1xcbi19XFxuLVxcbiB2b2lkIHZjcHVfYXJjaF9zZXRfZW50cnlfcG9pbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkICpndWVzdF9jb2RlKVxcbiB7XFxuIFxcdHZjcHVfc2V0X3JlZyh2Y3B1LCBSSVNDVl9DT1JFX1JFRyhyZWdzLnBjKSwgKHVuc2lnbmVkIGxvbmcpZ3Vlc3RfY29kZSk7XFxuQEAgLTM0OCw4ICszNDYsMjYgQEAgc3RydWN0IGt2bV92Y3B1ICp2bV9hcmNoX3ZjcHVfYWRkKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZClcXG4gXFx0LyogU2V0dXAgc3NjcmF0Y2ggZm9yIGd1ZXN0X2dldF92Y3B1aWQoKSAqL1xcbiBcXHR2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfR0VORVJBTF9DU1JfUkVHKHNzY3JhdGNoKSwgdmNwdV9pZCk7XFxuIFxcbi1cXHQvKiBTZXR1cCBkZWZhdWx0IGV4Y2VwdGlvbiB2ZWN0b3Igb2YgZ3Vlc3QgKi9cXG4tXFx0dmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0dFTkVSQUxfQ1NSX1JFRyhzdHZlYyksICh1bnNpZ25lZCBsb25nKWd1ZXN0X3VuZXhwX3RyYXApO1xcbitcXHQvKlxcbitcXHQgKiBBZHZlcnRpc2UgViB0byBLVk0gc28gLU8yIGF1dG8tdmVjdG9yaXphdGlvbiBpbiBndWVzdCBjb2RlIGlzIHZhbGlkO1xcbitcXHQgKiBpZ25vcmUgZXJyb3JzIHNpbmNlIHRoZSB0ZXN0cyB3b3JrIHdpdGhvdXQgViB0b28uIFVzZSB0aGUgZnVsbFxcbitcXHQgKiBleGNlcHRpb24gdmVjdG9yIHRhYmxlICh3aGljaCBsYXppbHkgZW5hYmxlcyBWIGluIHJvdXRlX2V4Y2VwdGlvbigpKVxcbitcXHQgKiBhcyB0aGUgZGVmYXVsdCBoYW5kbGVyOyB2bV9pbml0X3ZlY3Rvcl90YWJsZXMoKSBpcyBpZGVtcG90ZW50LlxcbitcXHQgKi9cXG4rXFx0X192Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfSVNBX0VYVF9SRUcoS1ZNX1JJU0NWX0lTQV9FWFRfViksIDEpO1xcbitcXHR2bV9pbml0X3ZlY3Rvcl90YWJsZXModm0pO1xcbitcXHR2Y3B1X2luaXRfdmVjdG9yX3RhYmxlcyh2Y3B1KTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIFJlY29yZCBWIGF2YWlsYWJpbGl0eSBmb3Igcm91dGVfZXhjZXB0aW9uKCksIHdoaWNoIHJ1bnMgaW4gZ3Vlc3RcXG4rXFx0ICogY29udGV4dC4gViBpcyBlbmFibGVkIHVuaWZvcm1seSBmb3IgZXZlcnkgdkNQVSwgc28gdGhpcyBpcyBhXFxuK1xcdCAqIFZNLXdpZGUgcHJvcGVydHkuXFxuK1xcdCAqL1xcbitcXHR7XFxuK1xcdFxcdHN0cnVjdCBoYW5kbGVycyAqaCA9IGFkZHJfZ3ZhMmh2YSh2bSwgdm0tXFx1MDAzZWhhbmRsZXJzKTtcXG4rXFxuK1xcdFxcdGgtXFx1MDAzZXZfYXZhaWxhYmxlID0gX192Y3B1X2hhc19pc2FfZXh0KHZjcHUsIEtWTV9SSVNDVl9JU0FfRVhUX1YpO1xcbitcXHR9XFxuIFxcbiBcXHRyZXR1cm4gdmNwdTtcXG4gfVxcbkBAIC00MDgsMTkgKzQyNCw0MyBAQCB2b2lkIGFzc2VydF9vbl91bmhhbmRsZWRfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0c3RydWN0IHVjYWxsIHVjO1xcbiBcXG4gXFx0aWYgKGdldF91Y2FsbCh2Y3B1LCBcXHUwMDI2dWMpID09IFVDQUxMX1VOSEFORExFRCkge1xcbitcXHRcXHR2Y3B1X2R1bXAoc3RkZXJyLCB2Y3B1LCAyKTtcXG4gXFx0XFx0VEVTVF9GQUlMKFxcXCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiAodmVjdG9yOjB4JWx4LCBlYzoweCVseClcXFwiLFxcbiBcXHRcXHRcXHR1Yy5hcmdzWzBdLCB1Yy5hcmdzWzFdKTtcXG4gXFx0fVxcbiB9XFxuIFxcbi1zdHJ1Y3QgaGFuZGxlcnMge1xcbi1cXHRleGNlcHRpb25faGFuZGxlcl9mbiBleGNlcHRpb25faGFuZGxlcnNbTlJfVkVDVE9SU11bTlJfRVhDRVBUSU9OU107XFxuLX07XFxuK3N0YXRpYyBib29sIGluc25faXNfdmVjdG9yKHUzMiBpbnNuKVxcbit7XFxuK1xcdHUzMiBvcGNvZGUgPSBpbnNuIFxcdTAwMjYgUlZfSU5TTl9PUENPREVfTUFTSztcXG4rXFx0dTMyIHdpZHRoLCBjc3I7XFxuK1xcbitcXHQvKiBBbGwgVi1yZWxhdGVkIGluc3RydWN0aW9ucyBhcmUgNC1ieXRlLCBpLmUuIG5vdCBjb21wcmVzc2VkLiAqL1xcbitcXHRpZiAoKGluc24gXFx1MDAyNiAweDMpICE9IDB4MylcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0c3dpdGNoIChvcGNvZGUpIHtcXG4rXFx0Y2FzZSBSVlZfT1BDT0RFX1ZFQ1RPUjpcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcdGNhc2UgUlZWX09QQ09ERV9WTDpcXG4rXFx0Y2FzZSBSVlZfT1BDT0RFX1ZTOlxcbitcXHRcXHR3aWR0aCA9IFJWVl9FWFRSQUNUX1ZMX1ZTX1dJRFRIKGluc24pO1xcbitcXHRcXHRyZXR1cm4gd2lkdGggPT0gUlZWX1ZMX1ZTX1dJRFRIXzggfHwgd2lkdGggPT0gUlZWX1ZMX1ZTX1dJRFRIXzE2IHx8XFxuK1xcdFxcdCAgICAgICB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfMzIgfHwgd2lkdGggPT0gUlZWX1ZMX1ZTX1dJRFRIXzY0O1xcbitcXHRjYXNlIFJWR19PUENPREVfU1lTVEVNOlxcbitcXHRcXHRjc3IgPSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pO1xcbitcXHRcXHRyZXR1cm4gKGNzciBcXHUwMDNlPSBDU1JfVlNUQVJUIFxcdTAwMjZcXHUwMDI2IGNzciBcXHUwMDNjPSBDU1JfVkNTUikgfHxcXG4rXFx0XFx0ICAgICAgIChjc3IgXFx1MDAzZT0gQ1NSX1ZMIFxcdTAwMjZcXHUwMDI2IGNzciBcXHUwMDNjPSBDU1JfVkxFTkIpO1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuK31cXG4gXFxuIHZvaWQgcm91dGVfZXhjZXB0aW9uKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbiB7XFxuIFxcdHN0cnVjdCBoYW5kbGVycyAqaGFuZGxlcnMgPSAoc3RydWN0IGhhbmRsZXJzICopZXhjZXB0aW9uX2hhbmRsZXJzO1xcbi1cXHRpbnQgdmVjdG9yID0gMCwgZWM7XFxuK1xcdGludCB2ZWN0b3IgPSAwO1xcbitcXHR1bnNpZ25lZCBsb25nIGVjO1xcbiBcXG4gXFx0ZWMgPSByZWdzLVxcdTAwM2VjYXVzZSBcXHUwMDI2IH5DQVVTRV9JUlFfRkxBRztcXG4gXFx0aWYgKGVjIFxcdTAwM2U9IE5SX0VYQ0VQVElPTlMpXFxuQEAgLTQzMiw2ICs0NzIsMjcgQEAgdm9pZCByb3V0ZV9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuIFxcdFxcdGVjID0gMDtcXG4gXFx0fVxcbiBcXG4rXFx0LypcXG4rXFx0ICogTGF6aWx5IGVuYWJsZSBWIG9uIHRoZSBmaXJzdCB2ZWN0b3IgaW5zdHJ1Y3Rpb246IGlmIHRoZSBmYXVsdGluZ1xcbitcXHQgKiBpbnN0cnVjdGlvbiBkZWNvZGVzIGFzIHZlY3RvciB3aGlsZSBWUyBpcyBvZmYsIHNldCBWUyB0byBJbml0aWFsXFxuK1xcdCAqIGFuZCByZS1leGVjdXRlIGl0LCBsaWtlIHRoZSBrZXJuZWwncyByaXNjdl92X2ZpcnN0X3VzZV9oYW5kbGVyKCkuXFxuK1xcdCAqIEdlbnVpbmVseSBpbGxlZ2FsIGluc3RydWN0aW9ucyBjb250aW51ZSB0byB0aGUgdW5leHBlY3RlZC1leGNlcHRpb25cXG4rXFx0ICogcGF0aC5cXG4rXFx0ICovXFxuK1xcdGlmICghKHJlZ3MtXFx1MDAzZWNhdXNlIFxcdTAwMjYgQ0FVU0VfSVJRX0ZMQUcpIFxcdTAwMjZcXHUwMDI2IGVjID09IEVYQ19JTlNUX0lMTEVHQUwgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGhhbmRsZXJzIFxcdTAwMjZcXHUwMDI2IGhhbmRsZXJzLVxcdTAwM2V2X2F2YWlsYWJsZSBcXHUwMDI2XFx1MDAyNiAhKHJlZ3MtXFx1MDAzZXN0YXR1cyBcXHUwMDI2IFNSX1ZTKSkge1xcbitcXHRcXHR1MzIgaW5zbiA9ICh1MzIpcmVncy1cXHUwMDNlYmFkYWRkcjtcXG4rXFxuK1xcdFxcdC8qIHN0dmFsIGlzIG5vdCBndWFyYW50ZWVkIHRvIGhvbGQgdGhlIGZhdWx0aW5nIGluc3RydWN0aW9uICovXFxuK1xcdFxcdGlmICghaW5zbilcXG4rXFx0XFx0XFx0aW5zbiA9ICoodTMyICopcmVncy1cXHUwMDNlZXBjO1xcbitcXG4rXFx0XFx0aWYgKGluc25faXNfdmVjdG9yKGluc24pKSB7XFxuK1xcdFxcdFxcdHJlZ3MtXFx1MDAzZXN0YXR1cyB8PSBTUl9WU19JTklUSUFMO1xcbitcXHRcXHRcXHRyZXR1cm47XFxuK1xcdFxcdH1cXG4rXFx0fVxcbitcXG4gXFx0aWYgKGhhbmRsZXJzIFxcdTAwMjZcXHUwMDI2IGhhbmRsZXJzLVxcdTAwM2VleGNlcHRpb25faGFuZGxlcnNbdmVjdG9yXVtlY10pXFxuIFxcdFxcdHJldHVybiBoYW5kbGVycy1cXHUwMDNlZXhjZXB0aW9uX2hhbmRsZXJzW3ZlY3Rvcl1bZWNdKHJlZ3MpO1xcbiBcXG5AQCAtNDQ4LDYgKzUwOSw5IEBAIHZvaWQgdmNwdV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXG4gdm9pZCB2bV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92bSAqdm0pXFxuIHtcXG4rXFx0aWYgKHZtLVxcdTAwM2VoYW5kbGVycylcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0dm0tXFx1MDAzZWhhbmRsZXJzID0gX192bV9hbGxvYyh2bSwgc2l6ZW9mKHN0cnVjdCBoYW5kbGVycyksIHZtLVxcdTAwM2VwYWdlX3NpemUsXFxuIFxcdFxcdFxcdFxcdCAgTUVNX1JFR0lPTl9EQVRBKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDExOjEwOjE4LjA3MzkyNTEwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjgzMDIxNzcyNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyAodXNlci1zcGFjZSB0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTkwYjQ3NjgyYmZmYzJiZmZlNGI3YzY4NDlhZmEwNzNhN2IzNGNkN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDExOjEwOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUvcmlzY3YvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaFxuaW5kZXggZTNhY2YyYWU5ODgxZS4uNjg1YmFlZmViZGIxMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS9yaXNjdi9wcm9jZXNzb3IuaFxuQEAgLTI1LDYgKzI1LDE5IEBAXG4gI2RlZmluZSBHRVRfUk0oaW5zbikgICAgICAgICAgICAoKChpbnNuKSBcdTAwMjYgSU5TTl9NQVNLX0ZVTkNUMykgXHUwMDNlXHUwMDNlIElOU05fU0hJRlRfRlVOQ1QzKVxuICNkZWZpbmUgR0VUX0NTUl9OVU0oaW5zbikgICAgICAgKCgoaW5zbikgXHUwMDI2IElOU05fQ1NSX01BU0spIFx1MDAzZVx1MDAzZSBJTlNOX0NTUl9TSElGVClcbiBcbisvKiBWZWN0b3IgKFYpIGluc3RydWN0aW9uIGRlY29kaW5nLCBtYXRjaGluZyBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2luc24uaCAqL1xuKyNkZWZpbmUgUlZfSU5TTl9PUENPREVfTUFTS1x0MHg3ZlxuKyNkZWZpbmUgUlZHX09QQ09ERV9TWVNURU1cdDB4NzNcbisjZGVmaW5lIFJWVl9PUENPREVfVkVDVE9SXHQweDU3XG4rI2RlZmluZSBSVlZfT1BDT0RFX1ZMXHRcdDB4MDdcbisjZGVmaW5lIFJWVl9PUENPREVfVlNcdFx0MHgyN1xuKyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzhcdDBcbisjZGVmaW5lIFJWVl9WTF9WU19XSURUSF8xNlx0NVxuKyNkZWZpbmUgUlZWX1ZMX1ZTX1dJRFRIXzMyXHQ2XG4rI2RlZmluZSBSVlZfVkxfVlNfV0lEVEhfNjRcdDdcbisjZGVmaW5lIFJWVl9FWFRSQUNUX1ZMX1ZTX1dJRFRIKGluc24pXHQoKChpbnNuKSBcdTAwM2VcdTAwM2UgMTIpIFx1MDAyNiAweDcpXG4rI2RlZmluZSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pXHQoKChpbnNuKSBcdTAwM2VcdTAwM2UgMjApIFx1MDAyNiAweGZmZilcbitcbiBzdGF0aWMgaW5saW5lIHU2NCBfX2t2bV9yZWdfaWQodTY0IHR5cGUsIHU2NCBzdWJ0eXBlLCB1NjQgaWR4LCB1NjQgc2l6ZSlcbiB7XG4gXHRyZXR1cm4gS1ZNX1JFR19SSVNDViB8IHR5cGUgfCBzdWJ0eXBlIHwgaWR4IHwgc2l6ZTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vbGliL3Jpc2N2L3Byb2Nlc3Nvci5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2xpYi9yaXNjdi9wcm9jZXNzb3IuY1xuaW5kZXggZGVkNTQyOWYzNDQ4My4uYzQxNzFhYWUyMjFkZiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNcbkBAIC0xNyw2ICsxNywxMSBAQFxuIFxuIHN0YXRpYyBndmFfdCBleGNlcHRpb25faGFuZGxlcnM7XG4gXG4rc3RydWN0IGhhbmRsZXJzIHtcbitcdGV4Y2VwdGlvbl9oYW5kbGVyX2ZuIGV4Y2VwdGlvbl9oYW5kbGVyc1tOUl9WRUNUT1JTXVtOUl9FWENFUFRJT05TXTtcbitcdGJvb2wgdl9hdmFpbGFibGU7XG4rfTtcbitcbiBib29sIF9fdmNwdV9oYXNfZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGV4dClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHZhbHVlID0gMDtcbkBAIC0yOTgsMTMgKzMwMyw2IEBAIHZvaWQgdmNwdV9hcmNoX2R1bXAoRklMRSAqc3RyZWFtLCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IGluZGVudClcbiBcdFx0Y29yZS5yZWdzLnQzLCBjb3JlLnJlZ3MudDQsIGNvcmUucmVncy50NSwgY29yZS5yZWdzLnQ2KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgX19hbGlnbmVkKDE2KSBndWVzdF91bmV4cF90cmFwKHZvaWQpXG4te1xuLVx0c2JpX2VjYWxsKEtWTV9SSVNDVl9TRUxGVEVTVFNfU0JJX0VYVCxcbi1cdFx0ICBLVk1fUklTQ1ZfU0VMRlRFU1RTX1NCSV9VTkVYUCxcbi1cdFx0ICAwLCAwLCAwLCAwLCAwLCAwKTtcbi19XG4tXG4gdm9pZCB2Y3B1X2FyY2hfc2V0X2VudHJ5X3BvaW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdm9pZCAqZ3Vlc3RfY29kZSlcbiB7XG4gXHR2Y3B1X3NldF9yZWcodmNwdSwgUklTQ1ZfQ09SRV9SRUcocmVncy5wYyksICh1bnNpZ25lZCBsb25nKWd1ZXN0X2NvZGUpO1xuQEAgLTM0OCw4ICszNDYsMjYgQEAgc3RydWN0IGt2bV92Y3B1ICp2bV9hcmNoX3ZjcHVfYWRkKHN0cnVjdCBrdm1fdm0gKnZtLCB1MzIgdmNwdV9pZClcbiBcdC8qIFNldHVwIHNzY3JhdGNoIGZvciBndWVzdF9nZXRfdmNwdWlkKCkgKi9cbiBcdHZjcHVfc2V0X3JlZyh2Y3B1LCBSSVNDVl9HRU5FUkFMX0NTUl9SRUcoc3NjcmF0Y2gpLCB2Y3B1X2lkKTtcbiBcbi1cdC8qIFNldHVwIGRlZmF1bHQgZXhjZXB0aW9uIHZlY3RvciBvZiBndWVzdCAqL1xuLVx0dmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0dFTkVSQUxfQ1NSX1JFRyhzdHZlYyksICh1bnNpZ25lZCBsb25nKWd1ZXN0X3VuZXhwX3RyYXApO1xuK1x0LypcbitcdCAqIEFkdmVydGlzZSBWIHRvIEtWTSBzbyAtTzIgYXV0by12ZWN0b3JpemF0aW9uIGluIGd1ZXN0IGNvZGUgaXMgdmFsaWQ7XG4rXHQgKiBpZ25vcmUgZXJyb3JzIHNpbmNlIHRoZSB0ZXN0cyB3b3JrIHdpdGhvdXQgViB0b28uIFVzZSB0aGUgZnVsbFxuK1x0ICogZXhjZXB0aW9uIHZlY3RvciB0YWJsZSAod2hpY2ggbGF6aWx5IGVuYWJsZXMgViBpbiByb3V0ZV9leGNlcHRpb24oKSlcbitcdCAqIGFzIHRoZSBkZWZhdWx0IGhhbmRsZXI7IHZtX2luaXRfdmVjdG9yX3RhYmxlcygpIGlzIGlkZW1wb3RlbnQuXG4rXHQgKi9cbitcdF9fdmNwdV9zZXRfcmVnKHZjcHUsIFJJU0NWX0lTQV9FWFRfUkVHKEtWTV9SSVNDVl9JU0FfRVhUX1YpLCAxKTtcbitcdHZtX2luaXRfdmVjdG9yX3RhYmxlcyh2bSk7XG4rXHR2Y3B1X2luaXRfdmVjdG9yX3RhYmxlcyh2Y3B1KTtcbitcbitcdC8qXG4rXHQgKiBSZWNvcmQgViBhdmFpbGFiaWxpdHkgZm9yIHJvdXRlX2V4Y2VwdGlvbigpLCB3aGljaCBydW5zIGluIGd1ZXN0XG4rXHQgKiBjb250ZXh0LiBWIGlzIGVuYWJsZWQgdW5pZm9ybWx5IGZvciBldmVyeSB2Q1BVLCBzbyB0aGlzIGlzIGFcbitcdCAqIFZNLXdpZGUgcHJvcGVydHkuXG4rXHQgKi9cbitcdHtcbitcdFx0c3RydWN0IGhhbmRsZXJzICpoID0gYWRkcl9ndmEyaHZhKHZtLCB2bS1cdTAwM2VoYW5kbGVycyk7XG4rXG4rXHRcdGgtXHUwMDNldl9hdmFpbGFibGUgPSBfX3ZjcHVfaGFzX2lzYV9leHQodmNwdSwgS1ZNX1JJU0NWX0lTQV9FWFRfVik7XG4rXHR9XG4gXG4gXHRyZXR1cm4gdmNwdTtcbiB9XG5AQCAtNDA4LDE5ICs0MjQsNDMgQEAgdm9pZCBhc3NlcnRfb25fdW5oYW5kbGVkX2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRzdHJ1Y3QgdWNhbGwgdWM7XG4gXG4gXHRpZiAoZ2V0X3VjYWxsKHZjcHUsIFx1MDAyNnVjKSA9PSBVQ0FMTF9VTkhBTkRMRUQpIHtcbitcdFx0dmNwdV9kdW1wKHN0ZGVyciwgdmNwdSwgMik7XG4gXHRcdFRFU1RfRkFJTChcIlVuZXhwZWN0ZWQgZXhjZXB0aW9uICh2ZWN0b3I6MHglbHgsIGVjOjB4JWx4KVwiLFxuIFx0XHRcdHVjLmFyZ3NbMF0sIHVjLmFyZ3NbMV0pO1xuIFx0fVxuIH1cbiBcbi1zdHJ1Y3QgaGFuZGxlcnMge1xuLVx0ZXhjZXB0aW9uX2hhbmRsZXJfZm4gZXhjZXB0aW9uX2hhbmRsZXJzW05SX1ZFQ1RPUlNdW05SX0VYQ0VQVElPTlNdO1xuLX07XG4rc3RhdGljIGJvb2wgaW5zbl9pc192ZWN0b3IodTMyIGluc24pXG4re1xuK1x0dTMyIG9wY29kZSA9IGluc24gXHUwMDI2IFJWX0lOU05fT1BDT0RFX01BU0s7XG4rXHR1MzIgd2lkdGgsIGNzcjtcbitcbitcdC8qIEFsbCBWLXJlbGF0ZWQgaW5zdHJ1Y3Rpb25zIGFyZSA0LWJ5dGUsIGkuZS4gbm90IGNvbXByZXNzZWQuICovXG4rXHRpZiAoKGluc24gXHUwMDI2IDB4MykgIT0gMHgzKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRzd2l0Y2ggKG9wY29kZSkge1xuK1x0Y2FzZSBSVlZfT1BDT0RFX1ZFQ1RPUjpcbitcdFx0cmV0dXJuIHRydWU7XG4rXHRjYXNlIFJWVl9PUENPREVfVkw6XG4rXHRjYXNlIFJWVl9PUENPREVfVlM6XG4rXHRcdHdpZHRoID0gUlZWX0VYVFJBQ1RfVkxfVlNfV0lEVEgoaW5zbik7XG4rXHRcdHJldHVybiB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfOCB8fCB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfMTYgfHxcbitcdFx0ICAgICAgIHdpZHRoID09IFJWVl9WTF9WU19XSURUSF8zMiB8fCB3aWR0aCA9PSBSVlZfVkxfVlNfV0lEVEhfNjQ7XG4rXHRjYXNlIFJWR19PUENPREVfU1lTVEVNOlxuK1x0XHRjc3IgPSBSVkdfRVhUUkFDVF9TWVNURU1fQ1NSKGluc24pO1xuK1x0XHRyZXR1cm4gKGNzciBcdTAwM2U9IENTUl9WU1RBUlQgXHUwMDI2XHUwMDI2IGNzciBcdTAwM2M9IENTUl9WQ1NSKSB8fFxuK1x0XHQgICAgICAgKGNzciBcdTAwM2U9IENTUl9WTCBcdTAwMjZcdTAwMjYgY3NyIFx1MDAzYz0gQ1NSX1ZMRU5CKTtcbitcdH1cbitcbitcdHJldHVybiBmYWxzZTtcbit9XG4gXG4gdm9pZCByb3V0ZV9leGNlcHRpb24oc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4ge1xuIFx0c3RydWN0IGhhbmRsZXJzICpoYW5kbGVycyA9IChzdHJ1Y3QgaGFuZGxlcnMgKilleGNlcHRpb25faGFuZGxlcnM7XG4tXHRpbnQgdmVjdG9yID0gMCwgZWM7XG4rXHRpbnQgdmVjdG9yID0gMDtcbitcdHVuc2lnbmVkIGxvbmcgZWM7XG4gXG4gXHRlYyA9IHJlZ3MtXHUwMDNlY2F1c2UgXHUwMDI2IH5DQVVTRV9JUlFfRkxBRztcbiBcdGlmIChlYyBcdTAwM2U9IE5SX0VYQ0VQVElPTlMpXG5AQCAtNDMyLDYgKzQ3MiwyNyBAQCB2b2lkIHJvdXRlX2V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbiBcdFx0ZWMgPSAwO1xuIFx0fVxuIFxuK1x0LypcbitcdCAqIExhemlseSBlbmFibGUgViBvbiB0aGUgZmlyc3QgdmVjdG9yIGluc3RydWN0aW9uOiBpZiB0aGUgZmF1bHRpbmdcbitcdCAqIGluc3RydWN0aW9uIGRlY29kZXMgYXMgdmVjdG9yIHdoaWxlIFZTIGlzIG9mZiwgc2V0IFZTIHRvIEluaXRpYWxcbitcdCAqIGFuZCByZS1leGVjdXRlIGl0LCBsaWtlIHRoZSBrZXJuZWwncyByaXNjdl92X2ZpcnN0X3VzZV9oYW5kbGVyKCkuXG4rXHQgKiBHZW51aW5lbHkgaWxsZWdhbCBpbnN0cnVjdGlvbnMgY29udGludWUgdG8gdGhlIHVuZXhwZWN0ZWQtZXhjZXB0aW9uXG4rXHQgKiBwYXRoLlxuK1x0ICovXG4rXHRpZiAoIShyZWdzLVx1MDAzZWNhdXNlIFx1MDAyNiBDQVVTRV9JUlFfRkxBRykgXHUwMDI2XHUwMDI2IGVjID09IEVYQ19JTlNUX0lMTEVHQUwgXHUwMDI2XHUwMDI2XG4rXHQgICAgaGFuZGxlcnMgXHUwMDI2XHUwMDI2IGhhbmRsZXJzLVx1MDAzZXZfYXZhaWxhYmxlIFx1MDAyNlx1MDAyNiAhKHJlZ3MtXHUwMDNlc3RhdHVzIFx1MDAyNiBTUl9WUykpIHtcbitcdFx0dTMyIGluc24gPSAodTMyKXJlZ3MtXHUwMDNlYmFkYWRkcjtcbitcbitcdFx0Lyogc3R2YWwgaXMgbm90IGd1YXJhbnRlZWQgdG8gaG9sZCB0aGUgZmF1bHRpbmcgaW5zdHJ1Y3Rpb24gKi9cbitcdFx0aWYgKCFpbnNuKVxuK1x0XHRcdGluc24gPSAqKHUzMiAqKXJlZ3MtXHUwMDNlZXBjO1xuK1xuK1x0XHRpZiAoaW5zbl9pc192ZWN0b3IoaW5zbikpIHtcbitcdFx0XHRyZWdzLVx1MDAzZXN0YXR1cyB8PSBTUl9WU19JTklUSUFMO1xuK1x0XHRcdHJldHVybjtcbitcdFx0fVxuK1x0fVxuK1xuIFx0aWYgKGhhbmRsZXJzIFx1MDAyNlx1MDAyNiBoYW5kbGVycy1cdTAwM2VleGNlcHRpb25faGFuZGxlcnNbdmVjdG9yXVtlY10pXG4gXHRcdHJldHVybiBoYW5kbGVycy1cdTAwM2VleGNlcHRpb25faGFuZGxlcnNbdmVjdG9yXVtlY10ocmVncyk7XG4gXG5AQCAtNDQ4LDYgKzUwOSw5IEBAIHZvaWQgdmNwdV9pbml0X3ZlY3Rvcl90YWJsZXMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFxuIHZvaWQgdm1faW5pdF92ZWN0b3JfdGFibGVzKHN0cnVjdCBrdm1fdm0gKnZtKVxuIHtcbitcdGlmICh2bS1cdTAwM2VoYW5kbGVycylcbitcdFx0cmV0dXJuO1xuK1xuIFx0dm0tXHUwMDNlaGFuZGxlcnMgPSBfX3ZtX2FsbG9jKHZtLCBzaXplb2Yoc3RydWN0IGhhbmRsZXJzKSwgdm0tXHUwMDNlcGFnZV9zaXplLFxuIFx0XHRcdFx0ICBNRU1fUkVHSU9OX0RBVEEpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTE6MTA6MTguMDczOTI2NDI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMwMjE1MjU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBFdmFsdWF0aW9uOiBLVk0gU2VsZnRlc3RzIC0gV29ydGhGdXp6aW5nPWZhbHNlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSd2ZSBnb3QgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3Jpc2N2L3Byb2Nlc3Nvci5oYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9saWIvcmlzY3YvcHJvY2Vzc29yLmNgLiBSaWdodCBhd2F5LCBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBhbmQgd2hldGhlciB0aGlzIGlzIHJlbGV2YW50LiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIHZlY3RvciBpbnN0cnVjdGlvbiBkZWNvZGluZyBhbmQgZW5hYmxpbmcgdGhlIFZlY3RvciBleHRlbnNpb24gZm9yIFJJU0MtViBLVk0gc2VsZnRlc3RzLiBTZWVtcyBpbXBvcnRhbnQsIGJ1dCB3YWl0IGEgbWludXRlLi4uIGl0J3MgYWxsIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vYC4gVGhhdCdzIG5vdCB0aGUgY29yZSBrZXJuZWwsIHRoYXQncyB0ZXN0IGNvZGUuXG5cbk5vdywgSSByZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb25zLiBXZSdyZSBsb29raW5nIGZvciBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCwgbm90IG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cyB0aGF0IGRvbid0IGFsdGVyIGV4ZWN1dGlvbiwgdW5yZWFjaGFibGUgY29kZSwgb3IgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLiAqQW5kLCBjcml0aWNhbGx5LCogSSBzZWUgdGhlIGRpc3RpbmN0aW9uIC0gc2VsZnRlc3RzIGFyZSB1c2VyLXNwYWNlIHByb2dyYW1zLiBGdXp6aW5nIHRoZSBrZXJuZWwgZm9jdXNlcyBvbiB0aGUga2VybmVsIGl0c2VsZiwgbm90IGl0cyB0ZXN0IHN1aXRlLiBVbmxlc3Mgd2UncmUgc3BlY2lmaWNhbGx5IGZ1enppbmcgdGhlIHNlbGZ0ZXN0cyAqdGhlbXNlbHZlcyogKHdoaWNoIGlzbid0IHdoYXQgU3l6a2FsbGVyLCBpbiBnZW5lcmFsLCBkb2VzKSwgdGhpcyBwYXRjaCBzaG91bGRuJ3QgdHJpZ2dlciBmdXp6aW5nLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG5vIGtlcm5lbCBzb3VyY2UgZmlsZXMgYXJlIGluY2x1ZGVkLiBUaGUgZGlmZiBjb25maXJtcyB0aGF0IGl0ICpvbmx5KiB0b3VjaGVzIGZpbGVzIHVuZGVyIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLiBCZWNhdXNlIGl0J3MgaXNvbGF0ZWQgd2l0aGluIHRoZSBzZWxmdGVzdHMgZGlyZWN0b3J5LCBpdCBkb2Vzbid0IGFmZmVjdCB0aGUga2VybmVsIGZ1bmN0aW9uYWxpdHkuXG5cbkFscmlnaHQsIHRoZSByZWFzb25pbmcgaXMgc291bmQuIEl0J3MgdXNlci1zcGFjZSB0ZXN0IGNvZGUsIGFuZCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuIFdlJ3JlIGNsZWFyLiBJJ2xsIHVzZSB0aGUgYHNldC1yZXN1bHRzYCB0b29sIGFuZCBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNjQsIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMToxMDoyNi4zNzYwODEwMTNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgS1ZNIHNlbGZ0ZXN0cyAodXNlci1zcGFjZSB0ZXN0IGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvKSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBLVk0gc2VsZnRlc3RzICh1c2VyLXNwYWNlIHRlc3QgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8pIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMToxMDoyNi4zNzYxMDQwMjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow96vnx[1] Phase: Running StartedAt: 2026-08-13 11:10:37 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96vnx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-13 11:10:37 +0000 UTC FinishedAt: 2026-08-13 11:10:42 +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,}