Name: series-workflowrcpwx Phase: Failed StartedAt: 2026-07-25 08:14:50 +0000 UTC FinishedAt: 2026-07-25 08:40:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrcpwx[0] Phase: Succeeded StartedAt: 2026-07-25 08:14:50 +0000 UTC FinishedAt: 2026-07-25 08:39:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrcpwx[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 08:14:50 +0000 UTC FinishedAt: 2026-07-25 08:39:03 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzNkMzEzZjJjYjE3YzYxYzhlNmRkNjM5MjQxMWNjZjRlYTMyZGJmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA4OjM4OjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuaW5kZXggNTVkMzk0NDM4NzA1YTYuLjA5Y2ZmNjkzYjdkNzgyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC0xLDk2ICYjNDM7MSwzMiBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I1xuJiM0MzsjIEV2ZXJ5dGhpbmcgdGhhdCBleGlzdHMgb25jZSBsaXZlcyBoZXJlOiB0b29sY2hhaW4gc2V0dXAsIHRvb2xcbiYjNDM7IyBzdWItYnVpbGRzLCB2bWxpbnV4LmgsIHNoYXJlZCBoZWxwZXIgb2JqZWN0cywgc3RhbmRhbG9uZSBiaW5hcmllcyBhbmRcbiYjNDM7IyB0aGUgbGliLm1rIGNvbnRyYWN0LiBFYWNoIHRlc3QtcnVubmVyIGluc3RhbmNlICh0ZXN0X3Byb2dzIGFuZCBpdHNcbiYjNDM7IyBmbGF2b3JzLCB0ZXN0X21hcHMpIGlzIGJ1aWx0IGJ5IGl0cyBvd24gTWFrZWZpbGUucnVubmVyIHN1Yi1tYWtlO1xuJiM0MzsjIHNoYXJlZCBkZWZpbml0aW9ucyBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy5cbiYjNDM7XG4gaW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4gaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuIFxuLUNYWCA/PSAkKENST1NTX0NPTVBJTEUpZyYjNDM7JiM0Mztcbi1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XG4tXG4tQ1VSRElSIDo9ICQoYWJzcGF0aCAuKVxuLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbi1MSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4tQlBGRElSIDo9ICQoTElCRElSKS9icGZcbi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4tVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4tQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXG4taWZuZXEgKCQoTyksKVxuLUdFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4tZWxzZVxuLUdFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4tZW5kaWZcbi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcbi1QS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4gXG4taWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXG4tICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4mIzQzOyMgTmVlZGVkIGJlZm9yZSBsaWIubWsgaXMgaW5jbHVkZWQgKGdhdGVzIHRoZSBmbGF2b3IgbGlzdCBiZWxvdyksIHdoaWNoXG4mIzQzOyMgaXMgYWxzbyB3aHkgaXQgY2Fubm90IGxpdmUgaW4gTWFrZWZpbGUuYnVpbGR2YXJzLlxuJiM0MztpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4mIzQzO0JQRl9HQ0MgOj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxuIGVuZGlmXG4gXG4tQlBGX0dDQ1x0XHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4taWZkZWYgQVNBTlxuLVNBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbi1lbHNlXG4tU0FOX0NGTEFHU1x0Pz1cbi1lbmRpZlxuLVNBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4tUkVMRUFTRVx0XHQ/PVxuLU9QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4tXG4tTElCRUxGX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXHUwMDNlL2Rldi9udWxsKVxuLUxJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4tXG4gU0tJUF9ET0NTXHQ/PVxuIFNLSVBfTExWTVx0Pz1cbiBTS0lQX0xJQkJGRFx0Pz1cbiBTS0lQX0NSWVBUT1x0Pz1cbiBcbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbi1cbi1pZmVxICgkKHNyY3RyZWUpLClcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLWVuZGlmXG4gXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbi1cdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbi1cdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuLVx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuLVx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4tXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4tXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbi1MREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKVxuLUxETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4tXG4tUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCYjMzQ7LURUUkFGRklDX01PTklUT1I9MVwmIzM0Oylcbi1QQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuLUxETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpXG4tQ0ZMQUdTICYjNDM7PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXG4tXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXG4tXG4taWZuZXEgKCQoTExWTSksKVxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuLUNGTEFHUyAmIzQzOz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4tZW5kaWZcbi1cbi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwICYjMzk7djQmIzM5OyksKVxuIENMQU5HX0NQVVY0IDo9IDFcbiBlbmRpZlxuIFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOylcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4tXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxuLVx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcbi1cdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuLVxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAmIzM5O21ha2UgcnVuX3Rlc3RzJiMzOTsgb3JkZXJcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXG4gXHR0ZXN0X3NvY2ttYXAgXFxcbkBAIC0xMDIsMTYgJiM0MzszOCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuIFRFU1RfR0VOX1BST0dTICYjNDM7PSB0ZXN0X3Byb2dzLWJwZl9nY2NcbiBURVNUX0lOU1RfU1VCRElSUyAmIzQzOz0gYnBmX2djY1xuLVxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2Zcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tXG4gZW5kaWZcbiBcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuQEAgLTIxMywyMSAmIzQzOzEzOSw4IEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKVxuIGVuZGlmXG4gZW5kaWZcbiBcbi1TQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcbi1CVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4tQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3Rcbi1IT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xuLUhPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuLWVsc2Vcbi1IT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUilcbi1IT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuLUhPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4tZW5kaWZcbi1IT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbi1SRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuJiM0MztpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuJiM0MztcbiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVx0XHRcdFx0XFxcbiBcdFx0ICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KVx0XFxcbiBcdFx0ICAgICAuLi8uLi8uLi8uLi92bWxpbnV4XHRcdFx0XHRcXFxuQEAgLTI0Miw3ICYjNDM7MTU1LDcgQEAgZW5kaWZcbiAjIHRvIGJ1aWxkIGluZGl2aWR1YWwgdGVzdHMuXG4gIyBOT1RFOiBTZW1pY29sb24gYXQgdGhlIGVuZCBpcyBjcml0aWNhbCB0byBvdmVycmlkZSBsaWIubWsmIzM5O3MgZGVmYXVsdCBzdGF0aWNcbiAjIHJ1bGUgZm9yIGJpbmFyaWVzLlxuLSQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcdFx0XHRcdFxcXG4mIzQzOyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuIFx0ICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpKTogJTogJChPVVRQVVQpLyUgO1xuIFxuICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nXG5AQCAtMjU2LDExICYjNDM7MTY5LDE0IEBAICQoTUFLRV9ESVJTKTpcbiBcbiAkKE9VVFBVVCkvJS5vOiAlLmNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQFxuIFxuJiM0MzsjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcbiYjNDM7IyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXG4mIzQzOyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS5cbiAkKE9VVFBVVCkvJTolLmNcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKExJTksuYykgJF4gJChMRExJQlMpIC1vICRAXG4mIzQzO1x0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIExMVk0mIzM5O3MgbGQubGxkIGRvZXNuJiMzOTt0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODZcbiBpZmVxICgkKFNSQ0FSQ0gpLCQoZmlsdGVyICQoU1JDQVJDSCkseDg2IHJpc2N2KSlcbkBAIC0zMTQsMTYgJiM0MzsyMzAsNiBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSlcbiBcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcbiBcbiBcbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCYjMzQ7XCYjMzQ7XG4tZWxzZVxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwmIzM0O2Jvb3RzdHJhcC9cJiMzNDtcbi1lbmRpZlxuLVxuICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSilcbiBcbiBURVNUSU5HX0hFTFBFUlNcdDo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuQEAgLTM0NCw3ICYjNDM7MjUwLDM5IEBAICQoT1VUUFVUKS90ZXN0X21hcHM6ICQoVEVTVElOR19IRUxQRVJTKVxuICQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiAkKFRFU1RJTkdfSEVMUEVSUykgJChDQVBfSEVMUEVSUykgJChVTlBSSVZfSEVMUEVSUylcbiAkKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKVxuIFxuLUJQRlRPT0wgPz0gJChERUZBVUxUX0JQRlRPT0wpXG4mIzQzOyMgQWxsIGhlbHBlciBvYmplY3RzIGEgcnVubmVyIGluc3RhbmNlIGxpbmtzLCBwcmUtYnVpbHQgaGVyZSBzbyBydW5uZXJcbiYjNDM7IyBzdWItbWFrZXMgc2hhcmluZyAkKE9VVFBVVCkgbmV2ZXIgY29tcGlsZSB0aGVtIGNvbmN1cnJlbnRseS5cbiYjNDM7SEVMUEVSX09CSlMgOj0gJChURVNUSU5HX0hFTFBFUlMpICQoQ0dST1VQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXHRcXFxuJiM0MztcdCAgICAgICAkKFRSQUNFX0hFTFBFUlMpICQoSlNPTl9XUklURVIpICQoQ0FQX0hFTFBFUlMpXHRcdFxcXG4mIzQzO1x0ICAgICAgICQoTkVUV09SS19IRUxQRVJTKSAkKE9VVFBVVCkvdXNkdF8xLm8gJChPVVRQVVQpL3VzZHRfMi5vXHRcXFxuJiM0MztcdCAgICAgICAkKE9VVFBVVCkveHNrLm9cbiYjNDM7XG4mIzQzOyMgJChCUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0IGluc3RhbGxzXG4mIzQzOyMgbGliYnBmJiMzOTtzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50b1xuJiM0MzsjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlXG4mIzQzOyMgaW5zdGFsbCBhbmQgY2FuIHNpbGVudGx5IHBpY2sgdXAgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLlxuJiM0MzsjXG4mIzQzOyMgSW52YXJpYW50OiB0aGlzIGxpc3QgbXVzdCBiZSBhIHN1cGVyc2V0IG9mIGV2ZXJ5IHByZXJlcXVpc2l0ZSB0aGVcbiYjNDM7IyBydW5uZXImIzM5O3MgRVhUUkFfT0JKUyBydWxlIGF0dGFjaGVzIHRvIHRoZXNlIHNhbWUgb2JqZWN0cyAoRVhUUkFfSERSUyxcbiYjNDM7IyBib3RoIHRlc3RzLmggZmxhdm9ycywgJChCUEZPQkopKS4gSXQgZ3VhcmFudGVlcyB0aGUgaGVscGVycyBidWlsdFxuJiM0MzsjIGhlcmUgYXJlIG5ldmVyIG9sZGVyIHRoYW4gYSBydW5uZXItc2lkZSBwcmVyZXF1aXNpdGUsIHNvIHRoZVxuJiM0MzsjIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBhbmQgdGVzdF9tYXBzIHN1Yi1tYWtlcywgd2hpY2ggc2hhcmUgJChPVVRQVVQpLFxuJiM0MzsjIHRyZWF0IHRoZW0gYXMgdXAgdG8gZGF0ZSBpbnN0ZWFkIG9mIGJvdGggcmVjb21waWxpbmcgdGhlIHNhbWUgb2JqZWN0XG4mIzQzOyMgZmlsZSBjb25jdXJyZW50bHkuXG4mIzQzOyQoSEVMUEVSX09CSlMpOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcdFx0XFxcbiYjNDM7XHRcdCQoVkVSSUZZX1NJR19IRFIpICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxcbiYjNDM7XHRcdHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaCAkKEJQRk9CSikgJChCUEZUT09MKVxuJiM0MztcbiYjNDM7JChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUb29sIHN1Yi1idWlsZHM6IGJwZnRvb2wgYW5kIGxpYmJwZiAoaG9zdCBhbmQsIHdoZW4gY3Jvc3MtY29tcGlsaW5nLFxuJiM0MzsjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLlxuJiM0MzsjXG4mIzQzOyMgTm90ZSB0aGUgZGVsaWJlcmF0ZSBhc3ltbWV0cnk6IHRoZSBob3N0IGxpYmJwZiBidWlsZHMgd2l0aG91dFxuJiM0MzsjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLlxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXFxcbiBcdFx0ICAgICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvYnBmdG9vbFxuIFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcdFx0XHQgICAgICAgXFxcbkBAIC00MTIsNyAmIzQzOzM1MCw3IEBAIGVuZGlmXG4gXG4gIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG9cbiAjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxuLSMgJChUUlVOTkVSX0JQRl9PQkpTKVxuJiM0MzsjIEJQRiBvYmplY3RzLlxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXG4gaWZlcSAoJChWTUxJTlVYX0gpLClcbiBcdCQoY2FsbCBtc2csR0VOLCwkQClcbkBAIC00MzcsMzc0ICYjNDM7Mzc1LDExIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHRIT1NUUEtHX0NPTkZJRz0mIzM5OyQoUEtHX0NPTkZJRykmIzM5OyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyBcJiMzNDttaXNzaW5nXCYjMzQ7IGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxuLSNcbi0jIFVzZSAmIzM5Oy1pZGlyYWZ0ZXImIzM5OzogRG9uJiMzOTt0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXG4tZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbi0kKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuLVx0fCBzZWQgLW4gJiMzOTsvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfSYjMzk7KSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZFwmIzM0OywgJCQzKX0mIzM5OykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EJXM9JXMgXCYjMzQ7LCAkJDIsICQkMyl9JiMzOTspXG4tZW5kZWZcbi1cbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbi1cdFx0XHRncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVx0XHRcdFx0XFxcbi1cdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4tXHQgICAgIC1zdGQ9Z251MTFcdFx0IFx0XHRcdFx0XHRcXFxuLVx0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZtcy1leHRlbnNpb25zXHRcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcdFx0XHRcXFxuLVx0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAjXG4tIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcbi1cbi1DTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUylcbi1cbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lXG4tXG4tJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQubzogZmxvd19kaXNzZWN0b3JfbG9hZC5oXG4tJChPVVRQVVQpL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLm86IGNncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbi1cbi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgQ2xhbmdcbi0jICQxIC0gaW5wdXQgLmMgZmlsZVxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxuLSMgJDMgLSBDRkxBR1Ncbi0jICQ0IC0gYmluYXJ5IG5hbWVcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYzIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXG4tZGVmaW5lIENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYyIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGNwdS12NFxuLWRlZmluZSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBHQ0Ncbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLEdDQy1CUEYsJDQsJDIpXG4tXHQkKFEpJChCUEZfR0NDKSAkMyAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkMSAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tXG4tU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uY1xuLVxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcdFx0XFxcbi1cdFx0bGlua2VkX3ZhcnMuc2tlbC5oIGxpbmtlZF9tYXBzLnNrZWwuaCBcdFx0XHRcXFxuLVx0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4tXHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcdFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuLVxuLUxTS0VMUyA6PSBmZXhpdF9zbGVlcC5jIHRyYWNlX3ByaW50ay5jIHRyYWNlX3ZwcmludGsuYyBtYXBfcHRyX2tlcm4uYyBcdFxcXG4tXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1x0XHRcdFxcXG4tXHR0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXFxcbi1cdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xuLVxuLUxTS0VMU19TSUdORUQgOj0gZmVudHJ5X3Rlc3QuYyBmZXhpdF90ZXN0LmMgYXRvbWljcy5jXG4tXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXG4tTFNLRUxTX0VYVFJBIDo9IHRlc3Rfa3N5bXNfbW9kdWxlLmMgdGVzdF9rc3ltc193ZWFrLmMga2Z1bmNfY2FsbF90ZXN0LmMgXFxcbi1cdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmNcbi1TS0VMX0JMQUNLTElTVCAmIzQzOz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4tdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xuLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm9cbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLVxuLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcbi1cbi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuLVx0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbi1cdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbi1cdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4tXG4tIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggXCYjMzQ7dGVtcG9yYXJ5XCYjMzQ7IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJcbi1cbi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpXG4tVFJVTk5FUl9PVVRQVVQgOj0gJChPVVRQVVQpJChpZiAkMiwvKSQyXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcbi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLFx0XFxcbi1cdFx0XHRcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXG4tVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSlcbi1UUlVOTkVSX0xJQl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0xJQl9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxuLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmhcbi1UUlVOTkVSX0JQRl9TUkNTIDo9ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5jKSlcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXG4tVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCxcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcbi1cdFx0XHRcdFx0ICAgICAgICQkKFRSVU5ORVJfQlBGX1NSQ1MpKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcbi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKVxuLVRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMU19TSUdORUQpKVxuLVRFU1RfR0VOX0ZJTEVTICYjNDM7PSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcbi1cbi0jIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3Rcbi0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXG4tIyBUaGUgY2hlY2sgaXMgaW5saW5lZCBwZXItcnVubmVyIHNvICQxIGlzIHN1YnN0aXR1dGVkIGF0ICQoY2FsbCkgdGltZSBhbmRcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUmIzM5O3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpIChzaWduZWQpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7XHRcdFx0XHRcdFxcXG4tXHRcdCAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXFwoKHZvaWQpP1xcKS4qL0RFRklORV9URVNUKFxcMikvcCYjMzk7XHRcXFxuLVx0XHRcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1x0XFxcbi1cdFx0ICkgXHUwMDNlICQkQClcbi1lbmRpZlxuLVxuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm9cbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXG4tXG4tIyBjb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlc1xuLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kXG4tJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOlx0XHRcdFxcXG4tXHRcdCAgICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFx0XFxcbi1cdFx0ICAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZFxuLVx0JCQoY2FsbCBtc2csVEVTVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKVxuLVx0JChRKShjZCAkJChARCkgXHUwMDI2XHUwMDI2ICQkKENDKSAtSS4gJCQoQ0ZMQUdTKSAtTU1EIC1NVCAkJEAgLWMgJChDVVJESVIpLyQkXHUwMDNjICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1URVNUJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSkpXG4tXHQkJChpZiAkJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFx0XFxcbi1cdFx0JChRKWlmIFsgLWYgJCRAIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoVFJVTk5FUl9CSU5BUlkpXVwmIzM0OyBcJiMzNDskJChub3RkaXIgJCRAKVwmIzM0Oyk7IFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vICQkQDtcdFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDtcdFx0XFxcbi1cdFx0ZmkpXG4tXG4tJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOlx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRClcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXG4tXG4taWZlcSAoJChmaWx0ZXIgY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzLCQoTUFLRUNNREdPQUxTKSksKVxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcbi1lbmRpZlxuLVxuLSMgYWRkIHBlciBleHRyYSBvYmogQ0ZHTEFHUyBkZWZpbml0aW9uc1xuLSQoZm9yZWFjaCBOLCQocGF0c3Vic3QgJChUUlVOTkVSX09VVFBVVCkvJS5vLCUsJChUUlVOTkVSX0VYVFJBX09CSlMpKSxcdFxcXG4tXHQkKGV2YWwgJChUUlVOTkVSX09VVFBVVCkvJChOKS5vOiBDRkxBR1MgJiM0Mzs9ICQoJChOKS5jLUNGTEFHUykpKVxuLVxuLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOlx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICUuY1x0XHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVFJVTk5FUl9URVNUU19IRFIpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSQoVFJVTk5FUl9MSUJfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzokKFRPT0xTRElSKS9saWIvJS5jXG4tXHQkJChjYWxsIG1zZyxMSUItT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXG4tIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXG4tJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVClcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXG4tXHQkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKVxuLVx0JChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvXG4tZW5kaWZcbi1cbi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiB8ICQoVFJVTk5FUl9CUEZfT0JKUylcbi1cbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKVx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopXHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfTElCX09CSlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKVx0XHRcdFx0XFxcbi1cdFx0XHQgICAgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XFxcbi1cdFx0XHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXG4tXHQkJChjYWxsIG1zZyxCSU5BUlksLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEBcbi1cdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4tXHRcdCAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sXG4tXG4tZW5kZWZcbi1cbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4tVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxuLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cbi1cbi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKVxuJiM0MzsjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdFxuJiM0MzsjIGdyb3VwZWQgLSB1bmRlciAtaiBtYWtlIHdvdWxkIHJ1biBnZW5rZXkgdHdpY2UgY29uY3VycmVudGx5IGFuZCB0aGVcbiYjNDM7IyBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm0gaXMgaW1wbGljaXRseSBncm91cGVkIGV2ZW5cbiYjNDM7IyB3aXRoIG1ha2UgXHUwMDNjIDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLlxuJiM0MzskKEJVSUxEX0RJUikvJS5wZW0gJChCVUlMRF9ESVIpLyUuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXG4gXHQkKFEpbWtkaXIgLXAgJChCVUlMRF9ESVIpXG4gXHQkKFEpJChWRVJJRllfU0lHX1NFVFVQKSBnZW5rZXkgJChCVUlMRF9ESVIpXG4gXG5AQCAtODMzLDExNiAmIzQzOzQwOCwxNjIgQEAgTElCQVJFTkFfQlBGX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZVx0XHRcXFxuIFx0XHRcdFx0IGxpYmFyZW5hL3NlbGZ0ZXN0cy8qXHRcdFxcXG4gXHRcdFx0XHQgbGliYXJlbmEvKi5icGYubylcbiBcbi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxuLVxuICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCYjNDM7JChNQUtFKSAtQyBsaWJhcmVuYSBsaWJhcmVuYS5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gXG4gaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbi1MSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbi1DRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXG4tXG4gJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXG4gXHQmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHNcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3Ncbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jXHRcdFxcXG4tXHRcdFx0IGNncm91cF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRyYWNlX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgbmV0d29ya19oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRlc3RpbmdfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBidGZfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IGNhcF9oZWxwZXJzLmNcdFx0XFxcbi1cdFx0XHQgdW5wcml2X2hlbHBlcnMuYyBcdFxcXG4tXHRcdFx0IHN5c2N0bF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldGxpbmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBqaXRfZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaW9faGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHRlc3RfbG9hZGVyLmNcdFx0XFxcbi1cdFx0XHQgeHNrLmNcdFx0XHRcXFxuLVx0XHRcdCBkaXNhc20uY1x0XHRcXFxuLVx0XHRcdCBkaXNhc21faGVscGVycy5jXHRcXFxuLVx0XHRcdCBqc29uX3dyaXRlci5jIFx0XHRcXFxuLVx0XHRcdCAkKFZFUklGWV9TSUdfSERSKVx0XHRcXFxuLVx0XHRcdCBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcdFxcXG4tXHRcdFx0IGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcXFxuLVx0XHRcdCBicGZ0b29sX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgdXNkdF8xLmMgdXNkdF8yLmNcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfU0tFTClcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICBpbWFfc2V0dXAuc2ggXHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpXG4tXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1jcHV2NCB0ZXN0IHJ1bm5lci5cbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBHZW5lcmF0ZWQgdGVzdCBsaXN0IGhlYWRlcnNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO2RlZmluZSBnZW5fdGVzdHNfaGRyXG4mIzQzO1x0JChjYWxsIG1zZyxURVNULUhEUiwsJEApXG4mIzQzO1x0JChRKShlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OztcdFx0XFxcbiYjNDM7XHQgICAgIHNlZCAtbiAtRSAmIzM5O3MvXnZvaWQgKHNlcmlhbF8pP3Rlc3RfKFthLXpBLVowLTlfXSYjNDM7KVxcKCh2b2lkKT9cXCkuKi9ERUZJTkVfVEVTVChcXDIpL3AmIzM5OyBcXFxuJiM0MztcdFx0JChARCkvKi5jIHwgc29ydCkgXHUwMDNlICRAXG4mIzQzO2VuZGVmXG4mIzQzO1xuJiM0Mztwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXG4mIzQzO1x0JChnZW5fdGVzdHNfaGRyKVxuJiM0MztcbiYjNDM7bWFwX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgbWFwX3Rlc3RzLyouYylcbiYjNDM7XHQkKGdlbl90ZXN0c19oZHIpXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIFRlc3QgcnVubmVyIGluc3RhbmNlcywgb25lIHN1Yi1tYWtlIGVhY2ggKHNlZSBNYWtlZmlsZS5ydW5uZXIpLlxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7IyBUaGUgTExWTSBmZWF0dXJlLXByb2JlIHJlc3VsdHMsIEJQRl9HQ0MgYW5kIFRFU1RfS01PRFMgYXJlIGV4cG9ydGVkXG4mIzQzOyMgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuIENDIGlzIHBhc3NlZCBleHBsaWNpdGx5IGluc3RlYWQ6IGV4cG9ydGluZyBpdFxuJiM0MzsjIHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MgQ0MgaW50byB0aGUgbGliYnBmL2JwZnRvb2wvcmVzb2x2ZV9idGZpZHNcbiYjNDM7IyBzdWItYnVpbGRzLCB3aGljaCBjb21wdXRlIHRoZWlyIG93bi4gKCYjMzk7ZXhwb3J0IE5BTUUmIzM5OyBvbiBhbiB1bmRlZmluZWRcbiYjNDM7IyB2YXJpYWJsZSBjcmVhdGVzIGFuIGVtcHR5IG9uZSwgc28gdGhlc2Ugc3RheSBiZWxvdyB0aGUgZGVmaW5pdGlvbnMuKVxuJiM0MztleHBvcnQgTExWTV9DRkxBR1MgTExWTV9MRExJQlMgTExWTV9MREZMQUdTIEJQRl9HQ0MgVEVTVF9LTU9EU1xuJiM0MztcbiYjNDM7UlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0mIzM5OyQoQ0MpJiMzOTtcbiYjNDM7XG4mIzQzOyMgRXZlcnl0aGluZyBhIHJ1bm5lciBpbnN0YW5jZSByZWZlcmVuY2VzIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZC5cbiYjNDM7UlVOTkVSX1BSRVJFUVMgOj0gJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKEJQRlRPT0wpXHRcdFxcXG4mIzQzO1x0XHQgICQoVFJVTk5FUl9CUEZUT09MKSAkKFJFU09MVkVfQlRGSURTKVx0XHRcdFxcXG4mIzQzO1x0XHQgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAkKFZFUklGWV9TSUdfSERSKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKVx0XFxcbiYjNDM7XHRcdCAgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcdFx0XFxcbiYjNDM7XHRcdCAgcHJvZ190ZXN0cy90ZXN0cy5oIG1hcF90ZXN0cy90ZXN0cy5oXHRcdFx0XFxcbiYjNDM7XHRcdCAgJChIRUxQRVJfT0JKUylcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XFxcbiYjNDM7XHRcdCAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aSAkKFRFU1RfS01PRF9UQVJHRVRTKVxuJiM0MztcbiYjNDM7Rk9SQ0U6XG4mIzQzO1xuJiM0MzsjIFRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBza2VsZXRvbnMgYXJlIGFsc28gaW5wdXRzIG9mIGJlbmNoLCB0ZXN0X21hcHMsXG4mIzQzOyMgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwOyBcJiMzNDtkZWZhdWx0LXNrZWxzXCYjMzQ7IGJ1aWxkcyBqdXN0IHRob3NlXG4mIzQzOyMgd2l0aG91dCB0aGUgdGVzdF9wcm9ncyB0ZXN0IG9iamVjdHMgYW5kIGJpbmFyeS5cbiYjNDM7LlBIT05ZOiBkZWZhdWx0LXNrZWxzXG4mIzQzO2RlZmF1bHQtc2tlbHM6ICQoUlVOTkVSX1BSRVJFUVMpXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuJiM0MztcdFx0QlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5O1x0XFxcbiYjNDM7XHRcdEJQRl9DQ19GTEFHUz0mIzM5Oy1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12MyYjMzk7XHRcdFxcXG4mIzQzO1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTIHNrZWxzXG4mIzQzO1xuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9nczogJChSVU5ORVJfUFJFUkVRUykgZGVmYXVsdC1za2VscyBGT1JDRVxuJiM0MztcdCYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9DQz0mIzM5OyQoQ0xBTkcpJiMzOTsgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChDTEFOR19TWVNfSU5DTFVERVMpJiMzOTtcdFxcXG4mIzQzO1x0XHRCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djMmIzM5O1x0XHRcXFxuJiM0MztcdFx0QlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPW5vX2FsdTMyIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQ0M9JiMzOTskKENMQU5HKSYjMzk7IEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0mIzM5OyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSYjMzk7XHRcXFxuJiM0MztcdFx0QlBGX0NDX0ZMQUdTPSYjMzk7LU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYyJiMzOTtcbiYjNDM7XG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGNwdXY0KSlcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtY3B1djQ6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWNwdXY0IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQ0M9JiMzOTskKENMQU5HKSYjMzk7IEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0mIzM5OyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSYjMzk7XHRcXFxuJiM0MztcdFx0QlBGX0NDX0ZMQUdTPSYjMzk7LU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0JiMzOTtcdFx0XFxcbiYjNDM7XHRcdEJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbiBlbmRpZlxuIFxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MgQlBGLUdDQy1mbGF2b3JlZCB0ZXN0IHJ1bm5lci5cbiBpZm5lcSAoJChCUEZfR0NDKSwpXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBHQ0NfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsYnBmX2djYykpXG4tZW5kaWZcbi1cbi0jIERlZmluZSB0ZXN0X21hcHMgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gbWFwX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfbWFwcy5jXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PVxuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj1cbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9ICQkKGVycm9yIG5vIEJQRiBvYmplY3RzIHNob3VsZCBiZSBidWlsdClcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj1cbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKVxuLVxuLSMgRGVmaW5lIHRlc3RfdmVyaWZpZXIgdGVzdCBydW5uZXIuXG4tIyBJdCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tXG4tIyB0aGVtIChlLmcuLCB0ZXN0LmggaXMgdXNpbmcgY29tcGxldGVseSBwYXR0ZXJuKSwgdGhhdCBpdCYjMzk7cyB3b3J0aCBqdXN0XG4tIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbiYjNDM7IyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2MmIzM5O3Mgb3duXG4mIzQzOyMgc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QmIzM5O3MgYXNtLWdlbmVyaWMvIGhlYWRlcnMuXG4mIzQzO0dDQ19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbiYjNDM7XG4mIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLWJwZl9nY2M6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9DQz0mIzM5OyQoQlBGX0dDQykmIzM5OyBCUEZfQ0NfTVNHPUdDQy1CUEZcdFx0XHRcdFxcXG4mIzQzO1x0XHRCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChHQ0NfU1lTX0lOQ0xVREVTKSYjMzk7XHRcdFx0XHRcXFxuJiM0MztcdFx0QlBGX0NDX0ZMQUdTPSYjMzk7LURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzImIzM5O1xuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7IyB0ZXN0X21hcHMgY29tcGlsZXMgbWFwX3Rlc3RzLyouYyBhZ2FpbnN0IHRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBza2VsZXRvbnNcbiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgbWFwX3Rlc3RzL3Rlc3RzLmggZGVmYXVsdC1za2VscyBGT1JDRVxuJiM0MztcdCYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X21hcHMgRkxBVk9SPSBURVNUU19ESVI9bWFwX3Rlc3RzXG4mIzQzO1xuJiM0MzsjIERlZmF1bHQtZmxhdm9yIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgY29uc3VtZWQgYnkgdGFyZ2V0cyBpbiB0aGlzXG4mIzQzOyMgTWFrZWZpbGUgKGFuZCBieSBsaWIubWsmIzM5O3MgaW5zdGFsbCBydWxlKSBhcmUgcHJvZHVjZWQgYnkgdGhlIHJ1bm5lclxuJiM0MzsjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlXG4mIzQzOyMgbWFrZXMgdGhlbSBhdmFpbGFibGUgaGVyZSB3aXRob3V0IGR1cGxpY2F0aW5nIHRoZSBydW5uZXImIzM5O3MgcnVsZXMuXG4mIzQzO0RFRkFVTFRfQlBGX09CSlMgOj0gJChwYXRzdWJzdCBwcm9ncy8lLmMsJChPVVRQVVQpLyUuYnBmLm8sJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChERUZBVUxUX0JQRl9PQkpTKVxuJiM0MztcbiYjNDM7QkVOQ0hfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgdGVzdF9vdmVyaGVhZC5za2VsLmggdHJpZ2dlcl9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgYmxvb21fZmlsdGVyX2JlbmNoLnNrZWwuaCBicGZfbG9vcF9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgc3RybmNtcF9iZW5jaC5za2VsLmggYnBmX2hhc2htYXBfZnVsbF91cGRhdGVfYmVuY2guc2tlbC5oXFxcbiYjNDM7XHQgICAgICAgbG9jYWxfc3RvcmFnZV9iZW5jaC5za2VsLmhcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgIGxvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2JlbmNoLnNrZWwuaFx0XHRcXFxuJiM0MztcdCAgICAgICBiZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5za2VsLmhcdFx0XHRcXFxuJiM0MztcdCAgICAgICBicGZfaGFzaG1hcF9sb29rdXAuc2tlbC5oIGh0YWJfbWVtX2JlbmNoLnNrZWwuaFx0XHRcXFxuJiM0MztcdCAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgbHBtX3RyaWVfYmVuY2guc2tlbC5oIGxwbV90cmllX21hcC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgYnBmX25vcF9iZW5jaC5za2VsLmggeGRwX2xiX2JlbmNoLnNrZWwuaClcbiYjNDM7VE9QX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8seHNrX3hkcF9wcm9ncy5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgIHhkcF9od19tZXRhZGF0YS5za2VsLmggeGRwX2ZlYXR1cmVzLnNrZWwuaFx0XHRcdFxcXG4mIzQzO1x0ICAgICB0ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCkgJChCRU5DSF9TS0VMUylcbiYjNDM7XG4mIzQzOyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246IFwmIzM0O2RlZmF1bHQtc2tlbHNcJiMzNDsgKHJlKWJ1aWxkcyB0aGUgZmlsZSB2aWEgdGhlXG4mIzQzOyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHNcbiYjNDM7IyBzZWUgZnJlc2ggdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNhbWUgaW52b2NhdGlvbi4gRGVwZW5kZW50cyBzdGlsbFxuJiM0MzsjIHJlYnVpbGQgb24gbXRpbWUgb25seSAtIHRoZSBwaG9ueSBwcmVyZXF1aXNpdGUgZG9lcyBub3QgY2FzY2FkZS5cbiYjNDM7JChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgO1xuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmRcbiYjNDM7IyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb20gdGhlbSAoZS5nLiwgaXRzIHRlc3RzLmggdXNlcyBhIGNvbXBsZXRlbHlcbiYjNDM7IyBkaWZmZXJlbnQgcGF0dGVybiksIHRoYXQgaXQmIzM5O3Mgd29ydGgganVzdCBkZWZpbmluZyBpdHMgcnVsZXMgZXhwbGljaXRseS5cbiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcbi1cdCQoc2hlbGwgKCBjZCB2ZXJpZmllci87IFxcXG4tXHRcdCAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFxcXG4tXHRcdCAgZWNobyAmIzM5OyNpZmRlZiBGSUxMX0FSUkFZJiMzOTs7IFxcXG4tXHRcdCAgbHMgKi5jIDJcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICYjMzk7c0BcXCguKlxcKUAjaW5jbHVkZSBcXFwmIzM0O1xcMVxcXCYjMzQ7QCYjMzk7OyBcXFxuLVx0XHQgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcXFxuLVx0XHQpIFx1MDAzZSB2ZXJpZmllci90ZXN0cy5oKVxuLSQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSikgfCAkKE9VVFBVVClcbiYjNDM7XHQkKFEpKCBjZCB2ZXJpZmllci87IFxcXG4mIzQzO1x0ICAgICAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFxcXG4mIzQzO1x0ICAgICAgZWNobyAmIzM5OyNpZmRlZiBGSUxMX0FSUkFZJiMzOTs7IFxcXG4mIzQzO1x0ICAgICAgbHMgKi5jIDJcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICYjMzk7c0BcXCguKlxcKUAjaW5jbHVkZSBcXFwmIzM0O1xcMVxcXCYjMzQ7QCYjMzk7OyBcXFxuJiM0MztcdCAgICAgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcXFxuJiM0MztcdCAgICApIFx1MDAzZSB2ZXJpZmllci90ZXN0cy5oXG4mIzQzO1xuJiM0MzskKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIEluY2x1ZGUgZmluZF9iaXQuYyB0byBjb21waWxlIHhza3hjZWl2ZXIuXG4gRVhUUkFfU1JDIDo9ICQoVE9PTFNESVIpL2xpYi9maW5kX2JpdC5jIHByb2dfdGVzdHMvdGVzdF94c2suYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmhcbi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpXG4mIzQzOyQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSilcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVClcbiYjNDM7JChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaFxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4tJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oIHwgJChPVVRQVVQpXG4mIzQzOyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaFxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG5AQCAtOTU0LDExICYjNDM7NTc1LDE4IEBAICQoT1VUUFVUKS90ZXN0X2NwcDogdGVzdF9jcHAuY3BwICQoT1VUUFVUKS90ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCAkKEJQRk9CSilcbiBcdCQoY2FsbCBtc2csQ1hYLCwkQClcbiBcdCQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRAXG4gXG4tIyBCZW5jaG1hcmsgcnVubmVyXG4tJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKVxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpblxuJiM0MzsjIGJlbmNocy86IGV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi5cbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxuJiM0MztcbiYjNDM7JChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CRU5DSCYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCRU5DSClcbiYjNDM7XG4mIzQzOyMgYmVuY2htYXJrLXNwZWNpZmljIGdlbmVyYXRlZC1za2VsZXRvbiBkZXBlbmRlbmNpZXNcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm86ICQoT1VUUFVUKS90cmlnZ2VyX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcbkBAIC05NzgsMzcgJiM0Mzs2MDYsMTkgQEAgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vOiAkKE9VVFBVVCkvbHBtX3RyaWVfYmVuY2guc2tlbC5oICQoT1VUUFVUKS9scG1fdHJcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vOiAkKE9VVFBVVCkvYnBmX25vcF9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oXG4gJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vOiAkKE9VVFBVVCkveGRwX2xiX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vOiBiZW5jaF9icGZfdGltaW5nLmhcbiYjNDM7XG4gJChPVVRQVVQpL2JlbmNoLm86IGJlbmNoLmggdGVzdGluZ19oZWxwZXJzLmggJChCUEZPQkopXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgJiM0Mzs9IC1sbVxuLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbi1cdFx0ICQoVEVTVElOR19IRUxQRVJTKSBcXFxuLVx0XHQgJChUUkFDRV9IRUxQRVJTKSBcXFxuLVx0XHQgJChDR1JPVVBfSEVMUEVSUykgXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYmxvb21fZmlsdGVyX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfaHRhYl9tZW0ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS91c2R0XzEubyBcXFxuLVx0XHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXG4tXHRcdCAjXG4mIzQzOyQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm9cdFx0XFxcbiYjNDM7XHRcdCAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1x0XFxcbiYjNDM7XHRcdCAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMub1x0XFxcbiYjNDM7XHRcdCAkKE9VVFBVVCkvdXNkdF8xLm9cdFx0XFxcbiYjNDM7XHRcdCAkKE9VVFBVVCkvdXNkdF8yLm9cdFx0XFxcbiYjNDM7XHRcdCAkKEJFTkNIX09CSlMpXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4tXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJEA7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtTElOSyYjMzk7ICYjMzk7JChub3RkaXIgJEApIChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAIFxcXG4mIzQzO1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLExJTkssLChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSlcbiBcbiAjIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5nIGFib3V0IHNucHJpbnRmIHRydW5jYXRpbmcgc3RyaW5ncyBsaWtlOlxuICNcbkBAIC0xMDM2LDcgJiM0Mzs2NDYsNyBAQCBFWFRSQV9DTEVBTiA6PSAkKFNDUkFUQ0hfRElSKSAkKEhPU1RfU0NSQVRDSF9ESVIpXHRcdFx0XFxcbiBcdFx0XHQgICAgICAgbGlidXJhbmRvbV9yZWFkLnNvKVx0XHRcdFxcXG4gXHQkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0c1xuIFxuLS5QSE9OWTogZG9jcyBkb2NzLWNsZWFuXG4mIzQzOy5QSE9OWTogZG9jcyBkb2NzLWNsZWFuIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW5cbiBcbiAjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuIC5ERUxFVEVfT05fRVJST1I6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uM2E0OTYyYjA1ODVmZWNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbkBAIC0wLDAgJiM0MzsxLDE3MyBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0c1xuJiM0MzsjIGJ1aWxkLCBpbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlIGFuZCBNYWtlZmlsZS5ydW5uZXIuIERlZmluaXRpb25zXG4mIzQzOyMgZm9sbG93IHRoZSBvcmRlciB0aGV5IGhhZCBpbiB0aGUgTWFrZWZpbGUgYmVmb3JlIHRoZSBzcGxpdC5cbiYjNDM7XG4mIzQzO0NYWCA/PSAkKENST1NTX0NPTVBJTEUpZyYjNDM7JiM0MztcbiYjNDM7T0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxuJiM0MztcbiYjNDM7Q1VSRElSIDo9ICQoYWJzcGF0aCAuKVxuJiM0MztcbiYjNDM7VE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKVxuJiM0MztMSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4mIzQzO0JQRkRJUiA6PSAkKExJQkRJUikvYnBmXG4mIzQzO1RPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGVcbiYjNDM7VE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4mIzQzO0JQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcbiYjNDM7QVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcbiYjNDM7aWZuZXEgKCQoTyksKVxuJiM0MztHRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuJiM0MztlbHNlXG4mIzQzO0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4mIzQzO2VuZGlmXG4mIzQzO0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxuJiM0MztQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4mIzQzO1xuJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbiYjNDM7ICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpZmRlZiBBU0FOXG4mIzQzO1NBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbiYjNDM7ZWxzZVxuJiM0MztTQU5fQ0ZMQUdTXHQ/PVxuJiM0MztlbmRpZlxuJiM0MztTQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuJiM0MztSRUxFQVNFXHRcdD89XG4mIzQzO09QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4mIzQzO1xuJiM0MztMSUJFTEZfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzO0xJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4mIzQzO1xuJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuJiM0MzsjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuJiM0MzsjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDFcbiYjNDM7UEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXG4mIzQzOyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXG4mIzQzOyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXG4mIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxuJiM0MzsjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcbiYjNDM7c2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcbiYjNDM7XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgfSlcbiYjNDM7XG4mIzQzO2lmZXEgKCQoc3JjdHJlZSksKVxuJiM0MztzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuJiM0MztzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4mIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7Q09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbiYjNDM7XHQgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcdFx0XHRcdFxcXG4mIzQzO1x0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuJiM0MztcdCAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKVx0XHRcXFxuJiM0MztcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVx0XFxcbiYjNDM7XHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbiYjNDM7TERGTEFHUyAmIzQzOz0gJChTQU5fTERGTEFHUylcbiYjNDM7TERMSUJTICYjNDM7PSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcbiYjNDM7XG4mIzQzO1BDQVBfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIFwmIzM0Oy1EVFJBRkZJQ19NT05JVE9SPTFcJiMzNDspXG4mIzQzO1BDQVBfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzO0xETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpXG4mIzQzOyMgVW5saWtlIHRoZSBwcmUtc3BsaXQgTWFrZWZpbGUsIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhZnRlciAuLi9saWIubWtcbiYjNDM7IyAodG9wIGxldmVsKSBvciB3aXRob3V0IGl0IChydW5uZXIpLCBzbyBDT01NT05fQ0ZMQUdTIGlzIHByZXBlbmRlZCB0b1xuJiM0MzsjIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBpbmNsdWRlLXNlYXJjaCBvcmRlci5cbiYjNDM7TElCX01LX0NGTEFHUyA6PSAkKENGTEFHUylcbiYjNDM7Q0ZMQUdTID0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKSAkKExJQl9NS19DRkxBR1MpXG4mIzQzO1xuJiM0MztpZm5lcSAoJChMTFZNKSwpXG4mIzQzOyMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KVxuJiM0MztDTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4mIzQzO1x0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbiYjNDM7XHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuJiM0MztcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuJiM0MztcbiYjNDM7U0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4mIzQzO0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxuJiM0MztJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4mIzQzO0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4mIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbiYjNDM7SE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3RcbiYjNDM7SE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbiYjNDM7SE9TVF9JTkNMVURFX0RJUlx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXG4mIzQzO2Vsc2VcbiYjNDM7SE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4mIzQzO0hPU1RfU0NSQVRDSF9ESVJcdDo9ICQoU0NSQVRDSF9ESVIpXG4mIzQzO0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4mIzQzO2VuZGlmXG4mIzQzO0hPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuJiM0MztSRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuJiM0MztcbiYjNDM7REVGQVVMVF9CUEZUT09MIDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXG4mIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbiYjNDM7Q1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbiYjNDM7VFJVTk5FUl9CUEZUT09MIDo9ICQoQ1JPU1NfQlBGVE9PTClcbiYjNDM7VVNFX0JPT1RTVFJBUCA6PSBcJiMzNDtcJiMzNDtcbiYjNDM7ZWxzZVxuJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4mIzQzO1VTRV9CT09UU1RSQVAgOj0gXCYjMzQ7Ym9vdHN0cmFwL1wmIzM0O1xuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7QlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcbiYjNDM7XG4mIzQzOyMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuJiM0MzsjICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgXCYjMzQ7bWlzc2luZ1wmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbiYjNDM7IyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuXG4mIzQzOyNcbiYjNDM7IyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4mIzQzOyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy5cbiYjNDM7ZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbiYjNDM7XHR8IHNlZCAtbiAmIzM5Oy9cdTAwM2MuLi5cdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXCgvLipcXCl8LWlkaXJhZnRlciBcXDF8cCB9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LURfX0JJVFNfUEVSX0xPTkc9JWRcJiMzNDssICQkMyl9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJiMzOTtNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LUQlcz0lcyBcJiMzNDssICQkMiwgJCQzKX0mIzM5OylcbiYjNDM7ZW5kZWZcbiYjNDM7XG4mIzQzOyMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuJiM0MztJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbiYjNDM7XHRcdFx0Z3JlcCAmIzM5O2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXyYjMzk7KVxuJiM0MztNRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbilcbiYjNDM7QlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbiYjNDM7XG4mIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbiYjNDM7Q0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIEltbWVkaWF0ZSBvbiBwdXJwb3NlOiBleHBhbmRpbmcgZ2V0X3N5c19pbmNsdWRlcyBmb3JrcyBzZXZlcmFsIHNoZWxscy5cbiYjNDM7Q0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxuJiM0MztCUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuJiM0MztcdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlc1x0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgI1xuJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxuJiM0MztcbiYjNDM7Q0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4mIzQzO1xuJiM0MztWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4mIzQzO1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcbiYjNDM7VkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXG4mIzQzO1BSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cbiYjNDM7XG4mIzQzO0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4mIzQzO1xuJiM0MztpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuJiM0MztMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbiYjNDM7Q0ZMQUdTICYjNDM7PSAtREhBU19CUEZfQVJFTkFfQVNBTlxuJiM0MztlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNlZDQ0YWFkN2VkZWQ0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5AQCAtMCwwICYjNDM7MSwzMTUgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzXG4mIzQzOyMgKG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYyksIG9yIHRlc3RfbWFwcy5cbiYjNDM7I1xuJiM0MzsjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2Ugd2l0aCBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksXG4mIzQzOyMgc28gZXZlcnl0aGluZyBoZXJlIGlzIHdyaXR0ZW4gaW4gcGxhaW4gbWFrZSAtIG5vICQkLWVzY2FwaW5nLCBubyBldmFsLFxuJiM0MzsjIG5vIHBlci1mbGF2b3IgZ3VhcmRzLiBUaGlzIGZpbGUgaXMgYWx3YXlzIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsXG4mIzQzOyMgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWQgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLCB2bWxpbnV4LmgsXG4mIzQzOyMgdmVyaXN0YXQsIGhlbHBlciBvYmplY3RzLCBzaWduaW5nIGtleSwgZ2VuZXJhdGVkIHRlc3RzLmgsIGV4dHJhXG4mIzQzOyMgYmluYXJpZXMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZCBhcmVcbiYjNDM7IyByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLlxuJiM0MzsjXG4mIzQzOyMgUGFyYW1ldGVycyAoYWxsIHBhc3NlZCBvbiB0aGUgc3ViLW1ha2UgY29tbWFuZCBsaW5lKTpcbiYjNDM7IyAgIE9VVFBVVCAgICAgIGFic29sdXRlIHBhdGggb2YgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5XG4mIzQzOyMgICBSVU5ORVIgICAgICBiYXNlIGJpbmFyeSBuYW1lOiB0ZXN0X3Byb2dzIHwgdGVzdF9tYXBzXG4mIzQzOyMgICBGTEFWT1IgICAgICBmbGF2b3Igc3VmZml4OiBlbXB0eSB8IG5vX2FsdTMyIHwgY3B1djQgfCBicGZfZ2NjXG4mIzQzOyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzXG4mIzQzOyMgICBCUEZfQ0MgICAgICBjb21waWxlciBmb3IgcHJvZ3MvKi5jIEJQRiBvYmplY3RzICgkKENMQU5HKSBvclxuJiM0MzsjICAgICAgICAgICAgICAgJChCUEZfR0NDKSk7IGVtcHR5IGZvciB0ZXN0X21hcHMsIHdoaWNoIGJ1aWxkcyBub25lXG4mIzQzOyMgICBCUEZfQ0NfTVNHICBidWlsZC1sb2cgdGFnOiBDTE5HLUJQRiB8IEdDQy1CUEZcbiYjNDM7IyAgIEJQRl9DQ19GTEFHU1xuJiM0MzsjICAgICAgICAgICAgICAgY29tcGlsZXItc3BlY2lmaWMgZmxhZ3MgKC1PMiwgdGFyZ2V0Ly1tY3B1IG9yIGdjYyBrbm9icylcbiYjNDM7IyAgIEJQRl9TWVNfSU5DTFVERVNcbiYjNDM7IyAgICAgICAgICAgICAgIHN5c3RlbSBpbmNsdWRlIGZsYWdzIG1hdGNoaW5nIEJQRl9DQ1xuJiM0MzsjICAgQlBGX0RFRklORVMgZXh0cmEgZGVmaW5lcyBmb3IgQlBGIG9iamVjdHMgKGUuZy4gLURFTkFCTEVfQVRPTUlDU19URVNUUylcbiYjNDM7IyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgKGFzIHJlc29sdmVkIGJ5IGxpYi5tayBpbiB0aGUgbWFpbiBNYWtlZmlsZSlcbiYjNDM7IyAgIExMVk1fQ0ZMQUdTL0xMVk1fTERMSUJTL0xMVk1fTERGTEFHU1xuJiM0MzsjICAgICAgICAgICAgICAgcmVzdWx0cyBvZiB0aGUgdG9wLWxldmVsIExMVk0gZmVhdHVyZSBwcm9iZVxuJiM0MztcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4mIzQzO2luY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoXG4mIzQzO2luY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlXG4mIzQzO1xuJiM0MzsjIFNhbWUgbWVzc2FnZSBoZWxwZXJzIGFzIC4uL2xpYi5taywgd2hpY2ggb25seSB0aGUgdG9wIGxldmVsIGluY2x1ZGVzLlxuJiM0MztpZmVxICgkKFYpLDEpXG4mIzQzO1EgPVxuJiM0Mzttc2cgPVxuJiM0MztlbHNlXG4mIzQzO1EgPSBAXG4mIzQzO21zZyA9IEBwcmludGYgJiMzOTsgICUtOHMlcyAlcyVzXFxuJiMzOTsgXCYjMzQ7JCgxKVwmIzM0OyBcJiMzNDskKGlmICQoMiksIFskKDIpXSlcJiMzNDsgXCYjMzQ7JChub3RkaXIgJCgzKSlcJiMzNDsgXCYjMzQ7JChpZiAkKDQpLCAkKDQpKVwmIzM0OztcbiYjNDM7TUFLRUZMQUdTICYjNDM7PSAtLW5vLXByaW50LWRpcmVjdG9yeVxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7aW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbiYjNDM7XG4mIzQzOyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWsuXG4mIzQzO0NGTEFHUyAmIzQzOz0gLURfR05VX1NPVVJDRT1cbiYjNDM7Q0ZMQUdTICYjNDM7PSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcbiYjNDM7Q0ZMQUdTICYjNDM7PSAkKFVTRVJDRkxBR1MpXG4mIzQzO0xERkxBR1MgJiM0Mzs9ICQoVVNFUkxERkxBR1MpXG4mIzQzO2lmbmVxICgkKExMVk0pLClcbiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlclxuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tZ251LXZhcmlhYmxlLXNpemVkLXR5cGUtbm90LWF0LWVuZFxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7QklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXG4mIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKVxuJiM0MztcbiYjNDM7YWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXG4mIzQzOy5QSE9OWTogYWxsXG4mIzQzO1xuJiM0MzsjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuJiM0MzsuREVMRVRFX09OX0VSUk9SOlxuJiM0MztcbiYjNDM7IyBQZXJtaXNzaXZlIHNraXAtb24tZmFpbHVyZSBvZiBpbmRpdmlkdWFsIHRlc3RzIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmRcbiYjNDM7IyBpdHMgZmxhdm9ycyBvbmx5OyB0ZXN0X21hcHMgdXNlcyBzdHJvbmcgY3Jvc3Mtb2JqZWN0IHJlZmVyZW5jZXMgYW5kIGtlZXBzXG4mIzQzOyMgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gQlBGX1NUUklDVF9CVUlMRD0wLlxuJiM0MztQRVJNSVNTSVZFX1RFU1RTIDo9ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncywkKFJVTk5FUikpLCQoUEVSTUlTU0lWRSkpXG4mIzQzO1xuJiM0MzskKFJESVIpOlxuJiM0MztcdCQoY2FsbCBtc2csTUtESVIsLCRAKVxuJiM0MztcdCQoUSlta2RpciAtcCAkQFxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBQZXItcnVubmVyIHNvdXJjZXNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X3Byb2dzKVxuJiM0MztFWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYyBjZ3JvdXBfaGVscGVycy5jIHRyYWNlX2hlbHBlcnMuY1x0XHRcXFxuJiM0MztcdFx0IG5ldHdvcmtfaGVscGVycy5jIHRlc3RpbmdfaGVscGVycy5jIGJ0Zl9oZWxwZXJzLmNcdFxcXG4mIzQzO1x0XHQgY2FwX2hlbHBlcnMuYyB1bnByaXZfaGVscGVycy5jIHN5c2N0bF9oZWxwZXJzLmNcdFxcXG4mIzQzO1x0XHQgbmV0bGlua19oZWxwZXJzLmMgaml0X2Rpc2FzbV9oZWxwZXJzLmMgaW9faGVscGVycy5jXHRcXFxuJiM0MztcdFx0IHRlc3RfbG9hZGVyLmMgeHNrLmMgZGlzYXNtLmMgZGlzYXNtX2hlbHBlcnMuY1x0XHRcXFxuJiM0MztcdFx0IGpzb25fd3JpdGVyLmMgYnBmdG9vbF9oZWxwZXJzLmMgdXNkdF8xLmMgdXNkdF8yLmNcbiYjNDM7TElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuJiM0MztFWFRSQV9IRFJTIDo9IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XHRcXFxuJiM0MztcdCAgICAgICQoVkVSSUZZX1NJR19IRFIpICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXG4mIzQzO0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1x0XFxcbiYjNDM7XHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFxcXG4mIzQzO1x0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAgIGltYV9zZXR1cC5zaCAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXHRcdFx0XFxcbiYjNDM7XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7aWZlcSAoJChSVU5ORVIpLHRlc3RfbWFwcylcbiYjNDM7RVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuY1xuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7IyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluXG4mIzQzOyMgTWFrZWZpbGU6IGhlbHBlciBvYmplY3RzIHRoZSBtYWluIE1ha2VmaWxlIGFsc28gdXNlcyAoYW5kIGxpc3RzIGluIHRoZVxuJiM0MzsjIHJ1bm5lciBwcmVyZXF1aXNpdGVzKSBhcmUgYWxyZWFkeSBidWlsdCBhbmQgZnJlc2ggd2hlbiBhIHJ1bm5lciBzdGFydHMsXG4mIzQzOyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLiBUaGlzXG4mIzQzOyMgaG9sZHMgYmVjYXVzZSB0aGUgbWFpbiBNYWtlZmlsZSYjMzk7cyBoZWxwZXItb2JqZWN0IHJ1bGUgZGVwZW5kcyBvbiBhXG4mIzQzOyMgc3VwZXJzZXQgb2YgdGhlIHByZXJlcXVpc2l0ZXMgdGhlIEVYVFJBX09CSlMgcnVsZSB1c2VzIGhlcmUgLSBrZWVwXG4mIzQzOyMgdGhlIHR3byBsaXN0cyBpbiBzeW5jIChzZWUgdGhlIGludmFyaWFudCBjb21tZW50IHRoZXJlKS5cbiYjNDM7XG4mIzQzO1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaFxuJiM0MztcbiYjNDM7VEVTVF9TUkNTICA6PSAkKG5vdGRpciAkKHdpbGRjYXJkICQoVEVTVFNfRElSKS8qLmMpKVxuJiM0MztURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxuJiM0MztURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKVxuJiM0MztFWFRSQV9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5vLCQoZmlsdGVyICUuYywkKEVYVFJBX1NPVVJDRVMpKSlcbiYjNDM7TElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSlcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7aWZuZXEgKCQoQlBGX0NDKSwpXG4mIzQzO1xuJiM0MztCUEZfU1JDUyA6PSAkKG5vdGRpciAkKHdpbGRjYXJkIHByb2dzLyouYykpXG4mIzQzO0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5icGYubywkKEJQRl9TUkNTKSlcbiYjNDM7XG4mIzQzOyMgQlBGIG9iamVjdHMgdGhhdCBjYW5ub3QgaGF2ZSBhIHJlZ3VsYXIgc2tlbGV0b24uXG4mIzQzO1NLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcbiYjNDM7XG4mIzQzO0xTS0VMUyA6PSBmZXhpdF9zbGVlcC5jIHRyYWNlX3ByaW50ay5jIHRyYWNlX3ZwcmludGsuYyBtYXBfcHRyX2tlcm4uYyBcdFxcXG4mIzQzO1x0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuJiM0MztcdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuJiM0MztcdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xuJiM0MztcbiYjNDM7TFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbiYjNDM7XG4mIzQzOyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuJiM0MztMU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuJiM0MztcdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmNcbiYjNDM7U0tFTF9CTEFDS0xJU1QgJiM0Mzs9ICQoTFNLRUxTKSAkKExTS0VMU19TSUdORUQpXG4mIzQzO1xuJiM0MzsjIFNrZWxldG9ucyBtYWRlIGJ5IGxpbmtpbmcgbXVsdGlwbGUgQlBGIG9iamVjdHMgdG9nZXRoZXIuIFRoZSAlLWRlcHNcbiYjNDM7IyBtYXBwaW5nIGlzIHRoZSBvbmx5IGhhbmQtbWFpbnRhaW5lZCBtZXRhZGF0YTogaXQgY2Fubm90IGJlIGRlcml2ZWQgZnJvbVxuJiM0MzsjIHRoZSBzb3VyY2VzLlxuJiM0Mzt0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4mIzQzO2xpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cbiYjNDM7bGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuJiM0MztsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4mIzQzOyMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXG4mIzQzOyMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbiYjNDM7dGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYub1xuJiM0Mzt0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cbiYjNDM7dGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO1xuJiM0MztMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4mIzQzO1x0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oXHRcdFx0XFxcbiYjNDM7XHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbiYjNDM7XHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oXHRcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuJiM0MztMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKSlcbiYjNDM7XG4mIzQzO1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXHRcdFx0XHRcXFxuJiM0MztcdCAgICQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksJChCUEZfU1JDUykpKVxuJiM0MztMU0tFTFNfSCAgICAgICAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmxza2VsLmgsJChMU0tFTFMpICQoTFNLRUxTX0VYVFJBKSlcbiYjNDM7TFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTX1NJR05FRCkpXG4mIzQzO0xJTktFRF9TS0VMU19IICA6PSAkKGFkZHByZWZpeCAkKFJESVIpLywkKExJTktFRF9TS0VMUykpXG4mIzQzO0FMTF9TS0VMUyA6PSAkKFNLRUxTKSAkKExTS0VMU19IKSAkKExTS0VMU19TSUdORURfSCkgJChMSU5LRURfU0tFTFNfSClcbiYjNDM7XG4mIzQzO0hFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXHRcdFx0XFxcbiYjNDM7XHRcdFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXHRcXFxuJiM0MztcdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdGJwZl9lbmRpYW4uaFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdGJwZl90cmFjaW5nLmgpXG4mIzQzO1xuJiM0MzsjIFBlci1zb3VyY2UgQlBGIGNvbXBpbGF0aW9uIGZsYWcgb3ZlcnJpZGVzICgkXHUwMDNjLUNGTEFHUyAvICRcdTAwM2MtJChGTEFWT1IpLUNGTEFHUykuXG4mIzQzOyMgR0NDIGNhbm5vdCBkaXNhYmxlIFwmIzM0O2RlY2xhcmF0aW9uIG9mIGFub255bW91cyBzdHJ1Y3QgaW4gcGFyYW1ldGVyIGxpc3RcJiMzNDtcbiYjNDM7IyB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlc2UgKHRlY2huaWNhbGx5IGxlZ2FsKSB0ZXN0IHByb2dyYW1zLlxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7XG4mIzQzOyQoQlBGX09CSlMpOiAkKFJESVIpLyUuYnBmLm86IHByb2dzLyUuYyBwcm9ncy8qLmhcdFx0XHRcXFxuJiM0MztcdCAgICAgJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoSEVBREVSU19GT1JfQlBGX09CSlMpXHRcdFxcXG4mIzQzO1x0ICAgICB8ICQoUkRJUikgJChCUEZPQkopXG4mIzQzO1x0JChjYWxsIG1zZywkKEJQRl9DQ19NU0cpLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChCUEZfQ0MpICQoQlBGX0NGTEFHUykgJChCUEZfU1lTX0lOQ0xVREVTKSAkKEJQRl9ERUZJTkVTKVx0XFxcbiYjNDM7XHRcdCQoJFx1MDAzYy1DRkxBR1MpICQoJFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKVx0XHRcdFxcXG4mIzQzO1x0XHQkKEJQRl9DQ19GTEFHUykgLWMgJFx1MDAzYyAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJQRilcbiYjNDM7XG4mIzQzOyMgZ2VuX2JwZl9za2VsLnNoIHBpY2tzIHRoZSBicGZ0b29sIGJpbmFyeSB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiYjNDM7ZXhwb3J0IEJQRlRPT0xcbiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbiYjNDM7XG4mIzQzOyQoU0tFTFMpOiAkKFJESVIpLyUuc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbiYjNDM7XHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcdTAwM2NcdFx0XFxcbiYjNDM7XHRcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcbiYjNDM7XG4mIzQzOyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKSQoR0VOX1NLRUwpIC0tbmFtZSAkKl9sc2tlbCAtLWxza2VsXHRcdFx0XHRcXFxuJiM0MztcdFx0LS1za2VsICRAICRcdTAwM2MgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKVxuJiM0MztcbiYjNDM7JChMU0tFTFNfU0lHTkVEX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTClcdFxcXG4mIzQzO1x0XHQgICAgJChHRU5fU0tFTCkgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVCkgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSkgKHNpZ25lZCksJEApXG4mIzQzO1x0JChRKVBSSVZBVEVfS0VZPSQoUFJJVkFURV9LRVkpXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRWRVJJRklDQVRJT05fQ0VSVD0kKFZFUklGSUNBVElPTl9DRVJUKVx0XHRcdFxcXG4mIzQzO1x0XHQkKEdFTl9TS0VMKSAtLXNpZ24gLS1uYW1lICQqX2xza2VsXHRcdFx0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbiYjNDM7XG4mIzQzOy5TRUNPTkRFWFBBTlNJT046XG4mIzQzOyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcbiYjNDM7XHRcdCAgICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxMSU5LLUJQRiwkKEJJTkFSWSksJChAOi5za2VsLmg9LmJwZi5vKSlcbiYjNDM7XHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpXHRcdFxcXG4mIzQzO1x0XHQkKGFkZHByZWZpeCAkKFJESVIpLywkKCQqLnNrZWwuaC1kZXBzKSlcdFx0XHRcXFxuJiM0MztcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuJiM0MztcbiYjNDM7ZW5kaWYgIyBCUEZfQ0NcbiYjNDM7XG4mIzQzOy5QSE9OWTogc2tlbHNcbiYjNDM7c2tlbHM6ICQoQUxMX1NLRUxTKVxuJiM0MztcbiYjNDM7IyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90IGZ1bGxcbiYjNDM7IyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS5cbiYjNDM7IyBUaGUgdnBhdGggZGlyZWN0aXZlcyBpbnN0cnVjdCBtYWtlIHRvIGFsc28gc2VhcmNoIGZvciBza2VsIGZpbGVzIGluXG4mIzQzOyMgJChSRElSKSBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4mIzQzO3ZwYXRoICUuc2tlbC5oICQoUkRJUilcbiYjNDM7dnBhdGggJS5sc2tlbC5oICQoUkRJUilcbiYjNDM7dnBhdGggJS5zdWJza2VsLmggJChSRElSKVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUZXN0IG9iamVjdHMgYW5kIHJ1bm5lciBiaW5hcnlcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vXG4mIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuJiM0MztcbiYjNDM7IyBDb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlcy5cbiYjNDM7IyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0c1xuJiM0MzsjIGFyZSBmb3VuZC4gVGhlICUudGVzdC5kIGRlcGVuZGVuY3kgZmlsZXMgYXJlIGEgc2lkZSBlZmZlY3Qgb2YgdGhlIC1NTURcbiYjNDM7IyBiZWxvdzsgdGhlIHNlcGFyYXRlIG5vLXJlY2lwZSBydWxlIGZvciB0aGVtIG9yZGVycyB0aGUgZmlyc3RcbiYjNDM7IyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3RcbiYjNDM7IyBjb21waWxhdGlvbiB3aGVuIGhlYWRlcnMgY2hhbmdlLlxuJiM0MzskKFRFU1RfT0JKUyk6ICQoUkRJUikvJS50ZXN0Lm86ICQoVEVTVFNfRElSKS8lLmMgfCAkKFJESVIpLyUudGVzdC5kXG4mIzQzO1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKShjZCAkKEBEKSBcdTAwMjZcdTAwMjYgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJFx1MDAzYyAtbyAkKEBGKSkgXFxcbiYjNDM7XHRcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKVxuJiM0MztcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoQklOQVJZKV1cJiMzNDsgXCYjMzQ7JChub3RkaXIgJEApXCYjMzQ7KTsgXFxcbiYjNDM7XHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7XHRcXFxuJiM0MztcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbiYjNDM7XHRcdGZpKVxuJiM0MztcbiYjNDM7JChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXG4mIzQzO1x0ICAgICAgfCAkKFJESVIpICQoQUxMX1NLRUxTKVxuJiM0MztcbiYjNDM7aW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcbiYjNDM7XG4mIzQzOyQoUkRJUikvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyAmIzQzOz0gJChMTFZNX0NGTEFHUylcbiYjNDM7XG4mIzQzOyQoRVhUUkFfT0JKUyk6ICQoUkRJUikvJS5vOiAlLmMgJChFWFRSQV9IRFJTKSAkKFRFU1RTX0hEUikgJChCUEZPQkopIHwgJChSRElSKVxuJiM0MztcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAXG4mIzQzO1xuJiM0MzskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxMSUItT0JKLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcdTAwM2MgLW8gJEBcbiYjNDM7XG4mIzQzOyMgTm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXJcbiYjNDM7IyB3ZSBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpLlxuJiM0MzsuUEhPTlk6IGV4dHJhc1xuJiM0MztleHRyYXM6ICQoaWYgJChQRVJNSVNTSVZFKSwkKHdpbGRjYXJkICQoRVhUUkFfRklMRVMpKSwkKEVYVFJBX0ZJTEVTKSkgfCAkKFJESVIpXG4mIzQzO2lmbmVxICgkKEZMQVZPUik6JChPVVRQVVQpLDokKENVUkRJUikpXG4mIzQzO2lmbmVxICgkKHN0cmlwICQoRVhUUkFfRklMRVMpKSwpXG4mIzQzO1x0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChub3RkaXIgJChFWFRSQV9GSUxFUykpKVxuJiM0MztcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cbiYjNDM7ZW5kaWZcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxuJiM0MzsjICh0aGVpciBjb21waWxhdGlvbiBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpOiB0aGUgb2JqZWN0cyBleGlzdGluZyBhdFxuJiM0MzsjIHBhcnNlIHRpbWUgYXJlIG5vcm1hbCBwcmVyZXF1aXNpdGVzIC0gc28gZWRpdGluZyBhIHRlc3Qgc291cmNlIHN0aWxsXG4mIzQzOyMgcmVsaW5rcyB0aGUgcnVubmVyIC0gd2hpbGUgdGhlIGZ1bGwgc2V0IHN0YXlzIG9yZGVyLW9ubHkgdG8gZHJpdmUgdGhlXG4mIzQzOyMgYnVpbGQgYXR0ZW1wdHMsIGFuZCB0aGUgd2lsZGNhcmQgaW4gdGhlIHJlY2lwZSBwaWNrcyB1cCB0aGUgc3Vydml2b3JzXG4mIzQzOyMgYXQgbGluayB0aW1lLlxuJiM0MzsjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcbiYjNDM7IyBsaWJicGYsIGxpYiBvYmplY3RzKS5cbiYjNDM7JChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFxcXG4mIzQzO1x0XHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXHRcdFxcXG4mIzQzO1x0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKSAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XFxcbiYjNDM7XHRcdCAgICAgfCBleHRyYXMgJChCUEZfT0JKUylcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4mIzQzO1x0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUylcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKVx0XFxcbiYjNDM7XHRcdFx0JChmaWx0ZXItb3V0ICQoVEVTVF9PQkpTKSwkKGZpbHRlciAlLmEgJS5vLCReKSksXFxcbiYjNDM7XHRcdFx0JChmaWx0ZXIgJS5hICUubywkXikpXHRcdFx0XHRcXFxuJiM0MztcdFx0JChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRAXG4mIzQzO1x0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4mIzQzO1x0XHQgICAkKFJESVIpL2JwZnRvb2xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lMjM0ZjNhNTdkNDZiZlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxuQEAgLTAsMCAmIzQzOzEsOTMgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcJiMzNDticGZ0b29sIGdlbiBvYmplY3RcJiMzNDsgYW5kIGdlbmVyYXRlIGFcbiYjNDM7IyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4mIzQzOyNcbiYjNDM7IyBVc2FnZTpcbiYjNDM7IyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4mIzQzOyNcbiYjNDM7IyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcJiMzNDtuYW1lIE5BTUVcJiMzNDsgZm9yIGJwZnRvb2wpXG4mIzQzOyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcJiMzNDtmb28uc2tlbC5oXCYjMzQ7IG9yIFwmIzM0O2Zvby5sc2tlbC5oXCYjMzQ7KVxuJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVFxuJiM0MzsjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXG4mIzQzOyMgICAtLXNpZ24gICAgICAgICAgICBzaWduIHRoZSAobGlnaHQpIHNrZWxldG9uLCB3aXRoIHRoZSBrZXkgYW5kXG4mIzQzOyMgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSB0YWtlbiBmcm9tICRQUklWQVRFX0tFWSBhbmRcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgICRWRVJJRklDQVRJT05fQ0VSVFxuJiM0MzsjXG4mIzQzOyMgVGhlIGlucHV0cyBhcmUgbGlua2VkIHRocmVlIHRpbWVzIGFuZCB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0c1xuJiM0MzsjIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFwmIzM0O2JwZnRvb2wgZ2VuXG4mIzQzOyMgb2JqZWN0XCYjMzQ7LlxuJiM0MzsjXG4mIzQzOyMgSW50ZXJtZWRpYXRlIGZpbGVzIGNhcnJ5IGEgXCYjMzQ7bGlua2VkXCYjMzQ7IGluZml4IC0gXCYjMzQ7bGxpbmtlZFwmIzM0OyBmb3IgbGlnaHQgb3JcbiYjNDM7IyBzaWduZWQgc2tlbGV0b25zLCBzbyBnZW5lcmF0aW5nIGEgLnNrZWwuaCBhbmQgYSAubHNrZWwuaCBmcm9tIHRoZVxuJiM0MzsjIHNhbWUgLmJwZi5vIGluIHBhcmFsbGVsIG5ldmVyIHJhY2VzIG9uIHRoZSBpbnRlcm1lZGlhdGVzLlxuJiM0MzsjXG4mIzQzOyMgVGhlIGJwZnRvb2wgYmluYXJ5IGlzIHRha2VuIGZyb20gJEJQRlRPT0wgKGRlZmF1bHQ6IGJwZnRvb2wgZnJvbSBQQVRIKS5cbiYjNDM7IyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0XG4mIzQzOyMgZXhpdHMgbm9uLXplcm87IHBlcm1pc3NpdmUtbW9kZSBza2lwcGluZyBpcyB0aGUgY2FsbGVyJiMzOTtzIGJ1c2luZXNzXG4mIzQzOyMgKHNlZSBza2lwX29uX2ZhaWwgaW4gTWFrZWZpbGUuYnVpbGR2YXJzKS5cbiYjNDM7XG4mIzQzO3NldCAtdVxuJiM0MztcbiYjNDM7YnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9XG4mIzQzO25hbWU9JiMzOTsmIzM5OyBza2VsPSYjMzk7JiMzOTsgc3Vic2tlbD0mIzM5OyYjMzk7XG4mIzQzO2xza2VsPTAgc2lnbj0wXG4mIzQzO1xuJiM0Mzt3aGlsZSBbICQjIC1ndCAwIF07IGRvXG4mIzQzO1x0Y2FzZSBcJiMzNDskMVwmIzM0OyBpblxuJiM0MztcdC0tbmFtZSlcdFx0bmFtZT0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tc2tlbClcdFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tc3Vic2tlbClcdHN1YnNrZWw9JDI7IHNoaWZ0IDIgOztcbiYjNDM7XHQtLWxza2VsKVx0bHNrZWw9MTsgc2hpZnQgOztcbiYjNDM7XHQtLXNpZ24pXHRcdHNpZ249MTsgc2hpZnQgOztcbiYjNDM7XHQtLSlcdFx0c2hpZnQ7IGJyZWFrIDs7XG4mIzQzO1x0LSopXHRcdGVjaG8gXCYjMzQ7JDA6IHVua25vd24gb3B0aW9uOiAkMVwmIzM0OyBcdTAwM2VcdTAwMjYyOyBleGl0IDEgOztcbiYjNDM7XHQqKVx0XHRicmVhayA7O1xuJiM0MztcdGVzYWNcbiYjNDM7ZG9uZVxuJiM0MztcbiYjNDM7aWYgWyAteiBcJiMzNDskbmFtZVwmIzM0OyBdIHx8IFsgLXogXCYjMzQ7JHNrZWxcJiMzNDsgXSB8fCBbICQjIC1lcSAwIF07IHRoZW5cbiYjNDM7XHRlY2hvIFwmIzM0O3VzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cJiMzNDsgXHUwMDNlXHUwMDI2MlxuJiM0MztcdGV4aXQgMVxuJiM0MztmaVxuJiM0MztcbiYjNDM7aW5maXg9bGlua2VkXG4mIzQzO2lmIFsgXCYjMzQ7JGxza2VsXCYjMzQ7IC1lcSAxIF0gfHwgWyBcJiMzNDskc2lnblwmIzM0OyAtZXEgMSBdOyB0aGVuXG4mIzQzO1x0aW5maXg9bGxpbmtlZFxuJiM0MztmaVxuJiM0MztcbiYjNDM7YmFzZT0ke3NrZWwlLnNrZWwuaH1cbiYjNDM7YmFzZT0ke2Jhc2UlLmxza2VsLmh9XG4mIzQzO3QxPSRiYXNlLiR7aW5maXh9MS5vXG4mIzQzO3QyPSRiYXNlLiR7aW5maXh9Mi5vXG4mIzQzO3QzPSRiYXNlLiR7aW5maXh9My5vXG4mIzQzO1xuJiM0MztmYWlsKCkge1xuJiM0MztcdHJtIC1mIFwmIzM0OyRza2VsXCYjMzQ7ICR7c3Vic2tlbDomIzQzO1wmIzM0OyRzdWJza2VsXCYjMzQ7fSBcJiMzNDskdDFcJiMzNDsgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0M1wmIzM0O1xuJiM0MztcdGV4aXQgMVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gb2JqZWN0IFwmIzM0OyR0MVwmIzM0OyBcJiMzNDskQFwmIzM0OyB8fCBmYWlsXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0MVwmIzM0OyB8fCBmYWlsXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQzXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyB8fCBmYWlsXG4mIzQzO2lmICEgY21wIC1zIFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDNcJiMzNDs7IHRoZW5cbiYjNDM7XHRlY2hvIFwmIzM0OyQwOiBicGZ0b29sIGdlbiBvYmplY3QgaXMgbm90IGRldGVybWluaXN0aWMgZm9yICRza2VsXCYjMzQ7IFx1MDAzZVx1MDAyNjJcbiYjNDM7XHRmYWlsXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MzthcmdzPSgpXG4mIzQzO2lmIFsgXCYjMzQ7JHNpZ25cJiMzNDsgLWVxIDEgXTsgdGhlblxuJiM0MztcdGFyZ3MmIzQzOz0oLVMgLWsgXCYjMzQ7JHtQUklWQVRFX0tFWTo/fVwmIzM0OyAtaSBcJiMzNDske1ZFUklGSUNBVElPTl9DRVJUOj99XCYjMzQ7KVxuJiM0MztmaVxuJiM0MztpZiBbIFwmIzM0OyRsc2tlbFwmIzM0OyAtZXEgMSBdOyB0aGVuXG4mIzQzO1x0YXJncyYjNDM7PSgtTClcbiYjNDM7ZmlcbiYjNDM7XCYjMzQ7JGJwZnRvb2xcJiMzNDsgZ2VuIHNrZWxldG9uICR7YXJnc1tAXSYjNDM7XCYjMzQ7JHthcmdzW0BdfVwmIzM0O30gXCYjMzQ7JHQzXCYjMzQ7IG5hbWUgXCYjMzQ7JG5hbWVcJiMzNDsgXHUwMDNlIFwmIzM0OyRza2VsXCYjMzQ7IHx8IGZhaWxcbiYjNDM7XG4mIzQzO2lmIFsgLW4gXCYjMzQ7JHN1YnNrZWxcJiMzNDsgXTsgdGhlblxuJiM0MztcdFwmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBzdWJza2VsZXRvbiBcJiMzNDskdDNcJiMzNDsgbmFtZSBcJiMzNDskbmFtZVwmIzM0OyBcdTAwM2UgXCYjMzQ7JHN1YnNrZWxcJiMzNDsgfHwgZmFpbFxuJiM0MztmaVxuJiM0MztcbiYjNDM7cm0gLWYgXCYjMzQ7JHQxXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDNcJiMzNDtcbiYjNDM7ZXhpdCAwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzNkMzEzZjJjYjE3YzYxYzhlNmRkNjM5MjQxMWNjZjRlYTMyZGJmZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDA4OjM4OjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCmluZGV4IDU1ZDM5NDQzODcwNWE2Li4wOWNmZjY5M2I3ZDc4MiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZQpAQCAtMSw5NiAmIzQzOzEsMzIgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBFdmVyeXRoaW5nIHRoYXQgZXhpc3RzIG9uY2UgbGl2ZXMgaGVyZTogdG9vbGNoYWluIHNldHVwLCB0b29sCiYjNDM7IyBzdWItYnVpbGRzLCB2bWxpbnV4LmgsIHNoYXJlZCBoZWxwZXIgb2JqZWN0cywgc3RhbmRhbG9uZSBiaW5hcmllcyBhbmQKJiM0MzsjIHRoZSBsaWIubWsgY29udHJhY3QuIEVhY2ggdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MgYW5kIGl0cwomIzQzOyMgZmxhdm9ycywgdGVzdF9tYXBzKSBpcyBidWlsdCBieSBpdHMgb3duIE1ha2VmaWxlLnJ1bm5lciBzdWItbWFrZTsKJiM0MzsjIHNoYXJlZCBkZWZpbml0aW9ucyBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy4KJiM0MzsKIGluY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZQogaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2gKIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlCiAKLUNYWCA/PSAkKENST1NTX0NPTVBJTEUpZyYjNDM7JiM0MzsKLU9CSkNPUFkgPz0gJChDUk9TU19DT01QSUxFKW9iamNvcHkKLQotQ1VSRElSIDo9ICQoYWJzcGF0aCAuKQotVE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKQotTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYgotQlBGRElSIDo9ICQoTElCRElSKS9icGYKLVRPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGUKLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZQotQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbAotQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGkKLWlmbmVxICgkKE8pLCkKLUdFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkCi1lbHNlCi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKQotZW5kaWYKLUdFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaAotUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZwogCi1pZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLCkKLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUgomIzQzOyMgTmVlZGVkIGJlZm9yZSBsaWIubWsgaXMgaW5jbHVkZWQgKGdhdGVzIHRoZSBmbGF2b3IgbGlzdCBiZWxvdyksIHdoaWNoCiYjNDM7IyBpcyBhbHNvIHdoeSBpdCBjYW5ub3QgbGl2ZSBpbiBNYWtlZmlsZS5idWlsZHZhcnMuCiYjNDM7aWZlcSAoJChvcmlnaW4gQlBGX0dDQyksdW5kZWZpbmVkKQomIzQzO0JQRl9HQ0MgOj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KQogZW5kaWYKIAotQlBGX0dDQwkJPz0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KQotaWZkZWYgQVNBTgotU0FOX0NGTEFHUyAJPz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCi1lbHNlCi1TQU5fQ0ZMQUdTCT89Ci1lbmRpZgotU0FOX0xERkxBR1MJPz0gJChTQU5fQ0ZMQUdTKQotUkVMRUFTRQkJPz0KLU9QVF9GTEFHUwk/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMCkKLQotTElCRUxGX0NGTEFHUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDImZ3Q7L2Rldi9udWxsKQotTElCRUxGX0xJQlMJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMiZndDsvZGV2L251bGwgfHwgZWNobyAtbGVsZikKLQogU0tJUF9ET0NTCT89CiBTS0lQX0xMVk0JPz0KIFNLSVBfTElCQkZECT89CiBTS0lQX0NSWVBUTwk/PQogCi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvcgotIyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXMKLSMgYW5kIGNvbnRpbnVlIGJ1aWxkaW5nIHRoZSByZW1haW5pbmcgdGVzdHMuCi1CUEZfU1RSSUNUX0JVSUxEID89IDEKLVBFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKQotCi1pZmVxICgkKHNyY3RyZWUpLCkKLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoQ1VSRElSKSkpCi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSkKLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQotc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCi1lbmRpZgogCi1DT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExCQkJCVwKLQkgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIJCQkJXAotCSAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZQkJCQkJXAotCSAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpCQkJXAotCSAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKQkJXAotCSAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKQlcCi0JICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlCi1MREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKQotTERMSUJTICYjNDM7PSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWQKLQotUENBUF9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMiZndDsvZGV2L251bGwgJmFtcDsmYW1wOyBlY2hvICYjMzQ7LURUUkFGRklDX01PTklUT1I9MSYjMzQ7KQotUENBUF9MSUJTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyJmd0Oy9kZXYvbnVsbCkKLUxETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpCi1DRkxBR1MgJiM0Mzs9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUykKLQotIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllcwotaml0X2Rpc2FzbV9oZWxwZXJzLmMtQ0ZMQUdTID0gJChMTFZNX0NGTEFHUykKLQotaWZuZXEgKCQoTExWTSksKQotIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nCi1DRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAotZW5kaWYKLQotIyBDaGVjayB3aGV0aGVyIGJwZiBjcHU9djQgaXMgc3VwcG9ydGVkIG9yIG5vdCBieSBjbGFuZwogaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMiZndDsmYW1wOzEgfCBncmVwICYjMzk7djQmIzM5OyksKQogQ0xBTkdfQ1BVVjQgOj0gMQogZW5kaWYKIAotIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KQotQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICYjMzk7aW50IHg7JiMzOTsgfCBcCi0JJChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXAotCS1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFwKLQkteCBjIC1jIC0gLW8gL2Rldi9udWxsIDImZ3Q7L2Rldi9udWxsICZhbXA7JmFtcDsgZWNobyAxKQotCiAjIE9yZGVyIGNvcnJlc3BvbmQgdG8gJiMzOTttYWtlIHJ1bl90ZXN0cyYjMzk7IG9yZGVyCiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFwKIAl0ZXN0X3NvY2ttYXAgXApAQCAtMTAyLDE2ICYjNDM7MzgsNiBAQCBURVNUX0lOU1RfU1VCRElSUyA6PSBub19hbHUzMgogaWZuZXEgKCQoQlBGX0dDQyksKQogVEVTVF9HRU5fUFJPR1MgJiM0Mzs9IHRlc3RfcHJvZ3MtYnBmX2djYwogVEVTVF9JTlNUX1NVQkRJUlMgJiM0Mzs9IGJwZl9nY2MKLQotIyBUaGUgZm9sbG93aW5nIHRlc3RzIGNvbnRhaW4gQyBjb2RlIHRoYXQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGxlZ2FsLAotIyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mCi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotCiBlbmRpZgogCiBpZm5lcSAoJChDTEFOR19DUFVWNCksKQpAQCAtMjEzLDIxICYjNDM7MTM5LDggQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpCiBlbmRpZgogZW5kaWYKIAotU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzCi1CVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGQKLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGUKLUJQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCi1IT1NUX0JVSUxEX0RJUgkJOj0gJChCVUlMRF9ESVIpL2hvc3QKLUhPU1RfU0NSQVRDSF9ESVIJOj0gJChPVVRQVVQpL2hvc3QtdG9vbHMKLUhPU1RfSU5DTFVERV9ESVIJOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlCi1lbHNlCi1IT1NUX0JVSUxEX0RJUgkJOj0gJChCVUlMRF9ESVIpCi1IT1NUX1NDUkFUQ0hfRElSCTo9ICQoU0NSQVRDSF9ESVIpCi1IT1NUX0lOQ0xVREVfRElSCTo9ICQoSU5DTFVERV9ESVIpCi1lbmRpZgotSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCi1SRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0ZmlkcwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzCiYjNDM7CiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KQkJCQlcCiAJCSAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eCkJXAogCQkgICAgIC4uLy4uLy4uLy4uL3ZtbGludXgJCQkJXApAQCAtMjQyLDcgJiM0MzsxNTUsNyBAQCBlbmRpZgogIyB0byBidWlsZCBpbmRpdmlkdWFsIHRlc3RzLgogIyBOT1RFOiBTZW1pY29sb24gYXQgdGhlIGVuZCBpcyBjcml0aWNhbCB0byBvdmVycmlkZSBsaWIubWsmIzM5O3MgZGVmYXVsdCBzdGF0aWMKICMgcnVsZSBmb3IgYmluYXJpZXMuCi0kKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpCQkJCVwKJiM0MzskKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRF9UQVJHRVRTKQkJCQlcCiAJICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpKTogJTogJChPVVRQVVQpLyUgOwogCiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZwpAQCAtMjU2LDExICYjNDM7MTY5LDE0IEBAICQoTUFLRV9ESVJTKToKIAogJChPVVRQVVQpLyUubzogJS5jCiAJJChjYWxsIG1zZyxDQywsJEApCi0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQAomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgLW8gJEAKIAomIzQzOyMgSGVhZGVycyBtYXkgYXBwZWFyIGFtb25nIHRoZSBwcmVyZXF1aXNpdGVzIGZvciBkZXBlbmRlbmN5IHRyYWNraW5nOwomIzQzOyMgdGhleSBtdXN0IG5vdCByZWFjaCB0aGUgY2xhbmcvZ2NjIGNvbW1hbmQgbGluZSAoY2xhbmcgdHJlYXRzIGEgYmFyZSAuaAomIzQzOyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS4KICQoT1VUUFVUKS8lOiUuYwogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKLQkkKFEpJChMSU5LLmMpICReICQoTERMSUJTKSAtbyAkQAomIzQzOwkkKFEpJChMSU5LLmMpICQoZmlsdGVyLW91dCAlLmgsJF4pICQoTERMSUJTKSAtbyAkQAogCiAjIExMVk0mIzM5O3MgbGQubGxkIGRvZXNuJiMzOTt0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODYKIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKQpAQCAtMzE0LDE2ICYjNDM7MjMwLDYgQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpCiAJJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbIC1mIHRlc3Rfa21vZHMvJChARikgXTsgdGhlbiApY3AgdGVzdF9rbW9kcy8kKEBGKSAkQCQoaWYgJChQRVJNSVNTSVZFKSw7IGZpKQogCiAKLURFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbAotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKLVRSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpCi1VU0VfQk9PVFNUUkFQIDo9ICYjMzQ7JiMzNDsKLWVsc2UKLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTCkKLVVTRV9CT09UU1RSQVAgOj0gJiMzNDtib290c3RyYXAvJiMzNDsKLWVuZGlmCi0KICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSikKIAogVEVTVElOR19IRUxQRVJTCTo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMubwpAQCAtMzQ0LDcgJiM0MzsyNTAsMzkgQEAgJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpCiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpCiAkKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKQogCi1CUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKQomIzQzOyMgQWxsIGhlbHBlciBvYmplY3RzIGEgcnVubmVyIGluc3RhbmNlIGxpbmtzLCBwcmUtYnVpbHQgaGVyZSBzbyBydW5uZXIKJiM0MzsjIHN1Yi1tYWtlcyBzaGFyaW5nICQoT1VUUFVUKSBuZXZlciBjb21waWxlIHRoZW0gY29uY3VycmVudGx5LgomIzQzO0hFTFBFUl9PQkpTIDo9ICQoVEVTVElOR19IRUxQRVJTKSAkKENHUk9VUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKQlcCiYjNDM7CSAgICAgICAkKFRSQUNFX0hFTFBFUlMpICQoSlNPTl9XUklURVIpICQoQ0FQX0hFTFBFUlMpCQlcCiYjNDM7CSAgICAgICAkKE5FVFdPUktfSEVMUEVSUykgJChPVVRQVVQpL3VzZHRfMS5vICQoT1VUUFVUKS91c2R0XzIubwlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkveHNrLm8KJiM0MzsKJiM0MzsjICQoQlBGVE9PTCkgaXMgYSBwcmVyZXF1aXNpdGUgYmVjYXVzZSBpdHMgc3ViLW1ha2UgaXMgd2hhdCBpbnN0YWxscwomIzQzOyMgbGliYnBmJiMzOTtzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50bwomIzQzOyMgJChJTkNMVURFX0RJUik7IHdpdGhvdXQgaXQsIGhlbHBlcnMgaW5jbHVkaW5nIHRob3NlIGhlYWRlcnMgcmFjZSB0aGUKJiM0MzsjIGluc3RhbGwgYW5kIGNhbiBzaWxlbnRseSBwaWNrIHVwIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC4KJiM0MzsjCiYjNDM7IyBJbnZhcmlhbnQ6IHRoaXMgbGlzdCBtdXN0IGJlIGEgc3VwZXJzZXQgb2YgZXZlcnkgcHJlcmVxdWlzaXRlIHRoZQomIzQzOyMgcnVubmVyJiMzOTtzIEVYVFJBX09CSlMgcnVsZSBhdHRhY2hlcyB0byB0aGVzZSBzYW1lIG9iamVjdHMgKEVYVFJBX0hEUlMsCiYjNDM7IyBib3RoIHRlc3RzLmggZmxhdm9ycywgJChCUEZPQkopKS4gSXQgZ3VhcmFudGVlcyB0aGUgaGVscGVycyBidWlsdAomIzQzOyMgaGVyZSBhcmUgbmV2ZXIgb2xkZXIgdGhhbiBhIHJ1bm5lci1zaWRlIHByZXJlcXVpc2l0ZSwgc28gdGhlCiYjNDM7IyB1bmZsYXZvcmVkIHRlc3RfcHJvZ3MgYW5kIHRlc3RfbWFwcyBzdWItbWFrZXMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSwKJiM0MzsjIHRyZWF0IHRoZW0gYXMgdXAgdG8gZGF0ZSBpbnN0ZWFkIG9mIGJvdGggcmVjb21waWxpbmcgdGhlIHNhbWUgb2JqZWN0CiYjNDM7IyBmaWxlIGNvbmN1cnJlbnRseS4KJiM0MzskKEhFTFBFUl9PQkpTKTogZmxvd19kaXNzZWN0b3JfbG9hZC5oIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oCQlcCiYjNDM7CQkkKFZFUklGWV9TSUdfSERSKSAkKExJQkFSRU5BX1NLRUwpICQoTElCQVJFTkFfQVNBTl9TS0VMKVwKJiM0MzsJCXByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaCAkKEJQRk9CSikgJChCUEZUT09MKQomIzQzOwomIzQzOyQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmgKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVG9vbCBzdWItYnVpbGRzOiBicGZ0b29sIGFuZCBsaWJicGYgKGhvc3QgYW5kLCB3aGVuIGNyb3NzLWNvbXBpbGluZywKJiM0MzsjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLgomIzQzOyMKJiM0MzsjIE5vdGUgdGhlIGRlbGliZXJhdGUgYXN5bW1ldHJ5OiB0aGUgaG9zdCBsaWJicGYgYnVpbGRzIHdpdGhvdXQKJiM0MzsjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLgomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXAogCQkgICAgJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9icGZ0b29sCiAJJChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUikJCQkgICAgICAgXApAQCAtNDEyLDcgJiM0MzszNTAsNyBAQCBlbmRpZgogCiAjIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0bwogIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2YKLSMgJChUUlVOTkVSX0JQRl9PQkpTKQomIzQzOyMgQlBGIG9iamVjdHMuCiAkKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKQogaWZlcSAoJChWTUxJTlVYX0gpLCkKIAkkKGNhbGwgbXNnLEdFTiwsJEApCkBAIC00MzcsMzc0ICYjNDM7Mzc1LDExIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzCVwKIAkJSE9TVFBLR19DT05GSUc9JiMzOTskKFBLR19DT05GSUcpJiMzOTsgXAogCQlPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKQogCi0jIEdldCBDbGFuZyYjMzk7cyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnkKLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyAmIzM0O21pc3NpbmcmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcywKLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLgotIwotIyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlCi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuCi1kZWZpbmUgZ2V0X3N5c19pbmNsdWRlcwotJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSAmbHQ7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIFwKLQl8IHNlZCAtbiAmIzM5Oy8mbHQ7Li4uJmd0OyBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFwoLy4qXCl8LWlkaXJhZnRlciBcMXxwIH0mIzM5OykgXAotJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWQmIzM0OywgJCQzLCAkJDMpfSYjMzk7KSBcCi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EX19CSVRTX1BFUl9MT05HPSVkJiMzNDssICQkMyl9JiMzOTspIFwKLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtICZsdDsvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LUQlcz0lcyAmIzM0OywgJCQyLCAkJDMpfSYjMzk7KQotZW5kZWYKLQotIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuCi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IFwKLQkJCWdyZXAgJiMzOTtkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18mIzM5OykKLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKQotQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYikKLQotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpCi1lbmRpZgotCi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSkKLUJQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTikJXAotCSAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKQkJCVwKLQkgICAgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUJCQkJXAotCSAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKQkJCVwKLQkgICAgIC1zdGQ9Z251MTEJCSAJCQkJCVwKLQkgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIAkJCQkJXAotCSAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWcJCQkJCVwKLQkgICAgIC1mbXMtZXh0ZW5zaW9ucwkJCQkJCVwKLQkgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzCQkJXAotCSAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXMJCQkJCVwKLQkgICAgICMKLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlCi0KLUNMQU5HX0NGTEFHUyA9ICQoQ0xBTkdfU1lTX0lOQ0xVREVTKQotCi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lCi0kKE9VVFBVVCkvdGVzdF94ZHBfbm9pbmxpbmUubzogQlBGX0NGTEFHUyAmIzQzOz0gLWZuby1pbmxpbmUKLQotJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQubzogZmxvd19kaXNzZWN0b3JfbG9hZC5oCi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaAotCi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgQ2xhbmcKLSMgJDEgLSBpbnB1dCAuYyBmaWxlCi0jICQyIC0gb3V0cHV0IC5vIGZpbGUKLSMgJDMgLSBDRkxBR1MKLSMgJDQgLSBiaW5hcnkgbmFtZQotZGVmaW5lIENMQU5HX0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYzIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggZGlzYWJsZWQgYWx1MzIKLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYyIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggY3B1LXY0Ci1kZWZpbmUgQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEUKLQkkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKQotCSQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxJmd0OyZhbXA7MikpCi1lbmRlZgotIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQwotZGVmaW5lIEdDQ19CUEZfQlVJTERfUlVMRQotCSQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMikKLQkkKFEpJChCUEZfR0NDKSAkMyAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkMSAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKLWVuZGVmCi0KLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmMKLQotTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaAkJXAotCQlsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIAkJCVwKLQkJdGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oCVwKLQkJdGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaAkJCVwKLQkJdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oCQkJCVwKLQkJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oCQkJCVwKLQkJdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaAotCi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgCVwKLQljb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuYwkJCVwKLQl0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXAotCXRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuYwotCi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuYwotCi0jIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2UKLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFwKLQlrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jCi1TS0VMX0JMQUNLTElTVCAmIzQzOz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKQotCi10ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vCi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vCi1saW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vCi1saW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vCi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZQotIyBidXQgdGhhdCYjMzk7cyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLgotdGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYubwotdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vCi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm8KLXhza194ZHBfcHJvZ3Muc2tlbC5oLWRlcHMgOj0geHNrX3hkcF9wcm9ncy5icGYubwoteGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYubwoteGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYubwotdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwotdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KLXRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KLQotTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpCi1MSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKExJTktFRF9CUEZfT0JKUykpCi0KLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpCQlcCi0JCQkkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSkJXAotCQkJJChhZGRwcmVmaXggJChCUEZESVIpLywJYnBmX2NvcmVfcmVhZC5oCVwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaAlcCi0JCQkJCQlicGZfaGVscGVycy5oCVwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpCi0KLSMgU2V0IHVwIGV4dHJhIFRSVU5ORVJfWFhYICYjMzQ7dGVtcG9yYXJ5JiMzNDsgdmFyaWFibGVzIGluIHRoZSBlbnZpcm9ubWVudCAocmVsaWVzIG9uCi0jICRldmFsKCkpIGFuZCBwYXNzIGNvbnRyb2wgdG8gREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLgotIyBQYXJhbWV0ZXJzOgotIyAkMSAtIHRlc3QgcnVubmVyIGJhc2UgYmluYXJ5IG5hbWUgKGUuZy4sIHRlc3RfcHJvZ3MpCi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgJiMzNDtmbGF2b3ImIzM0OyAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpCi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSCi0KLUxTS0VMX1NJR04gOj0gLVMgLWsgJChQUklWQVRFX0tFWSkgLWkgJChWRVJJRklDQVRJT05fQ0VSVCkKLVRSVU5ORVJfT1VUUFVUIDo9ICQoT1VUUFVUKSQoaWYgJDIsLykkMgotVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDIKLVRSVU5ORVJfVEVTVF9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm8sCVwKLQkJCQkgJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUU19ESVIpLyouYykpKQotVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLAkJXAotCQkJCSAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpCi1UUlVOTkVSX0xJQl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLAkJXAotCQkJCSAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9MSUJfU09VUkNFUykpKQotVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKQotVFJVTk5FUl9URVNUU19IRFIgOj0gJChUUlVOTkVSX1RFU1RTX0RJUikvdGVzdHMuaAotVFJVTk5FUl9CUEZfU1JDUyA6PSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouYykpCi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpCi1UUlVOTkVSX0JQRl9TS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuc2tlbC5oLAlcCi0JCQkJICQkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLFwKLQkJCQkJICAgICAgICQkKFRSVU5ORVJfQlBGX1NSQ1MpKSkKLVRSVU5ORVJfQlBGX0xTS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTKSAkJChMU0tFTFNfRVhUUkEpKQotVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSkKLVRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMU19TSUdORUQpKQotVEVTVF9HRU5fRklMRVMgJiM0Mzs9ICQkKFRSVU5ORVJfQlBGX09CSlMpCi0KLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZAotJCQoZXZhbCAkJChjYWxsIERFRklORV9URVNUX1JVTk5FUl9SVUxFUywkMSwkMikpCi0KLWVuZGVmCi0KLSMgVXNpbmcgVFJVTk5FUl9YWFggdmFyaWFibGVzLCBwcm92aWRlZCBieSBjYWxsZXJzIG9mIERFRklORV9URVNUX1JVTk5FUiBhbmQKLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOgotIyAkMSAtIHRlc3QgcnVubmVyIGJhc2UgYmluYXJ5IG5hbWUgKGUuZy4sIHRlc3RfcHJvZ3MpCi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgJiMzNDtmbGF2b3ImIzM0OyAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpCi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTCi0KLSMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHkKLSMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZCBpdHMgZmxhdm9yczsgcnVubmVycyB0aGF0IHVzZSBzdHJvbmcgY3Jvc3Mtb2JqZWN0Ci0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuCi0jIFRoZSBjaGVjayBpcyBpbmxpbmVkIHBlci1ydW5uZXIgc28gJDEgaXMgc3Vic3RpdHV0ZWQgYXQgJChjYWxsKSB0aW1lIGFuZAotIyB0aGUgcmVzdWx0IGlzIGJha2VkIGludG8gZWFjaCBydWxlJiMzOTtzIHJlY2lwZS4KLQotaWZlcSAoJCgkKFRSVU5ORVJfT1VUUFVUKS1kaXIpLCkKLSQoVFJVTk5FUl9PVVRQVVQpLWRpciA6PSB5Ci0kKFRSVU5ORVJfT1VUUFVUKToKLQkkJChjYWxsIG1zZyxNS0RJUiwsJCRAKQotCSQoUSlta2RpciAtcCAkJEAKLWVuZGlmCi0KLSMgZW5zdXJlIHdlIHNldCB1cCBCUEYgb2JqZWN0cyBnZW5lcmF0aW9uIHJ1bGUganVzdCBvbmNlIGZvciBhIGdpdmVuCi0jIGlucHV0L291dHB1dCBkaXJlY3RvcnkgY29tYmluYXRpb24KLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLCkKLSQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKSQoaWYgJDIsLSkkMi1icGZvYmpzIDo9IHkKLSQoVFJVTk5FUl9CUEZfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm86CQkJCVwKLQkJICAgICAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvJS5jCQkJXAotCQkgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmgJCQlcCi0JCSAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaAkJCQlcCi0JCSAgICAgJChIRUFERVJTX0ZPUl9CUEZfT0JKUykJCQkJXAotCQkgICAgIHwgJChUUlVOTkVSX09VVFBVVCkgJCQoQlBGT0JKKQotCSQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJCZsdDssJCRALAkJCVwKLQkJCQkJICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcCi0JCQkJCSAgJCQoJCQmbHQ7LUNGTEFHUykJCVwKLQkJCQkJICAkJCgkJCZsdDstJDItQ0ZMQUdTKSwkKFRSVU5ORVJfQklOQVJZKSkKLQotJChUUlVOTkVSX0JQRl9TS0VMUyk6ICUuc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKQotCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkJmx0OyBdOyB0aGVuCQkJXAotCQkkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsJCQlcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JCWV4aXQgMDsJCQkJCQkJXAotCWZpOykJCQkJCQkJCVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxpbmtlZDEubykgJCQmbHQ7ICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGlua2VkMS5vKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxpbmtlZDMubykgJCQoJmx0Ozoubz0ubGlua2VkMi5vKSAmYW1wOyZhbXA7IFwKLQlkaWZmICQkKCZsdDs6Lm89LmxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGlua2VkMy5vKSAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQkKCZsdDs6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoJmx0OzouYnBmLm89KSkgJmd0OyAkJEAgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKCZsdDs6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoJmx0OzouYnBmLm89KSkgJmd0OyAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXAotCQkkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsgXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCX0pICZhbXA7JmFtcDsgXAotCXJtIC1mICQkKCZsdDs6Lm89LmxpbmtlZDEubykgJCQoJmx0Ozoubz0ubGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pCi0KLSQoVFJVTk5FUl9CUEZfTFNLRUxTKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKQotCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkJmx0OyBdOyB0aGVuCQkJXAotCQkkJChSTSkgJCRAOwkJCQkJCVwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkJZXhpdCAwOwkJCQkJCQlcCi0JZmk7KQkJCQkJCQkJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJCQmbHQ7ICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJmFtcDsmYW1wOyBcCi0JZGlmZiAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKCZsdDs6LmJwZi5vPV9sc2tlbCkpICZndDsgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFwKLQkJJCQoUk0pICQkQDsgXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCX0pICZhbXA7JmFtcDsgXAotCXJtIC1mICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pCi0KLSQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCk6ICUubHNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJCZsdDsgXTsgdGhlbgkJCVwKLQkJJCQoUk0pICQkQDsJCQkJCQlcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JCWV4aXQgMDsJCQkJCQkJXAotCWZpOykJCQkJCQkJCVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSkgKHNpZ25lZCldICQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICQkJmx0OyAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICZhbXA7JmFtcDsgXAotCWRpZmYgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkKExTS0VMX1NJR04pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKCZsdDs6LmJwZi5vPV9sc2tlbCkpICZndDsgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFwKLQkJJCQoUk0pICQkQDsgXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCX0pICZhbXA7JmFtcDsgXAotCXJtIC1mICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pCi0KLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJQotCi0jIC5TRUNPTkRFWFBBTlNJT04gaGVyZSBhbGxvd3MgdG8gY29ycmVjdGx5IGV4cGFuZCAlLWRlcHMgdmFyaWFibGVzIGFzIHByZXJlcXVpc2l0ZXMKLS5TRUNPTkRFWFBBTlNJT046Ci0kKFRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRCk6ICQoVFJVTk5FUl9PVVRQVVQpLyU6ICQkJCQoJS1kZXBzKSAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXAotCQlpZiBbICEgLWYgJCQkJGYgXTsgdGhlbgkJCQkJCVwKLQkJCSQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOwkJXAotCQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkJCWV4aXQgMDsJCQkJCQkJXAotCQlmaTsJCQkJCQkJCVwKLQlkb25lOykJCQkJCQkJCQlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAmYW1wOyZhbXA7IFwKLQlkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgJmFtcDsmYW1wOwlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpICZndDsgJCRAICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpICZndDsgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFwKLQkJJCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7CQkJXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCX0pICZhbXA7JmFtcDsJCQkJCQkJCQlcCi0Jcm0gLWYgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykKLQotIyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90Ci0jIGZ1bGwgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgY29ycmVzcG9uZGluZyAlLm8KLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlcwotIyBpbiBUUlVOTkVSX09VVFBVVCwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgotdnBhdGggJS5za2VsLmggJChUUlVOTkVSX09VVFBVVCkKLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKQotdnBhdGggJS5zdWJza2VsLmggJChUUlVOTkVSX09VVFBVVCkKLQotZW5kaWYKLQotIyBlbnN1cmUgd2Ugc2V0IHVwIHRlc3RzLmggaGVhZGVyIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UKLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpCi0kKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIgOj0geQotJChUUlVOTkVSX1RFU1RTX0hEUik6ICQoVFJVTk5FUl9URVNUU19ESVIpLyouYwotCSQkKGNhbGwgbXNnLFRFU1QtSERSLCQoVFJVTk5FUl9CSU5BUlkpLCQkQCkKLQkkJChzaGVsbCAoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7CQkJCQlcCi0JCSAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXCgodm9pZCk/XCkuKi9ERUZJTkVfVEVTVChcMikvcCYjMzk7CVwKLQkJCSQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgOwlcCi0JCSApICZndDsgJCRAKQotZW5kaWYKLQotJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYubwotJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMQotCi0jIGNvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzCi0jIE5vdGU6IHdlIGNkIGludG8gb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdCBpcyBmb3VuZAotJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOgkJCVwKLQkJICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jCQkJCVwKLQkJICAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZAotCSQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQCkKLQkkKFEpKGNkICQkKEBEKSAmYW1wOyZhbXA7ICQkKENDKSAtSS4gJCQoQ0ZMQUdTKSAtTU1EIC1NVCAkJEAgLWMgJChDVVJESVIpLyQkJmx0OyAkJChMRExJQlMpIC1vICQkKEBGKSkgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICQkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVRFU1QmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzIpKSkKLQkkJChpZiAkJChURVNUX05FRURTX0JURklEUyksCQkJCQkJXAotCQkkKFEpaWYgWyAtZiAkJEAgXTsgdGhlbgkJCQkJCVwKLQkJJChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzQ7QlRGSURTJiMzNDsgJiMzNDsgWyQoVFJVTk5FUl9CSU5BUlkpXSYjMzQ7ICYjMzQ7JCQobm90ZGlyICQkQCkmIzM0Oyk7IFwKLQkJJChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAOwlcCi0JCSQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDsJCVwKLQkJZmkpCi0KLSQoVFJVTk5FUl9URVNUX09CSlM6Lm89LmQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZDoJCQlcCi0JCQkgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jCQkJXAotCQkJICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKQkJCVwKLQkJCSAgICAkJChCUEZPQkopIHwgJChUUlVOTkVSX09VVFBVVCkJCVwKLQkJCSAgICAkKFRSVU5ORVJfQlBGX1NLRUxTKQkJCVwKLQkJCSAgICAkKFRSVU5ORVJfQlBGX0xTS0VMUykJCQlcCi0JCQkgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKQotCi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpCi1pbmNsdWRlICQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCkpCi1lbmRpZgotCi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnMKLSQoZm9yZWFjaCBOLCQocGF0c3Vic3QgJChUUlVOTkVSX09VVFBVVCkvJS5vLCUsJChUUlVOTkVSX0VYVFJBX09CSlMpKSwJXAotCSQoZXZhbCAkKFRSVU5ORVJfT1VUUFVUKS8kKE4pLm86IENGTEFHUyAmIzQzOz0gJCgkKE4pLmMtQ0ZMQUdTKSkpCi0KLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOgkJCQlcCi0JCSAgICAgICAlLmMJCQkJCQlcCi0JCSAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUykJCQkJXAotCQkgICAgICAgJChWRVJJRllfU0lHX0hEUikJCQkJXAotCQkgICAgICAgJChUUlVOTkVSX1RFU1RTX0hEUikJCQkJXAotCQkgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApCi0JJChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkJmx0OyAkJChMRExJQlMpIC1vICQkQAotCi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuYwotCSQkKGNhbGwgbXNnLExJQi1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJCZsdDsgJCQoTERMSUJTKSAtbyAkJEAKLQotIyBub24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhciwgd2UKLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKQotJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVCkKLWlmbmVxICgkMjokKE9VVFBVVCksOiQoc2hlbGwgcHdkKSkKLQkkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKQotCSQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpLwotZW5kaWYKLQotIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlcwotJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiB8ICQoVFJVTk5FUl9CUEZfT0JKUykKLQotJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkJXAotCQkJICAgICAkKFRSVU5ORVJfRVhUUkFfT0JKUykgJCQoQlBGT0JKKQkJXAotCQkJICAgICAkKFRSVU5ORVJfTElCX09CSlMpCQkJXAotCQkJICAgICAkKFRSVU5ORVJfQlBGVE9PTCkJCQkJXAotCQkJICAgICAkKE9VVFBVVCkvdmVyaXN0YXQJCQkJXAotCQkJICAgICB8ICQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhcwkJCVwKLQkJCSAgICAgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQoVFJVTk5FUl9URVNUX09CSlMpKSkKLQkkJChjYWxsIG1zZyxCSU5BUlksLCQkQCkKLQkkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRACi0JJChRKWxuIC1zZiAkKGlmICQyLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXAotCQkgICAkKE9VVFBVVCkvJChpZiAkMiwkMi8pYnBmdG9vbAotCi1lbmRlZgotCi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoCi1WRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oCi1WRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXIKLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW0KLQotJChWRVJJRklDQVRJT05fQ0VSVCkgJChQUklWQVRFX0tFWSk6ICQoVkVSSUZZX1NJR19TRVRVUCkKJiM0MzsjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdAomIzQzOyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZQomIzQzOyMgb3BlbnNzbCBpbnZvY2F0aW9ucyByYWNlOyB0aGUgcGF0dGVybiBmb3JtIGlzIGltcGxpY2l0bHkgZ3JvdXBlZCBldmVuCiYjNDM7IyB3aXRoIG1ha2UgJmx0OyA0LjMgKHNhbWUgd29ya2Fyb3VuZCBhcyB0aGUgdGVzdF9rbW9kcyBydWxlKS4KJiM0MzskKEJVSUxEX0RJUikvJS5wZW0gJChCVUlMRF9ESVIpLyUuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApCiAJJChRKW1rZGlyIC1wICQoQlVJTERfRElSKQogCSQoUSkkKFZFUklGWV9TSUdfU0VUVVApIGdlbmtleSAkKEJVSUxEX0RJUikKIApAQCAtODMzLDExNiAmIzQzOzQwOCwxNjIgQEAgTElCQVJFTkFfQlBGX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZQkJXAogCQkJCSBsaWJhcmVuYS9zZWxmdGVzdHMvKgkJXAogCQkJCSBsaWJhcmVuYS8qLmJwZi5vKQogCi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaAotCiAkKExJQkFSRU5BX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpCiAJJiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUykKIAogaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLCkKLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaAotQ0ZMQUdTICYjNDM7PSAtREhBU19CUEZfQVJFTkFfQVNBTgotCiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUykKIAkmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpCiBlbmRpZgogCi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLgotVFJVTk5FUl9URVNUU19ESVIgOj0gcHJvZ190ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jCQlcCi0JCQkgY2dyb3VwX2hlbHBlcnMuYwlcCi0JCQkgdHJhY2VfaGVscGVycy5jCVwKLQkJCSBuZXR3b3JrX2hlbHBlcnMuYwlcCi0JCQkgdGVzdGluZ19oZWxwZXJzLmMJXAotCQkJIGJ0Zl9oZWxwZXJzLmMJCVwKLQkJCSBjYXBfaGVscGVycy5jCQlcCi0JCQkgdW5wcml2X2hlbHBlcnMuYyAJXAotCQkJIHN5c2N0bF9oZWxwZXJzLmMJXAotCQkJIG5ldGxpbmtfaGVscGVycy5jCVwKLQkJCSBqaXRfZGlzYXNtX2hlbHBlcnMuYwlcCi0JCQkgaW9faGVscGVycy5jCQlcCi0JCQkgdGVzdF9sb2FkZXIuYwkJXAotCQkJIHhzay5jCQkJXAotCQkJIGRpc2FzbS5jCQlcCi0JCQkgZGlzYXNtX2hlbHBlcnMuYwlcCi0JCQkganNvbl93cml0ZXIuYyAJCVwKLQkJCSAkKFZFUklGWV9TSUdfSERSKQkJXAotCQkJIGZsb3dfZGlzc2VjdG9yX2xvYWQuaAlcCi0JCQkgaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmgJXAotCQkJIGJwZnRvb2xfaGVscGVycy5jCVwKLQkJCSB1c2R0XzEuYyB1c2R0XzIuYwlcCi0JCQkgJChMSUJBUkVOQV9TS0VMKQlcCi0JCQkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmMKLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZAkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCQkJXAotCQkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eQkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlCQkJCVwKLQkJICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkJCQkJXAotCQkgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUykJCQkJXAotCQkgICAgICAgaW1hX3NldHVwLnNoIAkJCQkJXAotCQkgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKQkJCQlcCi0JCSAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpCQlcCi0JCSAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pCi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUUwotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncykpCi0KLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuCi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEUKLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKQotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpCi0KLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVycwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7ZGVmaW5lIGdlbl90ZXN0c19oZHIKJiM0MzsJJChjYWxsIG1zZyxURVNULUhEUiwsJEApCiYjNDM7CSQoUSkoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7CQlcCiYjNDM7CSAgICAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXCgodm9pZCk/XCkuKi9ERUZJTkVfVEVTVChcMikvcCYjMzk7IFwKJiM0MzsJCSQoQEQpLyouYyB8IHNvcnQpICZndDsgJEAKJiM0MztlbmRlZgomIzQzOwomIzQzO3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYykKJiM0MzsJJChnZW5fdGVzdHNfaGRyKQomIzQzOwomIzQzO21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpCiYjNDM7CSQoZ2VuX3Rlc3RzX2hkcikKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVGVzdCBydW5uZXIgaW5zdGFuY2VzLCBvbmUgc3ViLW1ha2UgZWFjaCAoc2VlIE1ha2VmaWxlLnJ1bm5lcikuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzsjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cywgQlBGX0dDQyBhbmQgVEVTVF9LTU9EUyBhcmUgZXhwb3J0ZWQKJiM0MzsjIHRvIHRoZSBydW5uZXIgc3ViLW1ha2VzLiBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQKJiM0MzsjIHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MgQ0MgaW50byB0aGUgbGliYnBmL2JwZnRvb2wvcmVzb2x2ZV9idGZpZHMKJiM0MzsjIHN1Yi1idWlsZHMsIHdoaWNoIGNvbXB1dGUgdGhlaXIgb3duLiAoJiMzOTtleHBvcnQgTkFNRSYjMzk7IG9uIGFuIHVuZGVmaW5lZAomIzQzOyMgdmFyaWFibGUgY3JlYXRlcyBhbiBlbXB0eSBvbmUsIHNvIHRoZXNlIHN0YXkgYmVsb3cgdGhlIGRlZmluaXRpb25zLikKJiM0MztleHBvcnQgTExWTV9DRkxBR1MgTExWTV9MRExJQlMgTExWTV9MREZMQUdTIEJQRl9HQ0MgVEVTVF9LTU9EUwomIzQzOwomIzQzO1JVTk5FUl9NQUtFIDo9ICQoTUFLRSkgLWYgTWFrZWZpbGUucnVubmVyIE9VVFBVVD0kKE9VVFBVVCkgQ0M9JiMzOTskKENDKSYjMzk7CiYjNDM7CiYjNDM7IyBFdmVyeXRoaW5nIGEgcnVubmVyIGluc3RhbmNlIHJlZmVyZW5jZXMgYnV0IGRvZXMgbm90IGtub3cgaG93IHRvIGJ1aWxkLgomIzQzO1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKQkJXAomIzQzOwkJICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUykJCQlcCiYjNDM7CQkgICQoT1VUUFVUKS92ZXJpc3RhdAkJCQkJXAomIzQzOwkJICAkKFZFUklGWV9TSUdfSERSKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKQlcCiYjNDM7CQkgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCQlcCiYjNDM7CQkgIHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaAkJCVwKJiM0MzsJCSAgJChIRUxQRVJfT0JKUykJCQkJCVwKJiM0MzsJCSAgJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCVwKJiM0MzsJCSAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlCQlcCiYjNDM7CQkgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUykKJiM0MzsKJiM0MztGT1JDRToKJiM0MzsKJiM0MzsjIFRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBza2VsZXRvbnMgYXJlIGFsc28gaW5wdXRzIG9mIGJlbmNoLCB0ZXN0X21hcHMsCiYjNDM7IyB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHA7ICYjMzQ7ZGVmYXVsdC1za2VscyYjMzQ7IGJ1aWxkcyBqdXN0IHRob3NlCiYjNDM7IyB3aXRob3V0IHRoZSB0ZXN0X3Byb2dzIHRlc3Qgb2JqZWN0cyBhbmQgYmluYXJ5LgomIzQzOy5QSE9OWTogZGVmYXVsdC1za2VscwomIzQzO2RlZmF1bHQtc2tlbHM6ICQoUlVOTkVSX1BSRVJFUVMpCiYjNDM7CSYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5OwlcCiYjNDM7CQlCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djMmIzM5OwkJXAomIzQzOwkJQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUyBza2VscwomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzOiAkKFJVTk5FUl9QUkVSRVFTKSBkZWZhdWx0LXNrZWxzIEZPUkNFCiYjNDM7CSYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5OwlcCiYjNDM7CQlCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djMmIzM5OwkJXAomIzQzOwkJQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUwomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLW5vX2FsdTMyOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5OwlcCiYjNDM7CQlCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djImIzM5OwomIzQzOwogaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLCkKLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEUKLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTCi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGNwdXY0KSkKJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy1jcHV2NDogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWNwdXY0IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFwKJiM0MzsJCUJQRl9DQz0mIzM5OyQoQ0xBTkcpJiMzOTsgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChDTEFOR19TWVNfSU5DTFVERVMpJiMzOTsJXAomIzQzOwkJQlBGX0NDX0ZMQUdTPSYjMzk7LU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0JiMzOTsJCVwKJiM0MzsJCUJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKIGVuZGlmCiAKLSMgRGVmaW5lIHRlc3RfcHJvZ3MgQlBGLUdDQy1mbGF2b3JlZCB0ZXN0IHJ1bm5lci4KIGlmbmVxICgkKEJQRl9HQ0MpLCkKLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKQotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSkKLWVuZGlmCi0KLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci4KLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMKLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0KLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0KLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9Ci0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKQotCi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLgotIyBJdCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tCi0jIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3QKLSMgZXhwbGljaXRseSBkZWZpbmluZyBhbGwgdGhlIHJ1bGVzIGV4cGxpY2l0bHkuCiYjNDM7IyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2MmIzM5O3Mgb3duCiYjNDM7IyBzZWFyY2ggcGF0aCBsYWNrcyB0aGUgaG9zdCYjMzk7cyBhc20tZ2VuZXJpYy8gaGVhZGVycy4KJiM0MztHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChCUEZfR0NDKSYjMzk7IEJQRl9DQ19NU0c9R0NDLUJQRgkJCQlcCiYjNDM7CQlCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChHQ0NfU1lTX0lOQ0xVREVTKSYjMzk7CQkJCVwKJiM0MzsJCUJQRl9DQ19GTEFHUz0mIzM5Oy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJiMzOTsKJiM0MztlbmRpZgomIzQzOwomIzQzOyMgdGVzdF9tYXBzIGNvbXBpbGVzIG1hcF90ZXN0cy8qLmMgYWdhaW5zdCB0aGUgZGVmYXVsdCBmbGF2b3ImIzM5O3Mgc2tlbGV0b25zCiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgbWFwX3Rlc3RzL3Rlc3RzLmggZGVmYXVsdC1za2VscyBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9tYXBzIEZMQVZPUj0gVEVTVFNfRElSPW1hcF90ZXN0cwomIzQzOwomIzQzOyMgRGVmYXVsdC1mbGF2b3IgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBjb25zdW1lZCBieSB0YXJnZXRzIGluIHRoaXMKJiM0MzsjIE1ha2VmaWxlIChhbmQgYnkgbGliLm1rJiMzOTtzIGluc3RhbGwgcnVsZSkgYXJlIHByb2R1Y2VkIGJ5IHRoZSBydW5uZXIKJiM0MzsjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlCiYjNDM7IyBtYWtlcyB0aGVtIGF2YWlsYWJsZSBoZXJlIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHJ1bm5lciYjMzk7cyBydWxlcy4KJiM0MztERUZBVUxUX0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgcHJvZ3MvJS5jLCQoT1VUUFVUKS8lLmJwZi5vLCQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChERUZBVUxUX0JQRl9PQkpTKQomIzQzOwomIzQzO0JFTkNIX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sCQkJCQlcCiYjNDM7CSAgICAgICB0ZXN0X292ZXJoZWFkLnNrZWwuaCB0cmlnZ2VyX2JlbmNoLnNrZWwuaAkJXAomIzQzOwkgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmgJCVwKJiM0MzsJICAgICAgIGJsb29tX2ZpbHRlcl9iZW5jaC5za2VsLmggYnBmX2xvb3BfYmVuY2guc2tlbC5oCQlcCiYjNDM7CSAgICAgICBzdHJuY21wX2JlbmNoLnNrZWwuaCBicGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcCiYjNDM7CSAgICAgICBsb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaAkJCQlcCiYjNDM7CSAgICAgICBsb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9iZW5jaC5za2VsLmgJCVwKJiM0MzsJICAgICAgIGJlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLnNrZWwuaAkJCVwKJiM0MzsJICAgICAgIGJwZl9oYXNobWFwX2xvb2t1cC5za2VsLmggaHRhYl9tZW1fYmVuY2guc2tlbC5oCQlcCiYjNDM7CSAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmgJCVwKJiM0MzsJICAgICAgIGxwbV90cmllX2JlbmNoLnNrZWwuaCBscG1fdHJpZV9tYXAuc2tlbC5oCQlcCiYjNDM7CSAgICAgICBicGZfbm9wX2JlbmNoLnNrZWwuaCB4ZHBfbGJfYmVuY2guc2tlbC5oKQomIzQzO1RPUF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLHhza194ZHBfcHJvZ3Muc2tlbC5oCQlcCiYjNDM7CSAgICAgeGRwX2h3X21ldGFkYXRhLnNrZWwuaCB4ZHBfZmVhdHVyZXMuc2tlbC5oCQkJXAomIzQzOwkgICAgIHRlc3RfY29yZV9leHRlcm4uc2tlbC5oKSAkKEJFTkNIX1NLRUxTKQomIzQzOwomIzQzOyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246ICYjMzQ7ZGVmYXVsdC1za2VscyYjMzQ7IChyZSlidWlsZHMgdGhlIGZpbGUgdmlhIHRoZQomIzQzOyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHMKJiM0MzsjIHNlZSBmcmVzaCB0aW1lc3RhbXBzIHdpdGhpbiB0aGUgc2FtZSBpbnZvY2F0aW9uLiBEZXBlbmRlbnRzIHN0aWxsCiYjNDM7IyByZWJ1aWxkIG9uIG10aW1lIG9ubHkgLSB0aGUgcGhvbnkgcHJlcmVxdWlzaXRlIGRvZXMgbm90IGNhc2NhZGUuCiYjNDM7JChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgOwomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzOyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQKJiM0MzsjIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbSB0aGVtIChlLmcuLCBpdHMgdGVzdHMuaCB1c2VzIGEgY29tcGxldGVseQomIzQzOyMgZGlmZmVyZW50IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3QgZGVmaW5pbmcgaXRzIHJ1bGVzIGV4cGxpY2l0bHkuCiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmMKLQkkKHNoZWxsICggY2QgdmVyaWZpZXIvOyBcCi0JCSAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFwKLQkJICBlY2hvICYjMzk7I2lmZGVmIEZJTExfQVJSQVkmIzM5OzsgXAotCQkgIGxzICouYyAyJmd0OyAvZGV2L251bGwgfCBzZWQgLWUgJiMzOTtzQFwoLipcKUAjaW5jbHVkZSBcJiMzNDtcMVwmIzM0O0AmIzM5OzsgXAotCQkgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcCi0JCSkgJmd0OyB2ZXJpZmllci90ZXN0cy5oKQotJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKQomIzQzOwkkKFEpKCBjZCB2ZXJpZmllci87IFwKJiM0MzsJICAgICAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFwKJiM0MzsJICAgICAgZWNobyAmIzM5OyNpZmRlZiBGSUxMX0FSUkFZJiMzOTs7IFwKJiM0MzsJICAgICAgbHMgKi5jIDImZ3Q7IC9kZXYvbnVsbCB8IHNlZCAtZSAmIzM5O3NAXCguKlwpQCNpbmNsdWRlIFwmIzM0O1wxXCYjMzQ7QCYjMzk7OyBcCiYjNDM7CSAgICAgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcCiYjNDM7CSAgICApICZndDsgdmVyaWZpZXIvdGVzdHMuaAomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSikKIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiAJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRACiAKICMgSW5jbHVkZSBmaW5kX2JpdC5jIHRvIGNvbXBpbGUgeHNreGNlaXZlci4KIEVYVFJBX1NSQyA6PSAkKFRPT0xTRElSKS9saWIvZmluZF9iaXQuYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmMgcHJvZ190ZXN0cy90ZXN0X3hzay5oCi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpCiYjNDM7JChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKQogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKIAkkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEAKIAotJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaCB8ICQoT1VUUFVUKQomIzQzOyQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmgKIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiAJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRACiAKLSQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaCB8ICQoT1VUUFVUKQomIzQzOyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaAogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKIAkkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEAKIApAQCAtOTU0LDExICYjNDM7NTc1LDE4IEBAICQoT1VUUFVUKS90ZXN0X2NwcDogdGVzdF9jcHAuY3BwICQoT1VUUFVUKS90ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCAkKEJQRk9CSikKIAkkKGNhbGwgbXNnLENYWCwsJEApCiAJJChRKSQoQ1hYKSAkKENYWEZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuY3BwLCReKSAkKExETElCUykgLW8gJEAKIAotIyBCZW5jaG1hcmsgcnVubmVyCi0kKE9VVFBVVCkvYmVuY2hfJS5vOiBiZW5jaHMvYmVuY2hfJS5jIGJlbmNoLmggJChCUEZPQkopCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpbgomIzQzOyMgYmVuY2hzLzogZXZlcnkgYmVuY2hzL2JlbmNoXyouYyBpcyBjb21waWxlZCBhbmQgbGlua2VkIGluLgomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7QkVOQ0hfT0JKUyA6PSAkKHNvcnQgJChwYXRzdWJzdCBiZW5jaHMvJS5jLCQoT1VUUFVUKS8lLm8sJCh3aWxkY2FyZCBiZW5jaHMvYmVuY2hfKi5jKSkpCiYjNDM7CiYjNDM7JChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHMKIAkkKGNhbGwgbXNnLENDLCwkQCkKLQkkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJEA7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CRU5DSCYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTsgMSZndDsmYW1wOzIpKQomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpCiYjNDM7CiYjNDM7IyBiZW5jaG1hcmstc3BlY2lmaWMgZ2VuZXJhdGVkLXNrZWxldG9uIGRlcGVuZGVuY2llcwogJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vOiAkKE9VVFBVVCkvdGVzdF9vdmVyaGVhZC5za2VsLmgKICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm86ICQoT1VUUFVUKS90cmlnZ2VyX2JlbmNoLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm86ICQoT1VUUFVUKS9yaW5nYnVmX2JlbmNoLnNrZWwuaCBcCkBAIC05NzgsMzcgJiM0Mzs2MDYsMTkgQEAgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vOiAkKE9VVFBVVCkvbHBtX3RyaWVfYmVuY2guc2tlbC5oICQoT1VUUFVUKS9scG1fdHIKICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm86ICQoT1VUUFVUKS9icGZfbm9wX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmgKICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubzogJChPVVRQVVQpL3hkcF9sYl9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oCiAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vOiBiZW5jaF9icGZfdGltaW5nLmgKJiM0MzsKICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKQogJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgJiM0Mzs9IC1sbQotJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcCi0JCSAkKFRFU1RJTkdfSEVMUEVSUykgXAotCQkgJChUUkFDRV9IRUxQRVJTKSBcCi0JCSAkKENHUk9VUF9IRUxQRVJTKSBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfY291bnQubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYmxvb21fZmlsdGVyX21hcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfbG9vcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9zdHJuY21wLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2UubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2UubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2h0YWJfbWVtLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vIFwKLQkJICQoT1VUUFVUKS91c2R0XzEubyBcCi0JCSAkKE9VVFBVVCkvdXNkdF8yLm8gXAotCQkgIwomIzQzOyQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8JCVwKJiM0MzsJCSAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm8JXAomIzQzOwkJICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm8JXAomIzQzOwkJICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vCVwKJiM0MzsJCSAkKE9VVFBVVCkvdXNkdF8xLm8JCVwKJiM0MzsJCSAkKE9VVFBVVCkvdXNkdF8yLm8JCVwKJiM0MzsJCSAkKEJFTkNIX09CSlMpCiAJJChjYWxsIG1zZyxCSU5BUlksLCRAKQotCSQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtTElOSyYjMzk7ICYjMzk7JChub3RkaXIgJEApIChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcCiYjNDM7CQkkKGNhbGwgc2tpcF9vbl9mYWlsLExJTkssLChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSkKIAogIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZToKICMKQEAgLTEwMzYsNyAmIzQzOzY0Niw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUikJCQlcCiAJCQkgICAgICAgbGlidXJhbmRvbV9yZWFkLnNvKQkJCVwKIAkkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0cwogCi0uUEhPTlk6IGRvY3MgZG9jcy1jbGVhbgomIzQzOy5QSE9OWTogZG9jcyBkb2NzLWNsZWFuIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4KIAogIyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3IKIC5ERUxFVEVfT05fRVJST1I6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uM2E0OTYyYjA1ODVmZWMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzCkBAIC0wLDAgJiM0MzsxLDE3MyBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cwomIzQzOyMgYnVpbGQsIGluY2x1ZGVkIGJ5IGJvdGggTWFrZWZpbGUgYW5kIE1ha2VmaWxlLnJ1bm5lci4gRGVmaW5pdGlvbnMKJiM0MzsjIGZvbGxvdyB0aGUgb3JkZXIgdGhleSBoYWQgaW4gdGhlIE1ha2VmaWxlIGJlZm9yZSB0aGUgc3BsaXQuCiYjNDM7CiYjNDM7Q1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzOwomIzQzO09CSkNPUFkgPz0gJChDUk9TU19DT01QSUxFKW9iamNvcHkKJiM0MzsKJiM0MztDVVJESVIgOj0gJChhYnNwYXRoIC4pCiYjNDM7CiYjNDM7VE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKQomIzQzO0xJQkRJUiA6PSAkKFRPT0xTRElSKS9saWIKJiM0MztCUEZESVIgOj0gJChMSUJESVIpL2JwZgomIzQzO1RPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGUKJiM0MztUT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGUKJiM0MztCUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sCiYjNDM7QVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGkKJiM0MztpZm5lcSAoJChPKSwpCiYjNDM7R0VORElSIDo9ICQoTykvaW5jbHVkZS9nZW5lcmF0ZWQKJiM0MztlbHNlCiYjNDM7R0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZCkKJiM0MztlbmRpZgomIzQzO0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaAomIzQzO1BLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWcKJiM0MzsKJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLCkKJiM0MzsgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFIKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmZGVmIEFTQU4KJiM0MztTQU5fQ0ZMQUdTIAk/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKJiM0MztlbHNlCiYjNDM7U0FOX0NGTEFHUwk/PQomIzQzO2VuZGlmCiYjNDM7U0FOX0xERkxBR1MJPz0gJChTQU5fQ0ZMQUdTKQomIzQzO1JFTEVBU0UJCT89CiYjNDM7T1BUX0ZMQUdTCT89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKQomIzQzOwomIzQzO0xJQkVMRl9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyJmd0Oy9kZXYvbnVsbCkKJiM0MztMSUJFTEZfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyJmd0Oy9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKQomIzQzOwomIzQzOyMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yCiYjNDM7IyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXMKJiM0MzsjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLgomIzQzO0JQRl9TVFJJQ1RfQlVJTEQgPz0gMQomIzQzO1BFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKQomIzQzOwomIzQzOyMgUGVybWlzc2l2ZS1tb2RlIHJlY2lwZSBzdWZmaXg6IG9uIGZhaWx1cmUsIHJlbW92ZSB0aGUgdGFyZ2V0LCBlbWl0IGEKJiM0MzsjIFNLSVAgbWFya2VyIGFuZCByZXBvcnQgc3VjY2VzcyBzbyB0aGUgcmVzdCBvZiB0aGUgYnVpbGQgY29udGludWVzLgomIzQzOyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pCiYjNDM7IyAkKDIpIC0gb3B0aW9uYWwgZXh0cmEgZmlsZXMgdG8gcmVtb3ZlIGFsb25nc2lkZSB0aGUgdGFyZ2V0CiYjNDM7IyAkKDMpIC0gb3B0aW9uYWwgbm90ZSBhcHBlbmRlZCB0byB0aGUgU0tJUCBtZXNzYWdlCiYjNDM7c2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXAomIzQzOwlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtJCgxKSYjMzk7ICYjMzk7JChub3RkaXIgJEApJChpZiAkKDMpLCAkKDMpKSYjMzk7IDEmZ3Q7JmFtcDsyOyB9KQomIzQzOwomIzQzO2lmZXEgKCQoc3JjdHJlZSksKQomIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoQ1VSRElSKSkpCiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MztDT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExCQkJCVwKJiM0MzsJICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCQkJCVwKJiM0MzsJICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQkJCQlcCiYjNDM7CSAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpCQkJXAomIzQzOwkgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUikJCVwKJiM0MzsJICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpCVwKJiM0MzsJICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlCiYjNDM7TERGTEFHUyAmIzQzOz0gJChTQU5fTERGTEFHUykKJiM0MztMRExJQlMgJiM0Mzs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZAomIzQzOwomIzQzO1BDQVBfQ0ZMQUdTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDImZ3Q7L2Rldi9udWxsICZhbXA7JmFtcDsgZWNobyAmIzM0Oy1EVFJBRkZJQ19NT05JVE9SPTEmIzM0OykKJiM0MztQQ0FQX0xJQlMJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDImZ3Q7L2Rldi9udWxsKQomIzQzO0xETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpCiYjNDM7IyBVbmxpa2UgdGhlIHByZS1zcGxpdCBNYWtlZmlsZSwgdGhpcyBmaWxlIGlzIGluY2x1ZGVkIGFmdGVyIC4uL2xpYi5tawomIzQzOyMgKHRvcCBsZXZlbCkgb3Igd2l0aG91dCBpdCAocnVubmVyKSwgc28gQ09NTU9OX0NGTEFHUyBpcyBwcmVwZW5kZWQgdG8KJiM0MzsjIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBpbmNsdWRlLXNlYXJjaCBvcmRlci4KJiM0MztMSUJfTUtfQ0ZMQUdTIDo9ICQoQ0ZMQUdTKQomIzQzO0NGTEFHUyA9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUykgJChMSUJfTUtfQ0ZMQUdTKQomIzQzOwomIzQzO2lmbmVxICgkKExMVk0pLCkKJiM0MzsjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmcKJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KQomIzQzO0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAmIzM5O2ludCB4OyYjMzk7IHwgXAomIzQzOwkkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcCiYjNDM7CS1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFwKJiM0MzsJLXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGVjaG8gMSkKJiM0MzsKJiM0MztTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHMKJiM0MztCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGQKJiM0MztJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlCiYjNDM7QlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmEKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7SE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKS9ob3N0CiYjNDM7SE9TVF9TQ1JBVENIX0RJUgk6PSAkKE9VVFBVVCkvaG9zdC10b29scwomIzQzO0hPU1RfSU5DTFVERV9ESVIJOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlCiYjNDM7ZWxzZQomIzQzO0hPU1RfQlVJTERfRElSCQk6PSAkKEJVSUxEX0RJUikKJiM0MztIT1NUX1NDUkFUQ0hfRElSCTo9ICQoU0NSQVRDSF9ESVIpCiYjNDM7SE9TVF9JTkNMVURFX0RJUgk6PSAkKElOQ0xVREVfRElSKQomIzQzO2VuZGlmCiYjNDM7SE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCiYjNDM7UkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHMKJiM0MzsKJiM0MztERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7Q1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKQomIzQzO1VTRV9CT09UU1RSQVAgOj0gJiMzNDsmIzM0OwomIzQzO2Vsc2UKJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpCiYjNDM7VVNFX0JPT1RTVFJBUCA6PSAmIzM0O2Jvb3RzdHJhcC8mIzM0OwomIzQzO2VuZGlmCiYjNDM7CiYjNDM7QlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTCkKJiM0MzsKJiM0MzsjIEdldCBDbGFuZyYjMzk7cyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnkKJiM0MzsjICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgJiMzNDttaXNzaW5nJiMzNDsgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsCiYjNDM7IyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuCiYjNDM7IwomIzQzOyMgVXNlICYjMzk7LWlkaXJhZnRlciYjMzk7OiBEb24mIzM5O3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZQomIzQzOyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy4KJiM0MztkZWZpbmUgZ2V0X3N5c19pbmNsdWRlcwomIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gJmx0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MSBcCiYjNDM7CXwgc2VkIC1uICYjMzk7LyZsdDsuLi4mZ3Q7IHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXCgvLipcKXwtaWRpcmFmdGVyIFwxfHAgfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWQmIzM0OywgJCQzLCAkJDMpfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZCYjMzQ7LCAkJDMpfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgLUUgJiMzOTtNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRCVzPSVzICYjMzQ7LCAkJDIsICQkMyl9JiMzOTspCiYjNDM7ZW5kZWYKJiM0MzsKJiM0MzsjIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy4KJiM0MztJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IFwKJiM0MzsJCQlncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspCiYjNDM7TUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pCiYjNDM7QlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYikKJiM0MzsKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7Q0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MzsjIEltbWVkaWF0ZSBvbiBwdXJwb3NlOiBleHBhbmRpbmcgZ2V0X3N5c19pbmNsdWRlcyBmb3JrcyBzZXZlcmFsIHNoZWxscy4KJiM0MztDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpCiYjNDM7QlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKQlcCiYjNDM7CSAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKQkJCVwKJiM0MzsJICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlCQkJCVwKJiM0MzsJICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpCQkJXAomIzQzOwkgICAgIC1zdGQ9Z251MTEJCSAJCQkJCVwKJiM0MzsJICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyAJCQkJCVwKJiM0MzsJICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZwkJCQkJXAomIzQzOwkgICAgIC1mbXMtZXh0ZW5zaW9ucwkJCQkJCVwKJiM0MzsJICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlcwkJCVwKJiM0MzsJICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlcwkJCQkJXAomIzQzOwkgICAgICMKJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZQomIzQzOwomIzQzO0NMQU5HX0NGTEFHUyA9ICQoQ0xBTkdfU1lTX0lOQ0xVREVTKQomIzQzOwomIzQzO1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKJiM0MztWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oCiYjNDM7VkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyCiYjNDM7UFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbQomIzQzOwomIzQzO0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oCiYjNDM7CiYjNDM7aWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLCkKJiM0MztMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmgKJiM0MztDRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOCiYjNDM7ZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5jZWQ0NGFhZDdlZGVkNAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIKQEAgLTAsMCAmIzQzOzEsMzE1IEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIEJ1aWxkIG9uZSBCUEYgdGVzdC1ydW5uZXIgaW5zdGFuY2U6IHRlc3RfcHJvZ3MsIG9uZSBvZiBpdHMgZmxhdm9ycwomIzQzOyMgKG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYyksIG9yIHRlc3RfbWFwcy4KJiM0MzsjCiYjNDM7IyBFYWNoIGluc3RhbmNlIGlzIGFuIGluZGVwZW5kZW50IHN1Yi1tYWtlIHdpdGggaXRzIG93biBvdXRwdXQgZGlyZWN0b3J5LAomIzQzOyMgc28gZXZlcnl0aGluZyBoZXJlIGlzIHdyaXR0ZW4gaW4gcGxhaW4gbWFrZSAtIG5vICQkLWVzY2FwaW5nLCBubyBldmFsLAomIzQzOyMgbm8gcGVyLWZsYXZvciBndWFyZHMuIFRoaXMgZmlsZSBpcyBhbHdheXMgaW52b2tlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSwKJiM0MzsjIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkIHByZXJlcXVpc2l0ZXMgKGxpYmJwZiwgYnBmdG9vbCwgdm1saW51eC5oLAomIzQzOyMgdmVyaXN0YXQsIGhlbHBlciBvYmplY3RzLCBzaWduaW5nIGtleSwgZ2VuZXJhdGVkIHRlc3RzLmgsIGV4dHJhCiYjNDM7IyBiaW5hcmllcykgYXJlIGJ1aWx0IGJ5IHRoZSBtYWluIE1ha2VmaWxlICpiZWZvcmUqIHRoaXMgb25lIHJ1bnMgYW5kIGFyZQomIzQzOyMgcmVmZXJlbmNlZCBiZWxvdyBhcyBwbGFpbiBmaWxlcy4KJiM0MzsjCiYjNDM7IyBQYXJhbWV0ZXJzIChhbGwgcGFzc2VkIG9uIHRoZSBzdWItbWFrZSBjb21tYW5kIGxpbmUpOgomIzQzOyMgICBPVVRQVVQgICAgICBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBzZWxmdGVzdHMgb3V0cHV0IGRpcmVjdG9yeQomIzQzOyMgICBSVU5ORVIgICAgICBiYXNlIGJpbmFyeSBuYW1lOiB0ZXN0X3Byb2dzIHwgdGVzdF9tYXBzCiYjNDM7IyAgIEZMQVZPUiAgICAgIGZsYXZvciBzdWZmaXg6IGVtcHR5IHwgbm9fYWx1MzIgfCBjcHV2NCB8IGJwZl9nY2MKJiM0MzsjICAgVEVTVFNfRElSICAgZGlyZWN0b3J5IHdpdGggdGhlIHRlc3Qgc291cmNlczogcHJvZ190ZXN0cyB8IG1hcF90ZXN0cwomIzQzOyMgICBCUEZfQ0MgICAgICBjb21waWxlciBmb3IgcHJvZ3MvKi5jIEJQRiBvYmplY3RzICgkKENMQU5HKSBvcgomIzQzOyMgICAgICAgICAgICAgICAkKEJQRl9HQ0MpKTsgZW1wdHkgZm9yIHRlc3RfbWFwcywgd2hpY2ggYnVpbGRzIG5vbmUKJiM0MzsjICAgQlBGX0NDX01TRyAgYnVpbGQtbG9nIHRhZzogQ0xORy1CUEYgfCBHQ0MtQlBGCiYjNDM7IyAgIEJQRl9DQ19GTEFHUwomIzQzOyMgICAgICAgICAgICAgICBjb21waWxlci1zcGVjaWZpYyBmbGFncyAoLU8yLCB0YXJnZXQvLW1jcHUgb3IgZ2NjIGtub2JzKQomIzQzOyMgICBCUEZfU1lTX0lOQ0xVREVTCiYjNDM7IyAgICAgICAgICAgICAgIHN5c3RlbSBpbmNsdWRlIGZsYWdzIG1hdGNoaW5nIEJQRl9DQwomIzQzOyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKQomIzQzOyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpCiYjNDM7IyAgIExMVk1fQ0ZMQUdTL0xMVk1fTERMSUJTL0xMVk1fTERGTEFHUwomIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlCiYjNDM7CiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlCiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2gKJiM0MztpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZQomIzQzOwomIzQzOyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuCiYjNDM7aWZlcSAoJChWKSwxKQomIzQzO1EgPQomIzQzO21zZyA9CiYjNDM7ZWxzZQomIzQzO1EgPSBACiYjNDM7bXNnID0gQHByaW50ZiAmIzM5OyAgJS04cyVzICVzJXNcbiYjMzk7ICYjMzQ7JCgxKSYjMzQ7ICYjMzQ7JChpZiAkKDIpLCBbJCgyKV0pJiMzNDsgJiMzNDskKG5vdGRpciAkKDMpKSYjMzQ7ICYjMzQ7JChpZiAkKDQpLCAkKDQpKSYjMzQ7OwomIzQzO01BS0VGTEFHUyAmIzQzOz0gLS1uby1wcmludC1kaXJlY3RvcnkKJiM0MztlbmRpZgomIzQzOwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzCiYjNDM7CiYjNDM7IyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay4KJiM0MztDRkxBR1MgJiM0Mzs9IC1EX0dOVV9TT1VSQ0U9CiYjNDM7Q0ZMQUdTICYjNDM7PSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMKJiM0MztDRkxBR1MgJiM0Mzs9ICQoVVNFUkNGTEFHUykKJiM0MztMREZMQUdTICYjNDM7PSAkKFVTRVJMREZMQUdTKQomIzQzO2lmbmVxICgkKExMVk0pLCkKJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyCiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWdudS12YXJpYWJsZS1zaXplZC10eXBlLW5vdC1hdC1lbmQKJiM0MztlbmRpZgomIzQzOwomIzQzO0JJTkFSWSA6PSAkKFJVTk5FUikkKGlmICQoRkxBVk9SKSwtJChGTEFWT1IpKQomIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKQomIzQzOwomIzQzO2FsbDogJChPVVRQVVQpLyQoQklOQVJZKQomIzQzOy5QSE9OWTogYWxsCiYjNDM7CiYjNDM7IyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3IKJiM0MzsuREVMRVRFX09OX0VSUk9SOgomIzQzOwomIzQzOyMgUGVybWlzc2l2ZSBza2lwLW9uLWZhaWx1cmUgb2YgaW5kaXZpZHVhbCB0ZXN0cyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kCiYjNDM7IyBpdHMgZmxhdm9ycyBvbmx5OyB0ZXN0X21hcHMgdXNlcyBzdHJvbmcgY3Jvc3Mtb2JqZWN0IHJlZmVyZW5jZXMgYW5kIGtlZXBzCiYjNDM7IyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuCiYjNDM7UEVSTUlTU0lWRV9URVNUUyA6PSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MsJChSVU5ORVIpKSwkKFBFUk1JU1NJVkUpKQomIzQzOwomIzQzOyQoUkRJUik6CiYjNDM7CSQoY2FsbCBtc2csTUtESVIsLCRAKQomIzQzOwkkKFEpbWtkaXIgLXAgJEAKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgUGVyLXJ1bm5lciBzb3VyY2VzCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MztpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncykKJiM0MztFWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYyBjZ3JvdXBfaGVscGVycy5jIHRyYWNlX2hlbHBlcnMuYwkJXAomIzQzOwkJIG5ldHdvcmtfaGVscGVycy5jIHRlc3RpbmdfaGVscGVycy5jIGJ0Zl9oZWxwZXJzLmMJXAomIzQzOwkJIGNhcF9oZWxwZXJzLmMgdW5wcml2X2hlbHBlcnMuYyBzeXNjdGxfaGVscGVycy5jCVwKJiM0MzsJCSBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmMJXAomIzQzOwkJIHRlc3RfbG9hZGVyLmMgeHNrLmMgZGlzYXNtLmMgZGlzYXNtX2hlbHBlcnMuYwkJXAomIzQzOwkJIGpzb25fd3JpdGVyLmMgYnBmdG9vbF9oZWxwZXJzLmMgdXNkdF8xLmMgdXNkdF8yLmMKJiM0MztMSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jCiYjNDM7RVhUUkFfSERSUyA6PSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmgJCVwKJiM0MzsJICAgICAgJChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTCkKJiM0MztFWFRSQV9GSUxFUyA6PSAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc28JXAomIzQzOwkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlCQlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpCQkJCQlcCiYjNDM7CSAgICAgICAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpCQkJXAomIzQzOwkgICAgICAgaW1hX3NldHVwLnNoICQoVkVSSUZZX1NJR19TRVRVUCkJCQkJXAomIzQzOwkgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKQkJCVwKJiM0MzsJICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubykKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpCiYjNDM7RVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuYwomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluCiYjNDM7IyBNYWtlZmlsZTogaGVscGVyIG9iamVjdHMgdGhlIG1haW4gTWFrZWZpbGUgYWxzbyB1c2VzIChhbmQgbGlzdHMgaW4gdGhlCiYjNDM7IyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLAomIzQzOyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLiBUaGlzCiYjNDM7IyBob2xkcyBiZWNhdXNlIHRoZSBtYWluIE1ha2VmaWxlJiMzOTtzIGhlbHBlci1vYmplY3QgcnVsZSBkZXBlbmRzIG9uIGEKJiM0MzsjIHN1cGVyc2V0IG9mIHRoZSBwcmVyZXF1aXNpdGVzIHRoZSBFWFRSQV9PQkpTIHJ1bGUgdXNlcyBoZXJlIC0ga2VlcAomIzQzOyMgdGhlIHR3byBsaXN0cyBpbiBzeW5jIChzZWUgdGhlIGludmFyaWFudCBjb21tZW50IHRoZXJlKS4KJiM0MzsKJiM0MztURVNUU19IRFIgOj0gJChURVNUU19ESVIpL3Rlc3RzLmgKJiM0MzsKJiM0MztURVNUX1NSQ1MgIDo9ICQobm90ZGlyICQod2lsZGNhcmQgJChURVNUU19ESVIpLyouYykpCiYjNDM7VEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSkKJiM0MztURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKQomIzQzO0VYVFJBX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChmaWx0ZXIgJS5jLCQoRVhUUkFfU09VUkNFUykpKQomIzQzO0xJQl9PQkpTICAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChMSUJfU09VUkNFUykpCiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2lmbmVxICgkKEJQRl9DQyksKQomIzQzOwomIzQzO0JQRl9TUkNTIDo9ICQobm90ZGlyICQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpCiYjNDM7CiYjNDM7IyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbi4KJiM0MztTS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jCiYjNDM7CiYjNDM7TFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIAlcCiYjNDM7CWNvcmVfa2Vybi5jIGNvcmVfa2Vybl9vdmVyZmxvdy5jIHRlc3RfcmluZ2J1Zi5jCQkJXAomIzQzOwl0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXAomIzQzOwl0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmMKJiM0MzsKJiM0MztMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuYwomIzQzOwomIzQzOyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZQomIzQzO0xTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFwKJiM0MzsJa2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYwomIzQzO1NLRUxfQkxBQ0tMSVNUICYjNDM7PSAkKExTS0VMUykgJChMU0tFTFNfU0lHTkVEKQomIzQzOwomIzQzOyMgU2tlbGV0b25zIG1hZGUgYnkgbGlua2luZyBtdWx0aXBsZSBCUEYgb2JqZWN0cyB0b2dldGhlci4gVGhlICUtZGVwcwomIzQzOyMgbWFwcGluZyBpcyB0aGUgb25seSBoYW5kLW1haW50YWluZWQgbWV0YWRhdGE6IGl0IGNhbm5vdCBiZSBkZXJpdmVkIGZyb20KJiM0MzsjIHRoZSBzb3VyY2VzLgomIzQzO3Rlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm8KJiM0MztsaW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vCiYjNDM7bGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYubwomIzQzO2xpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm8KJiM0MzsjIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZQomIzQzOyMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi4KJiM0Mzt0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vCiYjNDM7dGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vCiYjNDM7dGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vCiYjNDM7dHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCiYjNDM7dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KJiM0Mzt0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwomIzQzO3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KJiM0MzsKJiM0MztMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oCQlcCiYjNDM7CQlsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oCQkJXAomIzQzOwkJdGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oCVwKJiM0MzsJCXRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmgJCQlcCiYjNDM7CQl0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgJCQkJXAomIzQzOwkJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oCQkJCVwKJiM0MzsJCXRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgKJiM0MztMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKSkKJiM0MzsKJiM0MztTS0VMUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuc2tlbC5oLAkJCQlcCiYjNDM7CSAgICQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksJChCUEZfU1JDUykpKQomIzQzO0xTS0VMU19IICAgICAgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMUykgJChMU0tFTFNfRVhUUkEpKQomIzQzO0xTS0VMU19TSUdORURfSCA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKQomIzQzO0xJTktFRF9TS0VMU19IICA6PSAkKGFkZHByZWZpeCAkKFJESVIpLywkKExJTktFRF9TS0VMUykpCiYjNDM7QUxMX1NLRUxTIDo9ICQoU0tFTFMpICQoTFNLRUxTX0gpICQoTFNLRUxTX1NJR05FRF9IKSAkKExJTktFRF9TS0VMU19IKQomIzQzOwomIzQzO0hFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpCQkJXAomIzQzOwkJCSQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKQlcCiYjNDM7CQkJJChhZGRwcmVmaXggJChCUEZESVIpLywJYnBmX2NvcmVfcmVhZC5oCQlcCiYjNDM7CQkJCQkJYnBmX2VuZGlhbi5oCQlcCiYjNDM7CQkJCQkJYnBmX2hlbHBlcnMuaAkJXAomIzQzOwkJCQkJCWJwZl90cmFjaW5nLmgpCiYjNDM7CiYjNDM7IyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJCZsdDstQ0ZMQUdTIC8gJCZsdDstJChGTEFWT1IpLUNGTEFHUykuCiYjNDM7IyBHQ0MgY2Fubm90IGRpc2FibGUgJiMzNDtkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0JiMzNDsKJiM0MzsjIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGVzZSAodGVjaG5pY2FsbHkgbGVnYWwpIHRlc3QgcHJvZ3JhbXMuCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKJiM0MzsKJiM0MzskKEJQRl9PQkpTKTogJChSRElSKS8lLmJwZi5vOiBwcm9ncy8lLmMgcHJvZ3MvKi5oCQkJXAomIzQzOwkgICAgICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKQkJXAomIzQzOwkgICAgIHwgJChSRElSKSAkKEJQRk9CSikKJiM0MzsJJChjYWxsIG1zZywkKEJQRl9DQ19NU0cpLCQoQklOQVJZKSwkQCkKJiM0MzsJJChRKSQoQlBGX0NDKSAkKEJQRl9DRkxBR1MpICQoQlBGX1NZU19JTkNMVURFUykgJChCUEZfREVGSU5FUykJXAomIzQzOwkJJCgkJmx0Oy1DRkxBR1MpICQoJCZsdDstJChGTEFWT1IpLUNGTEFHUykJCQlcCiYjNDM7CQkkKEJQRl9DQ19GTEFHUykgLWMgJCZsdDsgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCUEYpCiYjNDM7CiYjNDM7IyBnZW5fYnBmX3NrZWwuc2ggcGlja3MgdGhlIGJwZnRvb2wgYmluYXJ5IHVwIGZyb20gdGhlIGVudmlyb25tZW50LgomIzQzO2V4cG9ydCBCUEZUT09MCiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2gKJiM0MzsKJiM0MzskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpCiYjNDM7CSQoY2FsbCBtc2csR0VOLVNLRUwsJChCSU5BUlkpLCRAKQomIzQzOwkkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqCQkJCQlcCiYjNDM7CQktLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQmbHQ7CQlcCiYjNDM7CQkkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpCiYjNDM7CiYjNDM7JChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKEdFTl9TS0VMKSAtLW5hbWUgJCpfbHNrZWwgLS1sc2tlbAkJCQlcCiYjNDM7CQktLXNrZWwgJEAgJCZsdDsgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKQomIzQzOwomIzQzOyQoTFNLRUxTX1NJR05FRF9IKTogJChSRElSKS8lLmxza2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpCVwKJiM0MzsJCSAgICAkKEdFTl9TS0VMKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKSB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSkgKHNpZ25lZCksJEApCiYjNDM7CSQoUSlQUklWQVRFX0tFWT0kKFBSSVZBVEVfS0VZKQkJCQkJXAomIzQzOwkJVkVSSUZJQ0FUSU9OX0NFUlQ9JChWRVJJRklDQVRJT05fQ0VSVCkJCQlcCiYjNDM7CQkkKEdFTl9TS0VMKSAtLXNpZ24gLS1uYW1lICQqX2xza2VsCQkJXAomIzQzOwkJLS1za2VsICRAICQmbHQ7ICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCkKJiM0MzsKJiM0MzsuU0VDT05ERVhQQU5TSU9OOgomIzQzOyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXAomIzQzOwkJICAgJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxMSU5LLUJQRiwkKEJJTkFSWSksJChAOi5za2VsLmg9LmJwZi5vKSkKJiM0MzsJJChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKEdFTl9TS0VMKSAtLW5hbWUgJCoJCQkJCVwKJiM0MzsJCS0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkJCVwKJiM0MzsJCSQoYWRkcHJlZml4ICQoUkRJUikvLCQoJCouc2tlbC5oLWRlcHMpKQkJCVwKJiM0MzsJCSQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSkKJiM0MzsKJiM0MztlbmRpZiAjIEJQRl9DQwomIzQzOwomIzQzOy5QSE9OWTogc2tlbHMKJiM0Mztza2VsczogJChBTExfU0tFTFMpCiYjNDM7CiYjNDM7IyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90IGZ1bGwKJiM0MzsjIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nICUubyBmaWxlLgomIzQzOyMgVGhlIHZwYXRoIGRpcmVjdGl2ZXMgaW5zdHJ1Y3QgbWFrZSB0byBhbHNvIHNlYXJjaCBmb3Igc2tlbCBmaWxlcyBpbgomIzQzOyMgJChSRElSKSBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuCiYjNDM7dnBhdGggJS5za2VsLmggJChSRElSKQomIzQzO3ZwYXRoICUubHNrZWwuaCAkKFJESVIpCiYjNDM7dnBhdGggJS5zdWJza2VsLmggJChSRElSKQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBUZXN0IG9iamVjdHMgYW5kIHJ1bm5lciBiaW5hcnkKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vCiYjNDM7JChSRElSKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxCiYjNDM7CiYjNDM7IyBDb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlcy4KJiM0MzsjIE5vdGU6IHdlIGNkIGludG8gdGhlIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3RzCiYjNDM7IyBhcmUgZm91bmQuIFRoZSAlLnRlc3QuZCBkZXBlbmRlbmN5IGZpbGVzIGFyZSBhIHNpZGUgZWZmZWN0IG9mIHRoZSAtTU1ECiYjNDM7IyBiZWxvdzsgdGhlIHNlcGFyYXRlIG5vLXJlY2lwZSBydWxlIGZvciB0aGVtIG9yZGVycyB0aGUgZmlyc3QKJiM0MzsjIGNvbXBpbGF0aW9uIGFmdGVyIHNrZWxldG9uIGdlbmVyYXRpb24gYW5kIHJlLW9yZGVycyB0ZXN0IG9iamVjdAomIzQzOyMgY29tcGlsYXRpb24gd2hlbiBoZWFkZXJzIGNoYW5nZS4KJiM0MzskKFRFU1RfT0JKUyk6ICQoUkRJUikvJS50ZXN0Lm86ICQoVEVTVFNfRElSKS8lLmMgfCAkKFJESVIpLyUudGVzdC5kCiYjNDM7CSQoY2FsbCBtc2csVEVTVC1PQkosJChCSU5BUlkpLCRAKQomIzQzOwkkKFEpKGNkICQoQEQpICZhbXA7JmFtcDsgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJCZsdDsgLW8gJChARikpIFwKJiM0MzsJCSQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKQomIzQzOwkkKGlmICQoVEVTVF9ORUVEU19CVEZJRFMpLAkJCQkJXAomIzQzOwkJJChRKWlmIFsgLWYgJEAgXTsgdGhlbgkJCQkJXAomIzQzOwkJJChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzQ7QlRGSURTJiMzNDsgJiMzNDsgWyQoQklOQVJZKV0mIzM0OyAmIzM0OyQobm90ZGlyICRAKSYjMzQ7KTsgXAomIzQzOwkJJChSRVNPTFZFX0JURklEUykgLS1idGYgJChSRElSKS9idGZfZGF0YS5icGYubyAkQDsJXAomIzQzOwkJJChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDsJCVwKJiM0MzsJCWZpKQomIzQzOwomIzQzOyQoVEVTVF9ERVBTKTogJChSRElSKS8lLnRlc3QuZDogJChURVNUU19ESVIpLyUuYyAkKEVYVFJBX0hEUlMpICQoQlBGT0JKKSBcCiYjNDM7CSAgICAgIHwgJChSRElSKSAkKEFMTF9TS0VMUykKJiM0MzsKJiM0MztpbmNsdWRlICQod2lsZGNhcmQgJChURVNUX0RFUFMpKQomIzQzOwomIzQzOyQoUkRJUikvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyAmIzQzOz0gJChMTFZNX0NGTEFHUykKJiM0MzsKJiM0MzskKEVYVFJBX09CSlMpOiAkKFJESVIpLyUubzogJS5jICQoRVhUUkFfSERSUykgJChURVNUU19IRFIpICQoQlBGT0JKKSB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxFWFQtT0JKLCQoQklOQVJZKSwkQCkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkJmx0OyAtbyAkQAomIzQzOwomIzQzOyQoTElCX09CSlMpOiAkKFJESVIpLyUubzogJChUT09MU0RJUikvbGliLyUuYyB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxMSUItT0JKLCQoQklOQVJZKSwkQCkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkJmx0OyAtbyAkQAomIzQzOwomIzQzOyMgTm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIKJiM0MzsjIHdlIGRvIG5vdCBuZWVkIHRvIGNvcHkgZXh0cmEgcmVzb3VyY2VzIChzZWUgZS5nLiB0ZXN0X2J0Zl9kdW1wX2Nhc2UoKSkuCiYjNDM7LlBIT05ZOiBleHRyYXMKJiM0MztleHRyYXM6ICQoaWYgJChQRVJNSVNTSVZFKSwkKHdpbGRjYXJkICQoRVhUUkFfRklMRVMpKSwkKEVYVFJBX0ZJTEVTKSkgfCAkKFJESVIpCiYjNDM7aWZuZXEgKCQoRkxBVk9SKTokKE9VVFBVVCksOiQoQ1VSRElSKSkKJiM0MztpZm5lcSAoJChzdHJpcCAkKEVYVFJBX0ZJTEVTKSksKQomIzQzOwkkKGNhbGwgbXNnLEVYVC1DT1BZLCQoQklOQVJZKSwkKG5vdGRpciAkKEVYVFJBX0ZJTEVTKSkpCiYjNDM7CSQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS8KJiM0MztlbmRpZgomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBJbiBwZXJtaXNzaXZlIG1vZGUsIGxpbmsgd2hhdGV2ZXIgdGVzdCBvYmplY3RzIHdlcmUgc3VjY2Vzc2Z1bGx5IGJ1aWx0CiYjNDM7IyAodGhlaXIgY29tcGlsYXRpb24gbWF5IGhhdmUgYmVlbiBza2lwcGVkKTogdGhlIG9iamVjdHMgZXhpc3RpbmcgYXQKJiM0MzsjIHBhcnNlIHRpbWUgYXJlIG5vcm1hbCBwcmVyZXF1aXNpdGVzIC0gc28gZWRpdGluZyBhIHRlc3Qgc291cmNlIHN0aWxsCiYjNDM7IyByZWxpbmtzIHRoZSBydW5uZXIgLSB3aGlsZSB0aGUgZnVsbCBzZXQgc3RheXMgb3JkZXItb25seSB0byBkcml2ZSB0aGUKJiM0MzsjIGJ1aWxkIGF0dGVtcHRzLCBhbmQgdGhlIHdpbGRjYXJkIGluIHRoZSByZWNpcGUgcGlja3MgdXAgdGhlIHN1cnZpdm9ycwomIzQzOyMgYXQgbGluayB0aW1lLgomIzQzOyMgUHJlcmVxdWlzaXRlIG9yZGVyIGlzIGFsc28gbGluayBvcmRlciAodGVzdCBvYmplY3RzLCBleHRyYSBvYmplY3RzLAomIzQzOyMgbGliYnBmLCBsaWIgb2JqZWN0cykuCiYjNDM7JChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFwKJiM0MzsJCSAgICAgJChFWFRSQV9PQkpTKSAkKEJQRk9CSikgJChMSUJfT0JKUykJCVwKJiM0MzsJCSAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdAkJXAomIzQzOwkJICAgICB8IGV4dHJhcyAkKEJQRl9PQkpTKQkJCQlcCiYjNDM7CQkgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpCiYjNDM7CSQoY2FsbCBtc2csQklOQVJZLCwkQCkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKQkJCQkJCVwKJiM0MzsJCSQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSkJXAomIzQzOwkJCSQoZmlsdGVyLW91dCAkKFRFU1RfT0JKUyksJChmaWx0ZXIgJS5hICUubywkXikpLFwKJiM0MzsJCQkkKGZpbHRlciAlLmEgJS5vLCReKSkJCQkJXAomIzQzOwkJJChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRACiYjNDM7CSQoUSlsbiAtc2YgJChpZiAkKEZMQVZPUiksLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcCiYjNDM7CQkgICAkKFJESVIpL2JwZnRvb2wKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lMjM0ZjNhNTdkNDZiZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2gKQEAgLTAsMCAmIzQzOzEsOTMgQEAKJiM0MzsjIS9iaW4vYmFzaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBMaW5rIEJQRiBvYmplY3QgZmlsZShzKSB3aXRoICYjMzQ7YnBmdG9vbCBnZW4gb2JqZWN0JiMzNDsgYW5kIGdlbmVyYXRlIGEKJiM0MzsjIHNrZWxldG9uIChvciBsaWdodCBza2VsZXRvbikgaGVhZGVyIGZyb20gdGhlIHJlc3VsdC4KJiM0MzsjCiYjNDM7IyBVc2FnZToKJiM0MzsjICAgQlBGVE9PTD0mbHQ7YnBmdG9vbCZndDsgZ2VuX2JwZl9za2VsLnNoIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLgomIzQzOyMKJiM0MzsjICAgLS1uYW1lIE5BTUUgICAgICAgc2tlbGV0b24gb2JqZWN0IG5hbWUgKCYjMzQ7bmFtZSBOQU1FJiMzNDsgZm9yIGJwZnRvb2wpCiYjNDM7IyAgIC0tc2tlbCBPVVQgICAgICAgIG91dHB1dCBoZWFkZXIgKCYjMzQ7Zm9vLnNrZWwuaCYjMzQ7IG9yICYjMzQ7Zm9vLmxza2VsLmgmIzM0OykKJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVAomIzQzOyMgICAtLWxza2VsICAgICAgICAgICBnZW5lcmF0ZSBhIGxpZ2h0IHNrZWxldG9uIChicGZ0b29sIGdlbiBza2VsZXRvbiAtTCkKJiM0MzsjICAgLS1zaWduICAgICAgICAgICAgc2lnbiB0aGUgKGxpZ2h0KSBza2VsZXRvbiwgd2l0aCB0aGUga2V5IGFuZAomIzQzOyMgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSB0YWtlbiBmcm9tICRQUklWQVRFX0tFWSBhbmQKJiM0MzsjICAgICAgICAgICAgICAgICAgICAgJFZFUklGSUNBVElPTl9DRVJUCiYjNDM7IwomIzQzOyMgVGhlIGlucHV0cyBhcmUgbGlua2VkIHRocmVlIHRpbWVzIGFuZCB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0cwomIzQzOyMgY29tcGFyZWQsIGFzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgZGV0ZXJtaW5pc20gb2YgJiMzNDticGZ0b29sIGdlbgomIzQzOyMgb2JqZWN0JiMzNDsuCiYjNDM7IwomIzQzOyMgSW50ZXJtZWRpYXRlIGZpbGVzIGNhcnJ5IGEgJiMzNDtsaW5rZWQmIzM0OyBpbmZpeCAtICYjMzQ7bGxpbmtlZCYjMzQ7IGZvciBsaWdodCBvcgomIzQzOyMgc2lnbmVkIHNrZWxldG9ucywgc28gZ2VuZXJhdGluZyBhIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGUKJiM0MzsjIHNhbWUgLmJwZi5vIGluIHBhcmFsbGVsIG5ldmVyIHJhY2VzIG9uIHRoZSBpbnRlcm1lZGlhdGVzLgomIzQzOyMKJiM0MzsjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuCiYjNDM7IyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0CiYjNDM7IyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXImIzM5O3MgYnVzaW5lc3MKJiM0MzsjIChzZWUgc2tpcF9vbl9mYWlsIGluIE1ha2VmaWxlLmJ1aWxkdmFycykuCiYjNDM7CiYjNDM7c2V0IC11CiYjNDM7CiYjNDM7YnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9CiYjNDM7bmFtZT0mIzM5OyYjMzk7IHNrZWw9JiMzOTsmIzM5OyBzdWJza2VsPSYjMzk7JiMzOTsKJiM0Mztsc2tlbD0wIHNpZ249MAomIzQzOwomIzQzO3doaWxlIFsgJCMgLWd0IDAgXTsgZG8KJiM0MzsJY2FzZSAmIzM0OyQxJiMzNDsgaW4KJiM0MzsJLS1uYW1lKQkJbmFtZT0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXNrZWwpCQlza2VsPSQyOyBzaGlmdCAyIDs7CiYjNDM7CS0tc3Vic2tlbCkJc3Vic2tlbD0kMjsgc2hpZnQgMiA7OwomIzQzOwktLWxza2VsKQlsc2tlbD0xOyBzaGlmdCA7OwomIzQzOwktLXNpZ24pCQlzaWduPTE7IHNoaWZ0IDs7CiYjNDM7CS0tKQkJc2hpZnQ7IGJyZWFrIDs7CiYjNDM7CS0qKQkJZWNobyAmIzM0OyQwOiB1bmtub3duIG9wdGlvbjogJDEmIzM0OyAmZ3Q7JmFtcDsyOyBleGl0IDEgOzsKJiM0MzsJKikJCWJyZWFrIDs7CiYjNDM7CWVzYWMKJiM0Mztkb25lCiYjNDM7CiYjNDM7aWYgWyAteiAmIzM0OyRuYW1lJiMzNDsgXSB8fCBbIC16ICYjMzQ7JHNrZWwmIzM0OyBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlbgomIzQzOwllY2hvICYjMzQ7dXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLiYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJZXhpdCAxCiYjNDM7ZmkKJiM0MzsKJiM0MztpbmZpeD1saW5rZWQKJiM0MztpZiBbICYjMzQ7JGxza2VsJiMzNDsgLWVxIDEgXSB8fCBbICYjMzQ7JHNpZ24mIzM0OyAtZXEgMSBdOyB0aGVuCiYjNDM7CWluZml4PWxsaW5rZWQKJiM0MztmaQomIzQzOwomIzQzO2Jhc2U9JHtza2VsJS5za2VsLmh9CiYjNDM7YmFzZT0ke2Jhc2UlLmxza2VsLmh9CiYjNDM7dDE9JGJhc2UuJHtpbmZpeH0xLm8KJiM0Mzt0Mj0kYmFzZS4ke2luZml4fTIubwomIzQzO3QzPSRiYXNlLiR7aW5maXh9My5vCiYjNDM7CiYjNDM7ZmFpbCgpIHsKJiM0MzsJcm0gLWYgJiMzNDskc2tlbCYjMzQ7ICR7c3Vic2tlbDomIzQzOyYjMzQ7JHN1YnNrZWwmIzM0O30gJiMzNDskdDEmIzM0OyAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQzJiMzNDsKJiM0MzsJZXhpdCAxCiYjNDM7fQomIzQzOwomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gb2JqZWN0ICYjMzQ7JHQxJiMzNDsgJiMzNDskQCYjMzQ7IHx8IGZhaWwKJiM0MzsmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIG9iamVjdCAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQxJiMzNDsgfHwgZmFpbAomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gb2JqZWN0ICYjMzQ7JHQzJiMzNDsgJiMzNDskdDImIzM0OyB8fCBmYWlsCiYjNDM7aWYgISBjbXAgLXMgJiMzNDskdDImIzM0OyAmIzM0OyR0MyYjMzQ7OyB0aGVuCiYjNDM7CWVjaG8gJiMzNDskMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbCYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJZmFpbAomIzQzO2ZpCiYjNDM7CiYjNDM7YXJncz0oKQomIzQzO2lmIFsgJiMzNDskc2lnbiYjMzQ7IC1lcSAxIF07IHRoZW4KJiM0MzsJYXJncyYjNDM7PSgtUyAtayAmIzM0OyR7UFJJVkFURV9LRVk6P30mIzM0OyAtaSAmIzM0OyR7VkVSSUZJQ0FUSU9OX0NFUlQ6P30mIzM0OykKJiM0MztmaQomIzQzO2lmIFsgJiMzNDskbHNrZWwmIzM0OyAtZXEgMSBdOyB0aGVuCiYjNDM7CWFyZ3MmIzQzOz0oLUwpCiYjNDM7ZmkKJiM0MzsmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIHNrZWxldG9uICR7YXJnc1tAXSYjNDM7JiMzNDske2FyZ3NbQF19JiMzNDt9ICYjMzQ7JHQzJiMzNDsgbmFtZSAmIzM0OyRuYW1lJiMzNDsgJmd0OyAmIzM0OyRza2VsJiMzNDsgfHwgZmFpbAomIzQzOwomIzQzO2lmIFsgLW4gJiMzNDskc3Vic2tlbCYjMzQ7IF07IHRoZW4KJiM0MzsJJiMzNDskYnBmdG9vbCYjMzQ7IGdlbiBzdWJza2VsZXRvbiAmIzM0OyR0MyYjMzQ7IG5hbWUgJiMzNDskbmFtZSYjMzQ7ICZndDsgJiMzNDskc3Vic2tlbCYjMzQ7IHx8IGZhaWwKJiM0MztmaQomIzQzOwomIzQzO3JtIC1mICYjMzQ7JHQxJiMzNDsgJiMzNDskdDImIzM0OyAmIzM0OyR0MyYjMzQ7CiYjNDM7ZXhpdCAwCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NDc5CgkJCQkJCQlvdXRwdXQ6IDc3CgkJCQkJCQl0aG91Z2h0czogMzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIEJQRiBzZWxmdGVzdHMgTWFrZWZpbGVzLiBJdCBzZWVtcyB0byBiZSBicmVha2luZyBkb3duIGEgbW9ub2xpdGhpYyBgTWFrZWZpbGVgIGludG8gc21hbGxlciwgbW9yZSBtYW5hZ2VhYmxlIHBpZWNlczogYE1ha2VmaWxlYCwgYE1ha2VmaWxlLmJ1aWxkdmFyc2AsIGFuZCBgTWFrZWZpbGUucnVubmVyYC4gIFRoZXJlJiMzOTtzIGFsc28gYSBuZXcgc2hlbGwgc2NyaXB0LCBgZ2VuX2JwZl9za2VsLnNoYCwgZm9yIHNrZWxldG9uIGdlbmVyYXRpb24uIFRoaXMgd2hvbGUgdGhpbmcgc2NyZWFtcyAmIzM0O2J1aWxkIHN5c3RlbSBhbmQgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlJiMzNDsgdG8gbWUuCgpDcnVjaWFsbHksIGl0ICpkb2VzbiYjMzk7dCogdG91Y2ggYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBldmVuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlLiBUaGVyZSYjMzk7cyB6ZXJvIG1vZGlmaWNhdGlvbiBvZiBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS4gU28sIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGludHJvZHVjZSBhbnl0aGluZyBuZXcgdG8gdGhlIGZ1enppbmcgc3VyZmFjZT8gQWJzb2x1dGVseSBub3QuIFRoaXMgaXMgcHVyZWx5IGEgcmVzdHJ1Y3R1cmluZyBvZiB0aGUgdGVzdGluZyBmcmFtZXdvcmsuCgpUbyBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgbW9kaWZpZWQgZmlsZXMuIE9rYXksIGl0JiMzOTtzIGp1c3QgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZWAsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hgLiBZdXAsIGFsbCBvZiB0aGVtIGFyZSB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCBkaXJlY3RvcnkuCgpCYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCB0aGVyZSYjMzk7cyBub3RoaW5nIGhlcmUgdGhhdCYjMzk7cyByZW1vdGVseSByZWxldmFudCB0byBmdXp6aW5nIGtlcm5lbCBmdW5jdGlvbmFsaXR5LiBTbywgdGhlIG9ubHkgbG9naWNhbCBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuIEkmIzM5O20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KSBmb3IgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzg6MzEuNTU1ODc3OTY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM3OTk1NjE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KSBmb3IgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM4OjMxLjU1NTg4NDE2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQwMTkzMDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzNkMzEzZjJjYjE3YzYxYzhlNmRkNjM5MjQxMWNjZjRlYTMyZGJmZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwODozODoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG5pbmRleCA1NWQzOTQ0Mzg3MDVhNi4uMDljZmY2OTNiN2Q3ODIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuQEAgLTEsOTYgKzEsMzIgQEBcXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgRXZlcnl0aGluZyB0aGF0IGV4aXN0cyBvbmNlIGxpdmVzIGhlcmU6IHRvb2xjaGFpbiBzZXR1cCwgdG9vbFxcbisjIHN1Yi1idWlsZHMsIHZtbGludXguaCwgc2hhcmVkIGhlbHBlciBvYmplY3RzLCBzdGFuZGFsb25lIGJpbmFyaWVzIGFuZFxcbisjIHRoZSBsaWIubWsgY29udHJhY3QuIEVhY2ggdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MgYW5kIGl0c1xcbisjIGZsYXZvcnMsIHRlc3RfbWFwcykgaXMgYnVpbHQgYnkgaXRzIG93biBNYWtlZmlsZS5ydW5uZXIgc3ViLW1ha2U7XFxuKyMgc2hhcmVkIGRlZmluaXRpb25zIGxpdmUgaW4gTWFrZWZpbGUuYnVpbGR2YXJzLlxcbitcXG4gaW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXFxuIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoXFxuIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlXFxuIFxcbi1DWFggPz0gJChDUk9TU19DT01QSUxFKWcrK1xcbi1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XFxuLVxcbi1DVVJESVIgOj0gJChhYnNwYXRoIC4pXFxuLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcXG4tTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxcbi1CUEZESVIgOj0gJChMSUJESVIpL2JwZlxcbi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXFxuLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxcbi1CUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sXFxuLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXFxuLWlmbmVxICgkKE8pLClcXG4tR0VORElSIDo9ICQoTykvaW5jbHVkZS9nZW5lcmF0ZWRcXG4tZWxzZVxcbi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKVxcbi1lbmRpZlxcbi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcXG4tUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xcbiBcXG4taWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXFxuLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxcbisjIE5lZWRlZCBiZWZvcmUgbGliLm1rIGlzIGluY2x1ZGVkIChnYXRlcyB0aGUgZmxhdm9yIGxpc3QgYmVsb3cpLCB3aGljaFxcbisjIGlzIGFsc28gd2h5IGl0IGNhbm5vdCBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy5cXG4raWZlcSAoJChvcmlnaW4gQlBGX0dDQyksdW5kZWZpbmVkKVxcbitCUEZfR0NDIDo9ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcXG4gZW5kaWZcXG4gXFxuLUJQRl9HQ0NcXHRcXHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXFxuLWlmZGVmIEFTQU5cXG4tU0FOX0NGTEFHUyBcXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXG4tZWxzZVxcbi1TQU5fQ0ZMQUdTXFx0Pz1cXG4tZW5kaWZcXG4tU0FOX0xERkxBR1NcXHQ/PSAkKFNBTl9DRkxBR1MpXFxuLVJFTEVBU0VcXHRcXHQ/PVxcbi1PUFRfRkxBR1NcXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcXG4tXFxuLUxJQkVMRl9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcXHUwMDNlL2Rldi9udWxsKVxcbi1MSUJFTEZfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXFxuLVxcbiBTS0lQX0RPQ1NcXHQ/PVxcbiBTS0lQX0xMVk1cXHQ/PVxcbiBTS0lQX0xJQkJGRFxcdD89XFxuIFNLSVBfQ1JZUFRPXFx0Pz1cXG4gXFxuLSMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yXFxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXFxuLSMgYW5kIGNvbnRpbnVlIGJ1aWxkaW5nIHRoZSByZW1haW5pbmcgdGVzdHMuXFxuLUJQRl9TVFJJQ1RfQlVJTEQgPz0gMVxcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcXG4tXFxuLWlmZXEgKCQoc3JjdHJlZSksKVxcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbi1lbmRpZlxcbiBcXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXFx0XFx0XFx0XFxcXFxcbi1cXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcXHRcXHRcXFxcXFxuLVxcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVxcdFxcXFxcXG4tXFx0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXFxuLUxERkxBR1MgKz0gJChTQU5fTERGTEFHUylcXG4tTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxcbi1cXG4tUENBUF9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbCBcXHUwMDI2XFx1MDAyNiBlY2hvIFxcXCItRFRSQUZGSUNfTU9OSVRPUj0xXFxcIilcXG4tUENBUF9MSUJTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcXHUwMDNlL2Rldi9udWxsKVxcbi1MRExJQlMgKz0gJChQQ0FQX0xJQlMpXFxuLUNGTEFHUyArPSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXFxuLVxcbi0jIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzXFxuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXFxuLVxcbi1pZm5lcSAoJChMTFZNKSwpXFxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xcbi1DRkxBR1MgKz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XFxuLWVuZGlmXFxuLVxcbi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXFxuIGlmbmVxICgkKHNoZWxsICQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtbWNwdT1oZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwICd2NCcpLClcXG4gQ0xBTkdfQ1BVVjQgOj0gMVxcbiBlbmRpZlxcbiBcXG4tIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXFxuLUNMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXFxcXG4tXFx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcXFxcbi1cXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxcXFxuLVxcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyAxKVxcbi1cXG4gIyBPcmRlciBjb3JyZXNwb25kIHRvICdtYWtlIHJ1bl90ZXN0cycgb3JkZXJcXG4gVEVTVF9HRU5fUFJPR1MgPSB0ZXN0X3ZlcmlmaWVyIHRlc3RfdGFnIHRlc3RfbWFwcyB0ZXN0X2xydV9tYXAgdGVzdF9wcm9ncyBcXFxcXFxuIFxcdHRlc3Rfc29ja21hcCBcXFxcXFxuQEAgLTEwMiwxNiArMzgsNiBAQCBURVNUX0lOU1RfU1VCRElSUyA6PSBub19hbHUzMlxcbiBpZm5lcSAoJChCUEZfR0NDKSwpXFxuIFRFU1RfR0VOX1BST0dTICs9IHRlc3RfcHJvZ3MtYnBmX2djY1xcbiBURVNUX0lOU1RfU1VCRElSUyArPSBicGZfZ2NjXFxuLVxcbi0jIFRoZSBmb2xsb3dpbmcgdGVzdHMgY29udGFpbiBDIGNvZGUgdGhhdCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgbGVnYWwsXFxuLSMgdHJpZ2dlcnMgR0NDIHdhcm5pbmdzIHRoYXQgY2Fubm90IGJlIGRpc2FibGVkOiBkZWNsYXJhdGlvbiBvZlxcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tXFxuIGVuZGlmXFxuIFxcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxcbkBAIC0yMTMsMjEgKzEzOSw4IEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKVxcbiBlbmRpZlxcbiBlbmRpZlxcbiBcXG4tU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXFxuLUJVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxcbi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXFxuLUJQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4tSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxcbi1IT1NUX1NDUkFUQ0hfRElSXFx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcXG4tSE9TVF9JTkNMVURFX0RJUlxcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxcbi1lbHNlXFxuLUhPU1RfQlVJTERfRElSXFx0XFx0Oj0gJChCVUlMRF9ESVIpXFxuLUhPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKFNDUkFUQ0hfRElSKVxcbi1IT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChJTkNMVURFX0RJUilcXG4tZW5kaWZcXG4tSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuLVJFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXFxuK2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzXFxuK1xcbiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0ICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KVxcdFxcXFxcXG4gXFx0XFx0ICAgICAuLi8uLi8uLi8uLi92bWxpbnV4XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0yNDIsNyArMTU1LDcgQEAgZW5kaWZcXG4gIyB0byBidWlsZCBpbmRpdmlkdWFsIHRlc3RzLlxcbiAjIE5PVEU6IFNlbWljb2xvbiBhdCB0aGUgZW5kIGlzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIGxpYi5taydzIGRlZmF1bHQgc3RhdGljXFxuICMgcnVsZSBmb3IgYmluYXJpZXMuXFxuLSQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcXHRcXHRcXHRcXHRcXFxcXFxuKyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7XFxuIFxcbiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZ1xcbkBAIC0yNTYsMTEgKzE2OSwxNCBAQCAkKE1BS0VfRElSUyk6XFxuIFxcbiAkKE9VVFBVVCkvJS5vOiAlLmNcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEBcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAXFxuIFxcbisjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcXG4rIyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXFxuKyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS5cXG4gJChPVVRQVVQpLyU6JS5jXFxuIFxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4tXFx0JChRKSQoTElOSy5jKSAkXiAkKExETElCUykgLW8gJEBcXG4rXFx0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuICMgTExWTSdzIGxkLmxsZCBkb2Vzbid0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODZcXG4gaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpXFxuQEAgLTMxNCwxNiArMjMwLDYgQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpXFxuIFxcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcXG4gXFxuIFxcbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1DUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxcbi1VU0VfQk9PVFNUUkFQIDo9IFxcXCJcXFwiXFxuLWVsc2VcXG4tVFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKVxcbi1VU0VfQk9PVFNUUkFQIDo9IFxcXCJib290c3RyYXAvXFxcIlxcbi1lbmRpZlxcbi1cXG4gJChURVNUX0dFTl9QUk9HUykgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCk6ICQoQlBGT0JKKVxcbiBcXG4gVEVTVElOR19IRUxQRVJTXFx0Oj0gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXFxuQEAgLTM0NCw3ICsyNTAsMzkgQEAgJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXFxuICQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiAkKFRFU1RJTkdfSEVMUEVSUykgJChDQVBfSEVMUEVSUykgJChVTlBSSVZfSEVMUEVSUylcXG4gJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcXG4gXFxuLUJQRlRPT0wgPz0gJChERUZBVUxUX0JQRlRPT0wpXFxuKyMgQWxsIGhlbHBlciBvYmplY3RzIGEgcnVubmVyIGluc3RhbmNlIGxpbmtzLCBwcmUtYnVpbHQgaGVyZSBzbyBydW5uZXJcXG4rIyBzdWItbWFrZXMgc2hhcmluZyAkKE9VVFBVVCkgbmV2ZXIgY29tcGlsZSB0aGVtIGNvbmN1cnJlbnRseS5cXG4rSEVMUEVSX09CSlMgOj0gJChURVNUSU5HX0hFTFBFUlMpICQoQ0dST1VQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXFx0XFxcXFxcbitcXHQgICAgICAgJChUUkFDRV9IRUxQRVJTKSAkKEpTT05fV1JJVEVSKSAkKENBUF9IRUxQRVJTKVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQoTkVUV09SS19IRUxQRVJTKSAkKE9VVFBVVCkvdXNkdF8xLm8gJChPVVRQVVQpL3VzZHRfMi5vXFx0XFxcXFxcbitcXHQgICAgICAgJChPVVRQVVQpL3hzay5vXFxuK1xcbisjICQoQlBGVE9PTCkgaXMgYSBwcmVyZXF1aXNpdGUgYmVjYXVzZSBpdHMgc3ViLW1ha2UgaXMgd2hhdCBpbnN0YWxsc1xcbisjIGxpYmJwZidzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50b1xcbisjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlXFxuKyMgaW5zdGFsbCBhbmQgY2FuIHNpbGVudGx5IHBpY2sgdXAgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLlxcbisjXFxuKyMgSW52YXJpYW50OiB0aGlzIGxpc3QgbXVzdCBiZSBhIHN1cGVyc2V0IG9mIGV2ZXJ5IHByZXJlcXVpc2l0ZSB0aGVcXG4rIyBydW5uZXIncyBFWFRSQV9PQkpTIHJ1bGUgYXR0YWNoZXMgdG8gdGhlc2Ugc2FtZSBvYmplY3RzIChFWFRSQV9IRFJTLFxcbisjIGJvdGggdGVzdHMuaCBmbGF2b3JzLCAkKEJQRk9CSikpLiBJdCBndWFyYW50ZWVzIHRoZSBoZWxwZXJzIGJ1aWx0XFxuKyMgaGVyZSBhcmUgbmV2ZXIgb2xkZXIgdGhhbiBhIHJ1bm5lci1zaWRlIHByZXJlcXVpc2l0ZSwgc28gdGhlXFxuKyMgdW5mbGF2b3JlZCB0ZXN0X3Byb2dzIGFuZCB0ZXN0X21hcHMgc3ViLW1ha2VzLCB3aGljaCBzaGFyZSAkKE9VVFBVVCksXFxuKyMgdHJlYXQgdGhlbSBhcyB1cCB0byBkYXRlIGluc3RlYWQgb2YgYm90aCByZWNvbXBpbGluZyB0aGUgc2FtZSBvYmplY3RcXG4rIyBmaWxlIGNvbmN1cnJlbnRseS5cXG4rJChIRUxQRVJfT0JKUyk6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFxcdFxcdFxcXFxcXG4rXFx0XFx0JChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcXFxcXFxuK1xcdFxcdHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaCAkKEJQRk9CSikgJChCUEZUT09MKVxcbitcXG4rJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBUb29sIHN1Yi1idWlsZHM6IGJwZnRvb2wgYW5kIGxpYmJwZiAoaG9zdCBhbmQsIHdoZW4gY3Jvc3MtY29tcGlsaW5nLFxcbisjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLlxcbisjXFxuKyMgTm90ZSB0aGUgZGVsaWJlcmF0ZSBhc3ltbWV0cnk6IHRoZSBob3N0IGxpYmJwZiBidWlsZHMgd2l0aG91dFxcbisjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLlxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4gJChERUZBVUxUX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpICAgIFxcXFxcXG4gXFx0XFx0ICAgICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvYnBmdG9vbFxcbiBcXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKSAgLUMgJChCUEZUT09MRElSKVxcdFxcdFxcdCAgICAgICBcXFxcXFxuQEAgLTQxMiw3ICszNTAsNyBAQCBlbmRpZlxcbiBcXG4gIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG9cXG4gIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2ZcXG4tIyAkKFRSVU5ORVJfQlBGX09CSlMpXFxuKyMgQlBGIG9iamVjdHMuXFxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXFxuIGlmZXEgKCQoVk1MSU5VWF9IKSwpXFxuIFxcdCQoY2FsbCBtc2csR0VOLCwkQClcXG5AQCAtNDM3LDM3NCArMzc1LDExIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXFx0XFxcXFxcbiBcXHRcXHRIT1NUUEtHX0NPTkZJRz0nJChQS0dfQ09ORklHKScgXFxcXFxcbiBcXHRcXHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxcbiBcXG4tIyBHZXQgQ2xhbmcncyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnlcXG4tIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcXFwibWlzc2luZ1xcXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxcbi0jXFxuLSMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXFxuLWRlZmluZSBnZXRfc3lzX2luY2x1ZGVzXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXFx1MDAzYy9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIFxcXFxcXG4tXFx0fCBzZWQgLW4gJy9cXHUwMDNjLi4uXFx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcXFwoLy4qXFxcXCl8LWlkaXJhZnRlciBcXFxcMXxwIH0nKSBcXFxcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX3Jpc2N2X3hsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMsICQkMyl9JykgXFxcXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMpfScpIFxcXFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXFxcIi1EJXM9JXMgXFxcIiwgJCQyLCAkJDMpfScpXFxuLWVuZGVmXFxuLVxcbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cXG4tSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBcXFxcXFxuLVxcdFxcdFxcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXFxuLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxcbi1CUEZfVEFSR0VUX0VORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC0tdGFyZ2V0PWJwZmVsLC0tdGFyZ2V0PWJwZmViKVxcbi1cXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1DTEFOR19UQVJHRVRfQVJDSCA9IC0tdGFyZ2V0PSQobm90ZGlyICQoQ1JPU1NfQ09NUElMRTolLT0lKSlcXG4tZW5kaWZcXG4tXFxuLUNMQU5HX1NZU19JTkNMVURFUyA9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXFx0XFxcXFxcbi1cXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgI1xcbi0jIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbi1cXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuLVxcbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tXFxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcbi1cXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXFxuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXFxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxcbi0jICQzIC0gQ0ZMQUdTXFxuLSMgJDQgLSBiaW5hcnkgbmFtZVxcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcXG4tXFx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcXHUwMDNlXFx1MDAyNjIpKVxcbi1lbmRlZlxcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXFxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcXG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xcbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tXFxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcXG4tXFxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcXHRcXHRcXFxcXFxuLVxcdFxcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuLVxcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuLVxcbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXFx0XFxcXFxcbi1cXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1xcdFxcdFxcdFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXFxuLVxcbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xcbi1cXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXFxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXFxcXG4tXFx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuY1xcbi1TS0VMX0JMQUNLTElTVCArPSAkJChMU0tFTFMpICQkKExTS0VMU19TSUdORUQpXFxuLVxcbi10ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXFxuLWxpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xcbi1saW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXFxuLSMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXFxuLSMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxcbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXFxuLXRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYub1xcbi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXFxuLXhkcF9od19tZXRhZGF0YS5za2VsLmgtZGVwcyA6PSB4ZHBfaHdfbWV0YWRhdGEuYnBmLm9cXG4teGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYub1xcbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi1cXG4tTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpXFxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcXG4tXFxuLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSlcXHRcXFxcXFxuLVxcdFxcdFxcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXFx0YnBmX2NvcmVfcmVhZC5oXFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICAgICAgICAgICAgICAgICAgICBicGZfZW5kaWFuLmhcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdFxcdFxcdGJwZl9oZWxwZXJzLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXFxuLVxcbi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCBcXFwidGVtcG9yYXJ5XFxcIiB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IChyZWxpZXMgb25cXG4tIyAkZXZhbCgpKSBhbmQgcGFzcyBjb250cm9sIHRvIERFRklORV9URVNUX1JVTk5FUl9SVUxFUy5cXG4tIyBQYXJhbWV0ZXJzOlxcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcXG4tIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhIFxcXCJmbGF2b3JcXFwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YylcXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUlxcbi1cXG4tTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKVxcbi1UUlVOTkVSX09VVFBVVCA6PSAkKE9VVFBVVCkkKGlmICQyLC8pJDJcXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcXG4tVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubyxcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXFxuLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpXFxuLVRSVU5ORVJfTElCX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHQgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfTElCX1NPVVJDRVMpKSlcXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxcbi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oXFxuLVRSVU5ORVJfQlBGX1NSQ1MgOj0gJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmMpKVxcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXFxuLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsXFx0XFxcXFxcbi1cXHRcXHRcXHRcXHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICAgJCQoVFJVTk5FUl9CUEZfU1JDUykpKVxcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcXG4tVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSlcXG4tVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTX1NJR05FRCkpXFxuLVRFU1RfR0VOX0ZJTEVTICs9ICQkKFRSVU5ORVJfQlBGX09CSlMpXFxuLVxcbi0jIEV2YWx1YXRlIHJ1bGVzIG5vdyB3aXRoIGV4dHJhIFRSVU5ORVJfWFhYIHZhcmlhYmxlcyBhYm92ZSBhbHJlYWR5IGRlZmluZWRcXG4tJCQoZXZhbCAkJChjYWxsIERFRklORV9URVNUX1JVTk5FUl9SVUxFUywkMSwkMikpXFxuLVxcbi1lbmRlZlxcbi1cXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxcbi0jIHNldCB1cCBieSBERUZJTkVfVEVTVF9SVU5ORVIgaXRzZWxmLCBjcmVhdGUgdGVzdCBydW5uZXIgYnVpbGQgcnVsZXMgd2l0aDpcXG4tIyAkMSAtIHRlc3QgcnVubmVyIGJhc2UgYmluYXJ5IG5hbWUgKGUuZy4sIHRlc3RfcHJvZ3MpXFxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcXFwiZmxhdm9yXFxcIiAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpXFxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcXG4tXFxuLSMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHlcXG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3RcXG4tIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxcbi0jIFRoZSBjaGVjayBpcyBpbmxpbmVkIHBlci1ydW5uZXIgc28gJDEgaXMgc3Vic3RpdHV0ZWQgYXQgJChjYWxsKSB0aW1lIGFuZFxcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUncyByZWNpcGUuXFxuLVxcbi1pZmVxICgkKCQoVFJVTk5FUl9PVVRQVVQpLWRpciksKVxcbi0kKFRSVU5ORVJfT1VUUFVUKS1kaXIgOj0geVxcbi0kKFRSVU5ORVJfT1VUUFVUKTpcXG4tXFx0JCQoY2FsbCBtc2csTUtESVIsLCQkQClcXG4tXFx0JChRKW1rZGlyIC1wICQkQFxcbi1lbmRpZlxcbi1cXG4tIyBlbnN1cmUgd2Ugc2V0IHVwIEJQRiBvYmplY3RzIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UgZm9yIGEgZ2l2ZW5cXG4tIyBpbnB1dC9vdXRwdXQgZGlyZWN0b3J5IGNvbWJpbmF0aW9uXFxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcXG4tJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMgOj0geVxcbi0kKFRSVU5ORVJfQlBGX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vOlxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvJS5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcXG4tXFx0JCQoY2FsbCAkKFRSVU5ORVJfQlBGX0JVSUxEX1JVTEUpLCQkXFx1MDAzYywkJEAsXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICQoVFJVTk5FUl9CUEZfQ0ZMQUdTKSAgICAgICAgIFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0ICAkJCgkJFxcdTAwM2MtQ0ZMQUdTKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0ICAkJCgkJFxcdTAwM2MtJDItQ0ZMQUdTKSwkKFRSVU5ORVJfQklOQVJZKSlcXG4tXFxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcXG4tXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcXHUwMDNjIF07IHRoZW5cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHRcXHRleGl0IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRmaTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcXHUwMDNjIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChcXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPSkpIFxcdTAwM2UgJCRAIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89KSkgXFx1MDAzZSAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubylcXG4tXFxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFxcdTAwM2MgXTsgdGhlblxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0XFx0ZXhpdCAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0Zmk7KVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFxcdTAwM2MgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFxcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubylcXG4tXFxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCk6ICUubHNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcXG4tXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcXHUwMDNjIF07IHRoZW5cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGZpOylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSkgKHNpZ25lZCldICQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCRcXHUwMDNjIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQxLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdGRpZmYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkKExTS0VMX1NJR04pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFxcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubylcXG4tXFxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxcbi1cXG4tIyAuU0VDT05ERVhQQU5TSU9OIGhlcmUgYWxsb3dzIHRvIGNvcnJlY3RseSBleHBhbmQgJS1kZXBzIHZhcmlhYmxlcyBhcyBwcmVyZXF1aXNpdGVzXFxuLS5TRUNPTkRFWFBBTlNJT046XFxuLSQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKTogJChUUlVOTkVSX09VVFBVVCkvJTogJCQkJCglLWRlcHMpICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcXFxcbi1cXHRcXHRpZiBbICEgLWYgJCQkJGYgXTsgdGhlblxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGZpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ZG9uZTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0xJTkstQlBGJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdGRpZmYgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjIgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcXHUwMDNlICQkQCBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFxcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxcbi1cXG4tIyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90XFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xcbi0jIGZpbGUuIHZwYXRoIGRpcmVjdGl2ZXMgYmVsb3cgaW5zdHJ1Y3QgbWFrZSB0byBzZWFyY2ggZm9yIHNrZWwgZmlsZXNcXG4tIyBpbiBUUlVOTkVSX09VVFBVVCwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Llxcbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxcbi12cGF0aCAlLmxza2VsLmggJChUUlVOTkVSX09VVFBVVClcXG4tdnBhdGggJS5zdWJza2VsLmggJChUUlVOTkVSX09VVFBVVClcXG4tXFxuLWVuZGlmXFxuLVxcbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxcbi1pZmVxICgkKCQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciksKVxcbi0kKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIgOj0geVxcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXFxuLVxcdCQkKGNhbGwgbXNnLFRFU1QtSERSLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JCQoc2hlbGwgKGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgc2VkIC1uIC1FICdzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10rKVxcXFwoKHZvaWQpP1xcXFwpLiovREVGSU5FX1RFU1QoXFxcXDIpL3AnXFx0XFxcXFxcbi1cXHRcXHRcXHQkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMgfCBzb3J0IDtcXHRcXFxcXFxuLVxcdFxcdCApIFxcdTAwM2UgJCRAKVxcbi1lbmRpZlxcbi1cXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYub1xcbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXFxuLVxcbi0jIGNvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzXFxuLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kXFxuLSQoVFJVTk5FUl9URVNUX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubzpcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1xcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZFxcbi1cXHQkJChjYWxsIG1zZyxURVNULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXFxuLVxcdCQoUSkoY2QgJCQoQEQpIFxcdTAwMjZcXHUwMDI2ICQkKENDKSAtSS4gJCQoQ0ZMQUdTKSAtTU1EIC1NVCAkJEAgLWMgJChDVVJESVIpLyQkXFx1MDAzYyAkJChMRExJQlMpIC1vICQkKEBGKSkgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLVRFU1QnICckJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MikpKVxcbi1cXHQkJChpZiAkJChURVNUX05FRURTX0JURklEUyksXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQkKFEpaWYgWyAtZiAkJEAgXTsgdGhlblxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcXFxuJyBcXFwiQlRGSURTXFxcIiBcXFwiIFskKFRSVU5ORVJfQklOQVJZKV1cXFwiIFxcXCIkJChub3RkaXIgJCRAKVxcXCIpOyBcXFxcXFxuLVxcdFxcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vICQkQDtcXHRcXFxcXFxuLVxcdFxcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDtcXHRcXHRcXFxcXFxuLVxcdFxcdGZpKVxcbi1cXG4tJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOlxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKVxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKVxcbi1cXG4taWZlcSAoJChmaWx0ZXIgY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzLCQoTUFLRUNNREdPQUxTKSksKVxcbi1pbmNsdWRlICQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCkpXFxuLWVuZGlmXFxuLVxcbi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnNcXG4tJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLFxcdFxcXFxcXG4tXFx0JChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICs9ICQoJChOKS5jLUNGTEFHUykpKVxcbi1cXG4tJChUUlVOTkVSX0VYVFJBX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJS5jXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkXFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxcbi1cXG4tJChUUlVOTkVSX0xJQl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOiQoVE9PTFNESVIpL2xpYi8lLmNcXG4tXFx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXFxuLVxcdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFxcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcXG4tXFxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXFxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxcbi0kKFRSVU5ORVJfQklOQVJZKS1leHRyYXM6ICQoVFJVTk5FUl9FWFRSQV9GSUxFUykgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXFxuLVxcdCQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoVFJVTk5FUl9CSU5BUlkpLCQoVFJVTk5FUl9FWFRSQV9GSUxFUykpXFxuLVxcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xcbi1lbmRpZlxcbi1cXG4tIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlc1xcbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKVxcbi1cXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSlcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChUUlVOTkVSX0VYVFJBX09CSlMpICQkKEJQRk9CSilcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChUUlVOTkVSX0xJQl9PQkpTKVxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKFRSVU5ORVJfQlBGVE9PTClcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChPVVRQVVQpL3ZlcmlzdGF0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXFxuLVxcdCQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKVxcbi1cXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRAXFxuLVxcdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXFxcXG4tXFx0XFx0ICAgJChPVVRQVVQpLyQoaWYgJDIsJDIvKWJwZnRvb2xcXG4tXFxuLWVuZGVmXFxuLVxcbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXFxuLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4tVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXFxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cXG4tXFxuLSQoVkVSSUZJQ0FUSU9OX0NFUlQpICQoUFJJVkFURV9LRVkpOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuKyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90XFxuKyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZVxcbisjIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybSBpcyBpbXBsaWNpdGx5IGdyb3VwZWQgZXZlblxcbisjIHdpdGggbWFrZSBcXHUwMDNjIDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLlxcbiskKEJVSUxEX0RJUikvJS5wZW0gJChCVUlMRF9ESVIpLyUuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuIFxcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcXG4gXFx0JChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKVxcbiBcXG5AQCAtODMzLDExNiArNDA4LDE2MiBAQCBMSUJBUkVOQV9CUEZfREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlXFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHQgbGliYXJlbmEvc2VsZnRlc3RzLypcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdCBsaWJhcmVuYS8qLmJwZi5vKVxcbiBcXG4tTElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcXG4tXFxuICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcXG4gXFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmEuc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxcbiBcXG4gaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcXG4tTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXFxuLUNGTEFHUyArPSAtREhBU19CUEZfQVJFTkFfQVNBTlxcbi1cXG4gJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXFxuIFxcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxcbiBlbmRpZlxcbiBcXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci5cXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gcHJvZ190ZXN0c1xcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3NcXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGNncm91cF9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCB0cmFjZV9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBuZXR3b3JrX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IHRlc3RpbmdfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgYnRmX2hlbHBlcnMuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGNhcF9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCB1bnByaXZfaGVscGVycy5jIFxcdFxcXFxcXG4tXFx0XFx0XFx0IHN5c2N0bF9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBuZXRsaW5rX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IGppdF9kaXNhc21faGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgaW9faGVscGVycy5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgdGVzdF9sb2FkZXIuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IHhzay5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgZGlzYXNtLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBkaXNhc21faGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQganNvbl93cml0ZXIuYyBcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAkKFZFUklGWV9TSUdfSERSKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcdFxcXFxcXG4tXFx0XFx0XFx0IGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXFx0XFxcXFxcbi1cXHRcXHRcXHQgYnBmdG9vbF9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCB1c2R0XzEuYyB1c2R0XzIuY1xcdFxcXFxcXG4tXFx0XFx0XFx0ICQoTElCQVJFTkFfU0tFTClcXHRcXFxcXFxuLVxcdFxcdFxcdCAkKExJQkFSRU5BX0FTQU5fU0tFTClcXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jXFxuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKE9VVFBVVCkveGRwX3N5bnByb3h5XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChPVVRQVVQpL3NpZ24tZmlsZVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFRFU1RfS01PRF9UQVJHRVRTKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgIGltYV9zZXR1cC5zaCBcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19CUEZfQlVJTERfUlVMRVxcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzKSlcXG4tXFxuLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUylcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpXFxuLVxcbi0jIERlZmluZSB0ZXN0X3Byb2dzLWNwdXY0IHRlc3QgcnVubmVyLlxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVyc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rZGVmaW5lIGdlbl90ZXN0c19oZHJcXG4rXFx0JChjYWxsIG1zZyxURVNULUhEUiwsJEApXFxuK1xcdCQoUSkoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1xcdFxcdFxcXFxcXG4rXFx0ICAgICBzZWQgLW4gLUUgJ3MvXnZvaWQgKHNlcmlhbF8pP3Rlc3RfKFthLXpBLVowLTlfXSspXFxcXCgodm9pZCk/XFxcXCkuKi9ERUZJTkVfVEVTVChcXFxcMikvcCcgXFxcXFxcbitcXHRcXHQkKEBEKS8qLmMgfCBzb3J0KSBcXHUwMDNlICRAXFxuK2VuZGVmXFxuK1xcbitwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXFxuK1xcdCQoZ2VuX3Rlc3RzX2hkcilcXG4rXFxuK21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpXFxuK1xcdCQoZ2VuX3Rlc3RzX2hkcilcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVGVzdCBydW5uZXIgaW5zdGFuY2VzLCBvbmUgc3ViLW1ha2UgZWFjaCAoc2VlIE1ha2VmaWxlLnJ1bm5lcikuXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbisjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cywgQlBGX0dDQyBhbmQgVEVTVF9LTU9EUyBhcmUgZXhwb3J0ZWRcXG4rIyB0byB0aGUgcnVubmVyIHN1Yi1tYWtlcy4gQ0MgaXMgcGFzc2VkIGV4cGxpY2l0bHkgaW5zdGVhZDogZXhwb3J0aW5nIGl0XFxuKyMgd291bGQgYWxzbyBsZWFrIGxpYi5taydzIENDIGludG8gdGhlIGxpYmJwZi9icGZ0b29sL3Jlc29sdmVfYnRmaWRzXFxuKyMgc3ViLWJ1aWxkcywgd2hpY2ggY29tcHV0ZSB0aGVpciBvd24uICgnZXhwb3J0IE5BTUUnIG9uIGFuIHVuZGVmaW5lZFxcbisjIHZhcmlhYmxlIGNyZWF0ZXMgYW4gZW1wdHkgb25lLCBzbyB0aGVzZSBzdGF5IGJlbG93IHRoZSBkZWZpbml0aW9ucy4pXFxuK2V4cG9ydCBMTFZNX0NGTEFHUyBMTFZNX0xETElCUyBMTFZNX0xERkxBR1MgQlBGX0dDQyBURVNUX0tNT0RTXFxuK1xcbitSVU5ORVJfTUFLRSA6PSAkKE1BS0UpIC1mIE1ha2VmaWxlLnJ1bm5lciBPVVRQVVQ9JChPVVRQVVQpIENDPSckKENDKSdcXG4rXFxuKyMgRXZlcnl0aGluZyBhIHJ1bm5lciBpbnN0YW5jZSByZWZlcmVuY2VzIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZC5cXG4rUlVOTkVSX1BSRVJFUVMgOj0gJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKEJQRlRPT0wpXFx0XFx0XFxcXFxcbitcXHRcXHQgICQoVFJVTk5FUl9CUEZUT09MKSAkKFJFU09MVkVfQlRGSURTKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKE9VVFBVVCkvdmVyaXN0YXRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgJChWRVJJRllfU0lHX0hEUikgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVClcXHRcXFxcXFxuK1xcdFxcdCAgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcXHRcXHRcXFxcXFxuK1xcdFxcdCAgcHJvZ190ZXN0cy90ZXN0cy5oIG1hcF90ZXN0cy90ZXN0cy5oXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICQoSEVMUEVSX09CSlMpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1xcdFxcXFxcXG4rXFx0XFx0ICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcXHRcXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aSAkKFRFU1RfS01PRF9UQVJHRVRTKVxcbitcXG4rRk9SQ0U6XFxuK1xcbisjIFRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9ucyBhcmUgYWxzbyBpbnB1dHMgb2YgYmVuY2gsIHRlc3RfbWFwcyxcXG4rIyB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHA7IFxcXCJkZWZhdWx0LXNrZWxzXFxcIiBidWlsZHMganVzdCB0aG9zZVxcbisjIHdpdGhvdXQgdGhlIHRlc3RfcHJvZ3MgdGVzdCBvYmplY3RzIGFuZCBiaW5hcnkuXFxuKy5QSE9OWTogZGVmYXVsdC1za2Vsc1xcbitkZWZhdWx0LXNrZWxzOiAkKFJVTk5FUl9QUkVSRVFTKVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcXFxcbitcXHRcXHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcXHRcXFxcXFxuK1xcdFxcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYzJ1xcdFxcdFxcXFxcXG4rXFx0XFx0QlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUyBza2Vsc1xcbitcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXFxcXG4rXFx0XFx0QlBGX0NDPSckKENMQU5HKScgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSckKENMQU5HX1NZU19JTkNMVURFUyknXFx0XFxcXFxcbitcXHRcXHRCUEZfQ0NfRkxBR1M9Jy1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12MydcXHRcXHRcXFxcXFxuK1xcdFxcdEJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcXG4rXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLW5vX2FsdTMyOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1ub19hbHUzMiBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9DQz0nJChDTEFORyknIEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0nJChDTEFOR19TWVNfSU5DTFVERVMpJ1xcdFxcXFxcXG4rXFx0XFx0QlBGX0NDX0ZMQUdTPSctTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djInXFxuK1xcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXFxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsY3B1djQpKVxcbiskKE9VVFBVVCkvdGVzdF9wcm9ncy1jcHV2NDogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9Y3B1djQgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcXFxcbitcXHRcXHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcXHRcXFxcXFxuK1xcdFxcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0J1xcdFxcdFxcXFxcXG4rXFx0XFx0QlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xcbiBlbmRpZlxcbiBcXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyBCUEYtR0NDLWZsYXZvcmVkIHRlc3QgcnVubmVyLlxcbiBpZm5lcSAoJChCUEZfR0NDKSwpXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFXFxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsYnBmX2djYykpXFxuLWVuZGlmXFxuLVxcbi0jIERlZmluZSB0ZXN0X21hcHMgdGVzdCBydW5uZXIuXFxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0c1xcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3NcXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfbWFwcy5jXFxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj1cXG4tVFJVTk5FUl9FWFRSQV9GSUxFUyA6PVxcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9ICQkKGVycm9yIG5vIEJQRiBvYmplY3RzIHNob3VsZCBiZSBidWlsdClcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9XFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfbWFwcykpXFxuLVxcbi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLlxcbi0jIEl0IGlzIG11Y2ggc2ltcGxlciB0aGFuIHRlc3RfbWFwcy90ZXN0X3Byb2dzIGFuZCBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb21cXG4tIyB0aGVtIChlLmcuLCB0ZXN0LmggaXMgdXNpbmcgY29tcGxldGVseSBwYXR0ZXJuKSwgdGhhdCBpdCdzIHdvcnRoIGp1c3RcXG4tIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cXG4rIyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2MncyBvd25cXG4rIyBzZWFyY2ggcGF0aCBsYWNrcyB0aGUgaG9zdCdzIGFzbS1nZW5lcmljLyBoZWFkZXJzLlxcbitHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXFxuK1xcbiskKE9VVFBVVCkvdGVzdF9wcm9ncy1icGZfZ2NjOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1icGZfZ2NjIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXFxcXG4rXFx0XFx0QlBGX0NDPSckKEJQRl9HQ0MpJyBCUEZfQ0NfTVNHPUdDQy1CUEZcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdEJQRl9TWVNfSU5DTFVERVM9JyQoR0NDX1NZU19JTkNMVURFUyknXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRCUEZfQ0NfRkxBR1M9Jy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJ1xcbitlbmRpZlxcbitcXG4rIyB0ZXN0X21hcHMgY29tcGlsZXMgbWFwX3Rlc3RzLyouYyBhZ2FpbnN0IHRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9uc1xcbiskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSBtYXBfdGVzdHMvdGVzdHMuaCBkZWZhdWx0LXNrZWxzIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHNcXG4rXFxuKyMgRGVmYXVsdC1mbGF2b3IgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBjb25zdW1lZCBieSB0YXJnZXRzIGluIHRoaXNcXG4rIyBNYWtlZmlsZSAoYW5kIGJ5IGxpYi5taydzIGluc3RhbGwgcnVsZSkgYXJlIHByb2R1Y2VkIGJ5IHRoZSBydW5uZXJcXG4rIyBzdWItbWFrZSBhYm92ZTsgdGhlIGVtcHR5IHJlY2lwZSBwbHVzIHRoZSBvcmRlci1vbmx5IHByZXJlcXVpc2l0ZVxcbisjIG1ha2VzIHRoZW0gYXZhaWxhYmxlIGhlcmUgd2l0aG91dCBkdXBsaWNhdGluZyB0aGUgcnVubmVyJ3MgcnVsZXMuXFxuK0RFRkFVTFRfQlBGX09CSlMgOj0gJChwYXRzdWJzdCBwcm9ncy8lLmMsJChPVVRQVVQpLyUuYnBmLm8sJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxcbitURVNUX0dFTl9GSUxFUyArPSAkKERFRkFVTFRfQlBGX09CSlMpXFxuK1xcbitCRU5DSF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIHRlc3Rfb3ZlcmhlYWQuc2tlbC5oIHRyaWdnZXJfYmVuY2guc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oIGJwZl9sb29wX2JlbmNoLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIHN0cm5jbXBfYmVuY2guc2tlbC5oIGJwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaFxcXFxcXG4rXFx0ICAgICAgIGxvY2FsX3N0b3JhZ2VfYmVuY2guc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYmVuY2guc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgYmVuY2hfbG9jYWxfc3RvcmFnZV9jcmVhdGUuc2tlbC5oXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgYnBmX2hhc2htYXBfbG9va3VwLnNrZWwuaCBodGFiX21lbV9iZW5jaC5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBscG1fdHJpZV9iZW5jaC5za2VsLmggbHBtX3RyaWVfbWFwLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGJwZl9ub3BfYmVuY2guc2tlbC5oIHhkcF9sYl9iZW5jaC5za2VsLmgpXFxuK1RPUF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLHhza194ZHBfcHJvZ3Muc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgIHhkcF9od19tZXRhZGF0YS5za2VsLmggeGRwX2ZlYXR1cmVzLnNrZWwuaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICB0ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCkgJChCRU5DSF9TS0VMUylcXG4rXFxuKyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246IFxcXCJkZWZhdWx0LXNrZWxzXFxcIiAocmUpYnVpbGRzIHRoZSBmaWxlIHZpYSB0aGVcXG4rIyBydW5uZXIgc3ViLW1ha2UsIGFmdGVyIHdoaWNoIG1ha2UgcmUtc3RhdHMgdGhlIHRhcmdldCwgc28gZGVwZW5kZW50c1xcbisjIHNlZSBmcmVzaCB0aW1lc3RhbXBzIHdpdGhpbiB0aGUgc2FtZSBpbnZvY2F0aW9uLiBEZXBlbmRlbnRzIHN0aWxsXFxuKyMgcmVidWlsZCBvbiBtdGltZSBvbmx5IC0gdGhlIHBob255IHByZXJlcXVpc2l0ZSBkb2VzIG5vdCBjYXNjYWRlLlxcbiskKERFRkFVTFRfQlBGX09CSlMpICQoVE9QX1NLRUxTKTogZGVmYXVsdC1za2VscyA7XFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFN0YW5kYWxvbmUgdGVzdCBiaW5hcmllc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rIyB0ZXN0X3ZlcmlmaWVyIGlzIG11Y2ggc2ltcGxlciB0aGFuIHRlc3RfbWFwcy90ZXN0X3Byb2dzIGFuZFxcbisjIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbSB0aGVtIChlLmcuLCBpdHMgdGVzdHMuaCB1c2VzIGEgY29tcGxldGVseVxcbisjIGRpZmZlcmVudCBwYXR0ZXJuKSwgdGhhdCBpdCdzIHdvcnRoIGp1c3QgZGVmaW5pbmcgaXRzIHJ1bGVzIGV4cGxpY2l0bHkuXFxuIHZlcmlmaWVyL3Rlc3RzLmg6IHZlcmlmaWVyLyouY1xcbi1cXHQkKHNoZWxsICggY2QgdmVyaWZpZXIvOyBcXFxcXFxuLVxcdFxcdCAgZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nOyBcXFxcXFxuLVxcdFxcdCAgZWNobyAnI2lmZGVmIEZJTExfQVJSQVknOyBcXFxcXFxuLVxcdFxcdCAgbHMgKi5jIDJcXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAnc0BcXFxcKC4qXFxcXClAI2luY2x1ZGUgXFxcXFxcXCJcXFxcMVxcXFxcXFwiQCc7IFxcXFxcXG4tXFx0XFx0ICBlY2hvICcjZW5kaWYnIFxcXFxcXG4tXFx0XFx0KSBcXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmgpXFxuLSQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSikgfCAkKE9VVFBVVClcXG4rXFx0JChRKSggY2QgdmVyaWZpZXIvOyBcXFxcXFxuK1xcdCAgICAgIGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJzsgXFxcXFxcbitcXHQgICAgICBlY2hvICcjaWZkZWYgRklMTF9BUlJBWSc7IFxcXFxcXG4rXFx0ICAgICAgbHMgKi5jIDJcXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAnc0BcXFxcKC4qXFxcXClAI2luY2x1ZGUgXFxcXFxcXCJcXFxcMVxcXFxcXFwiQCc7IFxcXFxcXG4rXFx0ICAgICAgZWNobyAnI2VuZGlmJyBcXFxcXFxuK1xcdCAgICApIFxcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaFxcbitcXG4rJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKVxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4gIyBJbmNsdWRlIGZpbmRfYml0LmMgdG8gY29tcGlsZSB4c2t4Y2VpdmVyLlxcbiBFWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaFxcbi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSilcXG4gXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbiBcXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuLSQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVClcXG4rJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaFxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4tJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaFxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG5AQCAtOTU0LDExICs1NzUsMTggQEAgJChPVVRQVVQpL3Rlc3RfY3BwOiB0ZXN0X2NwcC5jcHAgJChPVVRQVVQpL3Rlc3RfY29yZV9leHRlcm4uc2tlbC5oICQoQlBGT0JKKVxcbiBcXHQkKGNhbGwgbXNnLENYWCwsJEApXFxuIFxcdCQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRAXFxuIFxcbi0jIEJlbmNobWFyayBydW5uZXJcXG4tJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKVxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpblxcbisjIGJlbmNocy86IGV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi5cXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuK0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxcbitcXG4rJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHNcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUJFTkNIJyAnJChub3RkaXIgJEApJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJFTkNIKVxcbitcXG4rIyBiZW5jaG1hcmstc3BlY2lmaWMgZ2VuZXJhdGVkLXNrZWxldG9uIGRlcGVuZGVuY2llc1xcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm86ICQoT1VUUFVUKS9yaW5nYnVmX2JlbmNoLnNrZWwuaCBcXFxcXFxuQEAgLTk3OCwzNyArNjA2LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyXFxuICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm86ICQoT1VUUFVUKS9icGZfbm9wX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcXG4gJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vOiAkKE9VVFBVVCkveGRwX2xiX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcXG4gJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oXFxuK1xcbiAkKE9VVFBVVCkvYmVuY2gubzogYmVuY2guaCB0ZXN0aW5nX2hlbHBlcnMuaCAkKEJQRk9CSilcXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgKz0gLWxtXFxuLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcXFxcbi1cXHRcXHQgJChURVNUSU5HX0hFTFBFUlMpIFxcXFxcXG4tXFx0XFx0ICQoVFJBQ0VfSEVMUEVSUykgXFxcXFxcbi1cXHRcXHQgJChDR1JPVVBfSEVMUEVSUykgXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2NvdW50Lm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvdXNkdF8xLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXFxcXG4tXFx0XFx0ICNcXG4rJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm9cXHRcXFxcXFxuK1xcdFxcdCAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMub1xcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS91c2R0XzEub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS91c2R0XzIub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoQkVOQ0hfT0JKUylcXG4gXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbi1cXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUxJTksnICckKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcXFxcXFxuK1xcdFxcdCQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKVxcbiBcXG4gIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZTpcXG4gI1xcbkBAIC0xMDM2LDcgKzY0Niw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUilcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdCAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pXFx0XFx0XFx0XFxcXFxcbiBcXHQkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0c1xcbiBcXG4tLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW5cXG4rLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhblxcbiBcXG4gIyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3JcXG4gLkRFTEVURV9PTl9FUlJPUjpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zYTQ5NjJiMDU4NWZlY1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXFxuQEAgLTAsMCArMSwxNzMgQEBcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgU2hhcmVkIHRvb2xjaGFpbiwgcGF0aCBhbmQgZmxhZyBkZWZpbml0aW9ucyBmb3IgdGhlIEJQRiBzZWxmdGVzdHNcXG4rIyBidWlsZCwgaW5jbHVkZWQgYnkgYm90aCBNYWtlZmlsZSBhbmQgTWFrZWZpbGUucnVubmVyLiBEZWZpbml0aW9uc1xcbisjIGZvbGxvdyB0aGUgb3JkZXIgdGhleSBoYWQgaW4gdGhlIE1ha2VmaWxlIGJlZm9yZSB0aGUgc3BsaXQuXFxuK1xcbitDWFggPz0gJChDUk9TU19DT01QSUxFKWcrK1xcbitPQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XFxuK1xcbitDVVJESVIgOj0gJChhYnNwYXRoIC4pXFxuK1xcbitUT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXFxuK0xJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcXG4rQlBGRElSIDo9ICQoTElCRElSKS9icGZcXG4rVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxcbitUT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcXG4rQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxcbitBUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxcbitpZm5lcSAoJChPKSwpXFxuK0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXFxuK2Vsc2VcXG4rR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcXG4rZW5kaWZcXG4rR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXFxuK1BLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcXG4rXFxuK2lmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxcbisgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcXG4rZW5kaWZcXG4rXFxuK2lmZGVmIEFTQU5cXG4rU0FOX0NGTEFHUyBcXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXG4rZWxzZVxcbitTQU5fQ0ZMQUdTXFx0Pz1cXG4rZW5kaWZcXG4rU0FOX0xERkxBR1NcXHQ/PSAkKFNBTl9DRkxBR1MpXFxuK1JFTEVBU0VcXHRcXHQ/PVxcbitPUFRfRkxBR1NcXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcXG4rXFxuK0xJQkVMRl9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcXHUwMDNlL2Rldi9udWxsKVxcbitMSUJFTEZfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXFxuK1xcbisjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxcbisjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xcbisjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxcbitCUEZfU1RSSUNUX0JVSUxEID89IDFcXG4rUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXFxuK1xcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXFxuKyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXFxuKyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXFxuKyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxcbisjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcXG4rc2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcXFxcbitcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSknIDFcXHUwMDNlXFx1MDAyNjI7IH0pXFxuK1xcbitpZmVxICgkKHNyY3RyZWUpLClcXG4rc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcXG4rc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4rZW5kaWZcXG4rXFxuK0NPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXFx0XFx0XFxcXFxcbitcXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcXHRcXFxcXFxuK1xcdCAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcbitMREZMQUdTICs9ICQoU0FOX0xERkxBR1MpXFxuK0xETElCUyArPSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcXG4rXFxuK1BDQVBfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyBcXFwiLURUUkFGRklDX01PTklUT1I9MVxcXCIpXFxuK1BDQVBfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rTERMSUJTICs9ICQoUENBUF9MSUJTKVxcbisjIFVubGlrZSB0aGUgcHJlLXNwbGl0IE1ha2VmaWxlLCB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgYWZ0ZXIgLi4vbGliLm1rXFxuKyMgKHRvcCBsZXZlbCkgb3Igd2l0aG91dCBpdCAocnVubmVyKSwgc28gQ09NTU9OX0NGTEFHUyBpcyBwcmVwZW5kZWQgdG9cXG4rIyBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgaW5jbHVkZS1zZWFyY2ggb3JkZXIuXFxuK0xJQl9NS19DRkxBR1MgOj0gJChDRkxBR1MpXFxuK0NGTEFHUyA9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUykgJChMSUJfTUtfQ0ZMQUdTKVxcbitcXG4raWZuZXEgKCQoTExWTSksKVxcbisjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcXG4rQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxcbitlbmRpZlxcbitcXG4rIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXFxuK0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXFxcXG4rXFx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcXFxcbitcXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxcXFxuK1xcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyAxKVxcbitcXG4rU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXFxuK0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxcbitJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXFxuK0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4rSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxcbitIT1NUX1NDUkFUQ0hfRElSXFx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcXG4rSE9TVF9JTkNMVURFX0RJUlxcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxcbitlbHNlXFxuK0hPU1RfQlVJTERfRElSXFx0XFx0Oj0gJChCVUlMRF9ESVIpXFxuK0hPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKFNDUkFUQ0hfRElSKVxcbitIT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChJTkNMVURFX0RJUilcXG4rZW5kaWZcXG4rSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuK1JFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXFxuK1xcbitERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbitDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxcbitVU0VfQk9PVFNUUkFQIDo9IFxcXCJcXFwiXFxuK2Vsc2VcXG4rVFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKVxcbitVU0VfQk9PVFNUUkFQIDo9IFxcXCJib290c3RyYXAvXFxcIlxcbitlbmRpZlxcbitcXG4rQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcXG4rXFxuKyMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XFxuKyMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXFxcIm1pc3NpbmdcXFwiIGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxcbisjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cXG4rI1xcbisjIFVzZSAnLWlkaXJhZnRlcic6IERvbid0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcXG4rIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxcbitkZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xcbiskKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFxcdTAwM2MvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXFxcXFxuK1xcdHwgc2VkIC1uICcvXFx1MDAzYy4uLlxcdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXFxcKC8uKlxcXFwpfC1pZGlyYWZ0ZXIgXFxcXDF8cCB9JykgXFxcXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzLCAkJDMpfScpIFxcXFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fbG9vbmdhcmNoX2dybGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzKX0nKSBcXFxcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFxcXCItRCVzPSVzIFxcXCIsICQkMiwgJCQzKX0nKVxcbitlbmRlZlxcbitcXG4rIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXFxuK0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgXFxcXFxcbitcXHRcXHRcXHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxcbitNRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbilcXG4rQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcXG4rXFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4rQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXFxuK2VuZGlmXFxuK1xcbisjIEltbWVkaWF0ZSBvbiBwdXJwb3NlOiBleHBhbmRpbmcgZ2V0X3N5c19pbmNsdWRlcyBmb3JrcyBzZXZlcmFsIHNoZWxscy5cXG4rQ0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxcbitCUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXFx0XFxcXFxcbitcXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgI1xcbisjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbitcXG4rQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuK1xcbitWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXFxuK1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4rVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXFxuK1BSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cXG4rXFxuK0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXFxuK1xcbitpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxcbitMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcXG4rQ0ZMQUdTICs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXFxuK2VuZGlmXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uY2VkNDRhYWQ3ZWRlZDRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxcbkBAIC0wLDAgKzEsMzE1IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI1xcbisjIEJ1aWxkIG9uZSBCUEYgdGVzdC1ydW5uZXIgaW5zdGFuY2U6IHRlc3RfcHJvZ3MsIG9uZSBvZiBpdHMgZmxhdm9yc1xcbisjIChub19hbHUzMiwgY3B1djQsIGJwZl9nY2MpLCBvciB0ZXN0X21hcHMuXFxuKyNcXG4rIyBFYWNoIGluc3RhbmNlIGlzIGFuIGluZGVwZW5kZW50IHN1Yi1tYWtlIHdpdGggaXRzIG93biBvdXRwdXQgZGlyZWN0b3J5LFxcbisjIHNvIGV2ZXJ5dGhpbmcgaGVyZSBpcyB3cml0dGVuIGluIHBsYWluIG1ha2UgLSBubyAkJC1lc2NhcGluZywgbm8gZXZhbCxcXG4rIyBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5cyBpbnZva2VkIGJ5IHRoZSBtYWluIE1ha2VmaWxlLFxcbisjIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkIHByZXJlcXVpc2l0ZXMgKGxpYmJwZiwgYnBmdG9vbCwgdm1saW51eC5oLFxcbisjIHZlcmlzdGF0LCBoZWxwZXIgb2JqZWN0cywgc2lnbmluZyBrZXksIGdlbmVyYXRlZCB0ZXN0cy5oLCBleHRyYVxcbisjIGJpbmFyaWVzKSBhcmUgYnVpbHQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKmJlZm9yZSogdGhpcyBvbmUgcnVucyBhbmQgYXJlXFxuKyMgcmVmZXJlbmNlZCBiZWxvdyBhcyBwbGFpbiBmaWxlcy5cXG4rI1xcbisjIFBhcmFtZXRlcnMgKGFsbCBwYXNzZWQgb24gdGhlIHN1Yi1tYWtlIGNvbW1hbmQgbGluZSk6XFxuKyMgICBPVVRQVVQgICAgICBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBzZWxmdGVzdHMgb3V0cHV0IGRpcmVjdG9yeVxcbisjICAgUlVOTkVSICAgICAgYmFzZSBiaW5hcnkgbmFtZTogdGVzdF9wcm9ncyB8IHRlc3RfbWFwc1xcbisjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djY1xcbisjICAgVEVTVFNfRElSICAgZGlyZWN0b3J5IHdpdGggdGhlIHRlc3Qgc291cmNlczogcHJvZ190ZXN0cyB8IG1hcF90ZXN0c1xcbisjICAgQlBGX0NDICAgICAgY29tcGlsZXIgZm9yIHByb2dzLyouYyBCUEYgb2JqZWN0cyAoJChDTEFORykgb3JcXG4rIyAgICAgICAgICAgICAgICQoQlBGX0dDQykpOyBlbXB0eSBmb3IgdGVzdF9tYXBzLCB3aGljaCBidWlsZHMgbm9uZVxcbisjICAgQlBGX0NDX01TRyAgYnVpbGQtbG9nIHRhZzogQ0xORy1CUEYgfCBHQ0MtQlBGXFxuKyMgICBCUEZfQ0NfRkxBR1NcXG4rIyAgICAgICAgICAgICAgIGNvbXBpbGVyLXNwZWNpZmljIGZsYWdzICgtTzIsIHRhcmdldC8tbWNwdSBvciBnY2Mga25vYnMpXFxuKyMgICBCUEZfU1lTX0lOQ0xVREVTXFxuKyMgICAgICAgICAgICAgICBzeXN0ZW0gaW5jbHVkZSBmbGFncyBtYXRjaGluZyBCUEZfQ0NcXG4rIyAgIEJQRl9ERUZJTkVTIGV4dHJhIGRlZmluZXMgZm9yIEJQRiBvYmplY3RzIChlLmcuIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMpXFxuKyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpXFxuKyMgICBMTFZNX0NGTEFHUy9MTFZNX0xETElCUy9MTFZNX0xERkxBR1NcXG4rIyAgICAgICAgICAgICAgIHJlc3VsdHMgb2YgdGhlIHRvcC1sZXZlbCBMTFZNIGZlYXR1cmUgcHJvYmVcXG4rXFxuK2luY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxcbitcXG4rIyBTYW1lIG1lc3NhZ2UgaGVscGVycyBhcyAuLi9saWIubWssIHdoaWNoIG9ubHkgdGhlIHRvcCBsZXZlbCBpbmNsdWRlcy5cXG4raWZlcSAoJChWKSwxKVxcbitRID1cXG4rbXNnID1cXG4rZWxzZVxcbitRID0gQFxcbittc2cgPSBAcHJpbnRmICcgICUtOHMlcyAlcyVzXFxcXG4nIFxcXCIkKDEpXFxcIiBcXFwiJChpZiAkKDIpLCBbJCgyKV0pXFxcIiBcXFwiJChub3RkaXIgJCgzKSlcXFwiIFxcXCIkKGlmICQoNCksICQoNCkpXFxcIjtcXG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XFxuK2VuZGlmXFxuK1xcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xcbitcXG4rIyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay5cXG4rQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0U9XFxuK0NGTEFHUyArPSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcXG4rQ0ZMQUdTICs9ICQoVVNFUkNGTEFHUylcXG4rTERGTEFHUyArPSAkKFVTRVJMREZMQUdTKVxcbitpZm5lcSAoJChMTFZNKSwpXFxuK0NGTEFHUyArPSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlclxcbitDRkxBR1MgKz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXFxuK2VuZGlmXFxuK1xcbitCSU5BUlkgOj0gJChSVU5ORVIpJChpZiAkKEZMQVZPUiksLSQoRkxBVk9SKSlcXG4rUkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXFxuK1xcbithbGw6ICQoT1VUUFVUKS8kKEJJTkFSWSlcXG4rLlBIT05ZOiBhbGxcXG4rXFxuKyMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXFxuKy5ERUxFVEVfT05fRVJST1I6XFxuK1xcbisjIFBlcm1pc3NpdmUgc2tpcC1vbi1mYWlsdXJlIG9mIGluZGl2aWR1YWwgdGVzdHMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZFxcbisjIGl0cyBmbGF2b3JzIG9ubHk7IHRlc3RfbWFwcyB1c2VzIHN0cm9uZyBjcm9zcy1vYmplY3QgcmVmZXJlbmNlcyBhbmQga2VlcHNcXG4rIyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuXFxuK1BFUk1JU1NJVkVfVEVTVFMgOj0gJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzLCQoUlVOTkVSKSksJChQRVJNSVNTSVZFKSlcXG4rXFxuKyQoUkRJUik6XFxuK1xcdCQoY2FsbCBtc2csTUtESVIsLCRAKVxcbitcXHQkKFEpbWtkaXIgLXAgJEBcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgUGVyLXJ1bm5lciBzb3VyY2VzXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncylcXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X3Byb2dzLmMgY2dyb3VwX2hlbHBlcnMuYyB0cmFjZV9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuK1xcdFxcdCBuZXR3b3JrX2hlbHBlcnMuYyB0ZXN0aW5nX2hlbHBlcnMuYyBidGZfaGVscGVycy5jXFx0XFxcXFxcbitcXHRcXHQgY2FwX2hlbHBlcnMuYyB1bnByaXZfaGVscGVycy5jIHN5c2N0bF9oZWxwZXJzLmNcXHRcXFxcXFxuK1xcdFxcdCBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmNcXHRcXFxcXFxuK1xcdFxcdCB0ZXN0X2xvYWRlci5jIHhzay5jIGRpc2FzbS5jIGRpc2FzbV9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuK1xcdFxcdCBqc29uX3dyaXRlci5jIGJwZnRvb2xfaGVscGVycy5jIHVzZHRfMS5jIHVzZHRfMi5jXFxuK0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcXG4rRVhUUkFfSERSUyA6PSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICQoVkVSSUZZX1NJR19IRFIpICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuK0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1xcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgaW1hX3NldHVwLnNoICQoVkVSSUZZX1NJR19TRVRVUClcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxcbitlbmRpZlxcbitcXG4raWZlcSAoJChSVU5ORVIpLHRlc3RfbWFwcylcXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuY1xcbitlbmRpZlxcbitcXG4rIyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluXFxuKyMgTWFrZWZpbGU6IGhlbHBlciBvYmplY3RzIHRoZSBtYWluIE1ha2VmaWxlIGFsc28gdXNlcyAoYW5kIGxpc3RzIGluIHRoZVxcbisjIHJ1bm5lciBwcmVyZXF1aXNpdGVzKSBhcmUgYWxyZWFkeSBidWlsdCBhbmQgZnJlc2ggd2hlbiBhIHJ1bm5lciBzdGFydHMsXFxuKyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLiBUaGlzXFxuKyMgaG9sZHMgYmVjYXVzZSB0aGUgbWFpbiBNYWtlZmlsZSdzIGhlbHBlci1vYmplY3QgcnVsZSBkZXBlbmRzIG9uIGFcXG4rIyBzdXBlcnNldCBvZiB0aGUgcHJlcmVxdWlzaXRlcyB0aGUgRVhUUkFfT0JKUyBydWxlIHVzZXMgaGVyZSAtIGtlZXBcXG4rIyB0aGUgdHdvIGxpc3RzIGluIHN5bmMgKHNlZSB0aGUgaW52YXJpYW50IGNvbW1lbnQgdGhlcmUpLlxcbitcXG4rVEVTVFNfSERSIDo9ICQoVEVTVFNfRElSKS90ZXN0cy5oXFxuK1xcbitURVNUX1NSQ1MgIDo9ICQobm90ZGlyICQod2lsZGNhcmQgJChURVNUU19ESVIpLyouYykpXFxuK1RFU1RfT0JKUyAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLnRlc3QubywkKFRFU1RfU1JDUykpXFxuK1RFU1RfREVQUyAgOj0gJChURVNUX09CSlM6Lm89LmQpXFxuK0VYVFJBX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChmaWx0ZXIgJS5jLCQoRVhUUkFfU09VUkNFUykpKVxcbitMSUJfT0JKUyAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5vLCQoTElCX1NPVVJDRVMpKVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBCUEYgb2JqZWN0cyBhbmQgc2tlbGV0b25zXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitpZm5lcSAoJChCUEZfQ0MpLClcXG4rXFxuK0JQRl9TUkNTIDo9ICQobm90ZGlyICQod2lsZGNhcmQgcHJvZ3MvKi5jKSlcXG4rQlBGX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmJwZi5vLCQoQlBGX1NSQ1MpKVxcbitcXG4rIyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbi5cXG4rU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uY1xcbitcXG4rTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIFxcdFxcXFxcXG4rXFx0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcXHRcXHRcXHRcXFxcXFxuK1xcdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxcXFxuK1xcdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xcbitcXG4rTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcXG4rXFxuKyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxcbitMU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxcXFxuK1xcdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmNcXG4rU0tFTF9CTEFDS0xJU1QgKz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRClcXG4rXFxuKyMgU2tlbGV0b25zIG1hZGUgYnkgbGlua2luZyBtdWx0aXBsZSBCUEYgb2JqZWN0cyB0b2dldGhlci4gVGhlICUtZGVwc1xcbisjIG1hcHBpbmcgaXMgdGhlIG9ubHkgaGFuZC1tYWludGFpbmVkIG1ldGFkYXRhOiBpdCBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tXFxuKyMgdGhlIHNvdXJjZXMuXFxuK3Rlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cXG4rbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xcbitsaW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vXFxuK2xpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cXG4rIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcXG4rIyBidXQgdGhhdCdzIGNyZWF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgc2tlbC5oIGdlbmVyYXRpb24uXFxuK3Rlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm9cXG4rdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXFxuK3Rlc3RfdXNkdC5za2VsLmgtZGVwcyA6PSB0ZXN0X3VzZHQuYnBmLm8gdGVzdF91c2R0X211bHRpc3BlYy5icGYub1xcbit0cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4rdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4rdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4rdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbitcXG4rTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0XFx0bGlua2VkX3ZhcnMuc2tlbC5oIGxpbmtlZF9tYXBzLnNrZWwuaFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oXFx0XFxcXFxcbitcXHRcXHR0ZXN0X3VzZHQuc2tlbC5oIHRyYWNpbmdfbXVsdGkuc2tlbC5oXFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxcbitMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKSlcXG4rXFxuK1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLCQoQlBGX1NSQ1MpKSlcXG4rTFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTKSAkKExTS0VMU19FWFRSQSkpXFxuK0xTS0VMU19TSUdORURfSCA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxcbitMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxcbitBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXFxuK1xcbitIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXFx0XFxcXFxcbitcXHRcXHRcXHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFxcdGJwZl9jb3JlX3JlYWQuaFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0YnBmX2VuZGlhbi5oXFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRicGZfaGVscGVycy5oXFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRicGZfdHJhY2luZy5oKVxcbitcXG4rIyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJFxcdTAwM2MtQ0ZMQUdTIC8gJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUykuXFxuKyMgR0NDIGNhbm5vdCBkaXNhYmxlIFxcXCJkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0XFxcIlxcbisjIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGVzZSAodGVjaG5pY2FsbHkgbGVnYWwpIHRlc3QgcHJvZ3JhbXMuXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitcXG4rJChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcXHRcXHRcXFxcXFxuK1xcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxcbitcXHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChCUEZfQ0MpICQoQlBGX0NGTEFHUykgJChCUEZfU1lTX0lOQ0xVREVTKSAkKEJQRl9ERUZJTkVTKVxcdFxcXFxcXG4rXFx0XFx0JCgkXFx1MDAzYy1DRkxBR1MpICQoJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoQlBGX0NDX0ZMQUdTKSAtYyAkXFx1MDAzYyAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJQRilcXG4rXFxuKyMgZ2VuX2JwZl9za2VsLnNoIHBpY2tzIHRoZSBicGZ0b29sIGJpbmFyeSB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudC5cXG4rZXhwb3J0IEJQRlRPT0xcXG4rR0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcXG4rXFxuKyQoU0tFTFMpOiAkKFJESVIpLyUuc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcXG4rXFx0JChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApXFxuK1xcdCQoUSkkKEdFTl9TS0VMKSAtLW5hbWUgJCpcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJFxcdTAwM2NcXHRcXHRcXFxcXFxuK1xcdFxcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcXG4rXFxuKyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXFxuK1xcdCQoY2FsbCBtc2csR0VOLVNLRUwsJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqX2xza2VsIC0tbHNrZWxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAkXFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXFxuK1xcbiskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVxcdFxcXFxcXG4rXFx0XFx0ICAgICQoR0VOX1NLRUwpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpIHwgJChSRElSKVxcbitcXHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSAoc2lnbmVkKSwkQClcXG4rXFx0JChRKVBSSVZBVEVfS0VZPSQoUFJJVkFURV9LRVkpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRWRVJJRklDQVRJT05fQ0VSVD0kKFZFUklGSUNBVElPTl9DRVJUKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0JChHRU5fU0tFTCkgLS1zaWduIC0tbmFtZSAkKl9sc2tlbFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LS1za2VsICRAICRcXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcXG4rXFxuKy5TRUNPTkRFWFBBTlNJT046XFxuKyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcXFxcbitcXHRcXHQgICAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKVxcbitcXHQkKGNhbGwgbXNnLExJTkstQlBGLCQoQklOQVJZKSwkKEA6LnNrZWwuaD0uYnBmLm8pKVxcbitcXHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSwkQClcXG4rXFx0JChRKSQoR0VOX1NLRUwpIC0tbmFtZSAkKlxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKVxcdFxcdFxcXFxcXG4rXFx0XFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXFxuK1xcbitlbmRpZiAjIEJQRl9DQ1xcbitcXG4rLlBIT05ZOiBza2Vsc1xcbitza2VsczogJChBTExfU0tFTFMpXFxuK1xcbisjIFdoZW4gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhICUuZCBmaWxlLCBvbmx5IHNrZWwgYmFzZW5hbWVzIChub3QgZnVsbFxcbisjIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nICUubyBmaWxlLlxcbisjIFRoZSB2cGF0aCBkaXJlY3RpdmVzIGluc3RydWN0IG1ha2UgdG8gYWxzbyBzZWFyY2ggZm9yIHNrZWwgZmlsZXMgaW5cXG4rIyAkKFJESVIpIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cXG4rdnBhdGggJS5za2VsLmggJChSRElSKVxcbit2cGF0aCAlLmxza2VsLmggJChSRElSKVxcbit2cGF0aCAlLnN1YnNrZWwuaCAkKFJESVIpXFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFRlc3Qgb2JqZWN0cyBhbmQgcnVubmVyIGJpbmFyeVxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rJChSRElSKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoUkRJUikvYnRmX2RhdGEuYnBmLm9cXG4rJChSRElSKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXFxuK1xcbisjIENvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzLlxcbisjIE5vdGU6IHdlIGNkIGludG8gdGhlIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3RzXFxuKyMgYXJlIGZvdW5kLiBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRFxcbisjIGJlbG93OyB0aGUgc2VwYXJhdGUgbm8tcmVjaXBlIHJ1bGUgZm9yIHRoZW0gb3JkZXJzIHRoZSBmaXJzdFxcbisjIGNvbXBpbGF0aW9uIGFmdGVyIHNrZWxldG9uIGdlbmVyYXRpb24gYW5kIHJlLW9yZGVycyB0ZXN0IG9iamVjdFxcbisjIGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycyBjaGFuZ2UuXFxuKyQoVEVTVF9PQkpTKTogJChSRElSKS8lLnRlc3QubzogJChURVNUU19ESVIpLyUuYyB8ICQoUkRJUikvJS50ZXN0LmRcXG4rXFx0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXFxuK1xcdCQoUSkoY2QgJChARCkgXFx1MDAyNlxcdTAwMjYgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJFxcdTAwM2MgLW8gJChARikpIFxcXFxcXG4rXFx0XFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoY2FsbCBza2lwX29uX2ZhaWwsVEVTVCkpXFxuK1xcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJyAgJS04cyVzICVzXFxcXG4nIFxcXCJCVEZJRFNcXFwiIFxcXCIgWyQoQklOQVJZKV1cXFwiIFxcXCIkKG5vdGRpciAkQClcXFwiKTsgXFxcXFxcbitcXHRcXHQkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vICRAO1xcdFxcXFxcXG4rXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcXHRcXHRcXFxcXFxuK1xcdFxcdGZpKVxcbitcXG4rJChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXFxcXG4rXFx0ICAgICAgfCAkKFJESVIpICQoQUxMX1NLRUxTKVxcbitcXG4raW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcXG4rXFxuKyQoUkRJUikvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyArPSAkKExMVk1fQ0ZMQUdTKVxcbitcXG4rJChFWFRSQV9PQkpTKTogJChSRElSKS8lLm86ICUuYyAkKEVYVFJBX0hEUlMpICQoVEVTVFNfSERSKSAkKEJQRk9CSikgfCAkKFJESVIpXFxuK1xcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXFxuK1xcdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJFxcdTAwM2MgLW8gJEBcXG4rXFxuKyQoTElCX09CSlMpOiAkKFJESVIpLyUubzogJChUT09MU0RJUikvbGliLyUuYyB8ICQoUkRJUilcXG4rXFx0JChjYWxsIG1zZyxMSUItT0JKLCQoQklOQVJZKSwkQClcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXFx1MDAzYyAtbyAkQFxcbitcXG4rIyBOb24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhclxcbisjIHdlIGRvIG5vdCBuZWVkIHRvIGNvcHkgZXh0cmEgcmVzb3VyY2VzIChzZWUgZS5nLiB0ZXN0X2J0Zl9kdW1wX2Nhc2UoKSkuXFxuKy5QSE9OWTogZXh0cmFzXFxuK2V4dHJhczogJChpZiAkKFBFUk1JU1NJVkUpLCQod2lsZGNhcmQgJChFWFRSQV9GSUxFUykpLCQoRVhUUkFfRklMRVMpKSB8ICQoUkRJUilcXG4raWZuZXEgKCQoRkxBVk9SKTokKE9VVFBVVCksOiQoQ1VSRElSKSlcXG4raWZuZXEgKCQoc3RyaXAgJChFWFRSQV9GSUxFUykpLClcXG4rXFx0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChub3RkaXIgJChFWFRSQV9GSUxFUykpKVxcbitcXHQkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvXFxuK2VuZGlmXFxuK2VuZGlmXFxuK1xcbisjIEluIHBlcm1pc3NpdmUgbW9kZSwgbGluayB3aGF0ZXZlciB0ZXN0IG9iamVjdHMgd2VyZSBzdWNjZXNzZnVsbHkgYnVpbHRcXG4rIyAodGhlaXIgY29tcGlsYXRpb24gbWF5IGhhdmUgYmVlbiBza2lwcGVkKTogdGhlIG9iamVjdHMgZXhpc3RpbmcgYXRcXG4rIyBwYXJzZSB0aW1lIGFyZSBub3JtYWwgcHJlcmVxdWlzaXRlcyAtIHNvIGVkaXRpbmcgYSB0ZXN0IHNvdXJjZSBzdGlsbFxcbisjIHJlbGlua3MgdGhlIHJ1bm5lciAtIHdoaWxlIHRoZSBmdWxsIHNldCBzdGF5cyBvcmRlci1vbmx5IHRvIGRyaXZlIHRoZVxcbisjIGJ1aWxkIGF0dGVtcHRzLCBhbmQgdGhlIHdpbGRjYXJkIGluIHRoZSByZWNpcGUgcGlja3MgdXAgdGhlIHN1cnZpdm9yc1xcbisjIGF0IGxpbmsgdGltZS5cXG4rIyBQcmVyZXF1aXNpdGUgb3JkZXIgaXMgYWxzbyBsaW5rIG9yZGVyICh0ZXN0IG9iamVjdHMsIGV4dHJhIG9iamVjdHMsXFxuKyMgbGliYnBmLCBsaWIgb2JqZWN0cykuXFxuKyQoT1VUUFVUKS8kKEJJTkFSWSk6ICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSksJChURVNUX09CSlMpKSBcXFxcXFxuK1xcdFxcdCAgICAgJChFWFRSQV9PQkpTKSAkKEJQRk9CSikgJChMSUJfT0JKUylcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICB8IGV4dHJhcyAkKEJQRl9PQkpTKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICAkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChURVNUX09CSlMpKVxcbitcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuK1xcdCQoUSkkKENDKSAkKENGTEFHUylcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSlcXHRcXFxcXFxuK1xcdFxcdFxcdCQoZmlsdGVyLW91dCAkKFRFU1RfT0JKUyksJChmaWx0ZXIgJS5hICUubywkXikpLFxcXFxcXG4rXFx0XFx0XFx0JChmaWx0ZXIgJS5hICUubywkXikpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKExETElCUykgJChMTFZNX0xETElCUykgJChMREZMQUdTKSAkKExMVk1fTERGTEFHUykgLW8gJEBcXG4rXFx0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXFxcXG4rXFx0XFx0ICAgJChSRElSKS9icGZ0b29sXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZTIzNGYzYTU3ZDQ2YmZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxcbkBAIC0wLDAgKzEsOTMgQEBcXG4rIyEvYmluL2Jhc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcXFwiYnBmdG9vbCBnZW4gb2JqZWN0XFxcIiBhbmQgZ2VuZXJhdGUgYVxcbisjIHNrZWxldG9uIChvciBsaWdodCBza2VsZXRvbikgaGVhZGVyIGZyb20gdGhlIHJlc3VsdC5cXG4rI1xcbisjIFVzYWdlOlxcbisjICAgQlBGVE9PTD1cXHUwMDNjYnBmdG9vbFxcdTAwM2UgZ2VuX2JwZl9za2VsLnNoIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLlxcbisjXFxuKyMgICAtLW5hbWUgTkFNRSAgICAgICBza2VsZXRvbiBvYmplY3QgbmFtZSAoXFxcIm5hbWUgTkFNRVxcXCIgZm9yIGJwZnRvb2wpXFxuKyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcXFwiZm9vLnNrZWwuaFxcXCIgb3IgXFxcImZvby5sc2tlbC5oXFxcIilcXG4rIyAgIC0tc3Vic2tlbCBPVVQgICAgIGFsc28gZ2VuZXJhdGUgYSBzdWJza2VsZXRvbiBoZWFkZXIgaW50byBPVVRcXG4rIyAgIC0tbHNrZWwgICAgICAgICAgIGdlbmVyYXRlIGEgbGlnaHQgc2tlbGV0b24gKGJwZnRvb2wgZ2VuIHNrZWxldG9uIC1MKVxcbisjICAgLS1zaWduICAgICAgICAgICAgc2lnbiB0aGUgKGxpZ2h0KSBza2VsZXRvbiwgd2l0aCB0aGUga2V5IGFuZFxcbisjICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGUgdGFrZW4gZnJvbSAkUFJJVkFURV9LRVkgYW5kXFxuKyMgICAgICAgICAgICAgICAgICAgICAkVkVSSUZJQ0FUSU9OX0NFUlRcXG4rI1xcbisjIFRoZSBpbnB1dHMgYXJlIGxpbmtlZCB0aHJlZSB0aW1lcyBhbmQgdGhlIDJuZCBhbmQgM3JkIHJlc3VsdHNcXG4rIyBjb21wYXJlZCwgYXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBkZXRlcm1pbmlzbSBvZiBcXFwiYnBmdG9vbCBnZW5cXG4rIyBvYmplY3RcXFwiLlxcbisjXFxuKyMgSW50ZXJtZWRpYXRlIGZpbGVzIGNhcnJ5IGEgXFxcImxpbmtlZFxcXCIgaW5maXggLSBcXFwibGxpbmtlZFxcXCIgZm9yIGxpZ2h0IG9yXFxuKyMgc2lnbmVkIHNrZWxldG9ucywgc28gZ2VuZXJhdGluZyBhIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGVcXG4rIyBzYW1lIC5icGYubyBpbiBwYXJhbGxlbCBuZXZlciByYWNlcyBvbiB0aGUgaW50ZXJtZWRpYXRlcy5cXG4rI1xcbisjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuXFxuKyMgT24gZmFpbHVyZSBhbGwgb3V0cHV0cyBhbmQgaW50ZXJtZWRpYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHNjcmlwdFxcbisjIGV4aXRzIG5vbi16ZXJvOyBwZXJtaXNzaXZlLW1vZGUgc2tpcHBpbmcgaXMgdGhlIGNhbGxlcidzIGJ1c2luZXNzXFxuKyMgKHNlZSBza2lwX29uX2ZhaWwgaW4gTWFrZWZpbGUuYnVpbGR2YXJzKS5cXG4rXFxuK3NldCAtdVxcbitcXG4rYnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9XFxuK25hbWU9Jycgc2tlbD0nJyBzdWJza2VsPScnXFxuK2xza2VsPTAgc2lnbj0wXFxuK1xcbit3aGlsZSBbICQjIC1ndCAwIF07IGRvXFxuK1xcdGNhc2UgXFxcIiQxXFxcIiBpblxcbitcXHQtLW5hbWUpXFx0XFx0bmFtZT0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLXNrZWwpXFx0XFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLXN1YnNrZWwpXFx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLWxza2VsKVxcdGxza2VsPTE7IHNoaWZ0IDs7XFxuK1xcdC0tc2lnbilcXHRcXHRzaWduPTE7IHNoaWZ0IDs7XFxuK1xcdC0tKVxcdFxcdHNoaWZ0OyBicmVhayA7O1xcbitcXHQtKilcXHRcXHRlY2hvIFxcXCIkMDogdW5rbm93biBvcHRpb246ICQxXFxcIiBcXHUwMDNlXFx1MDAyNjI7IGV4aXQgMSA7O1xcbitcXHQqKVxcdFxcdGJyZWFrIDs7XFxuK1xcdGVzYWNcXG4rZG9uZVxcbitcXG4raWYgWyAteiBcXFwiJG5hbWVcXFwiIF0gfHwgWyAteiBcXFwiJHNrZWxcXFwiIF0gfHwgWyAkIyAtZXEgMCBdOyB0aGVuXFxuK1xcdGVjaG8gXFxcInVzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRleGl0IDFcXG4rZmlcXG4rXFxuK2luZml4PWxpbmtlZFxcbitpZiBbIFxcXCIkbHNrZWxcXFwiIC1lcSAxIF0gfHwgWyBcXFwiJHNpZ25cXFwiIC1lcSAxIF07IHRoZW5cXG4rXFx0aW5maXg9bGxpbmtlZFxcbitmaVxcbitcXG4rYmFzZT0ke3NrZWwlLnNrZWwuaH1cXG4rYmFzZT0ke2Jhc2UlLmxza2VsLmh9XFxuK3QxPSRiYXNlLiR7aW5maXh9MS5vXFxuK3QyPSRiYXNlLiR7aW5maXh9Mi5vXFxuK3QzPSRiYXNlLiR7aW5maXh9My5vXFxuK1xcbitmYWlsKCkge1xcbitcXHRybSAtZiBcXFwiJHNrZWxcXFwiICR7c3Vic2tlbDorXFxcIiRzdWJza2VsXFxcIn0gXFxcIiR0MVxcXCIgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCJcXG4rXFx0ZXhpdCAxXFxuK31cXG4rXFxuK1xcXCIkYnBmdG9vbFxcXCIgZ2VuIG9iamVjdCBcXFwiJHQxXFxcIiBcXFwiJEBcXFwiIHx8IGZhaWxcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDJcXFwiIFxcXCIkdDFcXFwiIHx8IGZhaWxcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDNcXFwiIFxcXCIkdDJcXFwiIHx8IGZhaWxcXG4raWYgISBjbXAgLXMgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCI7IHRoZW5cXG4rXFx0ZWNobyBcXFwiJDA6IGJwZnRvb2wgZ2VuIG9iamVjdCBpcyBub3QgZGV0ZXJtaW5pc3RpYyBmb3IgJHNrZWxcXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRmYWlsXFxuK2ZpXFxuK1xcbithcmdzPSgpXFxuK2lmIFsgXFxcIiRzaWduXFxcIiAtZXEgMSBdOyB0aGVuXFxuK1xcdGFyZ3MrPSgtUyAtayBcXFwiJHtQUklWQVRFX0tFWTo/fVxcXCIgLWkgXFxcIiR7VkVSSUZJQ0FUSU9OX0NFUlQ6P31cXFwiKVxcbitmaVxcbitpZiBbIFxcXCIkbHNrZWxcXFwiIC1lcSAxIF07IHRoZW5cXG4rXFx0YXJncys9KC1MKVxcbitmaVxcbitcXFwiJGJwZnRvb2xcXFwiIGdlbiBza2VsZXRvbiAke2FyZ3NbQF0rXFxcIiR7YXJnc1tAXX1cXFwifSBcXFwiJHQzXFxcIiBuYW1lIFxcXCIkbmFtZVxcXCIgXFx1MDAzZSBcXFwiJHNrZWxcXFwiIHx8IGZhaWxcXG4rXFxuK2lmIFsgLW4gXFxcIiRzdWJza2VsXFxcIiBdOyB0aGVuXFxuK1xcdFxcXCIkYnBmdG9vbFxcXCIgZ2VuIHN1YnNrZWxldG9uIFxcXCIkdDNcXFwiIG5hbWUgXFxcIiRuYW1lXFxcIiBcXHUwMDNlIFxcXCIkc3Vic2tlbFxcXCIgfHwgZmFpbFxcbitmaVxcbitcXG4rcm0gLWYgXFxcIiR0MVxcXCIgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCJcXG4rZXhpdCAwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM4OjMyLjE5NzAzNjc2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY3Mzg3OTI0NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3M2QzMTNmMmNiMTdjNjFjOGU2ZGQ2MzkyNDExY2NmNGVhMzJkYmZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDg6Mzg6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbmluZGV4IDU1ZDM5NDQzODcwNWE2Li4wOWNmZjY5M2I3ZDc4MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG5AQCAtMSw5NiArMSwzMiBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBFdmVyeXRoaW5nIHRoYXQgZXhpc3RzIG9uY2UgbGl2ZXMgaGVyZTogdG9vbGNoYWluIHNldHVwLCB0b29sXG4rIyBzdWItYnVpbGRzLCB2bWxpbnV4LmgsIHNoYXJlZCBoZWxwZXIgb2JqZWN0cywgc3RhbmRhbG9uZSBiaW5hcmllcyBhbmRcbisjIHRoZSBsaWIubWsgY29udHJhY3QuIEVhY2ggdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MgYW5kIGl0c1xuKyMgZmxhdm9ycywgdGVzdF9tYXBzKSBpcyBidWlsdCBieSBpdHMgb3duIE1ha2VmaWxlLnJ1bm5lciBzdWItbWFrZTtcbisjIHNoYXJlZCBkZWZpbml0aW9ucyBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy5cbitcbiBpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGVcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxuIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlXG4gXG4tQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcbi1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XG4tXG4tQ1VSRElSIDo9ICQoYWJzcGF0aCAuKVxuLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbi1MSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4tQlBGRElSIDo9ICQoTElCRElSKS9icGZcbi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4tVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4tQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXG4taWZuZXEgKCQoTyksKVxuLUdFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4tZWxzZVxuLUdFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4tZW5kaWZcbi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcbi1QS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4gXG4taWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXG4tICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4rIyBOZWVkZWQgYmVmb3JlIGxpYi5tayBpcyBpbmNsdWRlZCAoZ2F0ZXMgdGhlIGZsYXZvciBsaXN0IGJlbG93KSwgd2hpY2hcbisjIGlzIGFsc28gd2h5IGl0IGNhbm5vdCBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy5cbitpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4rQlBGX0dDQyA6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4gZW5kaWZcbiBcbi1CUEZfR0NDXHRcdD89ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcbi1pZmRlZiBBU0FOXG4tU0FOX0NGTEFHUyBcdD89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxuLWVsc2Vcbi1TQU5fQ0ZMQUdTXHQ/PVxuLWVuZGlmXG4tU0FOX0xERkxBR1NcdD89ICQoU0FOX0NGTEFHUylcbi1SRUxFQVNFXHRcdD89XG4tT1BUX0ZMQUdTXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcbi1cbi1MSUJFTEZfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcdTAwM2UvZGV2L251bGwpXG4tTElCRUxGX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcdTAwM2UvZGV2L251bGwgfHwgZWNobyAtbGVsZilcbi1cbiBTS0lQX0RPQ1NcdD89XG4gU0tJUF9MTFZNXHQ/PVxuIFNLSVBfTElCQkZEXHQ/PVxuIFNLSVBfQ1JZUFRPXHQ/PVxuIFxuLSMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yXG4tIyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXNcbi0jIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuLUJQRl9TVFJJQ1RfQlVJTEQgPz0gMVxuLVBFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKVxuLVxuLWlmZXEgKCQoc3JjdHJlZSksKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoQ1VSRElSKSkpXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4tZW5kaWZcbiBcbi1DT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExXHRcdFx0XHRcXFxuLVx0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXHRcdFx0XHRcXFxuLVx0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXHRcdFx0XHRcdFxcXG4tXHQgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKVx0XHRcdFxcXG4tXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcdFx0XFxcbi1cdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVx0XFxcbi1cdCAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxuLUxERkxBR1MgKz0gJChTQU5fTERGTEFHUylcbi1MRExJQlMgKz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4tXG4tUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCItRFRSQUZGSUNfTU9OSVRPUj0xXCIpXG4tUENBUF9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbClcbi1MRExJQlMgKz0gJChQQ0FQX0xJQlMpXG4tQ0ZMQUdTICs9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUylcbi1cbi0jIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzXG4taml0X2Rpc2FzbV9oZWxwZXJzLmMtQ0ZMQUdTID0gJChMTFZNX0NGTEFHUylcbi1cbi1pZm5lcSAoJChMTFZNKSwpXG4tIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nXG4tQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuLWVuZGlmXG4tXG4tIyBDaGVjayB3aGV0aGVyIGJwZiBjcHU9djQgaXMgc3VwcG9ydGVkIG9yIG5vdCBieSBjbGFuZ1xuIGlmbmVxICgkKHNoZWxsICQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtbWNwdT1oZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAndjQnKSwpXG4gQ0xBTkdfQ1BVVjQgOj0gMVxuIGVuZGlmXG4gXG4tIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXG4tQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICdpbnQgeDsnIHwgXFxcbi1cdCQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFxcXG4tXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuLVx0LXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIDEpXG4tXG4gIyBPcmRlciBjb3JyZXNwb25kIHRvICdtYWtlIHJ1bl90ZXN0cycgb3JkZXJcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXG4gXHR0ZXN0X3NvY2ttYXAgXFxcbkBAIC0xMDIsMTYgKzM4LDYgQEAgVEVTVF9JTlNUX1NVQkRJUlMgOj0gbm9fYWx1MzJcbiBpZm5lcSAoJChCUEZfR0NDKSwpXG4gVEVTVF9HRU5fUFJPR1MgKz0gdGVzdF9wcm9ncy1icGZfZ2NjXG4gVEVTVF9JTlNUX1NVQkRJUlMgKz0gYnBmX2djY1xuLVxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2Zcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tXG4gZW5kaWZcbiBcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuQEAgLTIxMywyMSArMTM5LDggQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXG4gZW5kaWZcbiBlbmRpZlxuIFxuLVNDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29sc1xuLUJVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxuLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcbi1CUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbi1IT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxuLUhPU1RfU0NSQVRDSF9ESVJcdDo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzXG4tSE9TVF9JTkNMVURFX0RJUlx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXG4tZWxzZVxuLUhPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKVxuLUhPU1RfU0NSQVRDSF9ESVJcdDo9ICQoU0NSQVRDSF9ESVIpXG4tSE9TVF9JTkNMVURFX0RJUlx0Oj0gJChJTkNMVURFX0RJUilcbi1lbmRpZlxuLUhPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuLVJFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbitcbiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVx0XHRcdFx0XFxcbiBcdFx0ICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KVx0XFxcbiBcdFx0ICAgICAuLi8uLi8uLi8uLi92bWxpbnV4XHRcdFx0XHRcXFxuQEAgLTI0Miw3ICsxNTUsNyBAQCBlbmRpZlxuICMgdG8gYnVpbGQgaW5kaXZpZHVhbCB0ZXN0cy5cbiAjIE5PVEU6IFNlbWljb2xvbiBhdCB0aGUgZW5kIGlzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIGxpYi5taydzIGRlZmF1bHQgc3RhdGljXG4gIyBydWxlIGZvciBiaW5hcmllcy5cbi0kKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpXHRcdFx0XHRcXFxuKyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuIFx0ICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpKTogJTogJChPVVRQVVQpLyUgO1xuIFxuICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nXG5AQCAtMjU2LDExICsxNjksMTQgQEAgJChNQUtFX0RJUlMpOlxuIFxuICQoT1VUUFVUKS8lLm86ICUuY1xuIFx0JChjYWxsIG1zZyxDQywsJEApXG4tXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAXG4rXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgLW8gJEBcbiBcbisjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcbisjIHRoZXkgbXVzdCBub3QgcmVhY2ggdGhlIGNsYW5nL2djYyBjb21tYW5kIGxpbmUgKGNsYW5nIHRyZWF0cyBhIGJhcmUgLmhcbisjIGFyZ3VtZW50IGFzIGEgcHJlY29tcGlsZWQtaGVhZGVyIGpvYiBhbmQgcmVmdXNlcyAtbykuXG4gJChPVVRQVVQpLyU6JS5jXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4tXHQkKFEpJChMSU5LLmMpICReICQoTERMSUJTKSAtbyAkQFxuK1x0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIExMVk0ncyBsZC5sbGQgZG9lc24ndCBzdXBwb3J0IGFsbCB0aGUgYXJjaGl0ZWN0dXJlcywgc28gdXNlIGl0IG9ubHkgb24geDg2XG4gaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpXG5AQCAtMzE0LDE2ICsyMzAsNiBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSlcbiBcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcbiBcbiBcbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCJcIlxuLWVsc2Vcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4tVVNFX0JPT1RTVFJBUCA6PSBcImJvb3RzdHJhcC9cIlxuLWVuZGlmXG4tXG4gJChURVNUX0dFTl9QUk9HUykgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCk6ICQoQlBGT0JKKVxuIFxuIFRFU1RJTkdfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXG5AQCAtMzQ0LDcgKzI1MCwzOSBAQCAkKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFRFU1RJTkdfSEVMUEVSUylcbiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXG4gJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcbiBcbi1CUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuKyMgQWxsIGhlbHBlciBvYmplY3RzIGEgcnVubmVyIGluc3RhbmNlIGxpbmtzLCBwcmUtYnVpbHQgaGVyZSBzbyBydW5uZXJcbisjIHN1Yi1tYWtlcyBzaGFyaW5nICQoT1VUUFVUKSBuZXZlciBjb21waWxlIHRoZW0gY29uY3VycmVudGx5LlxuK0hFTFBFUl9PQkpTIDo9ICQoVEVTVElOR19IRUxQRVJTKSAkKENHUk9VUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVx0XFxcbitcdCAgICAgICAkKFRSQUNFX0hFTFBFUlMpICQoSlNPTl9XUklURVIpICQoQ0FQX0hFTFBFUlMpXHRcdFxcXG4rXHQgICAgICAgJChORVRXT1JLX0hFTFBFUlMpICQoT1VUUFVUKS91c2R0XzEubyAkKE9VVFBVVCkvdXNkdF8yLm9cdFxcXG4rXHQgICAgICAgJChPVVRQVVQpL3hzay5vXG4rXG4rIyAkKEJQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXQgaW5zdGFsbHNcbisjIGxpYmJwZidzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50b1xuKyMgJChJTkNMVURFX0RJUik7IHdpdGhvdXQgaXQsIGhlbHBlcnMgaW5jbHVkaW5nIHRob3NlIGhlYWRlcnMgcmFjZSB0aGVcbisjIGluc3RhbGwgYW5kIGNhbiBzaWxlbnRseSBwaWNrIHVwIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC5cbisjXG4rIyBJbnZhcmlhbnQ6IHRoaXMgbGlzdCBtdXN0IGJlIGEgc3VwZXJzZXQgb2YgZXZlcnkgcHJlcmVxdWlzaXRlIHRoZVxuKyMgcnVubmVyJ3MgRVhUUkFfT0JKUyBydWxlIGF0dGFjaGVzIHRvIHRoZXNlIHNhbWUgb2JqZWN0cyAoRVhUUkFfSERSUyxcbisjIGJvdGggdGVzdHMuaCBmbGF2b3JzLCAkKEJQRk9CSikpLiBJdCBndWFyYW50ZWVzIHRoZSBoZWxwZXJzIGJ1aWx0XG4rIyBoZXJlIGFyZSBuZXZlciBvbGRlciB0aGFuIGEgcnVubmVyLXNpZGUgcHJlcmVxdWlzaXRlLCBzbyB0aGVcbisjIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBhbmQgdGVzdF9tYXBzIHN1Yi1tYWtlcywgd2hpY2ggc2hhcmUgJChPVVRQVVQpLFxuKyMgdHJlYXQgdGhlbSBhcyB1cCB0byBkYXRlIGluc3RlYWQgb2YgYm90aCByZWNvbXBpbGluZyB0aGUgc2FtZSBvYmplY3RcbisjIGZpbGUgY29uY3VycmVudGx5LlxuKyQoSEVMUEVSX09CSlMpOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcdFx0XFxcbitcdFx0JChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcXFxuK1x0XHRwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmggJChCUEZPQkopICQoQlBGVE9PTClcbitcbiskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogZmxvd19kaXNzZWN0b3JfbG9hZC5oXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFRvb2wgc3ViLWJ1aWxkczogYnBmdG9vbCBhbmQgbGliYnBmIChob3N0IGFuZCwgd2hlbiBjcm9zcy1jb21waWxpbmcsXG4rIyB0YXJnZXQgdmFyaWFudHMpIGFuZCByZXNvbHZlX2J0Zmlkcy5cbisjXG4rIyBOb3RlIHRoZSBkZWxpYmVyYXRlIGFzeW1tZXRyeTogdGhlIGhvc3QgbGliYnBmIGJ1aWxkcyB3aXRob3V0XG4rIyBzYW5pdGl6ZXJzIGFuZCB3aXRoIHRoZSBob3N0IHRvb2xjaGFpbi5cbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcXFxuIFx0XHQgICAgJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9icGZ0b29sXG4gXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKSAgLUMgJChCUEZUT09MRElSKVx0XHRcdCAgICAgICBcXFxuQEAgLTQxMiw3ICszNTAsNyBAQCBlbmRpZlxuIFxuICMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXG4gIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2Zcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcbisjIEJQRiBvYmplY3RzLlxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXG4gaWZlcSAoJChWTUxJTlVYX0gpLClcbiBcdCQoY2FsbCBtc2csR0VOLCwkQClcbkBAIC00MzcsMzc0ICszNzUsMTEgQEAgJChSRVNPTFZFX0JURklEUyk6ICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHNcdFxcXG4gXHRcdEhPU1RQS0dfQ09ORklHPSckKFBLR19DT05GSUcpJyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XG4tIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcIm1pc3NpbmdcIiBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbi0jIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cbi0jXG4tIyBVc2UgJy1pZGlyYWZ0ZXInOiBEb24ndCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4tIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxuLWRlZmluZSBnZXRfc3lzX2luY2x1ZGVzXG4tJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbi1cdHwgc2VkIC1uICcvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfScpIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXCItRF9fcmlzY3ZfeGxlbj0lZCAtRF9fQklUU19QRVJfTE9ORz0lZFwiLCAkJDMsICQkMyl9JykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX2xvb25nYXJjaF9ncmxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzKX0nKSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXCItRCVzPSVzIFwiLCAkJDIsICQkMyl9Jylcbi1lbmRlZlxuLVxuLSMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuLUlTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBcXFxuLVx0XHRcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVx0XHRcdFx0XFxcbi1cdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4tXHQgICAgIC1zdGQ9Z251MTFcdFx0IFx0XHRcdFx0XHRcXFxuLVx0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZtcy1leHRlbnNpb25zXHRcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcdFx0XHRcXFxuLVx0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAjXG4tIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcbi1cbi1DTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUylcbi1cbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcbi0kKE9VVFBVVCkvdGVzdF94ZHBfbm9pbmxpbmUubzogQlBGX0NGTEFHUyArPSAtZm5vLWlubGluZVxuLVxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxuLSQoT1VUUFVUKS9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5vOiBjZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oXG4tXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXG4tIyAkMSAtIGlucHV0IC5jIGZpbGVcbi0jICQyIC0gb3V0cHV0IC5vIGZpbGVcbi0jICQzIC0gQ0ZMQUdTXG4tIyAkNCAtIGJpbmFyeSBuYW1lXG4tZGVmaW5lIENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJQRicgJyQobm90ZGlyICQyKScgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBkaXNhYmxlZCBhbHUzMlxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MiAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJQRicgJyQobm90ZGlyICQyKScgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcbi1kZWZpbmUgQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXY0IC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgR0NDXG4tZGVmaW5lIEdDQ19CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxHQ0MtQlBGLCQ0LCQyKVxuLVx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLVxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcbi1cbi1MSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4tXHRcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXHRcdFx0XFxcbi1cdFx0dGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oXHRcXFxuLVx0XHR0ZXN0X3VzZHQuc2tlbC5oIHRyYWNpbmdfbXVsdGkuc2tlbC5oXHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oXHRcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmhcdFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmhcbi1cbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXHRcXFxuLVx0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuLVx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXG4tXHR0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmNcbi1cbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xuLVxuLSMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXG4tXHRrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jXG4tU0tFTF9CTEFDS0xJU1QgKz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxuLXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm9cbi10ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cbi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cbi14c2tfeGRwX3Byb2dzLnNrZWwuaC1kZXBzIDo9IHhza194ZHBfcHJvZ3MuYnBmLm9cbi14ZHBfaHdfbWV0YWRhdGEuc2tlbC5oLWRlcHMgOj0geGRwX2h3X21ldGFkYXRhLmJwZi5vXG4teGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYub1xuLXRyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tXG4tTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpXG4tTElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKVxuLVxuLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXHRcdFxcXG4tXHRcdFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXHRcXFxuLVx0XHRcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXHRicGZfY29yZV9yZWFkLmhcdFxcXG4tXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX2VuZGlhbi5oXHRcXFxuLVx0XHRcdFx0XHRcdGJwZl9oZWxwZXJzLmhcdFxcXG4tXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcbi1cbi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCBcInRlbXBvcmFyeVwiIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcImZsYXZvclwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0Yylcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSXG4tXG4tTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKVxuLVRSVU5ORVJfT1VUUFVUIDo9ICQoT1VUUFVUKSQoaWYgJDIsLykkMlxuLVRSVU5ORVJfQklOQVJZIDo9ICQxJChpZiAkMiwtKSQyXG4tVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubyxcdFxcXG4tXHRcdFx0XHQgJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUU19ESVIpLyouYykpKVxuLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcdFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9MSUJfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcdFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9MSUJfU09VUkNFUykpKVxuLVRSVU5ORVJfRVhUUkFfSERSUyA6PSAkJChmaWx0ZXIgJS5oLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSlcbi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oXG4tVFJVTk5FUl9CUEZfU1JDUyA6PSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouYykpXG4tVFJVTk5FUl9CUEZfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm8sICQkKFRSVU5ORVJfQlBGX1NSQ1MpKVxuLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsXHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLFxcXG4tXHRcdFx0XHRcdCAgICAgICAkJChUUlVOTkVSX0JQRl9TUkNTKSkpXG4tVFJVTk5FUl9CUEZfTFNLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFMpICQkKExTS0VMU19FWFRSQSkpXG4tVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFNfU0lHTkVEKSlcbi1URVNUX0dFTl9GSUxFUyArPSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcImZsYXZvclwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0Yylcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTXG4tXG4tIyBQZXJtaXNzaXZlIGJ1aWxkIGJlaGF2aW91ciAoc2tpcC1vbi1mYWlsdXJlIGNvbXBpbGUsIHBhcnRpYWwtbGluaykgb25seVxuLSMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZCBpdHMgZmxhdm9yczsgcnVubmVycyB0aGF0IHVzZSBzdHJvbmcgY3Jvc3Mtb2JqZWN0XG4tIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxuLSMgVGhlIGNoZWNrIGlzIGlubGluZWQgcGVyLXJ1bm5lciBzbyAkMSBpcyBzdWJzdGl0dXRlZCBhdCAkKGNhbGwpIHRpbWUgYW5kXG4tIyB0aGUgcmVzdWx0IGlzIGJha2VkIGludG8gZWFjaCBydWxlJ3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKSAoc2lnbmVkKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdMSU5LLUJQRicgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkKEA6LnNrZWwuaD0uYnBmLm8pKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1x0XHRcdFx0XHRcXFxuLVx0XHQgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJ1x0XFxcbi1cdFx0XHQkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMgfCBzb3J0IDtcdFxcXG4tXHRcdCApIFx1MDAzZSAkJEApXG4tZW5kaWZcbi1cbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuLVxuLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcbi0jIE5vdGU6IHdlIGNkIGludG8gb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdCBpcyBmb3VuZFxuLSQoVFJVTk5FUl9URVNUX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubzpcdFx0XHRcXFxuLVx0XHQgICAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmNcdFx0XHRcdFxcXG4tXHRcdCAgICAgIHwgJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmRcbi1cdCQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkoY2QgJCQoQEQpIFx1MDAyNlx1MDAyNiAkJChDQykgLUkuICQkKENGTEFHUykgLU1NRCAtTVQgJCRAIC1jICQoQ1VSRElSKS8kJFx1MDAzYyAkJChMRExJQlMpIC1vICQkKEBGKSkgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkJEA7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtVEVTVCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MikpKVxuLVx0JCQoaWYgJCQoVEVTVF9ORUVEU19CVEZJRFMpLFx0XHRcdFx0XHRcdFxcXG4tXHRcdCQoUSlpZiBbIC1mICQkQCBdOyB0aGVuXHRcdFx0XHRcdFx0XFxcbi1cdFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcbicgXCJCVEZJRFNcIiBcIiBbJChUUlVOTkVSX0JJTkFSWSldXCIgXCIkJChub3RkaXIgJCRAKVwiKTsgXFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1x0XFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1x0XHRcXFxuLVx0XHRmaSlcbi1cbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRClcbi1cbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXG4taW5jbHVkZSAkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlM6Lm89LmQpKVxuLWVuZGlmXG4tXG4tIyBhZGQgcGVyIGV4dHJhIG9iaiBDRkdMQUdTIGRlZmluaXRpb25zXG4tJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLFx0XFxcbi1cdCQoZXZhbCAkKFRSVU5ORVJfT1VUUFVUKS8kKE4pLm86IENGTEFHUyArPSAkKCQoTikuYy1DRkxBR1MpKSlcbi1cbi0kKFRSVU5ORVJfRVhUUkFfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAlLmNcdFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuY1xuLVx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0jIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZVxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxuLSQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhczogJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4taWZuZXEgKCQyOiQoT1VUUFVUKSw6JChzaGVsbCBwd2QpKVxuLVx0JCQoY2FsbCBtc2csRVhULUNPUFksJChUUlVOTkVSX0JJTkFSWSksJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSlcbi1cdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xuLWVuZGlmXG4tXG4tIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlc1xuLSQoT1VUUFVUKS8kKFRSVU5ORVJfQklOQVJZKTogfCAkKFRSVU5ORVJfQlBGX09CSlMpXG4tXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSlcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfRVhUUkFfT0JKUykgJCQoQlBGT0JKKVx0XHRcXFxuLVx0XHRcdCAgICAgJChUUlVOTkVSX0xJQl9PQkpTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfQlBGVE9PTClcdFx0XHRcdFxcXG4tXHRcdFx0ICAgICAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XHRcdFxcXG4tXHRcdFx0ICAgICB8ICQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhc1x0XHRcdFxcXG4tXHRcdFx0ICAgICAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJChUUlVOTkVSX1RFU1RfT0JKUykpKVxuLVx0JCQoY2FsbCBtc2csQklOQVJZLCwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRAXG4tXHQkKFEpbG4gLXNmICQoaWYgJDIsLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcXFxuLVx0XHQgICAkKE9VVFBVVCkvJChpZiAkMiwkMi8pYnBmdG9vbFxuLVxuLWVuZGVmXG4tXG4tVkVSSUZZX1NJR19TRVRVUCA6PSAkKENVUkRJUikvdmVyaWZ5X3NpZ19zZXR1cC5zaFxuLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0Lmhcbi1WRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcbi1QUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXG4tXG4tJChWRVJJRklDQVRJT05fQ0VSVCkgJChQUklWQVRFX0tFWSk6ICQoVkVSSUZZX1NJR19TRVRVUClcbisjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdFxuKyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZVxuKyMgb3BlbnNzbCBpbnZvY2F0aW9ucyByYWNlOyB0aGUgcGF0dGVybiBmb3JtIGlzIGltcGxpY2l0bHkgZ3JvdXBlZCBldmVuXG4rIyB3aXRoIG1ha2UgXHUwMDNjIDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLlxuKyQoQlVJTERfRElSKS8lLnBlbSAkKEJVSUxEX0RJUikvJS5kZXI6ICQoVkVSSUZZX1NJR19TRVRVUClcbiBcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcbiBcdCQoUSkkKFZFUklGWV9TSUdfU0VUVVApIGdlbmtleSAkKEJVSUxEX0RJUilcbiBcbkBAIC04MzMsMTE2ICs0MDgsMTYyIEBAIExJQkFSRU5BX0JQRl9ERVBTIDo9ICQod2lsZGNhcmQgbGliYXJlbmEvTWFrZWZpbGVcdFx0XFxcbiBcdFx0XHRcdCBsaWJhcmVuYS9zZWxmdGVzdHMvKlx0XHRcXFxuIFx0XHRcdFx0IGxpYmFyZW5hLyouYnBmLm8pXG4gXG4tTElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcbi1cbiAkKExJQkFSRU5BX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXG4gXHQrJChNQUtFKSAtQyBsaWJhcmVuYSBsaWJhcmVuYS5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gXG4gaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbi1MSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbi1DRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbi1cbiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci5cbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBwcm9nX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuY1x0XHRcXFxuLVx0XHRcdCBjZ3JvdXBfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0cmFjZV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldHdvcmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0ZXN0aW5nX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgYnRmX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCBjYXBfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHVucHJpdl9oZWxwZXJzLmMgXHRcXFxuLVx0XHRcdCBzeXNjdGxfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBuZXRsaW5rX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaml0X2Rpc2FzbV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IGlvX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCB0ZXN0X2xvYWRlci5jXHRcdFxcXG4tXHRcdFx0IHhzay5jXHRcdFx0XFxcbi1cdFx0XHQgZGlzYXNtLmNcdFx0XFxcbi1cdFx0XHQgZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQganNvbl93cml0ZXIuYyBcdFx0XFxcbi1cdFx0XHQgJChWRVJJRllfU0lHX0hEUilcdFx0XFxcbi1cdFx0XHQgZmxvd19kaXNzZWN0b3JfbG9hZC5oXHRcXFxuLVx0XHRcdCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XFxcbi1cdFx0XHQgYnBmdG9vbF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHVzZHRfMS5jIHVzZHRfMi5jXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX1NLRUwpXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX0FTQU5fU0tFTClcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVyc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rZGVmaW5lIGdlbl90ZXN0c19oZHJcbitcdCQoY2FsbCBtc2csVEVTVC1IRFIsLCRAKVxuK1x0JChRKShlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7XHRcdFxcXG4rXHQgICAgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJyBcXFxuK1x0XHQkKEBEKS8qLmMgfCBzb3J0KSBcdTAwM2UgJEBcbitlbmRlZlxuK1xuK3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYylcbitcdCQoZ2VuX3Rlc3RzX2hkcilcbitcbittYXBfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBtYXBfdGVzdHMvKi5jKVxuK1x0JChnZW5fdGVzdHNfaGRyKVxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBUZXN0IHJ1bm5lciBpbnN0YW5jZXMsIG9uZSBzdWItbWFrZSBlYWNoIChzZWUgTWFrZWZpbGUucnVubmVyKS5cbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuKyMgVGhlIExMVk0gZmVhdHVyZS1wcm9iZSByZXN1bHRzLCBCUEZfR0NDIGFuZCBURVNUX0tNT0RTIGFyZSBleHBvcnRlZFxuKyMgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuIENDIGlzIHBhc3NlZCBleHBsaWNpdGx5IGluc3RlYWQ6IGV4cG9ydGluZyBpdFxuKyMgd291bGQgYWxzbyBsZWFrIGxpYi5taydzIENDIGludG8gdGhlIGxpYmJwZi9icGZ0b29sL3Jlc29sdmVfYnRmaWRzXG4rIyBzdWItYnVpbGRzLCB3aGljaCBjb21wdXRlIHRoZWlyIG93bi4gKCdleHBvcnQgTkFNRScgb24gYW4gdW5kZWZpbmVkXG4rIyB2YXJpYWJsZSBjcmVhdGVzIGFuIGVtcHR5IG9uZSwgc28gdGhlc2Ugc3RheSBiZWxvdyB0aGUgZGVmaW5pdGlvbnMuKVxuK2V4cG9ydCBMTFZNX0NGTEFHUyBMTFZNX0xETElCUyBMTFZNX0xERkxBR1MgQlBGX0dDQyBURVNUX0tNT0RTXG4rXG4rUlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0nJChDQyknXG4rXG4rIyBFdmVyeXRoaW5nIGEgcnVubmVyIGluc3RhbmNlIHJlZmVyZW5jZXMgYnV0IGRvZXMgbm90IGtub3cgaG93IHRvIGJ1aWxkLlxuK1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKVx0XHRcXFxuK1x0XHQgICQoVFJVTk5FUl9CUEZUT09MKSAkKFJFU09MVkVfQlRGSURTKVx0XHRcdFxcXG4rXHRcdCAgJChPVVRQVVQpL3ZlcmlzdGF0XHRcdFx0XHRcdFxcXG4rXHRcdCAgJChWRVJJRllfU0lHX0hEUikgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVClcdFxcXG4rXHRcdCAgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcdFx0XFxcbitcdFx0ICBwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmhcdFx0XHRcXFxuK1x0XHQgICQoSEVMUEVSX09CSlMpXHRcdFx0XHRcdFxcXG4rXHRcdCAgJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcXFxuK1x0XHQgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVx0XHRcXFxuK1x0XHQgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUylcbitcbitGT1JDRTpcbitcbisjIFRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9ucyBhcmUgYWxzbyBpbnB1dHMgb2YgYmVuY2gsIHRlc3RfbWFwcyxcbisjIHhza3hjZWl2ZXIsIHhkcF8qIGFuZCB0ZXN0X2NwcDsgXCJkZWZhdWx0LXNrZWxzXCIgYnVpbGRzIGp1c3QgdGhvc2VcbisjIHdpdGhvdXQgdGhlIHRlc3RfcHJvZ3MgdGVzdCBvYmplY3RzIGFuZCBiaW5hcnkuXG4rLlBIT05ZOiBkZWZhdWx0LXNrZWxzXG4rZGVmYXVsdC1za2VsczogJChSVU5ORVJfUFJFUkVRUylcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYzJ1x0XHRcXFxuK1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTIHNrZWxzXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYzJ1x0XHRcXFxuK1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1ub19hbHUzMiBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYyJ1xuK1xuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxjcHV2NCkpXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtY3B1djQ6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1jcHV2NCBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0J1x0XHRcXFxuK1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGJwZl9nY2MpKVxuLWVuZGlmXG4tXG4tIyBEZWZpbmUgdGVzdF9tYXBzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0c1xuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xuLVRSVU5ORVJfRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuY1xuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj1cbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSAkJChlcnJvciBubyBCUEYgb2JqZWN0cyBzaG91bGQgYmUgYnVpbHQpXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9XG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLlxuLSMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxuLSMgdGhlbSAoZS5nLiwgdGVzdC5oIGlzIHVzaW5nIGNvbXBsZXRlbHkgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0XG4tIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbisjIFN5cyBpbmNsdWRlcyBjb21lIGZyb20gdGhlICpob3N0KiBnY2MsIG5vdCAkKEJQRl9HQ0MpIC0gYnBmLWdjYydzIG93blxuKyMgc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QncyBhc20tZ2VuZXJpYy8gaGVhZGVycy5cbitHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbitcdFx0QlBGX0NDPSckKEJQRl9HQ0MpJyBCUEZfQ0NfTVNHPUdDQy1CUEZcdFx0XHRcdFxcXG4rXHRcdEJQRl9TWVNfSU5DTFVERVM9JyQoR0NDX1NZU19JTkNMVURFUyknXHRcdFx0XHRcXFxuK1x0XHRCUEZfQ0NfRkxBR1M9Jy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJ1xuK2VuZGlmXG4rXG4rIyB0ZXN0X21hcHMgY29tcGlsZXMgbWFwX3Rlc3RzLyouYyBhZ2FpbnN0IHRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9uc1xuKyQoT1VUUFVUKS90ZXN0X21hcHM6ICQoUlVOTkVSX1BSRVJFUVMpIG1hcF90ZXN0cy90ZXN0cy5oIGRlZmF1bHQtc2tlbHMgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHNcbitcbisjIERlZmF1bHQtZmxhdm9yIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgY29uc3VtZWQgYnkgdGFyZ2V0cyBpbiB0aGlzXG4rIyBNYWtlZmlsZSAoYW5kIGJ5IGxpYi5taydzIGluc3RhbGwgcnVsZSkgYXJlIHByb2R1Y2VkIGJ5IHRoZSBydW5uZXJcbisjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlXG4rIyBtYWtlcyB0aGVtIGF2YWlsYWJsZSBoZXJlIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHJ1bm5lcidzIHJ1bGVzLlxuK0RFRkFVTFRfQlBGX09CSlMgOj0gJChwYXRzdWJzdCBwcm9ncy8lLmMsJChPVVRQVVQpLyUuYnBmLm8sJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuK1RFU1RfR0VOX0ZJTEVTICs9ICQoREVGQVVMVF9CUEZfT0JKUylcbitcbitCRU5DSF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLFx0XHRcdFx0XHRcXFxuK1x0ICAgICAgIHRlc3Rfb3ZlcmhlYWQuc2tlbC5oIHRyaWdnZXJfYmVuY2guc2tlbC5oXHRcdFxcXG4rXHQgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmhcdFx0XFxcbitcdCAgICAgICBibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oIGJwZl9sb29wX2JlbmNoLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIHN0cm5jbXBfYmVuY2guc2tlbC5oIGJwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaFxcXG4rXHQgICAgICAgbG9jYWxfc3RvcmFnZV9iZW5jaC5za2VsLmhcdFx0XHRcdFxcXG4rXHQgICAgICAgbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYmVuY2guc2tlbC5oXHRcdFxcXG4rXHQgICAgICAgYmVuY2hfbG9jYWxfc3RvcmFnZV9jcmVhdGUuc2tlbC5oXHRcdFx0XFxcbitcdCAgICAgICBicGZfaGFzaG1hcF9sb29rdXAuc2tlbC5oIGh0YWJfbWVtX2JlbmNoLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIGNyeXB0b19iZW5jaC5za2VsLmggYmVuY2hfc29ja21hcF9wcm9nLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIGxwbV90cmllX2JlbmNoLnNrZWwuaCBscG1fdHJpZV9tYXAuc2tlbC5oXHRcdFxcXG4rXHQgICAgICAgYnBmX25vcF9iZW5jaC5za2VsLmggeGRwX2xiX2JlbmNoLnNrZWwuaClcbitUT1BfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx4c2tfeGRwX3Byb2dzLnNrZWwuaFx0XHRcXFxuK1x0ICAgICB4ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHhkcF9mZWF0dXJlcy5za2VsLmhcdFx0XHRcXFxuK1x0ICAgICB0ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCkgJChCRU5DSF9TS0VMUylcbitcbisjIEVtcHR5LXJlY2lwZSBkZWxlZ2F0aW9uOiBcImRlZmF1bHQtc2tlbHNcIiAocmUpYnVpbGRzIHRoZSBmaWxlIHZpYSB0aGVcbisjIHJ1bm5lciBzdWItbWFrZSwgYWZ0ZXIgd2hpY2ggbWFrZSByZS1zdGF0cyB0aGUgdGFyZ2V0LCBzbyBkZXBlbmRlbnRzXG4rIyBzZWUgZnJlc2ggdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNhbWUgaW52b2NhdGlvbi4gRGVwZW5kZW50cyBzdGlsbFxuKyMgcmVidWlsZCBvbiBtdGltZSBvbmx5IC0gdGhlIHBob255IHByZXJlcXVpc2l0ZSBkb2VzIG5vdCBjYXNjYWRlLlxuKyQoREVGQVVMVF9CUEZfT0JKUykgJChUT1BfU0tFTFMpOiBkZWZhdWx0LXNrZWxzIDtcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgU3RhbmRhbG9uZSB0ZXN0IGJpbmFyaWVzXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbisjIHRlc3RfdmVyaWZpZXIgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kXG4rIyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb20gdGhlbSAoZS5nLiwgaXRzIHRlc3RzLmggdXNlcyBhIGNvbXBsZXRlbHlcbisjIGRpZmZlcmVudCBwYXR0ZXJuKSwgdGhhdCBpdCdzIHdvcnRoIGp1c3QgZGVmaW5pbmcgaXRzIHJ1bGVzIGV4cGxpY2l0bHkuXG4gdmVyaWZpZXIvdGVzdHMuaDogdmVyaWZpZXIvKi5jXG4tXHQkKHNoZWxsICggY2QgdmVyaWZpZXIvOyBcXFxuLVx0XHQgIGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJzsgXFxcbi1cdFx0ICBlY2hvICcjaWZkZWYgRklMTF9BUlJBWSc7IFxcXG4tXHRcdCAgbHMgKi5jIDJcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICdzQFxcKC4qXFwpQCNpbmNsdWRlIFxcXCJcXDFcXFwiQCc7IFxcXG4tXHRcdCAgZWNobyAnI2VuZGlmJyBcXFxuLVx0XHQpIFx1MDAzZSB2ZXJpZmllci90ZXN0cy5oKVxuLSQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSikgfCAkKE9VVFBVVClcbitcdCQoUSkoIGNkIHZlcmlmaWVyLzsgXFxcbitcdCAgICAgIGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJzsgXFxcbitcdCAgICAgIGVjaG8gJyNpZmRlZiBGSUxMX0FSUkFZJzsgXFxcbitcdCAgICAgIGxzICouYyAyXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAnc0BcXCguKlxcKUAjaW5jbHVkZSBcXFwiXFwxXFxcIkAnOyBcXFxuK1x0ICAgICAgZWNobyAnI2VuZGlmJyBcXFxuK1x0ICAgICkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcbitcbiskKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIEluY2x1ZGUgZmluZF9iaXQuYyB0byBjb21waWxlIHhza3hjZWl2ZXIuXG4gRVhUUkFfU1JDIDo9ICQoVE9PTFNESVIpL2xpYi9maW5kX2JpdC5jIHByb2dfdGVzdHMvdGVzdF94c2suYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmhcbi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpXG4rJChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKVxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4tJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaCB8ICQoT1VUUFVUKVxuKyQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmhcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaCB8ICQoT1VUUFVUKVxuKyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaFxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG5AQCAtOTU0LDExICs1NzUsMTggQEAgJChPVVRQVVQpL3Rlc3RfY3BwOiB0ZXN0X2NwcC5jcHAgJChPVVRQVVQpL3Rlc3RfY29yZV9leHRlcm4uc2tlbC5oICQoQlBGT0JKKVxuIFx0JChjYWxsIG1zZyxDWFgsLCRAKVxuIFx0JChRKSQoQ1hYKSAkKENYWEZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuY3BwLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0jIEJlbmNobWFyayBydW5uZXJcbi0kKE9VVFBVVCkvYmVuY2hfJS5vOiBiZW5jaHMvYmVuY2hfJS5jIGJlbmNoLmggJChCUEZPQkopXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpblxuKyMgYmVuY2hzLzogZXZlcnkgYmVuY2hzL2JlbmNoXyouYyBpcyBjb21waWxlZCBhbmQgbGlua2VkIGluLlxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rQkVOQ0hfT0JKUyA6PSAkKHNvcnQgJChwYXRzdWJzdCBiZW5jaHMvJS5jLCQoT1VUUFVUKS8lLm8sJCh3aWxkY2FyZCBiZW5jaHMvYmVuY2hfKi5jKSkpXG4rXG4rJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CRU5DSCcgJyQobm90ZGlyICRAKScgMVx1MDAzZVx1MDAyNjIpKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJFTkNIKVxuK1xuKyMgYmVuY2htYXJrLXNwZWNpZmljIGdlbmVyYXRlZC1za2VsZXRvbiBkZXBlbmRlbmNpZXNcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm86ICQoT1VUUFVUKS90cmlnZ2VyX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcbkBAIC05NzgsMzcgKzYwNiwxOSBAQCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm86ICQoT1VUUFVUKS9scG1fdHJpZV9iZW5jaC5za2VsLmggJChPVVRQVVQpL2xwbV90clxuICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm86ICQoT1VUUFVUKS9icGZfbm9wX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcbiAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm86ICQoT1VUUFVUKS94ZHBfbGJfYmVuY2guc2tlbC5oIGJlbmNoX2JwZl90aW1pbmcuaFxuICQoT1VUUFVUKS9iZW5jaF9icGZfdGltaW5nLm86IGJlbmNoX2JwZl90aW1pbmcuaFxuK1xuICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKVxuICQoT1VUUFVUKS9iZW5jaDogTERMSUJTICs9IC1sbVxuLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbi1cdFx0ICQoVEVTVElOR19IRUxQRVJTKSBcXFxuLVx0XHQgJChUUkFDRV9IRUxQRVJTKSBcXFxuLVx0XHQgJChDR1JPVVBfSEVMUEVSUykgXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYmxvb21fZmlsdGVyX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfaHRhYl9tZW0ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS91c2R0XzEubyBcXFxuLVx0XHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXG4tXHRcdCAjXG4rJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gub1x0XHRcXFxuK1x0XHQgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXHRcXFxuK1x0XHQgJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1x0XFxcbitcdFx0ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vXHRcXFxuK1x0XHQgJChPVVRQVVQpL3VzZHRfMS5vXHRcdFxcXG4rXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm9cdFx0XFxcbitcdFx0ICQoQkVOQ0hfT0JKUylcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1MSU5LJyAnJChub3RkaXIgJEApIChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKScgMVx1MDAzZVx1MDAyNjIpKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcXFxuK1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLExJTkssLChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSlcbiBcbiAjIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5nIGFib3V0IHNucHJpbnRmIHRydW5jYXRpbmcgc3RyaW5ncyBsaWtlOlxuICNcbkBAIC0xMDM2LDcgKzY0Niw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUilcdFx0XHRcXFxuIFx0XHRcdCAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pXHRcdFx0XFxcbiBcdCQoT1VUUFVUKS9GRUFUVVJFLURVTVAuc2VsZnRlc3RzXG4gXG4tLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW5cbisuUEhPTlk6IGRvY3MgZG9jcy1jbGVhbiBsaWJhcmVuYSBsaWJhcmVuYV9hc2FuXG4gXG4gIyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3JcbiAuREVMRVRFX09OX0VSUk9SOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNhNDk2MmIwNTg1ZmVjXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXG5AQCAtMCwwICsxLDE3MyBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0c1xuKyMgYnVpbGQsIGluY2x1ZGVkIGJ5IGJvdGggTWFrZWZpbGUgYW5kIE1ha2VmaWxlLnJ1bm5lci4gRGVmaW5pdGlvbnNcbisjIGZvbGxvdyB0aGUgb3JkZXIgdGhleSBoYWQgaW4gdGhlIE1ha2VmaWxlIGJlZm9yZSB0aGUgc3BsaXQuXG4rXG4rQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcbitPQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XG4rXG4rQ1VSRElSIDo9ICQoYWJzcGF0aCAuKVxuK1xuK1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbitMSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4rQlBGRElSIDo9ICQoTElCRElSKS9icGZcbitUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4rVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4rQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuK0FQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXG4raWZuZXEgKCQoTyksKVxuK0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4rZWxzZVxuK0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4rZW5kaWZcbitHRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcbitQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4rXG4raWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXG4rICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4rZW5kaWZcbitcbitpZmRlZiBBU0FOXG4rU0FOX0NGTEFHUyBcdD89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxuK2Vsc2VcbitTQU5fQ0ZMQUdTXHQ/PVxuK2VuZGlmXG4rU0FOX0xERkxBR1NcdD89ICQoU0FOX0NGTEFHUylcbitSRUxFQVNFXHRcdD89XG4rT1BUX0ZMQUdTXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcbitcbitMSUJFTEZfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcdTAwM2UvZGV2L251bGwpXG4rTElCRUxGX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcdTAwM2UvZGV2L251bGwgfHwgZWNobyAtbGVsZilcbitcbisjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuKyMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4rIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbitCUEZfU1RSSUNUX0JVSUxEID89IDFcbitQRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbitcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXG4rIyBTS0lQIG1hcmtlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgc28gdGhlIHJlc3Qgb2YgdGhlIGJ1aWxkIGNvbnRpbnVlcy5cbisjICQoMSkgLSBTS0lQIHRhZyAoQlBGLCBURVNULCBCRU5DSCwgU0tFTCwgTElOSywgLi4uKVxuKyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxuKyMgJCgzKSAtIG9wdGlvbmFsIG5vdGUgYXBwZW5kZWQgdG8gdGhlIFNLSVAgbWVzc2FnZVxuK3NraXBfb25fZmFpbCA9ICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7ICQoUk0pICRAICQoMik7IFxcXG4rXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLSQoMSknICckKG5vdGRpciAkQCkkKGlmICQoMyksICQoMykpJyAxXHUwMDNlXHUwMDI2MjsgfSlcbitcbitpZmVxICgkKHNyY3RyZWUpLClcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuK2VuZGlmXG4rXG4rQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbitcdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbitcdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuK1x0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuK1x0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4rXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4rXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbitMREZMQUdTICs9ICQoU0FOX0xERkxBR1MpXG4rTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxuK1xuK1BDQVBfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIFwiLURUUkFGRklDX01PTklUT1I9MVwiKVxuK1BDQVBfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwpXG4rTERMSUJTICs9ICQoUENBUF9MSUJTKVxuKyMgVW5saWtlIHRoZSBwcmUtc3BsaXQgTWFrZWZpbGUsIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhZnRlciAuLi9saWIubWtcbisjICh0b3AgbGV2ZWwpIG9yIHdpdGhvdXQgaXQgKHJ1bm5lciksIHNvIENPTU1PTl9DRkxBR1MgaXMgcHJlcGVuZGVkIHRvXG4rIyBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgaW5jbHVkZS1zZWFyY2ggb3JkZXIuXG4rTElCX01LX0NGTEFHUyA6PSAkKENGTEFHUylcbitDRkxBR1MgPSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpICQoTElCX01LX0NGTEFHUylcbitcbitpZm5lcSAoJChMTFZNKSwpXG4rIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nXG4rQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuK2VuZGlmXG4rXG4rIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXG4rQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICdpbnQgeDsnIHwgXFxcbitcdCQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFxcXG4rXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuK1x0LXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIDEpXG4rXG4rU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4rQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXG4rSU5DTFVERV9ESVIgOj0gJChTQ1JBVENIX0RJUikvaW5jbHVkZVxuK0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuK0hPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKS9ob3N0XG4rSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbitIT1NUX0lOQ0xVREVfRElSXHQ6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL2luY2x1ZGVcbitlbHNlXG4rSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4rSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChTQ1JBVENIX0RJUilcbitIT1NUX0lOQ0xVREVfRElSXHQ6PSAkKElOQ0xVREVfRElSKVxuK2VuZGlmXG4rSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4rUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcbitcbitERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4rQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuK1VTRV9CT09UU1RSQVAgOj0gXCJcIlxuK2Vsc2VcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4rVVNFX0JPT1RTVFJBUCA6PSBcImJvb3RzdHJhcC9cIlxuK2VuZGlmXG4rXG4rQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcbitcbisjIEdldCBDbGFuZydzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuKyMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXCJtaXNzaW5nXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXG4rIyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuXG4rI1xuKyMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxuKyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy5cbitkZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xuKyQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXHUwMDNjL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIFxcXG4rXHR8IHNlZCAtbiAnL1x1MDAzYy4uLlx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcKC8uKlxcKXwtaWRpcmFmdGVyIFxcMXxwIH0nKSBcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fcmlzY3ZfeGxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzLCAkJDMpfScpIFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcIi1EX19CSVRTX1BFUl9MT05HPSVkXCIsICQkMyl9JykgXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFwiLUQlcz0lcyBcIiwgJCQyLCAkJDMpfScpXG4rZW5kZWZcbitcbisjIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbitJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbitcdFx0XHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxuK01FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuK0JQRl9UQVJHRVRfRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXG4rXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuK0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxuK2VuZGlmXG4rXG4rIyBJbW1lZGlhdGUgb24gcHVycG9zZTogZXhwYW5kaW5nIGdldF9zeXNfaW5jbHVkZXMgZm9ya3Mgc2V2ZXJhbCBzaGVsbHMuXG4rQ0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxuK0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTilcdFxcXG4rXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcdFx0XHRcXFxuK1x0ICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFx0XHRcXFxuK1x0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXHRcdFx0XFxcbitcdCAgICAgLXN0ZD1nbnUxMVx0XHQgXHRcdFx0XHRcdFxcXG4rXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFx0XHRcdFx0XHRcXFxuK1x0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1x0XHRcdFx0XHRcXFxuK1x0ICAgICAtZm1zLWV4dGVuc2lvbnNcdFx0XHRcdFx0XHRcXFxuK1x0ICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlc1x0XHRcdFxcXG4rXHQgICAgIC1Xbm8taW5pdGlhbGl6ZXItb3ZlcnJpZGVzXHRcdFx0XHRcdFxcXG4rXHQgICAgICNcbisjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxuK1xuK0NMQU5HX0NGTEFHUyA9ICQoQ0xBTkdfU1lTX0lOQ0xVREVTKVxuK1xuK1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2hcbitWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oXG4rVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXG4rUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxuK1xuK0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4rXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbitMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbitDRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbitlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNlZDQ0YWFkN2VkZWQ0XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5AQCAtMCwwICsxLDMxNSBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcbisjIChub19hbHUzMiwgY3B1djQsIGJwZl9nY2MpLCBvciB0ZXN0X21hcHMuXG4rI1xuKyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSB3aXRoIGl0cyBvd24gb3V0cHV0IGRpcmVjdG9yeSxcbisjIHNvIGV2ZXJ5dGhpbmcgaGVyZSBpcyB3cml0dGVuIGluIHBsYWluIG1ha2UgLSBubyAkJC1lc2NhcGluZywgbm8gZXZhbCxcbisjIG5vIHBlci1mbGF2b3IgZ3VhcmRzLiBUaGlzIGZpbGUgaXMgYWx3YXlzIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsXG4rIyBuZXZlciBkaXJlY3RseTogYWxsIHNoYXJlZCBwcmVyZXF1aXNpdGVzIChsaWJicGYsIGJwZnRvb2wsIHZtbGludXguaCxcbisjIHZlcmlzdGF0LCBoZWxwZXIgb2JqZWN0cywgc2lnbmluZyBrZXksIGdlbmVyYXRlZCB0ZXN0cy5oLCBleHRyYVxuKyMgYmluYXJpZXMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZCBhcmVcbisjIHJlZmVyZW5jZWQgYmVsb3cgYXMgcGxhaW4gZmlsZXMuXG4rI1xuKyMgUGFyYW1ldGVycyAoYWxsIHBhc3NlZCBvbiB0aGUgc3ViLW1ha2UgY29tbWFuZCBsaW5lKTpcbisjICAgT1VUUFVUICAgICAgYWJzb2x1dGUgcGF0aCBvZiB0aGUgc2VsZnRlc3RzIG91dHB1dCBkaXJlY3RvcnlcbisjICAgUlVOTkVSICAgICAgYmFzZSBiaW5hcnkgbmFtZTogdGVzdF9wcm9ncyB8IHRlc3RfbWFwc1xuKyMgICBGTEFWT1IgICAgICBmbGF2b3Igc3VmZml4OiBlbXB0eSB8IG5vX2FsdTMyIHwgY3B1djQgfCBicGZfZ2NjXG4rIyAgIFRFU1RTX0RJUiAgIGRpcmVjdG9yeSB3aXRoIHRoZSB0ZXN0IHNvdXJjZXM6IHByb2dfdGVzdHMgfCBtYXBfdGVzdHNcbisjICAgQlBGX0NDICAgICAgY29tcGlsZXIgZm9yIHByb2dzLyouYyBCUEYgb2JqZWN0cyAoJChDTEFORykgb3JcbisjICAgICAgICAgICAgICAgJChCUEZfR0NDKSk7IGVtcHR5IGZvciB0ZXN0X21hcHMsIHdoaWNoIGJ1aWxkcyBub25lXG4rIyAgIEJQRl9DQ19NU0cgIGJ1aWxkLWxvZyB0YWc6IENMTkctQlBGIHwgR0NDLUJQRlxuKyMgICBCUEZfQ0NfRkxBR1NcbisjICAgICAgICAgICAgICAgY29tcGlsZXItc3BlY2lmaWMgZmxhZ3MgKC1PMiwgdGFyZ2V0Ly1tY3B1IG9yIGdjYyBrbm9icylcbisjICAgQlBGX1NZU19JTkNMVURFU1xuKyMgICAgICAgICAgICAgICBzeXN0ZW0gaW5jbHVkZSBmbGFncyBtYXRjaGluZyBCUEZfQ0NcbisjICAgQlBGX0RFRklORVMgZXh0cmEgZGVmaW5lcyBmb3IgQlBGIG9iamVjdHMgKGUuZy4gLURFTkFCTEVfQVRPTUlDU19URVNUUylcbisjICAgQ0MgICAgICAgICAgQyBjb21waWxlciAoYXMgcmVzb2x2ZWQgYnkgbGliLm1rIGluIHRoZSBtYWluIE1ha2VmaWxlKVxuKyMgICBMTFZNX0NGTEFHUy9MTFZNX0xETElCUy9MTFZNX0xERkxBR1NcbisjICAgICAgICAgICAgICAgcmVzdWx0cyBvZiB0aGUgdG9wLWxldmVsIExMVk0gZmVhdHVyZSBwcm9iZVxuK1xuK2luY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxuK2luY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoXG4raW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcbitcbisjIFNhbWUgbWVzc2FnZSBoZWxwZXJzIGFzIC4uL2xpYi5taywgd2hpY2ggb25seSB0aGUgdG9wIGxldmVsIGluY2x1ZGVzLlxuK2lmZXEgKCQoViksMSlcbitRID1cbittc2cgPVxuK2Vsc2VcbitRID0gQFxuK21zZyA9IEBwcmludGYgJyAgJS04cyVzICVzJXNcXG4nIFwiJCgxKVwiIFwiJChpZiAkKDIpLCBbJCgyKV0pXCIgXCIkKG5vdGRpciAkKDMpKVwiIFwiJChpZiAkKDQpLCAkKDQpKVwiO1xuK01BS0VGTEFHUyArPSAtLW5vLXByaW50LWRpcmVjdG9yeVxuK2VuZGlmXG4rXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbitcbisjIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBDRkxBR1MvTERGTEFHUyBhZGRpdGlvbnMgaW4gLi4vbGliLm1rLlxuK0NGTEFHUyArPSAtRF9HTlVfU09VUkNFPVxuK0NGTEFHUyArPSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcbitDRkxBR1MgKz0gJChVU0VSQ0ZMQUdTKVxuK0xERkxBR1MgKz0gJChVU0VSTERGTEFHUylcbitpZm5lcSAoJChMTFZNKSwpXG4rQ0ZMQUdTICs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyXG4rQ0ZMQUdTICs9IC1Xbm8tZ251LXZhcmlhYmxlLXNpemVkLXR5cGUtbm90LWF0LWVuZFxuK2VuZGlmXG4rXG4rQklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXG4rUkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXG4rXG4rYWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXG4rLlBIT05ZOiBhbGxcbitcbisjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuKy5ERUxFVEVfT05fRVJST1I6XG4rXG4rIyBQZXJtaXNzaXZlIHNraXAtb24tZmFpbHVyZSBvZiBpbmRpdmlkdWFsIHRlc3RzIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmRcbisjIGl0cyBmbGF2b3JzIG9ubHk7IHRlc3RfbWFwcyB1c2VzIHN0cm9uZyBjcm9zcy1vYmplY3QgcmVmZXJlbmNlcyBhbmQga2VlcHNcbisjIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIEJQRl9TVFJJQ1RfQlVJTEQ9MC5cbitQRVJNSVNTSVZFX1RFU1RTIDo9ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncywkKFJVTk5FUikpLCQoUEVSTUlTU0lWRSkpXG4rXG4rJChSRElSKTpcbitcdCQoY2FsbCBtc2csTUtESVIsLCRAKVxuK1x0JChRKW1rZGlyIC1wICRAXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFBlci1ydW5uZXIgc291cmNlc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4raWZlcSAoJChSVU5ORVIpLHRlc3RfcHJvZ3MpXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X3Byb2dzLmMgY2dyb3VwX2hlbHBlcnMuYyB0cmFjZV9oZWxwZXJzLmNcdFx0XFxcbitcdFx0IG5ldHdvcmtfaGVscGVycy5jIHRlc3RpbmdfaGVscGVycy5jIGJ0Zl9oZWxwZXJzLmNcdFxcXG4rXHRcdCBjYXBfaGVscGVycy5jIHVucHJpdl9oZWxwZXJzLmMgc3lzY3RsX2hlbHBlcnMuY1x0XFxcbitcdFx0IG5ldGxpbmtfaGVscGVycy5jIGppdF9kaXNhc21faGVscGVycy5jIGlvX2hlbHBlcnMuY1x0XFxcbitcdFx0IHRlc3RfbG9hZGVyLmMgeHNrLmMgZGlzYXNtLmMgZGlzYXNtX2hlbHBlcnMuY1x0XHRcXFxuK1x0XHQganNvbl93cml0ZXIuYyBicGZ0b29sX2hlbHBlcnMuYyB1c2R0XzEuYyB1c2R0XzIuY1xuK0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcbitFWFRSQV9IRFJTIDo9IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XHRcXFxuK1x0ICAgICAgJChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcbitFWFRSQV9GSUxFUyA6PSAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFxcXG4rXHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFxcXG4rXHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XHRcXFxuK1x0ICAgICAgICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcdFx0XHRcXFxuK1x0ICAgICAgIGltYV9zZXR1cC5zaCAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuK1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcdFx0XHRcXFxuK1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbitlbmRpZlxuK1xuK2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuY1xuK2VuZGlmXG4rXG4rIyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluXG4rIyBNYWtlZmlsZTogaGVscGVyIG9iamVjdHMgdGhlIG1haW4gTWFrZWZpbGUgYWxzbyB1c2VzIChhbmQgbGlzdHMgaW4gdGhlXG4rIyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLFxuKyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLiBUaGlzXG4rIyBob2xkcyBiZWNhdXNlIHRoZSBtYWluIE1ha2VmaWxlJ3MgaGVscGVyLW9iamVjdCBydWxlIGRlcGVuZHMgb24gYVxuKyMgc3VwZXJzZXQgb2YgdGhlIHByZXJlcXVpc2l0ZXMgdGhlIEVYVFJBX09CSlMgcnVsZSB1c2VzIGhlcmUgLSBrZWVwXG4rIyB0aGUgdHdvIGxpc3RzIGluIHN5bmMgKHNlZSB0aGUgaW52YXJpYW50IGNvbW1lbnQgdGhlcmUpLlxuK1xuK1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaFxuK1xuK1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSlcbitURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxuK1RFU1RfREVQUyAgOj0gJChURVNUX09CSlM6Lm89LmQpXG4rRVhUUkFfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKGZpbHRlciAlLmMsJChFWFRSQV9TT1VSQ0VTKSkpXG4rTElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSlcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4raWZuZXEgKCQoQlBGX0NDKSwpXG4rXG4rQlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuK0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5icGYubywkKEJQRl9TUkNTKSlcbitcbisjIEJQRiBvYmplY3RzIHRoYXQgY2Fubm90IGhhdmUgYSByZWd1bGFyIHNrZWxldG9uLlxuK1NLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcbitcbitMU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXHRcXFxuK1x0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuK1x0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXG4rXHR0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmNcbitcbitMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xuK1xuKyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuK0xTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXG4rXHRrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jXG4rU0tFTF9CTEFDS0xJU1QgKz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRClcbitcbisjIFNrZWxldG9ucyBtYWRlIGJ5IGxpbmtpbmcgbXVsdGlwbGUgQlBGIG9iamVjdHMgdG9nZXRoZXIuIFRoZSAlLWRlcHNcbisjIG1hcHBpbmcgaXMgdGhlIG9ubHkgaGFuZC1tYWludGFpbmVkIG1ldGFkYXRhOiBpdCBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tXG4rIyB0aGUgc291cmNlcy5cbit0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4rbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuK2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cbitsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4rIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbisjIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbit0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4rdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4rdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4rdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4rdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbit0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuK3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbitcbitMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4rXHRcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmhcdFx0XHRcXFxuK1x0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4rXHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuK1x0XHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcdFx0XHRcdFxcXG4rXHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbitcdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuK0xJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpKVxuK1xuK1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXHRcdFx0XHRcXFxuK1x0ICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpXG4rTFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTKSAkKExTS0VMU19FWFRSQSkpXG4rTFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTX1NJR05FRCkpXG4rTElOS0VEX1NLRUxTX0ggIDo9ICQoYWRkcHJlZml4ICQoUkRJUikvLCQoTElOS0VEX1NLRUxTKSlcbitBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXG4rXG4rSEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaClcdFx0XHRcXFxuK1x0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbitcdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcdFxcXG4rXHRcdFx0XHRcdFx0YnBmX2VuZGlhbi5oXHRcdFxcXG4rXHRcdFx0XHRcdFx0YnBmX2hlbHBlcnMuaFx0XHRcXFxuK1x0XHRcdFx0XHRcdGJwZl90cmFjaW5nLmgpXG4rXG4rIyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJFx1MDAzYy1DRkxBR1MgLyAkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpLlxuKyMgR0NDIGNhbm5vdCBkaXNhYmxlIFwiZGVjbGFyYXRpb24gb2YgYW5vbnltb3VzIHN0cnVjdCBpbiBwYXJhbWV0ZXIgbGlzdFwiXG4rIyB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlc2UgKHRlY2huaWNhbGx5IGxlZ2FsKSB0ZXN0IHByb2dyYW1zLlxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rXG4rJChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFx0XHRcdFxcXG4rXHQgICAgICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcXFxuK1x0ICAgICB8ICQoUkRJUikgJChCUEZPQkopXG4rXHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxuK1x0JChRKSQoQlBGX0NDKSAkKEJQRl9DRkxBR1MpICQoQlBGX1NZU19JTkNMVURFUykgJChCUEZfREVGSU5FUylcdFxcXG4rXHRcdCQoJFx1MDAzYy1DRkxBR1MpICQoJFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKVx0XHRcdFxcXG4rXHRcdCQoQlBGX0NDX0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQlBGKVxuK1xuKyMgZ2VuX2JwZl9za2VsLnNoIHBpY2tzIHRoZSBicGZ0b29sIGJpbmFyeSB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbitleHBvcnQgQlBGVE9PTFxuK0dFTl9TS0VMIDo9IC4vZ2VuX2JwZl9za2VsLnNoXG4rXG4rJChTS0VMUyk6ICQoUkRJUikvJS5za2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKVxuK1x0JChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApXG4rXHQkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFxcXG4rXHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJFx1MDAzY1x0XHRcXFxuK1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXG4rXG4rJChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csR0VOLVNLRUwsJChCSU5BUlkpLCRAKVxuK1x0JChRKSQoR0VOX1NLRUwpIC0tbmFtZSAkKl9sc2tlbCAtLWxza2VsXHRcdFx0XHRcXFxuK1x0XHQtLXNrZWwgJEAgJFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXG4rXG4rJChMU0tFTFNfU0lHTkVEX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTClcdFxcXG4rXHRcdCAgICAkKEdFTl9TS0VMKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csR0VOLVNLRUwsJChCSU5BUlkpIChzaWduZWQpLCRAKVxuK1x0JChRKVBSSVZBVEVfS0VZPSQoUFJJVkFURV9LRVkpXHRcdFx0XHRcdFxcXG4rXHRcdFZFUklGSUNBVElPTl9DRVJUPSQoVkVSSUZJQ0FUSU9OX0NFUlQpXHRcdFx0XFxcbitcdFx0JChHRU5fU0tFTCkgLS1zaWduIC0tbmFtZSAkKl9sc2tlbFx0XHRcdFxcXG4rXHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbitcbisuU0VDT05ERVhQQU5TSU9OOlxuKyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcbitcdFx0ICAgJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csTElOSy1CUEYsJChCSU5BUlkpLCQoQDouc2tlbC5oPS5icGYubykpXG4rXHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSwkQClcbitcdCQoUSkkKEdFTl9TS0VMKSAtLW5hbWUgJCpcdFx0XHRcdFx0XFxcbitcdFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKVx0XHRcXFxuK1x0XHQkKGFkZHByZWZpeCAkKFJESVIpLywkKCQqLnNrZWwuaC1kZXBzKSlcdFx0XHRcXFxuK1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXG4rXG4rZW5kaWYgIyBCUEZfQ0NcbitcbisuUEhPTlk6IHNrZWxzXG4rc2tlbHM6ICQoQUxMX1NLRUxTKVxuK1xuKyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdCBmdWxsXG4rIyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS5cbisjIFRoZSB2cGF0aCBkaXJlY3RpdmVzIGluc3RydWN0IG1ha2UgdG8gYWxzbyBzZWFyY2ggZm9yIHNrZWwgZmlsZXMgaW5cbisjICQoUkRJUikgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuK3ZwYXRoICUuc2tlbC5oICQoUkRJUilcbit2cGF0aCAlLmxza2VsLmggJChSRElSKVxuK3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xuKyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuK1xuKyMgQ29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMuXG4rIyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0c1xuKyMgYXJlIGZvdW5kLiBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRFxuKyMgYmVsb3c7IHRoZSBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0XG4rIyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3RcbisjIGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycyBjaGFuZ2UuXG4rJChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZFxuK1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpKGNkICQoQEQpIFx1MDAyNlx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXHUwMDNjIC1vICQoQEYpKSBcXFxuK1x0XHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChjYWxsIHNraXBfb25fZmFpbCxURVNUKSlcbitcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4rXHRcdCQoUSlpZiBbIC1mICRAIF07IHRoZW5cdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcbicgXCJCVEZJRFNcIiBcIiBbJChCSU5BUlkpXVwiIFwiJChub3RkaXIgJEApXCIpOyBcXFxuK1x0XHQkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vICRAO1x0XFxcbitcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbitcdFx0ZmkpXG4rXG4rJChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXG4rXHQgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpXG4rXG4raW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcbitcbiskKFJESVIpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgKz0gJChMTFZNX0NGTEFHUylcbitcbiskKEVYVFJBX09CSlMpOiAkKFJESVIpLyUubzogJS5jICQoRVhUUkFfSERSUykgJChURVNUU19IRFIpICQoQlBGT0JKKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcdTAwM2MgLW8gJEBcbitcbiskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpXG4rXHQkKGNhbGwgbXNnLExJQi1PQkosJChCSU5BUlkpLCRAKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAXG4rXG4rIyBOb24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhclxuKyMgd2UgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKS5cbisuUEhPTlk6IGV4dHJhc1xuK2V4dHJhczogJChpZiAkKFBFUk1JU1NJVkUpLCQod2lsZGNhcmQgJChFWFRSQV9GSUxFUykpLCQoRVhUUkFfRklMRVMpKSB8ICQoUkRJUilcbitpZm5lcSAoJChGTEFWT1IpOiQoT1VUUFVUKSw6JChDVVJESVIpKVxuK2lmbmVxICgkKHN0cmlwICQoRVhUUkFfRklMRVMpKSwpXG4rXHQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoQklOQVJZKSwkKG5vdGRpciAkKEVYVFJBX0ZJTEVTKSkpXG4rXHQkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvXG4rZW5kaWZcbitlbmRpZlxuK1xuKyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxuKyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk6IHRoZSBvYmplY3RzIGV4aXN0aW5nIGF0XG4rIyBwYXJzZSB0aW1lIGFyZSBub3JtYWwgcHJlcmVxdWlzaXRlcyAtIHNvIGVkaXRpbmcgYSB0ZXN0IHNvdXJjZSBzdGlsbFxuKyMgcmVsaW5rcyB0aGUgcnVubmVyIC0gd2hpbGUgdGhlIGZ1bGwgc2V0IHN0YXlzIG9yZGVyLW9ubHkgdG8gZHJpdmUgdGhlXG4rIyBidWlsZCBhdHRlbXB0cywgYW5kIHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnNcbisjIGF0IGxpbmsgdGltZS5cbisjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcbisjIGxpYmJwZiwgbGliIG9iamVjdHMpLlxuKyQoT1VUUFVUKS8kKEJJTkFSWSk6ICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSksJChURVNUX09CSlMpKSBcXFxuK1x0XHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXHRcdFxcXG4rXHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcXFxuK1x0XHQgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpXHRcdFx0XHRcXFxuK1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4rXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpXHRcdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKVx0XFxcbitcdFx0XHQkKGZpbHRlci1vdXQgJChURVNUX09CSlMpLCQoZmlsdGVyICUuYSAlLm8sJF4pKSxcXFxuK1x0XHRcdCQoZmlsdGVyICUuYSAlLm8sJF4pKVx0XHRcdFx0XFxcbitcdFx0JChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRAXG4rXHQkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcbitcdFx0ICAgJChSRElSKS9icGZ0b29sXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZTIzNGYzYTU3ZDQ2YmZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcbkBAIC0wLDAgKzEsOTMgQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBMaW5rIEJQRiBvYmplY3QgZmlsZShzKSB3aXRoIFwiYnBmdG9vbCBnZW4gb2JqZWN0XCIgYW5kIGdlbmVyYXRlIGFcbisjIHNrZWxldG9uIChvciBsaWdodCBza2VsZXRvbikgaGVhZGVyIGZyb20gdGhlIHJlc3VsdC5cbisjXG4rIyBVc2FnZTpcbisjICAgQlBGVE9PTD1cdTAwM2NicGZ0b29sXHUwMDNlIGdlbl9icGZfc2tlbC5zaCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cbisjXG4rIyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcIm5hbWUgTkFNRVwiIGZvciBicGZ0b29sKVxuKyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcImZvby5za2VsLmhcIiBvciBcImZvby5sc2tlbC5oXCIpXG4rIyAgIC0tc3Vic2tlbCBPVVQgICAgIGFsc28gZ2VuZXJhdGUgYSBzdWJza2VsZXRvbiBoZWFkZXIgaW50byBPVVRcbisjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXG4rIyAgIC0tc2lnbiAgICAgICAgICAgIHNpZ24gdGhlIChsaWdodCkgc2tlbGV0b24sIHdpdGggdGhlIGtleSBhbmRcbisjICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGUgdGFrZW4gZnJvbSAkUFJJVkFURV9LRVkgYW5kXG4rIyAgICAgICAgICAgICAgICAgICAgICRWRVJJRklDQVRJT05fQ0VSVFxuKyNcbisjIFRoZSBpbnB1dHMgYXJlIGxpbmtlZCB0aHJlZSB0aW1lcyBhbmQgdGhlIDJuZCBhbmQgM3JkIHJlc3VsdHNcbisjIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFwiYnBmdG9vbCBnZW5cbisjIG9iamVjdFwiLlxuKyNcbisjIEludGVybWVkaWF0ZSBmaWxlcyBjYXJyeSBhIFwibGlua2VkXCIgaW5maXggLSBcImxsaW5rZWRcIiBmb3IgbGlnaHQgb3JcbisjIHNpZ25lZCBza2VsZXRvbnMsIHNvIGdlbmVyYXRpbmcgYSAuc2tlbC5oIGFuZCBhIC5sc2tlbC5oIGZyb20gdGhlXG4rIyBzYW1lIC5icGYubyBpbiBwYXJhbGxlbCBuZXZlciByYWNlcyBvbiB0aGUgaW50ZXJtZWRpYXRlcy5cbisjXG4rIyBUaGUgYnBmdG9vbCBiaW5hcnkgaXMgdGFrZW4gZnJvbSAkQlBGVE9PTCAoZGVmYXVsdDogYnBmdG9vbCBmcm9tIFBBVEgpLlxuKyMgT24gZmFpbHVyZSBhbGwgb3V0cHV0cyBhbmQgaW50ZXJtZWRpYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHNjcmlwdFxuKyMgZXhpdHMgbm9uLXplcm87IHBlcm1pc3NpdmUtbW9kZSBza2lwcGluZyBpcyB0aGUgY2FsbGVyJ3MgYnVzaW5lc3NcbisjIChzZWUgc2tpcF9vbl9mYWlsIGluIE1ha2VmaWxlLmJ1aWxkdmFycykuXG4rXG4rc2V0IC11XG4rXG4rYnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9XG4rbmFtZT0nJyBza2VsPScnIHN1YnNrZWw9Jydcbitsc2tlbD0wIHNpZ249MFxuK1xuK3doaWxlIFsgJCMgLWd0IDAgXTsgZG9cbitcdGNhc2UgXCIkMVwiIGluXG4rXHQtLW5hbWUpXHRcdG5hbWU9JDI7IHNoaWZ0IDIgOztcbitcdC0tc2tlbClcdFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xuK1x0LS1zdWJza2VsKVx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xuK1x0LS1sc2tlbClcdGxza2VsPTE7IHNoaWZ0IDs7XG4rXHQtLXNpZ24pXHRcdHNpZ249MTsgc2hpZnQgOztcbitcdC0tKVx0XHRzaGlmdDsgYnJlYWsgOztcbitcdC0qKVx0XHRlY2hvIFwiJDA6IHVua25vd24gb3B0aW9uOiAkMVwiIFx1MDAzZVx1MDAyNjI7IGV4aXQgMSA7O1xuK1x0KilcdFx0YnJlYWsgOztcbitcdGVzYWNcbitkb25lXG4rXG4raWYgWyAteiBcIiRuYW1lXCIgXSB8fCBbIC16IFwiJHNrZWxcIiBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxuK1x0ZWNobyBcInVzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cIiBcdTAwM2VcdTAwMjYyXG4rXHRleGl0IDFcbitmaVxuK1xuK2luZml4PWxpbmtlZFxuK2lmIFsgXCIkbHNrZWxcIiAtZXEgMSBdIHx8IFsgXCIkc2lnblwiIC1lcSAxIF07IHRoZW5cbitcdGluZml4PWxsaW5rZWRcbitmaVxuK1xuK2Jhc2U9JHtza2VsJS5za2VsLmh9XG4rYmFzZT0ke2Jhc2UlLmxza2VsLmh9XG4rdDE9JGJhc2UuJHtpbmZpeH0xLm9cbit0Mj0kYmFzZS4ke2luZml4fTIub1xuK3QzPSRiYXNlLiR7aW5maXh9My5vXG4rXG4rZmFpbCgpIHtcbitcdHJtIC1mIFwiJHNrZWxcIiAke3N1YnNrZWw6K1wiJHN1YnNrZWxcIn0gXCIkdDFcIiBcIiR0MlwiIFwiJHQzXCJcbitcdGV4aXQgMVxuK31cbitcbitcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0MVwiIFwiJEBcIiB8fCBmYWlsXG4rXCIkYnBmdG9vbFwiIGdlbiBvYmplY3QgXCIkdDJcIiBcIiR0MVwiIHx8IGZhaWxcbitcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0M1wiIFwiJHQyXCIgfHwgZmFpbFxuK2lmICEgY21wIC1zIFwiJHQyXCIgXCIkdDNcIjsgdGhlblxuK1x0ZWNobyBcIiQwOiBicGZ0b29sIGdlbiBvYmplY3QgaXMgbm90IGRldGVybWluaXN0aWMgZm9yICRza2VsXCIgXHUwMDNlXHUwMDI2MlxuK1x0ZmFpbFxuK2ZpXG4rXG4rYXJncz0oKVxuK2lmIFsgXCIkc2lnblwiIC1lcSAxIF07IHRoZW5cbitcdGFyZ3MrPSgtUyAtayBcIiR7UFJJVkFURV9LRVk6P31cIiAtaSBcIiR7VkVSSUZJQ0FUSU9OX0NFUlQ6P31cIilcbitmaVxuK2lmIFsgXCIkbHNrZWxcIiAtZXEgMSBdOyB0aGVuXG4rXHRhcmdzKz0oLUwpXG4rZmlcbitcIiRicGZ0b29sXCIgZ2VuIHNrZWxldG9uICR7YXJnc1tAXStcIiR7YXJnc1tAXX1cIn0gXCIkdDNcIiBuYW1lIFwiJG5hbWVcIiBcdTAwM2UgXCIkc2tlbFwiIHx8IGZhaWxcbitcbitpZiBbIC1uIFwiJHN1YnNrZWxcIiBdOyB0aGVuXG4rXHRcIiRicGZ0b29sXCIgZ2VuIHN1YnNrZWxldG9uIFwiJHQzXCIgbmFtZSBcIiRuYW1lXCIgXHUwMDNlIFwiJHN1YnNrZWxcIiB8fCBmYWlsXG4rZmlcbitcbitybSAtZiBcIiR0MVwiIFwiJHQyXCIgXCIkdDNcIlxuK2V4aXQgMFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzg6MzIuMTk3MDM4NzY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjczODc2NDAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBhIHJlZmFjdG9yaW5nIG9mIHRoZSBCUEYgc2VsZnRlc3RzIE1ha2VmaWxlcy4gSXQgc2VlbXMgdG8gYmUgYnJlYWtpbmcgZG93biBhIG1vbm9saXRoaWMgYE1ha2VmaWxlYCBpbnRvIHNtYWxsZXIsIG1vcmUgbWFuYWdlYWJsZSBwaWVjZXM6IGBNYWtlZmlsZWAsIGBNYWtlZmlsZS5idWlsZHZhcnNgLCBhbmQgYE1ha2VmaWxlLnJ1bm5lcmAuICBUaGVyZSdzIGFsc28gYSBuZXcgc2hlbGwgc2NyaXB0LCBgZ2VuX2JwZl9za2VsLnNoYCwgZm9yIHNrZWxldG9uIGdlbmVyYXRpb24uIFRoaXMgd2hvbGUgdGhpbmcgc2NyZWFtcyBcImJ1aWxkIHN5c3RlbSBhbmQgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlXCIgdG8gbWUuXG5cbkNydWNpYWxseSwgaXQgKmRvZXNuJ3QqIHRvdWNoIGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgZXZlbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gVGhlcmUncyB6ZXJvIG1vZGlmaWNhdGlvbiBvZiBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS4gU28sIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGludHJvZHVjZSBhbnl0aGluZyBuZXcgdG8gdGhlIGZ1enppbmcgc3VyZmFjZT8gQWJzb2x1dGVseSBub3QuIFRoaXMgaXMgcHVyZWx5IGEgcmVzdHJ1Y3R1cmluZyBvZiB0aGUgdGVzdGluZyBmcmFtZXdvcmsuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBtb2RpZmllZCBmaWxlcy4gT2theSwgaXQncyBqdXN0IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoYC4gWXVwLCBhbGwgb2YgdGhlbSBhcmUgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LlxuXG5CYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCB0aGVyZSdzIG5vdGhpbmcgaGVyZSB0aGF0J3MgcmVtb3RlbHkgcmVsZXZhbnQgdG8gZnV6emluZyBrZXJuZWwgZnVuY3Rpb25hbGl0eS4gU28sIHRoZSBvbmx5IGxvZ2ljYWwgY29uY2x1c2lvbiBpcyB0aGF0IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBJJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQ3OSwiT3V0cHV0VG9rZW5zIjo3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM4OjM4LjkzNTgwNDc5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KSBmb3IgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrcpwx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 08:14:50 +0000 UTC FinishedAt: 2026-07-25 08:38:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzNkMzEzZjJjYjE3YzYxYzhlNmRkNjM5MjQxMWNjZjRlYTMyZGJmZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA4OjM4OjI5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuaW5kZXggNTVkMzk0NDM4NzA1YTYuLjA5Y2ZmNjkzYjdkNzgyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC0xLDk2ICYjNDM7MSwzMiBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I1xuJiM0MzsjIEV2ZXJ5dGhpbmcgdGhhdCBleGlzdHMgb25jZSBsaXZlcyBoZXJlOiB0b29sY2hhaW4gc2V0dXAsIHRvb2xcbiYjNDM7IyBzdWItYnVpbGRzLCB2bWxpbnV4LmgsIHNoYXJlZCBoZWxwZXIgb2JqZWN0cywgc3RhbmRhbG9uZSBiaW5hcmllcyBhbmRcbiYjNDM7IyB0aGUgbGliLm1rIGNvbnRyYWN0LiBFYWNoIHRlc3QtcnVubmVyIGluc3RhbmNlICh0ZXN0X3Byb2dzIGFuZCBpdHNcbiYjNDM7IyBmbGF2b3JzLCB0ZXN0X21hcHMpIGlzIGJ1aWx0IGJ5IGl0cyBvd24gTWFrZWZpbGUucnVubmVyIHN1Yi1tYWtlO1xuJiM0MzsjIHNoYXJlZCBkZWZpbml0aW9ucyBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy5cbiYjNDM7XG4gaW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4gaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuIFxuLUNYWCA/PSAkKENST1NTX0NPTVBJTEUpZyYjNDM7JiM0Mztcbi1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XG4tXG4tQ1VSRElSIDo9ICQoYWJzcGF0aCAuKVxuLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbi1MSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4tQlBGRElSIDo9ICQoTElCRElSKS9icGZcbi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4tVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4tQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXG4taWZuZXEgKCQoTyksKVxuLUdFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4tZWxzZVxuLUdFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4tZW5kaWZcbi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcbi1QS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4gXG4taWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXG4tICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4mIzQzOyMgTmVlZGVkIGJlZm9yZSBsaWIubWsgaXMgaW5jbHVkZWQgKGdhdGVzIHRoZSBmbGF2b3IgbGlzdCBiZWxvdyksIHdoaWNoXG4mIzQzOyMgaXMgYWxzbyB3aHkgaXQgY2Fubm90IGxpdmUgaW4gTWFrZWZpbGUuYnVpbGR2YXJzLlxuJiM0MztpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4mIzQzO0JQRl9HQ0MgOj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxuIGVuZGlmXG4gXG4tQlBGX0dDQ1x0XHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4taWZkZWYgQVNBTlxuLVNBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbi1lbHNlXG4tU0FOX0NGTEFHU1x0Pz1cbi1lbmRpZlxuLVNBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4tUkVMRUFTRVx0XHQ/PVxuLU9QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4tXG4tTElCRUxGX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXHUwMDNlL2Rldi9udWxsKVxuLUxJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4tXG4gU0tJUF9ET0NTXHQ/PVxuIFNLSVBfTExWTVx0Pz1cbiBTS0lQX0xJQkJGRFx0Pz1cbiBTS0lQX0NSWVBUT1x0Pz1cbiBcbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbi1cbi1pZmVxICgkKHNyY3RyZWUpLClcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLWVuZGlmXG4gXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbi1cdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbi1cdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuLVx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuLVx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4tXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4tXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbi1MREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKVxuLUxETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4tXG4tUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCYjMzQ7LURUUkFGRklDX01PTklUT1I9MVwmIzM0Oylcbi1QQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuLUxETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpXG4tQ0ZMQUdTICYjNDM7PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXG4tXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXG4tXG4taWZuZXEgKCQoTExWTSksKVxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuLUNGTEFHUyAmIzQzOz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4tZW5kaWZcbi1cbi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwICYjMzk7djQmIzM5OyksKVxuIENMQU5HX0NQVVY0IDo9IDFcbiBlbmRpZlxuIFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOylcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4tXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxuLVx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcbi1cdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuLVxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAmIzM5O21ha2UgcnVuX3Rlc3RzJiMzOTsgb3JkZXJcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXG4gXHR0ZXN0X3NvY2ttYXAgXFxcbkBAIC0xMDIsMTYgJiM0MzszOCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuIFRFU1RfR0VOX1BST0dTICYjNDM7PSB0ZXN0X3Byb2dzLWJwZl9nY2NcbiBURVNUX0lOU1RfU1VCRElSUyAmIzQzOz0gYnBmX2djY1xuLVxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2Zcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tXG4gZW5kaWZcbiBcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuQEAgLTIxMywyMSAmIzQzOzEzOSw4IEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKVxuIGVuZGlmXG4gZW5kaWZcbiBcbi1TQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcbi1CVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4tQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3Rcbi1IT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xuLUhPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuLWVsc2Vcbi1IT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUilcbi1IT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuLUhPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4tZW5kaWZcbi1IT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbi1SRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuJiM0MztpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuJiM0MztcbiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVx0XHRcdFx0XFxcbiBcdFx0ICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KVx0XFxcbiBcdFx0ICAgICAuLi8uLi8uLi8uLi92bWxpbnV4XHRcdFx0XHRcXFxuQEAgLTI0Miw3ICYjNDM7MTU1LDcgQEAgZW5kaWZcbiAjIHRvIGJ1aWxkIGluZGl2aWR1YWwgdGVzdHMuXG4gIyBOT1RFOiBTZW1pY29sb24gYXQgdGhlIGVuZCBpcyBjcml0aWNhbCB0byBvdmVycmlkZSBsaWIubWsmIzM5O3MgZGVmYXVsdCBzdGF0aWNcbiAjIHJ1bGUgZm9yIGJpbmFyaWVzLlxuLSQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcdFx0XHRcdFxcXG4mIzQzOyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuIFx0ICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpKTogJTogJChPVVRQVVQpLyUgO1xuIFxuICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nXG5AQCAtMjU2LDExICYjNDM7MTY5LDE0IEBAICQoTUFLRV9ESVJTKTpcbiBcbiAkKE9VVFBVVCkvJS5vOiAlLmNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQFxuIFxuJiM0MzsjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcbiYjNDM7IyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXG4mIzQzOyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS5cbiAkKE9VVFBVVCkvJTolLmNcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKExJTksuYykgJF4gJChMRExJQlMpIC1vICRAXG4mIzQzO1x0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIExMVk0mIzM5O3MgbGQubGxkIGRvZXNuJiMzOTt0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODZcbiBpZmVxICgkKFNSQ0FSQ0gpLCQoZmlsdGVyICQoU1JDQVJDSCkseDg2IHJpc2N2KSlcbkBAIC0zMTQsMTYgJiM0MzsyMzAsNiBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSlcbiBcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcbiBcbiBcbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCYjMzQ7XCYjMzQ7XG4tZWxzZVxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwmIzM0O2Jvb3RzdHJhcC9cJiMzNDtcbi1lbmRpZlxuLVxuICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSilcbiBcbiBURVNUSU5HX0hFTFBFUlNcdDo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuQEAgLTM0NCw3ICYjNDM7MjUwLDM5IEBAICQoT1VUUFVUKS90ZXN0X21hcHM6ICQoVEVTVElOR19IRUxQRVJTKVxuICQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiAkKFRFU1RJTkdfSEVMUEVSUykgJChDQVBfSEVMUEVSUykgJChVTlBSSVZfSEVMUEVSUylcbiAkKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKVxuIFxuLUJQRlRPT0wgPz0gJChERUZBVUxUX0JQRlRPT0wpXG4mIzQzOyMgQWxsIGhlbHBlciBvYmplY3RzIGEgcnVubmVyIGluc3RhbmNlIGxpbmtzLCBwcmUtYnVpbHQgaGVyZSBzbyBydW5uZXJcbiYjNDM7IyBzdWItbWFrZXMgc2hhcmluZyAkKE9VVFBVVCkgbmV2ZXIgY29tcGlsZSB0aGVtIGNvbmN1cnJlbnRseS5cbiYjNDM7SEVMUEVSX09CSlMgOj0gJChURVNUSU5HX0hFTFBFUlMpICQoQ0dST1VQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXHRcXFxuJiM0MztcdCAgICAgICAkKFRSQUNFX0hFTFBFUlMpICQoSlNPTl9XUklURVIpICQoQ0FQX0hFTFBFUlMpXHRcdFxcXG4mIzQzO1x0ICAgICAgICQoTkVUV09SS19IRUxQRVJTKSAkKE9VVFBVVCkvdXNkdF8xLm8gJChPVVRQVVQpL3VzZHRfMi5vXHRcXFxuJiM0MztcdCAgICAgICAkKE9VVFBVVCkveHNrLm9cbiYjNDM7XG4mIzQzOyMgJChCUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0IGluc3RhbGxzXG4mIzQzOyMgbGliYnBmJiMzOTtzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50b1xuJiM0MzsjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlXG4mIzQzOyMgaW5zdGFsbCBhbmQgY2FuIHNpbGVudGx5IHBpY2sgdXAgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLlxuJiM0MzsjXG4mIzQzOyMgSW52YXJpYW50OiB0aGlzIGxpc3QgbXVzdCBiZSBhIHN1cGVyc2V0IG9mIGV2ZXJ5IHByZXJlcXVpc2l0ZSB0aGVcbiYjNDM7IyBydW5uZXImIzM5O3MgRVhUUkFfT0JKUyBydWxlIGF0dGFjaGVzIHRvIHRoZXNlIHNhbWUgb2JqZWN0cyAoRVhUUkFfSERSUyxcbiYjNDM7IyBib3RoIHRlc3RzLmggZmxhdm9ycywgJChCUEZPQkopKS4gSXQgZ3VhcmFudGVlcyB0aGUgaGVscGVycyBidWlsdFxuJiM0MzsjIGhlcmUgYXJlIG5ldmVyIG9sZGVyIHRoYW4gYSBydW5uZXItc2lkZSBwcmVyZXF1aXNpdGUsIHNvIHRoZVxuJiM0MzsjIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBhbmQgdGVzdF9tYXBzIHN1Yi1tYWtlcywgd2hpY2ggc2hhcmUgJChPVVRQVVQpLFxuJiM0MzsjIHRyZWF0IHRoZW0gYXMgdXAgdG8gZGF0ZSBpbnN0ZWFkIG9mIGJvdGggcmVjb21waWxpbmcgdGhlIHNhbWUgb2JqZWN0XG4mIzQzOyMgZmlsZSBjb25jdXJyZW50bHkuXG4mIzQzOyQoSEVMUEVSX09CSlMpOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcdFx0XFxcbiYjNDM7XHRcdCQoVkVSSUZZX1NJR19IRFIpICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxcbiYjNDM7XHRcdHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaCAkKEJQRk9CSikgJChCUEZUT09MKVxuJiM0MztcbiYjNDM7JChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUb29sIHN1Yi1idWlsZHM6IGJwZnRvb2wgYW5kIGxpYmJwZiAoaG9zdCBhbmQsIHdoZW4gY3Jvc3MtY29tcGlsaW5nLFxuJiM0MzsjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLlxuJiM0MzsjXG4mIzQzOyMgTm90ZSB0aGUgZGVsaWJlcmF0ZSBhc3ltbWV0cnk6IHRoZSBob3N0IGxpYmJwZiBidWlsZHMgd2l0aG91dFxuJiM0MzsjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLlxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXFxcbiBcdFx0ICAgICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvYnBmdG9vbFxuIFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcdFx0XHQgICAgICAgXFxcbkBAIC00MTIsNyAmIzQzOzM1MCw3IEBAIGVuZGlmXG4gXG4gIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG9cbiAjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxuLSMgJChUUlVOTkVSX0JQRl9PQkpTKVxuJiM0MzsjIEJQRiBvYmplY3RzLlxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXG4gaWZlcSAoJChWTUxJTlVYX0gpLClcbiBcdCQoY2FsbCBtc2csR0VOLCwkQClcbkBAIC00MzcsMzc0ICYjNDM7Mzc1LDExIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHRIT1NUUEtHX0NPTkZJRz0mIzM5OyQoUEtHX0NPTkZJRykmIzM5OyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyBcJiMzNDttaXNzaW5nXCYjMzQ7IGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxuLSNcbi0jIFVzZSAmIzM5Oy1pZGlyYWZ0ZXImIzM5OzogRG9uJiMzOTt0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXG4tZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbi0kKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuLVx0fCBzZWQgLW4gJiMzOTsvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfSYjMzk7KSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZFwmIzM0OywgJCQzKX0mIzM5OykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EJXM9JXMgXCYjMzQ7LCAkJDIsICQkMyl9JiMzOTspXG4tZW5kZWZcbi1cbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbi1cdFx0XHRncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVx0XHRcdFx0XFxcbi1cdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4tXHQgICAgIC1zdGQ9Z251MTFcdFx0IFx0XHRcdFx0XHRcXFxuLVx0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZtcy1leHRlbnNpb25zXHRcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcdFx0XHRcXFxuLVx0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAjXG4tIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcbi1cbi1DTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUylcbi1cbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lXG4tXG4tJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQubzogZmxvd19kaXNzZWN0b3JfbG9hZC5oXG4tJChPVVRQVVQpL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLm86IGNncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbi1cbi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgQ2xhbmdcbi0jICQxIC0gaW5wdXQgLmMgZmlsZVxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxuLSMgJDMgLSBDRkxBR1Ncbi0jICQ0IC0gYmluYXJ5IG5hbWVcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYzIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXG4tZGVmaW5lIENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYyIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGNwdS12NFxuLWRlZmluZSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBHQ0Ncbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLEdDQy1CUEYsJDQsJDIpXG4tXHQkKFEpJChCUEZfR0NDKSAkMyAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkMSAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tXG4tU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uY1xuLVxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcdFx0XFxcbi1cdFx0bGlua2VkX3ZhcnMuc2tlbC5oIGxpbmtlZF9tYXBzLnNrZWwuaCBcdFx0XHRcXFxuLVx0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4tXHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcdFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuLVxuLUxTS0VMUyA6PSBmZXhpdF9zbGVlcC5jIHRyYWNlX3ByaW50ay5jIHRyYWNlX3ZwcmludGsuYyBtYXBfcHRyX2tlcm4uYyBcdFxcXG4tXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1x0XHRcdFxcXG4tXHR0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXFxcbi1cdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xuLVxuLUxTS0VMU19TSUdORUQgOj0gZmVudHJ5X3Rlc3QuYyBmZXhpdF90ZXN0LmMgYXRvbWljcy5jXG4tXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXG4tTFNLRUxTX0VYVFJBIDo9IHRlc3Rfa3N5bXNfbW9kdWxlLmMgdGVzdF9rc3ltc193ZWFrLmMga2Z1bmNfY2FsbF90ZXN0LmMgXFxcbi1cdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmNcbi1TS0VMX0JMQUNLTElTVCAmIzQzOz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4tdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xuLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm9cbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLVxuLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcbi1cbi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuLVx0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbi1cdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbi1cdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4tXG4tIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggXCYjMzQ7dGVtcG9yYXJ5XCYjMzQ7IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJcbi1cbi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpXG4tVFJVTk5FUl9PVVRQVVQgOj0gJChPVVRQVVQpJChpZiAkMiwvKSQyXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcbi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLFx0XFxcbi1cdFx0XHRcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXG4tVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSlcbi1UUlVOTkVSX0xJQl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0xJQl9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxuLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmhcbi1UUlVOTkVSX0JQRl9TUkNTIDo9ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5jKSlcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXG4tVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCxcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcbi1cdFx0XHRcdFx0ICAgICAgICQkKFRSVU5ORVJfQlBGX1NSQ1MpKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcbi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKVxuLVRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMU19TSUdORUQpKVxuLVRFU1RfR0VOX0ZJTEVTICYjNDM7PSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcbi1cbi0jIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3Rcbi0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXG4tIyBUaGUgY2hlY2sgaXMgaW5saW5lZCBwZXItcnVubmVyIHNvICQxIGlzIHN1YnN0aXR1dGVkIGF0ICQoY2FsbCkgdGltZSBhbmRcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUmIzM5O3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpIChzaWduZWQpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7XHRcdFx0XHRcdFxcXG4tXHRcdCAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXFwoKHZvaWQpP1xcKS4qL0RFRklORV9URVNUKFxcMikvcCYjMzk7XHRcXFxuLVx0XHRcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1x0XFxcbi1cdFx0ICkgXHUwMDNlICQkQClcbi1lbmRpZlxuLVxuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm9cbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXG4tXG4tIyBjb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlc1xuLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kXG4tJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOlx0XHRcdFxcXG4tXHRcdCAgICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFx0XFxcbi1cdFx0ICAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZFxuLVx0JCQoY2FsbCBtc2csVEVTVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKVxuLVx0JChRKShjZCAkJChARCkgXHUwMDI2XHUwMDI2ICQkKENDKSAtSS4gJCQoQ0ZMQUdTKSAtTU1EIC1NVCAkJEAgLWMgJChDVVJESVIpLyQkXHUwMDNjICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1URVNUJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSkpXG4tXHQkJChpZiAkJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFx0XFxcbi1cdFx0JChRKWlmIFsgLWYgJCRAIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoVFJVTk5FUl9CSU5BUlkpXVwmIzM0OyBcJiMzNDskJChub3RkaXIgJCRAKVwmIzM0Oyk7IFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vICQkQDtcdFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDtcdFx0XFxcbi1cdFx0ZmkpXG4tXG4tJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOlx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRClcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXG4tXG4taWZlcSAoJChmaWx0ZXIgY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzLCQoTUFLRUNNREdPQUxTKSksKVxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcbi1lbmRpZlxuLVxuLSMgYWRkIHBlciBleHRyYSBvYmogQ0ZHTEFHUyBkZWZpbml0aW9uc1xuLSQoZm9yZWFjaCBOLCQocGF0c3Vic3QgJChUUlVOTkVSX09VVFBVVCkvJS5vLCUsJChUUlVOTkVSX0VYVFJBX09CSlMpKSxcdFxcXG4tXHQkKGV2YWwgJChUUlVOTkVSX09VVFBVVCkvJChOKS5vOiBDRkxBR1MgJiM0Mzs9ICQoJChOKS5jLUNGTEFHUykpKVxuLVxuLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOlx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICUuY1x0XHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVFJVTk5FUl9URVNUU19IRFIpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSQoVFJVTk5FUl9MSUJfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzokKFRPT0xTRElSKS9saWIvJS5jXG4tXHQkJChjYWxsIG1zZyxMSUItT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXG4tIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXG4tJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVClcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXG4tXHQkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKVxuLVx0JChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvXG4tZW5kaWZcbi1cbi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiB8ICQoVFJVTk5FUl9CUEZfT0JKUylcbi1cbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKVx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopXHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfTElCX09CSlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKVx0XHRcdFx0XFxcbi1cdFx0XHQgICAgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XFxcbi1cdFx0XHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXG4tXHQkJChjYWxsIG1zZyxCSU5BUlksLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEBcbi1cdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4tXHRcdCAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sXG4tXG4tZW5kZWZcbi1cbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4tVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxuLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cbi1cbi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKVxuJiM0MzsjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdFxuJiM0MzsjIGdyb3VwZWQgLSB1bmRlciAtaiBtYWtlIHdvdWxkIHJ1biBnZW5rZXkgdHdpY2UgY29uY3VycmVudGx5IGFuZCB0aGVcbiYjNDM7IyBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm0gaXMgaW1wbGljaXRseSBncm91cGVkIGV2ZW5cbiYjNDM7IyB3aXRoIG1ha2UgXHUwMDNjIDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLlxuJiM0MzskKEJVSUxEX0RJUikvJS5wZW0gJChCVUlMRF9ESVIpLyUuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXG4gXHQkKFEpbWtkaXIgLXAgJChCVUlMRF9ESVIpXG4gXHQkKFEpJChWRVJJRllfU0lHX1NFVFVQKSBnZW5rZXkgJChCVUlMRF9ESVIpXG4gXG5AQCAtODMzLDExNiAmIzQzOzQwOCwxNjIgQEAgTElCQVJFTkFfQlBGX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZVx0XHRcXFxuIFx0XHRcdFx0IGxpYmFyZW5hL3NlbGZ0ZXN0cy8qXHRcdFxcXG4gXHRcdFx0XHQgbGliYXJlbmEvKi5icGYubylcbiBcbi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxuLVxuICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCYjNDM7JChNQUtFKSAtQyBsaWJhcmVuYSBsaWJhcmVuYS5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gXG4gaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbi1MSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbi1DRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXG4tXG4gJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXG4gXHQmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHNcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3Ncbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jXHRcdFxcXG4tXHRcdFx0IGNncm91cF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRyYWNlX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgbmV0d29ya19oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRlc3RpbmdfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBidGZfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IGNhcF9oZWxwZXJzLmNcdFx0XFxcbi1cdFx0XHQgdW5wcml2X2hlbHBlcnMuYyBcdFxcXG4tXHRcdFx0IHN5c2N0bF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldGxpbmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBqaXRfZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaW9faGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHRlc3RfbG9hZGVyLmNcdFx0XFxcbi1cdFx0XHQgeHNrLmNcdFx0XHRcXFxuLVx0XHRcdCBkaXNhc20uY1x0XHRcXFxuLVx0XHRcdCBkaXNhc21faGVscGVycy5jXHRcXFxuLVx0XHRcdCBqc29uX3dyaXRlci5jIFx0XHRcXFxuLVx0XHRcdCAkKFZFUklGWV9TSUdfSERSKVx0XHRcXFxuLVx0XHRcdCBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcdFxcXG4tXHRcdFx0IGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcXFxuLVx0XHRcdCBicGZ0b29sX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgdXNkdF8xLmMgdXNkdF8yLmNcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfU0tFTClcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICBpbWFfc2V0dXAuc2ggXHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpXG4tXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1jcHV2NCB0ZXN0IHJ1bm5lci5cbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBHZW5lcmF0ZWQgdGVzdCBsaXN0IGhlYWRlcnNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO2RlZmluZSBnZW5fdGVzdHNfaGRyXG4mIzQzO1x0JChjYWxsIG1zZyxURVNULUhEUiwsJEApXG4mIzQzO1x0JChRKShlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OztcdFx0XFxcbiYjNDM7XHQgICAgIHNlZCAtbiAtRSAmIzM5O3MvXnZvaWQgKHNlcmlhbF8pP3Rlc3RfKFthLXpBLVowLTlfXSYjNDM7KVxcKCh2b2lkKT9cXCkuKi9ERUZJTkVfVEVTVChcXDIpL3AmIzM5OyBcXFxuJiM0MztcdFx0JChARCkvKi5jIHwgc29ydCkgXHUwMDNlICRAXG4mIzQzO2VuZGVmXG4mIzQzO1xuJiM0Mztwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXG4mIzQzO1x0JChnZW5fdGVzdHNfaGRyKVxuJiM0MztcbiYjNDM7bWFwX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgbWFwX3Rlc3RzLyouYylcbiYjNDM7XHQkKGdlbl90ZXN0c19oZHIpXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIFRlc3QgcnVubmVyIGluc3RhbmNlcywgb25lIHN1Yi1tYWtlIGVhY2ggKHNlZSBNYWtlZmlsZS5ydW5uZXIpLlxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7IyBUaGUgTExWTSBmZWF0dXJlLXByb2JlIHJlc3VsdHMsIEJQRl9HQ0MgYW5kIFRFU1RfS01PRFMgYXJlIGV4cG9ydGVkXG4mIzQzOyMgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuIENDIGlzIHBhc3NlZCBleHBsaWNpdGx5IGluc3RlYWQ6IGV4cG9ydGluZyBpdFxuJiM0MzsjIHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MgQ0MgaW50byB0aGUgbGliYnBmL2JwZnRvb2wvcmVzb2x2ZV9idGZpZHNcbiYjNDM7IyBzdWItYnVpbGRzLCB3aGljaCBjb21wdXRlIHRoZWlyIG93bi4gKCYjMzk7ZXhwb3J0IE5BTUUmIzM5OyBvbiBhbiB1bmRlZmluZWRcbiYjNDM7IyB2YXJpYWJsZSBjcmVhdGVzIGFuIGVtcHR5IG9uZSwgc28gdGhlc2Ugc3RheSBiZWxvdyB0aGUgZGVmaW5pdGlvbnMuKVxuJiM0MztleHBvcnQgTExWTV9DRkxBR1MgTExWTV9MRExJQlMgTExWTV9MREZMQUdTIEJQRl9HQ0MgVEVTVF9LTU9EU1xuJiM0MztcbiYjNDM7UlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0mIzM5OyQoQ0MpJiMzOTtcbiYjNDM7XG4mIzQzOyMgRXZlcnl0aGluZyBhIHJ1bm5lciBpbnN0YW5jZSByZWZlcmVuY2VzIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZC5cbiYjNDM7UlVOTkVSX1BSRVJFUVMgOj0gJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKEJQRlRPT0wpXHRcdFxcXG4mIzQzO1x0XHQgICQoVFJVTk5FUl9CUEZUT09MKSAkKFJFU09MVkVfQlRGSURTKVx0XHRcdFxcXG4mIzQzO1x0XHQgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAkKFZFUklGWV9TSUdfSERSKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKVx0XFxcbiYjNDM7XHRcdCAgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcdFx0XFxcbiYjNDM7XHRcdCAgcHJvZ190ZXN0cy90ZXN0cy5oIG1hcF90ZXN0cy90ZXN0cy5oXHRcdFx0XFxcbiYjNDM7XHRcdCAgJChIRUxQRVJfT0JKUylcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XFxcbiYjNDM7XHRcdCAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aSAkKFRFU1RfS01PRF9UQVJHRVRTKVxuJiM0MztcbiYjNDM7Rk9SQ0U6XG4mIzQzO1xuJiM0MzsjIFRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBza2VsZXRvbnMgYXJlIGFsc28gaW5wdXRzIG9mIGJlbmNoLCB0ZXN0X21hcHMsXG4mIzQzOyMgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwOyBcJiMzNDtkZWZhdWx0LXNrZWxzXCYjMzQ7IGJ1aWxkcyBqdXN0IHRob3NlXG4mIzQzOyMgd2l0aG91dCB0aGUgdGVzdF9wcm9ncyB0ZXN0IG9iamVjdHMgYW5kIGJpbmFyeS5cbiYjNDM7LlBIT05ZOiBkZWZhdWx0LXNrZWxzXG4mIzQzO2RlZmF1bHQtc2tlbHM6ICQoUlVOTkVSX1BSRVJFUVMpXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuJiM0MztcdFx0QlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5O1x0XFxcbiYjNDM7XHRcdEJQRl9DQ19GTEFHUz0mIzM5Oy1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12MyYjMzk7XHRcdFxcXG4mIzQzO1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTIHNrZWxzXG4mIzQzO1xuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9nczogJChSVU5ORVJfUFJFUkVRUykgZGVmYXVsdC1za2VscyBGT1JDRVxuJiM0MztcdCYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9DQz0mIzM5OyQoQ0xBTkcpJiMzOTsgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChDTEFOR19TWVNfSU5DTFVERVMpJiMzOTtcdFxcXG4mIzQzO1x0XHRCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djMmIzM5O1x0XHRcXFxuJiM0MztcdFx0QlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPW5vX2FsdTMyIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQ0M9JiMzOTskKENMQU5HKSYjMzk7IEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0mIzM5OyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSYjMzk7XHRcXFxuJiM0MztcdFx0QlBGX0NDX0ZMQUdTPSYjMzk7LU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYyJiMzOTtcbiYjNDM7XG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGNwdXY0KSlcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtY3B1djQ6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWNwdXY0IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXG4mIzQzO1x0XHRCUEZfQ0M9JiMzOTskKENMQU5HKSYjMzk7IEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0mIzM5OyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSYjMzk7XHRcXFxuJiM0MztcdFx0QlBGX0NDX0ZMQUdTPSYjMzk7LU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0JiMzOTtcdFx0XFxcbiYjNDM7XHRcdEJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbiBlbmRpZlxuIFxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MgQlBGLUdDQy1mbGF2b3JlZCB0ZXN0IHJ1bm5lci5cbiBpZm5lcSAoJChCUEZfR0NDKSwpXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBHQ0NfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsYnBmX2djYykpXG4tZW5kaWZcbi1cbi0jIERlZmluZSB0ZXN0X21hcHMgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gbWFwX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfbWFwcy5jXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PVxuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj1cbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9ICQkKGVycm9yIG5vIEJQRiBvYmplY3RzIHNob3VsZCBiZSBidWlsdClcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj1cbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKVxuLVxuLSMgRGVmaW5lIHRlc3RfdmVyaWZpZXIgdGVzdCBydW5uZXIuXG4tIyBJdCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tXG4tIyB0aGVtIChlLmcuLCB0ZXN0LmggaXMgdXNpbmcgY29tcGxldGVseSBwYXR0ZXJuKSwgdGhhdCBpdCYjMzk7cyB3b3J0aCBqdXN0XG4tIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbiYjNDM7IyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2MmIzM5O3Mgb3duXG4mIzQzOyMgc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QmIzM5O3MgYXNtLWdlbmVyaWMvIGhlYWRlcnMuXG4mIzQzO0dDQ19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbiYjNDM7XG4mIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLWJwZl9nY2M6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9DQz0mIzM5OyQoQlBGX0dDQykmIzM5OyBCUEZfQ0NfTVNHPUdDQy1CUEZcdFx0XHRcdFxcXG4mIzQzO1x0XHRCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChHQ0NfU1lTX0lOQ0xVREVTKSYjMzk7XHRcdFx0XHRcXFxuJiM0MztcdFx0QlBGX0NDX0ZMQUdTPSYjMzk7LURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzImIzM5O1xuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7IyB0ZXN0X21hcHMgY29tcGlsZXMgbWFwX3Rlc3RzLyouYyBhZ2FpbnN0IHRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBza2VsZXRvbnNcbiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgbWFwX3Rlc3RzL3Rlc3RzLmggZGVmYXVsdC1za2VscyBGT1JDRVxuJiM0MztcdCYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X21hcHMgRkxBVk9SPSBURVNUU19ESVI9bWFwX3Rlc3RzXG4mIzQzO1xuJiM0MzsjIERlZmF1bHQtZmxhdm9yIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgY29uc3VtZWQgYnkgdGFyZ2V0cyBpbiB0aGlzXG4mIzQzOyMgTWFrZWZpbGUgKGFuZCBieSBsaWIubWsmIzM5O3MgaW5zdGFsbCBydWxlKSBhcmUgcHJvZHVjZWQgYnkgdGhlIHJ1bm5lclxuJiM0MzsjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlXG4mIzQzOyMgbWFrZXMgdGhlbSBhdmFpbGFibGUgaGVyZSB3aXRob3V0IGR1cGxpY2F0aW5nIHRoZSBydW5uZXImIzM5O3MgcnVsZXMuXG4mIzQzO0RFRkFVTFRfQlBGX09CSlMgOj0gJChwYXRzdWJzdCBwcm9ncy8lLmMsJChPVVRQVVQpLyUuYnBmLm8sJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChERUZBVUxUX0JQRl9PQkpTKVxuJiM0MztcbiYjNDM7QkVOQ0hfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgdGVzdF9vdmVyaGVhZC5za2VsLmggdHJpZ2dlcl9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgYmxvb21fZmlsdGVyX2JlbmNoLnNrZWwuaCBicGZfbG9vcF9iZW5jaC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgc3RybmNtcF9iZW5jaC5za2VsLmggYnBmX2hhc2htYXBfZnVsbF91cGRhdGVfYmVuY2guc2tlbC5oXFxcbiYjNDM7XHQgICAgICAgbG9jYWxfc3RvcmFnZV9iZW5jaC5za2VsLmhcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgIGxvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlX2JlbmNoLnNrZWwuaFx0XHRcXFxuJiM0MztcdCAgICAgICBiZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5za2VsLmhcdFx0XHRcXFxuJiM0MztcdCAgICAgICBicGZfaGFzaG1hcF9sb29rdXAuc2tlbC5oIGh0YWJfbWVtX2JlbmNoLnNrZWwuaFx0XHRcXFxuJiM0MztcdCAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgbHBtX3RyaWVfYmVuY2guc2tlbC5oIGxwbV90cmllX21hcC5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgICAgYnBmX25vcF9iZW5jaC5za2VsLmggeGRwX2xiX2JlbmNoLnNrZWwuaClcbiYjNDM7VE9QX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8seHNrX3hkcF9wcm9ncy5za2VsLmhcdFx0XFxcbiYjNDM7XHQgICAgIHhkcF9od19tZXRhZGF0YS5za2VsLmggeGRwX2ZlYXR1cmVzLnNrZWwuaFx0XHRcdFxcXG4mIzQzO1x0ICAgICB0ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCkgJChCRU5DSF9TS0VMUylcbiYjNDM7XG4mIzQzOyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246IFwmIzM0O2RlZmF1bHQtc2tlbHNcJiMzNDsgKHJlKWJ1aWxkcyB0aGUgZmlsZSB2aWEgdGhlXG4mIzQzOyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHNcbiYjNDM7IyBzZWUgZnJlc2ggdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNhbWUgaW52b2NhdGlvbi4gRGVwZW5kZW50cyBzdGlsbFxuJiM0MzsjIHJlYnVpbGQgb24gbXRpbWUgb25seSAtIHRoZSBwaG9ueSBwcmVyZXF1aXNpdGUgZG9lcyBub3QgY2FzY2FkZS5cbiYjNDM7JChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgO1xuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmRcbiYjNDM7IyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb20gdGhlbSAoZS5nLiwgaXRzIHRlc3RzLmggdXNlcyBhIGNvbXBsZXRlbHlcbiYjNDM7IyBkaWZmZXJlbnQgcGF0dGVybiksIHRoYXQgaXQmIzM5O3Mgd29ydGgganVzdCBkZWZpbmluZyBpdHMgcnVsZXMgZXhwbGljaXRseS5cbiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcbi1cdCQoc2hlbGwgKCBjZCB2ZXJpZmllci87IFxcXG4tXHRcdCAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFxcXG4tXHRcdCAgZWNobyAmIzM5OyNpZmRlZiBGSUxMX0FSUkFZJiMzOTs7IFxcXG4tXHRcdCAgbHMgKi5jIDJcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICYjMzk7c0BcXCguKlxcKUAjaW5jbHVkZSBcXFwmIzM0O1xcMVxcXCYjMzQ7QCYjMzk7OyBcXFxuLVx0XHQgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcXFxuLVx0XHQpIFx1MDAzZSB2ZXJpZmllci90ZXN0cy5oKVxuLSQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSikgfCAkKE9VVFBVVClcbiYjNDM7XHQkKFEpKCBjZCB2ZXJpZmllci87IFxcXG4mIzQzO1x0ICAgICAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFxcXG4mIzQzO1x0ICAgICAgZWNobyAmIzM5OyNpZmRlZiBGSUxMX0FSUkFZJiMzOTs7IFxcXG4mIzQzO1x0ICAgICAgbHMgKi5jIDJcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICYjMzk7c0BcXCguKlxcKUAjaW5jbHVkZSBcXFwmIzM0O1xcMVxcXCYjMzQ7QCYjMzk7OyBcXFxuJiM0MztcdCAgICAgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcXFxuJiM0MztcdCAgICApIFx1MDAzZSB2ZXJpZmllci90ZXN0cy5oXG4mIzQzO1xuJiM0MzskKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIEluY2x1ZGUgZmluZF9iaXQuYyB0byBjb21waWxlIHhza3hjZWl2ZXIuXG4gRVhUUkFfU1JDIDo9ICQoVE9PTFNESVIpL2xpYi9maW5kX2JpdC5jIHByb2dfdGVzdHMvdGVzdF94c2suYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmhcbi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpXG4mIzQzOyQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSilcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVClcbiYjNDM7JChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaFxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4tJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oIHwgJChPVVRQVVQpXG4mIzQzOyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaFxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG5AQCAtOTU0LDExICYjNDM7NTc1LDE4IEBAICQoT1VUUFVUKS90ZXN0X2NwcDogdGVzdF9jcHAuY3BwICQoT1VUUFVUKS90ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCAkKEJQRk9CSilcbiBcdCQoY2FsbCBtc2csQ1hYLCwkQClcbiBcdCQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRAXG4gXG4tIyBCZW5jaG1hcmsgcnVubmVyXG4tJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKVxuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpblxuJiM0MzsjIGJlbmNocy86IGV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi5cbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxuJiM0MztcbiYjNDM7JChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CRU5DSCYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCRU5DSClcbiYjNDM7XG4mIzQzOyMgYmVuY2htYXJrLXNwZWNpZmljIGdlbmVyYXRlZC1za2VsZXRvbiBkZXBlbmRlbmNpZXNcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm86ICQoT1VUUFVUKS90cmlnZ2VyX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcbkBAIC05NzgsMzcgJiM0Mzs2MDYsMTkgQEAgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vOiAkKE9VVFBVVCkvbHBtX3RyaWVfYmVuY2guc2tlbC5oICQoT1VUUFVUKS9scG1fdHJcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vOiAkKE9VVFBVVCkvYnBmX25vcF9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oXG4gJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vOiAkKE9VVFBVVCkveGRwX2xiX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vOiBiZW5jaF9icGZfdGltaW5nLmhcbiYjNDM7XG4gJChPVVRQVVQpL2JlbmNoLm86IGJlbmNoLmggdGVzdGluZ19oZWxwZXJzLmggJChCUEZPQkopXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgJiM0Mzs9IC1sbVxuLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbi1cdFx0ICQoVEVTVElOR19IRUxQRVJTKSBcXFxuLVx0XHQgJChUUkFDRV9IRUxQRVJTKSBcXFxuLVx0XHQgJChDR1JPVVBfSEVMUEVSUykgXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYmxvb21fZmlsdGVyX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfaHRhYl9tZW0ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS91c2R0XzEubyBcXFxuLVx0XHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXG4tXHRcdCAjXG4mIzQzOyQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm9cdFx0XFxcbiYjNDM7XHRcdCAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm9cdFxcXG4mIzQzO1x0XHQgJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1x0XFxcbiYjNDM7XHRcdCAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMub1x0XFxcbiYjNDM7XHRcdCAkKE9VVFBVVCkvdXNkdF8xLm9cdFx0XFxcbiYjNDM7XHRcdCAkKE9VVFBVVCkvdXNkdF8yLm9cdFx0XFxcbiYjNDM7XHRcdCAkKEJFTkNIX09CSlMpXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4tXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJEA7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtTElOSyYjMzk7ICYjMzk7JChub3RkaXIgJEApIChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAIFxcXG4mIzQzO1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLExJTkssLChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSlcbiBcbiAjIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5nIGFib3V0IHNucHJpbnRmIHRydW5jYXRpbmcgc3RyaW5ncyBsaWtlOlxuICNcbkBAIC0xMDM2LDcgJiM0Mzs2NDYsNyBAQCBFWFRSQV9DTEVBTiA6PSAkKFNDUkFUQ0hfRElSKSAkKEhPU1RfU0NSQVRDSF9ESVIpXHRcdFx0XFxcbiBcdFx0XHQgICAgICAgbGlidXJhbmRvbV9yZWFkLnNvKVx0XHRcdFxcXG4gXHQkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0c1xuIFxuLS5QSE9OWTogZG9jcyBkb2NzLWNsZWFuXG4mIzQzOy5QSE9OWTogZG9jcyBkb2NzLWNsZWFuIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW5cbiBcbiAjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuIC5ERUxFVEVfT05fRVJST1I6XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uM2E0OTYyYjA1ODVmZWNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbkBAIC0wLDAgJiM0MzsxLDE3MyBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0c1xuJiM0MzsjIGJ1aWxkLCBpbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlIGFuZCBNYWtlZmlsZS5ydW5uZXIuIERlZmluaXRpb25zXG4mIzQzOyMgZm9sbG93IHRoZSBvcmRlciB0aGV5IGhhZCBpbiB0aGUgTWFrZWZpbGUgYmVmb3JlIHRoZSBzcGxpdC5cbiYjNDM7XG4mIzQzO0NYWCA/PSAkKENST1NTX0NPTVBJTEUpZyYjNDM7JiM0MztcbiYjNDM7T0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxuJiM0MztcbiYjNDM7Q1VSRElSIDo9ICQoYWJzcGF0aCAuKVxuJiM0MztcbiYjNDM7VE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKVxuJiM0MztMSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4mIzQzO0JQRkRJUiA6PSAkKExJQkRJUikvYnBmXG4mIzQzO1RPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGVcbiYjNDM7VE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4mIzQzO0JQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcbiYjNDM7QVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcbiYjNDM7aWZuZXEgKCQoTyksKVxuJiM0MztHRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuJiM0MztlbHNlXG4mIzQzO0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4mIzQzO2VuZGlmXG4mIzQzO0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxuJiM0MztQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4mIzQzO1xuJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbiYjNDM7ICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpZmRlZiBBU0FOXG4mIzQzO1NBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbiYjNDM7ZWxzZVxuJiM0MztTQU5fQ0ZMQUdTXHQ/PVxuJiM0MztlbmRpZlxuJiM0MztTQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuJiM0MztSRUxFQVNFXHRcdD89XG4mIzQzO09QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4mIzQzO1xuJiM0MztMSUJFTEZfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzO0xJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4mIzQzO1xuJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuJiM0MzsjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuJiM0MzsjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDFcbiYjNDM7UEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXG4mIzQzOyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXG4mIzQzOyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXG4mIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxuJiM0MzsjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcbiYjNDM7c2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcbiYjNDM7XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgfSlcbiYjNDM7XG4mIzQzO2lmZXEgKCQoc3JjdHJlZSksKVxuJiM0MztzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuJiM0MztzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4mIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7Q09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbiYjNDM7XHQgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcdFx0XHRcdFxcXG4mIzQzO1x0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuJiM0MztcdCAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKVx0XHRcXFxuJiM0MztcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVx0XFxcbiYjNDM7XHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbiYjNDM7TERGTEFHUyAmIzQzOz0gJChTQU5fTERGTEFHUylcbiYjNDM7TERMSUJTICYjNDM7PSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcbiYjNDM7XG4mIzQzO1BDQVBfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIFwmIzM0Oy1EVFJBRkZJQ19NT05JVE9SPTFcJiMzNDspXG4mIzQzO1BDQVBfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzO0xETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpXG4mIzQzOyMgVW5saWtlIHRoZSBwcmUtc3BsaXQgTWFrZWZpbGUsIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhZnRlciAuLi9saWIubWtcbiYjNDM7IyAodG9wIGxldmVsKSBvciB3aXRob3V0IGl0IChydW5uZXIpLCBzbyBDT01NT05fQ0ZMQUdTIGlzIHByZXBlbmRlZCB0b1xuJiM0MzsjIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBpbmNsdWRlLXNlYXJjaCBvcmRlci5cbiYjNDM7TElCX01LX0NGTEFHUyA6PSAkKENGTEFHUylcbiYjNDM7Q0ZMQUdTID0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKSAkKExJQl9NS19DRkxBR1MpXG4mIzQzO1xuJiM0MztpZm5lcSAoJChMTFZNKSwpXG4mIzQzOyMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KVxuJiM0MztDTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4mIzQzO1x0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbiYjNDM7XHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuJiM0MztcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuJiM0MztcbiYjNDM7U0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4mIzQzO0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxuJiM0MztJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4mIzQzO0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4mIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbiYjNDM7SE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3RcbiYjNDM7SE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbiYjNDM7SE9TVF9JTkNMVURFX0RJUlx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXG4mIzQzO2Vsc2VcbiYjNDM7SE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4mIzQzO0hPU1RfU0NSQVRDSF9ESVJcdDo9ICQoU0NSQVRDSF9ESVIpXG4mIzQzO0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4mIzQzO2VuZGlmXG4mIzQzO0hPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuJiM0MztSRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuJiM0MztcbiYjNDM7REVGQVVMVF9CUEZUT09MIDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXG4mIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbiYjNDM7Q1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbiYjNDM7VFJVTk5FUl9CUEZUT09MIDo9ICQoQ1JPU1NfQlBGVE9PTClcbiYjNDM7VVNFX0JPT1RTVFJBUCA6PSBcJiMzNDtcJiMzNDtcbiYjNDM7ZWxzZVxuJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4mIzQzO1VTRV9CT09UU1RSQVAgOj0gXCYjMzQ7Ym9vdHN0cmFwL1wmIzM0O1xuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7QlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcbiYjNDM7XG4mIzQzOyMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuJiM0MzsjICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgXCYjMzQ7bWlzc2luZ1wmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbiYjNDM7IyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuXG4mIzQzOyNcbiYjNDM7IyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4mIzQzOyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy5cbiYjNDM7ZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbiYjNDM7XHR8IHNlZCAtbiAmIzM5Oy9cdTAwM2MuLi5cdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXCgvLipcXCl8LWlkaXJhZnRlciBcXDF8cCB9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LURfX0JJVFNfUEVSX0xPTkc9JWRcJiMzNDssICQkMyl9JiMzOTspIFxcXG4mIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJiMzOTtNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LUQlcz0lcyBcJiMzNDssICQkMiwgJCQzKX0mIzM5OylcbiYjNDM7ZW5kZWZcbiYjNDM7XG4mIzQzOyMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuJiM0MztJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbiYjNDM7XHRcdFx0Z3JlcCAmIzM5O2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXyYjMzk7KVxuJiM0MztNRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbilcbiYjNDM7QlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbiYjNDM7XG4mIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbiYjNDM7Q0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIEltbWVkaWF0ZSBvbiBwdXJwb3NlOiBleHBhbmRpbmcgZ2V0X3N5c19pbmNsdWRlcyBmb3JrcyBzZXZlcmFsIHNoZWxscy5cbiYjNDM7Q0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxuJiM0MztCUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuJiM0MztcdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlc1x0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgI1xuJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxuJiM0MztcbiYjNDM7Q0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4mIzQzO1xuJiM0MztWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4mIzQzO1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcbiYjNDM7VkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXG4mIzQzO1BSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cbiYjNDM7XG4mIzQzO0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4mIzQzO1xuJiM0MztpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuJiM0MztMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbiYjNDM7Q0ZMQUdTICYjNDM7PSAtREhBU19CUEZfQVJFTkFfQVNBTlxuJiM0MztlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNlZDQ0YWFkN2VkZWQ0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5AQCAtMCwwICYjNDM7MSwzMTUgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzXG4mIzQzOyMgKG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYyksIG9yIHRlc3RfbWFwcy5cbiYjNDM7I1xuJiM0MzsjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2Ugd2l0aCBpdHMgb3duIG91dHB1dCBkaXJlY3RvcnksXG4mIzQzOyMgc28gZXZlcnl0aGluZyBoZXJlIGlzIHdyaXR0ZW4gaW4gcGxhaW4gbWFrZSAtIG5vICQkLWVzY2FwaW5nLCBubyBldmFsLFxuJiM0MzsjIG5vIHBlci1mbGF2b3IgZ3VhcmRzLiBUaGlzIGZpbGUgaXMgYWx3YXlzIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsXG4mIzQzOyMgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWQgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLCB2bWxpbnV4LmgsXG4mIzQzOyMgdmVyaXN0YXQsIGhlbHBlciBvYmplY3RzLCBzaWduaW5nIGtleSwgZ2VuZXJhdGVkIHRlc3RzLmgsIGV4dHJhXG4mIzQzOyMgYmluYXJpZXMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZCBhcmVcbiYjNDM7IyByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLlxuJiM0MzsjXG4mIzQzOyMgUGFyYW1ldGVycyAoYWxsIHBhc3NlZCBvbiB0aGUgc3ViLW1ha2UgY29tbWFuZCBsaW5lKTpcbiYjNDM7IyAgIE9VVFBVVCAgICAgIGFic29sdXRlIHBhdGggb2YgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5XG4mIzQzOyMgICBSVU5ORVIgICAgICBiYXNlIGJpbmFyeSBuYW1lOiB0ZXN0X3Byb2dzIHwgdGVzdF9tYXBzXG4mIzQzOyMgICBGTEFWT1IgICAgICBmbGF2b3Igc3VmZml4OiBlbXB0eSB8IG5vX2FsdTMyIHwgY3B1djQgfCBicGZfZ2NjXG4mIzQzOyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzXG4mIzQzOyMgICBCUEZfQ0MgICAgICBjb21waWxlciBmb3IgcHJvZ3MvKi5jIEJQRiBvYmplY3RzICgkKENMQU5HKSBvclxuJiM0MzsjICAgICAgICAgICAgICAgJChCUEZfR0NDKSk7IGVtcHR5IGZvciB0ZXN0X21hcHMsIHdoaWNoIGJ1aWxkcyBub25lXG4mIzQzOyMgICBCUEZfQ0NfTVNHICBidWlsZC1sb2cgdGFnOiBDTE5HLUJQRiB8IEdDQy1CUEZcbiYjNDM7IyAgIEJQRl9DQ19GTEFHU1xuJiM0MzsjICAgICAgICAgICAgICAgY29tcGlsZXItc3BlY2lmaWMgZmxhZ3MgKC1PMiwgdGFyZ2V0Ly1tY3B1IG9yIGdjYyBrbm9icylcbiYjNDM7IyAgIEJQRl9TWVNfSU5DTFVERVNcbiYjNDM7IyAgICAgICAgICAgICAgIHN5c3RlbSBpbmNsdWRlIGZsYWdzIG1hdGNoaW5nIEJQRl9DQ1xuJiM0MzsjICAgQlBGX0RFRklORVMgZXh0cmEgZGVmaW5lcyBmb3IgQlBGIG9iamVjdHMgKGUuZy4gLURFTkFCTEVfQVRPTUlDU19URVNUUylcbiYjNDM7IyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgKGFzIHJlc29sdmVkIGJ5IGxpYi5tayBpbiB0aGUgbWFpbiBNYWtlZmlsZSlcbiYjNDM7IyAgIExMVk1fQ0ZMQUdTL0xMVk1fTERMSUJTL0xMVk1fTERGTEFHU1xuJiM0MzsjICAgICAgICAgICAgICAgcmVzdWx0cyBvZiB0aGUgdG9wLWxldmVsIExMVk0gZmVhdHVyZSBwcm9iZVxuJiM0MztcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4mIzQzO2luY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoXG4mIzQzO2luY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlXG4mIzQzO1xuJiM0MzsjIFNhbWUgbWVzc2FnZSBoZWxwZXJzIGFzIC4uL2xpYi5taywgd2hpY2ggb25seSB0aGUgdG9wIGxldmVsIGluY2x1ZGVzLlxuJiM0MztpZmVxICgkKFYpLDEpXG4mIzQzO1EgPVxuJiM0Mzttc2cgPVxuJiM0MztlbHNlXG4mIzQzO1EgPSBAXG4mIzQzO21zZyA9IEBwcmludGYgJiMzOTsgICUtOHMlcyAlcyVzXFxuJiMzOTsgXCYjMzQ7JCgxKVwmIzM0OyBcJiMzNDskKGlmICQoMiksIFskKDIpXSlcJiMzNDsgXCYjMzQ7JChub3RkaXIgJCgzKSlcJiMzNDsgXCYjMzQ7JChpZiAkKDQpLCAkKDQpKVwmIzM0OztcbiYjNDM7TUFLRUZMQUdTICYjNDM7PSAtLW5vLXByaW50LWRpcmVjdG9yeVxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7aW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbiYjNDM7XG4mIzQzOyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWsuXG4mIzQzO0NGTEFHUyAmIzQzOz0gLURfR05VX1NPVVJDRT1cbiYjNDM7Q0ZMQUdTICYjNDM7PSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcbiYjNDM7Q0ZMQUdTICYjNDM7PSAkKFVTRVJDRkxBR1MpXG4mIzQzO0xERkxBR1MgJiM0Mzs9ICQoVVNFUkxERkxBR1MpXG4mIzQzO2lmbmVxICgkKExMVk0pLClcbiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlclxuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tZ251LXZhcmlhYmxlLXNpemVkLXR5cGUtbm90LWF0LWVuZFxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7QklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXG4mIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKVxuJiM0MztcbiYjNDM7YWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXG4mIzQzOy5QSE9OWTogYWxsXG4mIzQzO1xuJiM0MzsjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuJiM0MzsuREVMRVRFX09OX0VSUk9SOlxuJiM0MztcbiYjNDM7IyBQZXJtaXNzaXZlIHNraXAtb24tZmFpbHVyZSBvZiBpbmRpdmlkdWFsIHRlc3RzIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmRcbiYjNDM7IyBpdHMgZmxhdm9ycyBvbmx5OyB0ZXN0X21hcHMgdXNlcyBzdHJvbmcgY3Jvc3Mtb2JqZWN0IHJlZmVyZW5jZXMgYW5kIGtlZXBzXG4mIzQzOyMgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gQlBGX1NUUklDVF9CVUlMRD0wLlxuJiM0MztQRVJNSVNTSVZFX1RFU1RTIDo9ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncywkKFJVTk5FUikpLCQoUEVSTUlTU0lWRSkpXG4mIzQzO1xuJiM0MzskKFJESVIpOlxuJiM0MztcdCQoY2FsbCBtc2csTUtESVIsLCRAKVxuJiM0MztcdCQoUSlta2RpciAtcCAkQFxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBQZXItcnVubmVyIHNvdXJjZXNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X3Byb2dzKVxuJiM0MztFWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYyBjZ3JvdXBfaGVscGVycy5jIHRyYWNlX2hlbHBlcnMuY1x0XHRcXFxuJiM0MztcdFx0IG5ldHdvcmtfaGVscGVycy5jIHRlc3RpbmdfaGVscGVycy5jIGJ0Zl9oZWxwZXJzLmNcdFxcXG4mIzQzO1x0XHQgY2FwX2hlbHBlcnMuYyB1bnByaXZfaGVscGVycy5jIHN5c2N0bF9oZWxwZXJzLmNcdFxcXG4mIzQzO1x0XHQgbmV0bGlua19oZWxwZXJzLmMgaml0X2Rpc2FzbV9oZWxwZXJzLmMgaW9faGVscGVycy5jXHRcXFxuJiM0MztcdFx0IHRlc3RfbG9hZGVyLmMgeHNrLmMgZGlzYXNtLmMgZGlzYXNtX2hlbHBlcnMuY1x0XHRcXFxuJiM0MztcdFx0IGpzb25fd3JpdGVyLmMgYnBmdG9vbF9oZWxwZXJzLmMgdXNkdF8xLmMgdXNkdF8yLmNcbiYjNDM7TElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuJiM0MztFWFRSQV9IRFJTIDo9IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XHRcXFxuJiM0MztcdCAgICAgICQoVkVSSUZZX1NJR19IRFIpICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXG4mIzQzO0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1x0XFxcbiYjNDM7XHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFxcXG4mIzQzO1x0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAgIGltYV9zZXR1cC5zaCAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXHRcdFx0XFxcbiYjNDM7XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7aWZlcSAoJChSVU5ORVIpLHRlc3RfbWFwcylcbiYjNDM7RVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuY1xuJiM0MztlbmRpZlxuJiM0MztcbiYjNDM7IyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluXG4mIzQzOyMgTWFrZWZpbGU6IGhlbHBlciBvYmplY3RzIHRoZSBtYWluIE1ha2VmaWxlIGFsc28gdXNlcyAoYW5kIGxpc3RzIGluIHRoZVxuJiM0MzsjIHJ1bm5lciBwcmVyZXF1aXNpdGVzKSBhcmUgYWxyZWFkeSBidWlsdCBhbmQgZnJlc2ggd2hlbiBhIHJ1bm5lciBzdGFydHMsXG4mIzQzOyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLiBUaGlzXG4mIzQzOyMgaG9sZHMgYmVjYXVzZSB0aGUgbWFpbiBNYWtlZmlsZSYjMzk7cyBoZWxwZXItb2JqZWN0IHJ1bGUgZGVwZW5kcyBvbiBhXG4mIzQzOyMgc3VwZXJzZXQgb2YgdGhlIHByZXJlcXVpc2l0ZXMgdGhlIEVYVFJBX09CSlMgcnVsZSB1c2VzIGhlcmUgLSBrZWVwXG4mIzQzOyMgdGhlIHR3byBsaXN0cyBpbiBzeW5jIChzZWUgdGhlIGludmFyaWFudCBjb21tZW50IHRoZXJlKS5cbiYjNDM7XG4mIzQzO1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaFxuJiM0MztcbiYjNDM7VEVTVF9TUkNTICA6PSAkKG5vdGRpciAkKHdpbGRjYXJkICQoVEVTVFNfRElSKS8qLmMpKVxuJiM0MztURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxuJiM0MztURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKVxuJiM0MztFWFRSQV9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5vLCQoZmlsdGVyICUuYywkKEVYVFJBX1NPVVJDRVMpKSlcbiYjNDM7TElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSlcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MztcbiYjNDM7aWZuZXEgKCQoQlBGX0NDKSwpXG4mIzQzO1xuJiM0MztCUEZfU1JDUyA6PSAkKG5vdGRpciAkKHdpbGRjYXJkIHByb2dzLyouYykpXG4mIzQzO0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5icGYubywkKEJQRl9TUkNTKSlcbiYjNDM7XG4mIzQzOyMgQlBGIG9iamVjdHMgdGhhdCBjYW5ub3QgaGF2ZSBhIHJlZ3VsYXIgc2tlbGV0b24uXG4mIzQzO1NLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcbiYjNDM7XG4mIzQzO0xTS0VMUyA6PSBmZXhpdF9zbGVlcC5jIHRyYWNlX3ByaW50ay5jIHRyYWNlX3ZwcmludGsuYyBtYXBfcHRyX2tlcm4uYyBcdFxcXG4mIzQzO1x0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuJiM0MztcdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuJiM0MztcdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xuJiM0MztcbiYjNDM7TFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbiYjNDM7XG4mIzQzOyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuJiM0MztMU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuJiM0MztcdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmNcbiYjNDM7U0tFTF9CTEFDS0xJU1QgJiM0Mzs9ICQoTFNLRUxTKSAkKExTS0VMU19TSUdORUQpXG4mIzQzO1xuJiM0MzsjIFNrZWxldG9ucyBtYWRlIGJ5IGxpbmtpbmcgbXVsdGlwbGUgQlBGIG9iamVjdHMgdG9nZXRoZXIuIFRoZSAlLWRlcHNcbiYjNDM7IyBtYXBwaW5nIGlzIHRoZSBvbmx5IGhhbmQtbWFpbnRhaW5lZCBtZXRhZGF0YTogaXQgY2Fubm90IGJlIGRlcml2ZWQgZnJvbVxuJiM0MzsjIHRoZSBzb3VyY2VzLlxuJiM0Mzt0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4mIzQzO2xpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cbiYjNDM7bGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuJiM0MztsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4mIzQzOyMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXG4mIzQzOyMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbiYjNDM7dGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYub1xuJiM0Mzt0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cbiYjNDM7dGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuJiM0Mzt0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO1xuJiM0MztMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4mIzQzO1x0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oXHRcdFx0XFxcbiYjNDM7XHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbiYjNDM7XHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oXHRcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuJiM0MztcdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuJiM0MztMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKSlcbiYjNDM7XG4mIzQzO1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXHRcdFx0XHRcXFxuJiM0MztcdCAgICQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksJChCUEZfU1JDUykpKVxuJiM0MztMU0tFTFNfSCAgICAgICAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmxza2VsLmgsJChMU0tFTFMpICQoTFNLRUxTX0VYVFJBKSlcbiYjNDM7TFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTX1NJR05FRCkpXG4mIzQzO0xJTktFRF9TS0VMU19IICA6PSAkKGFkZHByZWZpeCAkKFJESVIpLywkKExJTktFRF9TS0VMUykpXG4mIzQzO0FMTF9TS0VMUyA6PSAkKFNLRUxTKSAkKExTS0VMU19IKSAkKExTS0VMU19TSUdORURfSCkgJChMSU5LRURfU0tFTFNfSClcbiYjNDM7XG4mIzQzO0hFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXHRcdFx0XFxcbiYjNDM7XHRcdFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXHRcXFxuJiM0MztcdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdGJwZl9lbmRpYW4uaFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdGJwZl90cmFjaW5nLmgpXG4mIzQzO1xuJiM0MzsjIFBlci1zb3VyY2UgQlBGIGNvbXBpbGF0aW9uIGZsYWcgb3ZlcnJpZGVzICgkXHUwMDNjLUNGTEFHUyAvICRcdTAwM2MtJChGTEFWT1IpLUNGTEFHUykuXG4mIzQzOyMgR0NDIGNhbm5vdCBkaXNhYmxlIFwmIzM0O2RlY2xhcmF0aW9uIG9mIGFub255bW91cyBzdHJ1Y3QgaW4gcGFyYW1ldGVyIGxpc3RcJiMzNDtcbiYjNDM7IyB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlc2UgKHRlY2huaWNhbGx5IGxlZ2FsKSB0ZXN0IHByb2dyYW1zLlxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7XG4mIzQzOyQoQlBGX09CSlMpOiAkKFJESVIpLyUuYnBmLm86IHByb2dzLyUuYyBwcm9ncy8qLmhcdFx0XHRcXFxuJiM0MztcdCAgICAgJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoSEVBREVSU19GT1JfQlBGX09CSlMpXHRcdFxcXG4mIzQzO1x0ICAgICB8ICQoUkRJUikgJChCUEZPQkopXG4mIzQzO1x0JChjYWxsIG1zZywkKEJQRl9DQ19NU0cpLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChCUEZfQ0MpICQoQlBGX0NGTEFHUykgJChCUEZfU1lTX0lOQ0xVREVTKSAkKEJQRl9ERUZJTkVTKVx0XFxcbiYjNDM7XHRcdCQoJFx1MDAzYy1DRkxBR1MpICQoJFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKVx0XHRcdFxcXG4mIzQzO1x0XHQkKEJQRl9DQ19GTEFHUykgLWMgJFx1MDAzYyAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJQRilcbiYjNDM7XG4mIzQzOyMgZ2VuX2JwZl9za2VsLnNoIHBpY2tzIHRoZSBicGZ0b29sIGJpbmFyeSB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiYjNDM7ZXhwb3J0IEJQRlRPT0xcbiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbiYjNDM7XG4mIzQzOyQoU0tFTFMpOiAkKFJESVIpLyUuc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbiYjNDM7XHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcdTAwM2NcdFx0XFxcbiYjNDM7XHRcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcbiYjNDM7XG4mIzQzOyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKSQoR0VOX1NLRUwpIC0tbmFtZSAkKl9sc2tlbCAtLWxza2VsXHRcdFx0XHRcXFxuJiM0MztcdFx0LS1za2VsICRAICRcdTAwM2MgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKVxuJiM0MztcbiYjNDM7JChMU0tFTFNfU0lHTkVEX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTClcdFxcXG4mIzQzO1x0XHQgICAgJChHRU5fU0tFTCkgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVCkgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSkgKHNpZ25lZCksJEApXG4mIzQzO1x0JChRKVBSSVZBVEVfS0VZPSQoUFJJVkFURV9LRVkpXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRWRVJJRklDQVRJT05fQ0VSVD0kKFZFUklGSUNBVElPTl9DRVJUKVx0XHRcdFxcXG4mIzQzO1x0XHQkKEdFTl9TS0VMKSAtLXNpZ24gLS1uYW1lICQqX2xza2VsXHRcdFx0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbiYjNDM7XG4mIzQzOy5TRUNPTkRFWFBBTlNJT046XG4mIzQzOyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcbiYjNDM7XHRcdCAgICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxMSU5LLUJQRiwkKEJJTkFSWSksJChAOi5za2VsLmg9LmJwZi5vKSlcbiYjNDM7XHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpXHRcdFxcXG4mIzQzO1x0XHQkKGFkZHByZWZpeCAkKFJESVIpLywkKCQqLnNrZWwuaC1kZXBzKSlcdFx0XHRcXFxuJiM0MztcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuJiM0MztcbiYjNDM7ZW5kaWYgIyBCUEZfQ0NcbiYjNDM7XG4mIzQzOy5QSE9OWTogc2tlbHNcbiYjNDM7c2tlbHM6ICQoQUxMX1NLRUxTKVxuJiM0MztcbiYjNDM7IyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90IGZ1bGxcbiYjNDM7IyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS5cbiYjNDM7IyBUaGUgdnBhdGggZGlyZWN0aXZlcyBpbnN0cnVjdCBtYWtlIHRvIGFsc28gc2VhcmNoIGZvciBza2VsIGZpbGVzIGluXG4mIzQzOyMgJChSRElSKSBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4mIzQzO3ZwYXRoICUuc2tlbC5oICQoUkRJUilcbiYjNDM7dnBhdGggJS5sc2tlbC5oICQoUkRJUilcbiYjNDM7dnBhdGggJS5zdWJza2VsLmggJChSRElSKVxuJiM0MztcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7IyBUZXN0IG9iamVjdHMgYW5kIHJ1bm5lciBiaW5hcnlcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vXG4mIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuJiM0MztcbiYjNDM7IyBDb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlcy5cbiYjNDM7IyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0c1xuJiM0MzsjIGFyZSBmb3VuZC4gVGhlICUudGVzdC5kIGRlcGVuZGVuY3kgZmlsZXMgYXJlIGEgc2lkZSBlZmZlY3Qgb2YgdGhlIC1NTURcbiYjNDM7IyBiZWxvdzsgdGhlIHNlcGFyYXRlIG5vLXJlY2lwZSBydWxlIGZvciB0aGVtIG9yZGVycyB0aGUgZmlyc3RcbiYjNDM7IyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3RcbiYjNDM7IyBjb21waWxhdGlvbiB3aGVuIGhlYWRlcnMgY2hhbmdlLlxuJiM0MzskKFRFU1RfT0JKUyk6ICQoUkRJUikvJS50ZXN0Lm86ICQoVEVTVFNfRElSKS8lLmMgfCAkKFJESVIpLyUudGVzdC5kXG4mIzQzO1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKShjZCAkKEBEKSBcdTAwMjZcdTAwMjYgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJFx1MDAzYyAtbyAkKEBGKSkgXFxcbiYjNDM7XHRcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKVxuJiM0MztcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoQklOQVJZKV1cJiMzNDsgXCYjMzQ7JChub3RkaXIgJEApXCYjMzQ7KTsgXFxcbiYjNDM7XHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7XHRcXFxuJiM0MztcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbiYjNDM7XHRcdGZpKVxuJiM0MztcbiYjNDM7JChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXG4mIzQzO1x0ICAgICAgfCAkKFJESVIpICQoQUxMX1NLRUxTKVxuJiM0MztcbiYjNDM7aW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcbiYjNDM7XG4mIzQzOyQoUkRJUikvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyAmIzQzOz0gJChMTFZNX0NGTEFHUylcbiYjNDM7XG4mIzQzOyQoRVhUUkFfT0JKUyk6ICQoUkRJUikvJS5vOiAlLmMgJChFWFRSQV9IRFJTKSAkKFRFU1RTX0hEUikgJChCUEZPQkopIHwgJChSRElSKVxuJiM0MztcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAXG4mIzQzO1xuJiM0MzskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpXG4mIzQzO1x0JChjYWxsIG1zZyxMSUItT0JKLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcdTAwM2MgLW8gJEBcbiYjNDM7XG4mIzQzOyMgTm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXJcbiYjNDM7IyB3ZSBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpLlxuJiM0MzsuUEhPTlk6IGV4dHJhc1xuJiM0MztleHRyYXM6ICQoaWYgJChQRVJNSVNTSVZFKSwkKHdpbGRjYXJkICQoRVhUUkFfRklMRVMpKSwkKEVYVFJBX0ZJTEVTKSkgfCAkKFJESVIpXG4mIzQzO2lmbmVxICgkKEZMQVZPUik6JChPVVRQVVQpLDokKENVUkRJUikpXG4mIzQzO2lmbmVxICgkKHN0cmlwICQoRVhUUkFfRklMRVMpKSwpXG4mIzQzO1x0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChub3RkaXIgJChFWFRSQV9GSUxFUykpKVxuJiM0MztcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cbiYjNDM7ZW5kaWZcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxuJiM0MzsjICh0aGVpciBjb21waWxhdGlvbiBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpOiB0aGUgb2JqZWN0cyBleGlzdGluZyBhdFxuJiM0MzsjIHBhcnNlIHRpbWUgYXJlIG5vcm1hbCBwcmVyZXF1aXNpdGVzIC0gc28gZWRpdGluZyBhIHRlc3Qgc291cmNlIHN0aWxsXG4mIzQzOyMgcmVsaW5rcyB0aGUgcnVubmVyIC0gd2hpbGUgdGhlIGZ1bGwgc2V0IHN0YXlzIG9yZGVyLW9ubHkgdG8gZHJpdmUgdGhlXG4mIzQzOyMgYnVpbGQgYXR0ZW1wdHMsIGFuZCB0aGUgd2lsZGNhcmQgaW4gdGhlIHJlY2lwZSBwaWNrcyB1cCB0aGUgc3Vydml2b3JzXG4mIzQzOyMgYXQgbGluayB0aW1lLlxuJiM0MzsjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcbiYjNDM7IyBsaWJicGYsIGxpYiBvYmplY3RzKS5cbiYjNDM7JChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFxcXG4mIzQzO1x0XHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXHRcdFxcXG4mIzQzO1x0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKSAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XFxcbiYjNDM7XHRcdCAgICAgfCBleHRyYXMgJChCUEZfT0JKUylcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4mIzQzO1x0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUylcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKVx0XFxcbiYjNDM7XHRcdFx0JChmaWx0ZXItb3V0ICQoVEVTVF9PQkpTKSwkKGZpbHRlciAlLmEgJS5vLCReKSksXFxcbiYjNDM7XHRcdFx0JChmaWx0ZXIgJS5hICUubywkXikpXHRcdFx0XHRcXFxuJiM0MztcdFx0JChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRAXG4mIzQzO1x0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4mIzQzO1x0XHQgICAkKFJESVIpL2JwZnRvb2xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lMjM0ZjNhNTdkNDZiZlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxuQEAgLTAsMCAmIzQzOzEsOTMgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcJiMzNDticGZ0b29sIGdlbiBvYmplY3RcJiMzNDsgYW5kIGdlbmVyYXRlIGFcbiYjNDM7IyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4mIzQzOyNcbiYjNDM7IyBVc2FnZTpcbiYjNDM7IyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4mIzQzOyNcbiYjNDM7IyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcJiMzNDtuYW1lIE5BTUVcJiMzNDsgZm9yIGJwZnRvb2wpXG4mIzQzOyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcJiMzNDtmb28uc2tlbC5oXCYjMzQ7IG9yIFwmIzM0O2Zvby5sc2tlbC5oXCYjMzQ7KVxuJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVFxuJiM0MzsjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXG4mIzQzOyMgICAtLXNpZ24gICAgICAgICAgICBzaWduIHRoZSAobGlnaHQpIHNrZWxldG9uLCB3aXRoIHRoZSBrZXkgYW5kXG4mIzQzOyMgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSB0YWtlbiBmcm9tICRQUklWQVRFX0tFWSBhbmRcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgICRWRVJJRklDQVRJT05fQ0VSVFxuJiM0MzsjXG4mIzQzOyMgVGhlIGlucHV0cyBhcmUgbGlua2VkIHRocmVlIHRpbWVzIGFuZCB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0c1xuJiM0MzsjIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFwmIzM0O2JwZnRvb2wgZ2VuXG4mIzQzOyMgb2JqZWN0XCYjMzQ7LlxuJiM0MzsjXG4mIzQzOyMgSW50ZXJtZWRpYXRlIGZpbGVzIGNhcnJ5IGEgXCYjMzQ7bGlua2VkXCYjMzQ7IGluZml4IC0gXCYjMzQ7bGxpbmtlZFwmIzM0OyBmb3IgbGlnaHQgb3JcbiYjNDM7IyBzaWduZWQgc2tlbGV0b25zLCBzbyBnZW5lcmF0aW5nIGEgLnNrZWwuaCBhbmQgYSAubHNrZWwuaCBmcm9tIHRoZVxuJiM0MzsjIHNhbWUgLmJwZi5vIGluIHBhcmFsbGVsIG5ldmVyIHJhY2VzIG9uIHRoZSBpbnRlcm1lZGlhdGVzLlxuJiM0MzsjXG4mIzQzOyMgVGhlIGJwZnRvb2wgYmluYXJ5IGlzIHRha2VuIGZyb20gJEJQRlRPT0wgKGRlZmF1bHQ6IGJwZnRvb2wgZnJvbSBQQVRIKS5cbiYjNDM7IyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0XG4mIzQzOyMgZXhpdHMgbm9uLXplcm87IHBlcm1pc3NpdmUtbW9kZSBza2lwcGluZyBpcyB0aGUgY2FsbGVyJiMzOTtzIGJ1c2luZXNzXG4mIzQzOyMgKHNlZSBza2lwX29uX2ZhaWwgaW4gTWFrZWZpbGUuYnVpbGR2YXJzKS5cbiYjNDM7XG4mIzQzO3NldCAtdVxuJiM0MztcbiYjNDM7YnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9XG4mIzQzO25hbWU9JiMzOTsmIzM5OyBza2VsPSYjMzk7JiMzOTsgc3Vic2tlbD0mIzM5OyYjMzk7XG4mIzQzO2xza2VsPTAgc2lnbj0wXG4mIzQzO1xuJiM0Mzt3aGlsZSBbICQjIC1ndCAwIF07IGRvXG4mIzQzO1x0Y2FzZSBcJiMzNDskMVwmIzM0OyBpblxuJiM0MztcdC0tbmFtZSlcdFx0bmFtZT0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tc2tlbClcdFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tc3Vic2tlbClcdHN1YnNrZWw9JDI7IHNoaWZ0IDIgOztcbiYjNDM7XHQtLWxza2VsKVx0bHNrZWw9MTsgc2hpZnQgOztcbiYjNDM7XHQtLXNpZ24pXHRcdHNpZ249MTsgc2hpZnQgOztcbiYjNDM7XHQtLSlcdFx0c2hpZnQ7IGJyZWFrIDs7XG4mIzQzO1x0LSopXHRcdGVjaG8gXCYjMzQ7JDA6IHVua25vd24gb3B0aW9uOiAkMVwmIzM0OyBcdTAwM2VcdTAwMjYyOyBleGl0IDEgOztcbiYjNDM7XHQqKVx0XHRicmVhayA7O1xuJiM0MztcdGVzYWNcbiYjNDM7ZG9uZVxuJiM0MztcbiYjNDM7aWYgWyAteiBcJiMzNDskbmFtZVwmIzM0OyBdIHx8IFsgLXogXCYjMzQ7JHNrZWxcJiMzNDsgXSB8fCBbICQjIC1lcSAwIF07IHRoZW5cbiYjNDM7XHRlY2hvIFwmIzM0O3VzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cJiMzNDsgXHUwMDNlXHUwMDI2MlxuJiM0MztcdGV4aXQgMVxuJiM0MztmaVxuJiM0MztcbiYjNDM7aW5maXg9bGlua2VkXG4mIzQzO2lmIFsgXCYjMzQ7JGxza2VsXCYjMzQ7IC1lcSAxIF0gfHwgWyBcJiMzNDskc2lnblwmIzM0OyAtZXEgMSBdOyB0aGVuXG4mIzQzO1x0aW5maXg9bGxpbmtlZFxuJiM0MztmaVxuJiM0MztcbiYjNDM7YmFzZT0ke3NrZWwlLnNrZWwuaH1cbiYjNDM7YmFzZT0ke2Jhc2UlLmxza2VsLmh9XG4mIzQzO3QxPSRiYXNlLiR7aW5maXh9MS5vXG4mIzQzO3QyPSRiYXNlLiR7aW5maXh9Mi5vXG4mIzQzO3QzPSRiYXNlLiR7aW5maXh9My5vXG4mIzQzO1xuJiM0MztmYWlsKCkge1xuJiM0MztcdHJtIC1mIFwmIzM0OyRza2VsXCYjMzQ7ICR7c3Vic2tlbDomIzQzO1wmIzM0OyRzdWJza2VsXCYjMzQ7fSBcJiMzNDskdDFcJiMzNDsgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0M1wmIzM0O1xuJiM0MztcdGV4aXQgMVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gb2JqZWN0IFwmIzM0OyR0MVwmIzM0OyBcJiMzNDskQFwmIzM0OyB8fCBmYWlsXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0MVwmIzM0OyB8fCBmYWlsXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQzXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyB8fCBmYWlsXG4mIzQzO2lmICEgY21wIC1zIFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDNcJiMzNDs7IHRoZW5cbiYjNDM7XHRlY2hvIFwmIzM0OyQwOiBicGZ0b29sIGdlbiBvYmplY3QgaXMgbm90IGRldGVybWluaXN0aWMgZm9yICRza2VsXCYjMzQ7IFx1MDAzZVx1MDAyNjJcbiYjNDM7XHRmYWlsXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MzthcmdzPSgpXG4mIzQzO2lmIFsgXCYjMzQ7JHNpZ25cJiMzNDsgLWVxIDEgXTsgdGhlblxuJiM0MztcdGFyZ3MmIzQzOz0oLVMgLWsgXCYjMzQ7JHtQUklWQVRFX0tFWTo/fVwmIzM0OyAtaSBcJiMzNDske1ZFUklGSUNBVElPTl9DRVJUOj99XCYjMzQ7KVxuJiM0MztmaVxuJiM0MztpZiBbIFwmIzM0OyRsc2tlbFwmIzM0OyAtZXEgMSBdOyB0aGVuXG4mIzQzO1x0YXJncyYjNDM7PSgtTClcbiYjNDM7ZmlcbiYjNDM7XCYjMzQ7JGJwZnRvb2xcJiMzNDsgZ2VuIHNrZWxldG9uICR7YXJnc1tAXSYjNDM7XCYjMzQ7JHthcmdzW0BdfVwmIzM0O30gXCYjMzQ7JHQzXCYjMzQ7IG5hbWUgXCYjMzQ7JG5hbWVcJiMzNDsgXHUwMDNlIFwmIzM0OyRza2VsXCYjMzQ7IHx8IGZhaWxcbiYjNDM7XG4mIzQzO2lmIFsgLW4gXCYjMzQ7JHN1YnNrZWxcJiMzNDsgXTsgdGhlblxuJiM0MztcdFwmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBzdWJza2VsZXRvbiBcJiMzNDskdDNcJiMzNDsgbmFtZSBcJiMzNDskbmFtZVwmIzM0OyBcdTAwM2UgXCYjMzQ7JHN1YnNrZWxcJiMzNDsgfHwgZmFpbFxuJiM0MztmaVxuJiM0MztcbiYjNDM7cm0gLWYgXCYjMzQ7JHQxXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDNcJiMzNDtcbiYjNDM7ZXhpdCAwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDg6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzNkMzEzZjJjYjE3YzYxYzhlNmRkNjM5MjQxMWNjZjRlYTMyZGJmZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDA4OjM4OjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCmluZGV4IDU1ZDM5NDQzODcwNWE2Li4wOWNmZjY5M2I3ZDc4MiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZQpAQCAtMSw5NiAmIzQzOzEsMzIgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBFdmVyeXRoaW5nIHRoYXQgZXhpc3RzIG9uY2UgbGl2ZXMgaGVyZTogdG9vbGNoYWluIHNldHVwLCB0b29sCiYjNDM7IyBzdWItYnVpbGRzLCB2bWxpbnV4LmgsIHNoYXJlZCBoZWxwZXIgb2JqZWN0cywgc3RhbmRhbG9uZSBiaW5hcmllcyBhbmQKJiM0MzsjIHRoZSBsaWIubWsgY29udHJhY3QuIEVhY2ggdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MgYW5kIGl0cwomIzQzOyMgZmxhdm9ycywgdGVzdF9tYXBzKSBpcyBidWlsdCBieSBpdHMgb3duIE1ha2VmaWxlLnJ1bm5lciBzdWItbWFrZTsKJiM0MzsjIHNoYXJlZCBkZWZpbml0aW9ucyBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy4KJiM0MzsKIGluY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZQogaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2gKIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlCiAKLUNYWCA/PSAkKENST1NTX0NPTVBJTEUpZyYjNDM7JiM0MzsKLU9CSkNPUFkgPz0gJChDUk9TU19DT01QSUxFKW9iamNvcHkKLQotQ1VSRElSIDo9ICQoYWJzcGF0aCAuKQotVE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKQotTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYgotQlBGRElSIDo9ICQoTElCRElSKS9icGYKLVRPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGUKLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZQotQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbAotQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGkKLWlmbmVxICgkKE8pLCkKLUdFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkCi1lbHNlCi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKQotZW5kaWYKLUdFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaAotUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZwogCi1pZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLCkKLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUgomIzQzOyMgTmVlZGVkIGJlZm9yZSBsaWIubWsgaXMgaW5jbHVkZWQgKGdhdGVzIHRoZSBmbGF2b3IgbGlzdCBiZWxvdyksIHdoaWNoCiYjNDM7IyBpcyBhbHNvIHdoeSBpdCBjYW5ub3QgbGl2ZSBpbiBNYWtlZmlsZS5idWlsZHZhcnMuCiYjNDM7aWZlcSAoJChvcmlnaW4gQlBGX0dDQyksdW5kZWZpbmVkKQomIzQzO0JQRl9HQ0MgOj0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KQogZW5kaWYKIAotQlBGX0dDQwkJPz0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KQotaWZkZWYgQVNBTgotU0FOX0NGTEFHUyAJPz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCi1lbHNlCi1TQU5fQ0ZMQUdTCT89Ci1lbmRpZgotU0FOX0xERkxBR1MJPz0gJChTQU5fQ0ZMQUdTKQotUkVMRUFTRQkJPz0KLU9QVF9GTEFHUwk/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMCkKLQotTElCRUxGX0NGTEFHUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDImZ3Q7L2Rldi9udWxsKQotTElCRUxGX0xJQlMJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMiZndDsvZGV2L251bGwgfHwgZWNobyAtbGVsZikKLQogU0tJUF9ET0NTCT89CiBTS0lQX0xMVk0JPz0KIFNLSVBfTElCQkZECT89CiBTS0lQX0NSWVBUTwk/PQogCi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvcgotIyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXMKLSMgYW5kIGNvbnRpbnVlIGJ1aWxkaW5nIHRoZSByZW1haW5pbmcgdGVzdHMuCi1CUEZfU1RSSUNUX0JVSUxEID89IDEKLVBFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKQotCi1pZmVxICgkKHNyY3RyZWUpLCkKLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoQ1VSRElSKSkpCi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSkKLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQotc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCi1lbmRpZgogCi1DT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExCQkJCVwKLQkgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIJCQkJXAotCSAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZQkJCQkJXAotCSAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpCQkJXAotCSAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKQkJXAotCSAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKQlcCi0JICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlCi1MREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKQotTERMSUJTICYjNDM7PSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWQKLQotUENBUF9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMiZndDsvZGV2L251bGwgJmFtcDsmYW1wOyBlY2hvICYjMzQ7LURUUkFGRklDX01PTklUT1I9MSYjMzQ7KQotUENBUF9MSUJTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyJmd0Oy9kZXYvbnVsbCkKLUxETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpCi1DRkxBR1MgJiM0Mzs9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUykKLQotIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllcwotaml0X2Rpc2FzbV9oZWxwZXJzLmMtQ0ZMQUdTID0gJChMTFZNX0NGTEFHUykKLQotaWZuZXEgKCQoTExWTSksKQotIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nCi1DRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAotZW5kaWYKLQotIyBDaGVjayB3aGV0aGVyIGJwZiBjcHU9djQgaXMgc3VwcG9ydGVkIG9yIG5vdCBieSBjbGFuZwogaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMiZndDsmYW1wOzEgfCBncmVwICYjMzk7djQmIzM5OyksKQogQ0xBTkdfQ1BVVjQgOj0gMQogZW5kaWYKIAotIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KQotQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICYjMzk7aW50IHg7JiMzOTsgfCBcCi0JJChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXAotCS1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFwKLQkteCBjIC1jIC0gLW8gL2Rldi9udWxsIDImZ3Q7L2Rldi9udWxsICZhbXA7JmFtcDsgZWNobyAxKQotCiAjIE9yZGVyIGNvcnJlc3BvbmQgdG8gJiMzOTttYWtlIHJ1bl90ZXN0cyYjMzk7IG9yZGVyCiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFwKIAl0ZXN0X3NvY2ttYXAgXApAQCAtMTAyLDE2ICYjNDM7MzgsNiBAQCBURVNUX0lOU1RfU1VCRElSUyA6PSBub19hbHUzMgogaWZuZXEgKCQoQlBGX0dDQyksKQogVEVTVF9HRU5fUFJPR1MgJiM0Mzs9IHRlc3RfcHJvZ3MtYnBmX2djYwogVEVTVF9JTlNUX1NVQkRJUlMgJiM0Mzs9IGJwZl9nY2MKLQotIyBUaGUgZm9sbG93aW5nIHRlc3RzIGNvbnRhaW4gQyBjb2RlIHRoYXQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGxlZ2FsLAotIyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mCi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotCiBlbmRpZgogCiBpZm5lcSAoJChDTEFOR19DUFVWNCksKQpAQCAtMjEzLDIxICYjNDM7MTM5LDggQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpCiBlbmRpZgogZW5kaWYKIAotU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzCi1CVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGQKLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGUKLUJQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCi1IT1NUX0JVSUxEX0RJUgkJOj0gJChCVUlMRF9ESVIpL2hvc3QKLUhPU1RfU0NSQVRDSF9ESVIJOj0gJChPVVRQVVQpL2hvc3QtdG9vbHMKLUhPU1RfSU5DTFVERV9ESVIJOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlCi1lbHNlCi1IT1NUX0JVSUxEX0RJUgkJOj0gJChCVUlMRF9ESVIpCi1IT1NUX1NDUkFUQ0hfRElSCTo9ICQoU0NSQVRDSF9ESVIpCi1IT1NUX0lOQ0xVREVfRElSCTo9ICQoSU5DTFVERV9ESVIpCi1lbmRpZgotSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCi1SRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0ZmlkcwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzCiYjNDM7CiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KQkJCQlcCiAJCSAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eCkJXAogCQkgICAgIC4uLy4uLy4uLy4uL3ZtbGludXgJCQkJXApAQCAtMjQyLDcgJiM0MzsxNTUsNyBAQCBlbmRpZgogIyB0byBidWlsZCBpbmRpdmlkdWFsIHRlc3RzLgogIyBOT1RFOiBTZW1pY29sb24gYXQgdGhlIGVuZCBpcyBjcml0aWNhbCB0byBvdmVycmlkZSBsaWIubWsmIzM5O3MgZGVmYXVsdCBzdGF0aWMKICMgcnVsZSBmb3IgYmluYXJpZXMuCi0kKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpCQkJCVwKJiM0MzskKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRF9UQVJHRVRTKQkJCQlcCiAJICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpKTogJTogJChPVVRQVVQpLyUgOwogCiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZwpAQCAtMjU2LDExICYjNDM7MTY5LDE0IEBAICQoTUFLRV9ESVJTKToKIAogJChPVVRQVVQpLyUubzogJS5jCiAJJChjYWxsIG1zZyxDQywsJEApCi0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQAomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgLW8gJEAKIAomIzQzOyMgSGVhZGVycyBtYXkgYXBwZWFyIGFtb25nIHRoZSBwcmVyZXF1aXNpdGVzIGZvciBkZXBlbmRlbmN5IHRyYWNraW5nOwomIzQzOyMgdGhleSBtdXN0IG5vdCByZWFjaCB0aGUgY2xhbmcvZ2NjIGNvbW1hbmQgbGluZSAoY2xhbmcgdHJlYXRzIGEgYmFyZSAuaAomIzQzOyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS4KICQoT1VUUFVUKS8lOiUuYwogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKLQkkKFEpJChMSU5LLmMpICReICQoTERMSUJTKSAtbyAkQAomIzQzOwkkKFEpJChMSU5LLmMpICQoZmlsdGVyLW91dCAlLmgsJF4pICQoTERMSUJTKSAtbyAkQAogCiAjIExMVk0mIzM5O3MgbGQubGxkIGRvZXNuJiMzOTt0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODYKIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKQpAQCAtMzE0LDE2ICYjNDM7MjMwLDYgQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpCiAJJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbIC1mIHRlc3Rfa21vZHMvJChARikgXTsgdGhlbiApY3AgdGVzdF9rbW9kcy8kKEBGKSAkQCQoaWYgJChQRVJNSVNTSVZFKSw7IGZpKQogCiAKLURFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbAotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKLVRSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpCi1VU0VfQk9PVFNUUkFQIDo9ICYjMzQ7JiMzNDsKLWVsc2UKLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTCkKLVVTRV9CT09UU1RSQVAgOj0gJiMzNDtib290c3RyYXAvJiMzNDsKLWVuZGlmCi0KICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSikKIAogVEVTVElOR19IRUxQRVJTCTo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMubwpAQCAtMzQ0LDcgJiM0MzsyNTAsMzkgQEAgJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpCiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpCiAkKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKQogCi1CUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKQomIzQzOyMgQWxsIGhlbHBlciBvYmplY3RzIGEgcnVubmVyIGluc3RhbmNlIGxpbmtzLCBwcmUtYnVpbHQgaGVyZSBzbyBydW5uZXIKJiM0MzsjIHN1Yi1tYWtlcyBzaGFyaW5nICQoT1VUUFVUKSBuZXZlciBjb21waWxlIHRoZW0gY29uY3VycmVudGx5LgomIzQzO0hFTFBFUl9PQkpTIDo9ICQoVEVTVElOR19IRUxQRVJTKSAkKENHUk9VUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKQlcCiYjNDM7CSAgICAgICAkKFRSQUNFX0hFTFBFUlMpICQoSlNPTl9XUklURVIpICQoQ0FQX0hFTFBFUlMpCQlcCiYjNDM7CSAgICAgICAkKE5FVFdPUktfSEVMUEVSUykgJChPVVRQVVQpL3VzZHRfMS5vICQoT1VUUFVUKS91c2R0XzIubwlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkveHNrLm8KJiM0MzsKJiM0MzsjICQoQlBGVE9PTCkgaXMgYSBwcmVyZXF1aXNpdGUgYmVjYXVzZSBpdHMgc3ViLW1ha2UgaXMgd2hhdCBpbnN0YWxscwomIzQzOyMgbGliYnBmJiMzOTtzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50bwomIzQzOyMgJChJTkNMVURFX0RJUik7IHdpdGhvdXQgaXQsIGhlbHBlcnMgaW5jbHVkaW5nIHRob3NlIGhlYWRlcnMgcmFjZSB0aGUKJiM0MzsjIGluc3RhbGwgYW5kIGNhbiBzaWxlbnRseSBwaWNrIHVwIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC4KJiM0MzsjCiYjNDM7IyBJbnZhcmlhbnQ6IHRoaXMgbGlzdCBtdXN0IGJlIGEgc3VwZXJzZXQgb2YgZXZlcnkgcHJlcmVxdWlzaXRlIHRoZQomIzQzOyMgcnVubmVyJiMzOTtzIEVYVFJBX09CSlMgcnVsZSBhdHRhY2hlcyB0byB0aGVzZSBzYW1lIG9iamVjdHMgKEVYVFJBX0hEUlMsCiYjNDM7IyBib3RoIHRlc3RzLmggZmxhdm9ycywgJChCUEZPQkopKS4gSXQgZ3VhcmFudGVlcyB0aGUgaGVscGVycyBidWlsdAomIzQzOyMgaGVyZSBhcmUgbmV2ZXIgb2xkZXIgdGhhbiBhIHJ1bm5lci1zaWRlIHByZXJlcXVpc2l0ZSwgc28gdGhlCiYjNDM7IyB1bmZsYXZvcmVkIHRlc3RfcHJvZ3MgYW5kIHRlc3RfbWFwcyBzdWItbWFrZXMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSwKJiM0MzsjIHRyZWF0IHRoZW0gYXMgdXAgdG8gZGF0ZSBpbnN0ZWFkIG9mIGJvdGggcmVjb21waWxpbmcgdGhlIHNhbWUgb2JqZWN0CiYjNDM7IyBmaWxlIGNvbmN1cnJlbnRseS4KJiM0MzskKEhFTFBFUl9PQkpTKTogZmxvd19kaXNzZWN0b3JfbG9hZC5oIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oCQlcCiYjNDM7CQkkKFZFUklGWV9TSUdfSERSKSAkKExJQkFSRU5BX1NLRUwpICQoTElCQVJFTkFfQVNBTl9TS0VMKVwKJiM0MzsJCXByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaCAkKEJQRk9CSikgJChCUEZUT09MKQomIzQzOwomIzQzOyQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmgKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVG9vbCBzdWItYnVpbGRzOiBicGZ0b29sIGFuZCBsaWJicGYgKGhvc3QgYW5kLCB3aGVuIGNyb3NzLWNvbXBpbGluZywKJiM0MzsjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLgomIzQzOyMKJiM0MzsjIE5vdGUgdGhlIGRlbGliZXJhdGUgYXN5bW1ldHJ5OiB0aGUgaG9zdCBsaWJicGYgYnVpbGRzIHdpdGhvdXQKJiM0MzsjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLgomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXAogCQkgICAgJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9icGZ0b29sCiAJJChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUikJCQkgICAgICAgXApAQCAtNDEyLDcgJiM0MzszNTAsNyBAQCBlbmRpZgogCiAjIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0bwogIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2YKLSMgJChUUlVOTkVSX0JQRl9PQkpTKQomIzQzOyMgQlBGIG9iamVjdHMuCiAkKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKQogaWZlcSAoJChWTUxJTlVYX0gpLCkKIAkkKGNhbGwgbXNnLEdFTiwsJEApCkBAIC00MzcsMzc0ICYjNDM7Mzc1LDExIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzCVwKIAkJSE9TVFBLR19DT05GSUc9JiMzOTskKFBLR19DT05GSUcpJiMzOTsgXAogCQlPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKQogCi0jIEdldCBDbGFuZyYjMzk7cyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnkKLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyAmIzM0O21pc3NpbmcmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcywKLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLgotIwotIyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlCi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuCi1kZWZpbmUgZ2V0X3N5c19pbmNsdWRlcwotJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSAmbHQ7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIFwKLQl8IHNlZCAtbiAmIzM5Oy8mbHQ7Li4uJmd0OyBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFwoLy4qXCl8LWlkaXJhZnRlciBcMXxwIH0mIzM5OykgXAotJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWQmIzM0OywgJCQzLCAkJDMpfSYjMzk7KSBcCi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EX19CSVRTX1BFUl9MT05HPSVkJiMzNDssICQkMyl9JiMzOTspIFwKLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtICZsdDsvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LUQlcz0lcyAmIzM0OywgJCQyLCAkJDMpfSYjMzk7KQotZW5kZWYKLQotIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuCi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IFwKLQkJCWdyZXAgJiMzOTtkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18mIzM5OykKLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKQotQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYikKLQotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpCi1lbmRpZgotCi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSkKLUJQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTikJXAotCSAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKQkJCVwKLQkgICAgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUJCQkJXAotCSAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKQkJCVwKLQkgICAgIC1zdGQ9Z251MTEJCSAJCQkJCVwKLQkgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIAkJCQkJXAotCSAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWcJCQkJCVwKLQkgICAgIC1mbXMtZXh0ZW5zaW9ucwkJCQkJCVwKLQkgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzCQkJXAotCSAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXMJCQkJCVwKLQkgICAgICMKLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlCi0KLUNMQU5HX0NGTEFHUyA9ICQoQ0xBTkdfU1lTX0lOQ0xVREVTKQotCi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lCi0kKE9VVFBVVCkvdGVzdF94ZHBfbm9pbmxpbmUubzogQlBGX0NGTEFHUyAmIzQzOz0gLWZuby1pbmxpbmUKLQotJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQubzogZmxvd19kaXNzZWN0b3JfbG9hZC5oCi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaAotCi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgQ2xhbmcKLSMgJDEgLSBpbnB1dCAuYyBmaWxlCi0jICQyIC0gb3V0cHV0IC5vIGZpbGUKLSMgJDMgLSBDRkxBR1MKLSMgJDQgLSBiaW5hcnkgbmFtZQotZGVmaW5lIENMQU5HX0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYzIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggZGlzYWJsZWQgYWx1MzIKLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYyIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggY3B1LXY0Ci1kZWZpbmUgQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEUKLQkkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKQotCSQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxJmd0OyZhbXA7MikpCi1lbmRlZgotIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQwotZGVmaW5lIEdDQ19CUEZfQlVJTERfUlVMRQotCSQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMikKLQkkKFEpJChCUEZfR0NDKSAkMyAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkMSAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKLWVuZGVmCi0KLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmMKLQotTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaAkJXAotCQlsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIAkJCVwKLQkJdGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oCVwKLQkJdGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaAkJCVwKLQkJdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oCQkJCVwKLQkJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oCQkJCVwKLQkJdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaAotCi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgCVwKLQljb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuYwkJCVwKLQl0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXAotCXRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuYwotCi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuYwotCi0jIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2UKLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFwKLQlrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jCi1TS0VMX0JMQUNLTElTVCAmIzQzOz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKQotCi10ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vCi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vCi1saW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vCi1saW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vCi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZQotIyBidXQgdGhhdCYjMzk7cyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLgotdGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYubwotdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vCi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm8KLXhza194ZHBfcHJvZ3Muc2tlbC5oLWRlcHMgOj0geHNrX3hkcF9wcm9ncy5icGYubwoteGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYubwoteGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYubwotdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwotdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KLXRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KLQotTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpCi1MSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKExJTktFRF9CUEZfT0JKUykpCi0KLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpCQlcCi0JCQkkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSkJXAotCQkJJChhZGRwcmVmaXggJChCUEZESVIpLywJYnBmX2NvcmVfcmVhZC5oCVwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaAlcCi0JCQkJCQlicGZfaGVscGVycy5oCVwKLQkJCSAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpCi0KLSMgU2V0IHVwIGV4dHJhIFRSVU5ORVJfWFhYICYjMzQ7dGVtcG9yYXJ5JiMzNDsgdmFyaWFibGVzIGluIHRoZSBlbnZpcm9ubWVudCAocmVsaWVzIG9uCi0jICRldmFsKCkpIGFuZCBwYXNzIGNvbnRyb2wgdG8gREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLgotIyBQYXJhbWV0ZXJzOgotIyAkMSAtIHRlc3QgcnVubmVyIGJhc2UgYmluYXJ5IG5hbWUgKGUuZy4sIHRlc3RfcHJvZ3MpCi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgJiMzNDtmbGF2b3ImIzM0OyAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpCi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSCi0KLUxTS0VMX1NJR04gOj0gLVMgLWsgJChQUklWQVRFX0tFWSkgLWkgJChWRVJJRklDQVRJT05fQ0VSVCkKLVRSVU5ORVJfT1VUUFVUIDo9ICQoT1VUUFVUKSQoaWYgJDIsLykkMgotVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDIKLVRSVU5ORVJfVEVTVF9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm8sCVwKLQkJCQkgJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUU19ESVIpLyouYykpKQotVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLAkJXAotCQkJCSAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpCi1UUlVOTkVSX0xJQl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLAkJXAotCQkJCSAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9MSUJfU09VUkNFUykpKQotVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKQotVFJVTk5FUl9URVNUU19IRFIgOj0gJChUUlVOTkVSX1RFU1RTX0RJUikvdGVzdHMuaAotVFJVTk5FUl9CUEZfU1JDUyA6PSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouYykpCi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpCi1UUlVOTkVSX0JQRl9TS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuc2tlbC5oLAlcCi0JCQkJICQkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLFwKLQkJCQkJICAgICAgICQkKFRSVU5ORVJfQlBGX1NSQ1MpKSkKLVRSVU5ORVJfQlBGX0xTS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTKSAkJChMU0tFTFNfRVhUUkEpKQotVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSkKLVRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMU19TSUdORUQpKQotVEVTVF9HRU5fRklMRVMgJiM0Mzs9ICQkKFRSVU5ORVJfQlBGX09CSlMpCi0KLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZAotJCQoZXZhbCAkJChjYWxsIERFRklORV9URVNUX1JVTk5FUl9SVUxFUywkMSwkMikpCi0KLWVuZGVmCi0KLSMgVXNpbmcgVFJVTk5FUl9YWFggdmFyaWFibGVzLCBwcm92aWRlZCBieSBjYWxsZXJzIG9mIERFRklORV9URVNUX1JVTk5FUiBhbmQKLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOgotIyAkMSAtIHRlc3QgcnVubmVyIGJhc2UgYmluYXJ5IG5hbWUgKGUuZy4sIHRlc3RfcHJvZ3MpCi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgJiMzNDtmbGF2b3ImIzM0OyAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpCi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTCi0KLSMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHkKLSMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZCBpdHMgZmxhdm9yczsgcnVubmVycyB0aGF0IHVzZSBzdHJvbmcgY3Jvc3Mtb2JqZWN0Ci0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuCi0jIFRoZSBjaGVjayBpcyBpbmxpbmVkIHBlci1ydW5uZXIgc28gJDEgaXMgc3Vic3RpdHV0ZWQgYXQgJChjYWxsKSB0aW1lIGFuZAotIyB0aGUgcmVzdWx0IGlzIGJha2VkIGludG8gZWFjaCBydWxlJiMzOTtzIHJlY2lwZS4KLQotaWZlcSAoJCgkKFRSVU5ORVJfT1VUUFVUKS1kaXIpLCkKLSQoVFJVTk5FUl9PVVRQVVQpLWRpciA6PSB5Ci0kKFRSVU5ORVJfT1VUUFVUKToKLQkkJChjYWxsIG1zZyxNS0RJUiwsJCRAKQotCSQoUSlta2RpciAtcCAkJEAKLWVuZGlmCi0KLSMgZW5zdXJlIHdlIHNldCB1cCBCUEYgb2JqZWN0cyBnZW5lcmF0aW9uIHJ1bGUganVzdCBvbmNlIGZvciBhIGdpdmVuCi0jIGlucHV0L291dHB1dCBkaXJlY3RvcnkgY29tYmluYXRpb24KLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLCkKLSQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKSQoaWYgJDIsLSkkMi1icGZvYmpzIDo9IHkKLSQoVFJVTk5FUl9CUEZfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm86CQkJCVwKLQkJICAgICAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvJS5jCQkJXAotCQkgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmgJCQlcCi0JCSAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaAkJCQlcCi0JCSAgICAgJChIRUFERVJTX0ZPUl9CUEZfT0JKUykJCQkJXAotCQkgICAgIHwgJChUUlVOTkVSX09VVFBVVCkgJCQoQlBGT0JKKQotCSQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJCZsdDssJCRALAkJCVwKLQkJCQkJICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcCi0JCQkJCSAgJCQoJCQmbHQ7LUNGTEFHUykJCVwKLQkJCQkJICAkJCgkJCZsdDstJDItQ0ZMQUdTKSwkKFRSVU5ORVJfQklOQVJZKSkKLQotJChUUlVOTkVSX0JQRl9TS0VMUyk6ICUuc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKQotCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkJmx0OyBdOyB0aGVuCQkJXAotCQkkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsJCQlcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JCWV4aXQgMDsJCQkJCQkJXAotCWZpOykJCQkJCQkJCVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxpbmtlZDEubykgJCQmbHQ7ICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGlua2VkMS5vKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxpbmtlZDMubykgJCQoJmx0Ozoubz0ubGlua2VkMi5vKSAmYW1wOyZhbXA7IFwKLQlkaWZmICQkKCZsdDs6Lm89LmxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGlua2VkMy5vKSAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQkKCZsdDs6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoJmx0OzouYnBmLm89KSkgJmd0OyAkJEAgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKCZsdDs6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoJmx0OzouYnBmLm89KSkgJmd0OyAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXAotCQkkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsgXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCX0pICZhbXA7JmFtcDsgXAotCXJtIC1mICQkKCZsdDs6Lm89LmxpbmtlZDEubykgJCQoJmx0Ozoubz0ubGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pCi0KLSQoVFJVTk5FUl9CUEZfTFNLRUxTKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKQotCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkJmx0OyBdOyB0aGVuCQkJXAotCQkkJChSTSkgJCRAOwkJCQkJCVwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkJZXhpdCAwOwkJCQkJCQlcCi0JZmk7KQkJCQkJCQkJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJCQmbHQ7ICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJmFtcDsmYW1wOyBcCi0JZGlmZiAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKCZsdDs6LmJwZi5vPV9sc2tlbCkpICZndDsgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFwKLQkJJCQoUk0pICQkQDsgXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCX0pICZhbXA7JmFtcDsgXAotCXJtIC1mICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pCi0KLSQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCk6ICUubHNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJCZsdDsgXTsgdGhlbgkJCVwKLQkJJCQoUk0pICQkQDsJCQkJCQlcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JCWV4aXQgMDsJCQkJCQkJXAotCWZpOykJCQkJCQkJCVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSkgKHNpZ25lZCldICQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICQkJmx0OyAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICZhbXA7JmFtcDsgXAotCWRpZmYgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkKExTS0VMX1NJR04pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKCZsdDs6LmJwZi5vPV9sc2tlbCkpICZndDsgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFwKLQkJJCQoUk0pICQkQDsgXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCX0pICZhbXA7JmFtcDsgXAotCXJtIC1mICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pCi0KLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJQotCi0jIC5TRUNPTkRFWFBBTlNJT04gaGVyZSBhbGxvd3MgdG8gY29ycmVjdGx5IGV4cGFuZCAlLWRlcHMgdmFyaWFibGVzIGFzIHByZXJlcXVpc2l0ZXMKLS5TRUNPTkRFWFBBTlNJT046Ci0kKFRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRCk6ICQoVFJVTk5FUl9PVVRQVVQpLyU6ICQkJCQoJS1kZXBzKSAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXAotCQlpZiBbICEgLWYgJCQkJGYgXTsgdGhlbgkJCQkJCVwKLQkJCSQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOwkJXAotCQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkJCWV4aXQgMDsJCQkJCQkJXAotCQlmaTsJCQkJCQkJCVwKLQlkb25lOykJCQkJCQkJCQlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAmYW1wOyZhbXA7IFwKLQlkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgJmFtcDsmYW1wOwlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpICZndDsgJCRAICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpICZndDsgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFwKLQkJJCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7CQkJXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCX0pICZhbXA7JmFtcDsJCQkJCQkJCQlcCi0Jcm0gLWYgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykKLQotIyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90Ci0jIGZ1bGwgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgY29ycmVzcG9uZGluZyAlLm8KLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlcwotIyBpbiBUUlVOTkVSX09VVFBVVCwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgotdnBhdGggJS5za2VsLmggJChUUlVOTkVSX09VVFBVVCkKLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKQotdnBhdGggJS5zdWJza2VsLmggJChUUlVOTkVSX09VVFBVVCkKLQotZW5kaWYKLQotIyBlbnN1cmUgd2Ugc2V0IHVwIHRlc3RzLmggaGVhZGVyIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UKLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpCi0kKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIgOj0geQotJChUUlVOTkVSX1RFU1RTX0hEUik6ICQoVFJVTk5FUl9URVNUU19ESVIpLyouYwotCSQkKGNhbGwgbXNnLFRFU1QtSERSLCQoVFJVTk5FUl9CSU5BUlkpLCQkQCkKLQkkJChzaGVsbCAoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7CQkJCQlcCi0JCSAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXCgodm9pZCk/XCkuKi9ERUZJTkVfVEVTVChcMikvcCYjMzk7CVwKLQkJCSQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgOwlcCi0JCSApICZndDsgJCRAKQotZW5kaWYKLQotJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYubwotJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMQotCi0jIGNvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzCi0jIE5vdGU6IHdlIGNkIGludG8gb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdCBpcyBmb3VuZAotJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOgkJCVwKLQkJICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jCQkJCVwKLQkJICAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZAotCSQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQCkKLQkkKFEpKGNkICQkKEBEKSAmYW1wOyZhbXA7ICQkKENDKSAtSS4gJCQoQ0ZMQUdTKSAtTU1EIC1NVCAkJEAgLWMgJChDVVJESVIpLyQkJmx0OyAkJChMRExJQlMpIC1vICQkKEBGKSkgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICQkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVRFU1QmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzIpKSkKLQkkJChpZiAkJChURVNUX05FRURTX0JURklEUyksCQkJCQkJXAotCQkkKFEpaWYgWyAtZiAkJEAgXTsgdGhlbgkJCQkJCVwKLQkJJChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzQ7QlRGSURTJiMzNDsgJiMzNDsgWyQoVFJVTk5FUl9CSU5BUlkpXSYjMzQ7ICYjMzQ7JCQobm90ZGlyICQkQCkmIzM0Oyk7IFwKLQkJJChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAOwlcCi0JCSQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDsJCVwKLQkJZmkpCi0KLSQoVFJVTk5FUl9URVNUX09CSlM6Lm89LmQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZDoJCQlcCi0JCQkgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jCQkJXAotCQkJICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKQkJCVwKLQkJCSAgICAkJChCUEZPQkopIHwgJChUUlVOTkVSX09VVFBVVCkJCVwKLQkJCSAgICAkKFRSVU5ORVJfQlBGX1NLRUxTKQkJCVwKLQkJCSAgICAkKFRSVU5ORVJfQlBGX0xTS0VMUykJCQlcCi0JCQkgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKQotCi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpCi1pbmNsdWRlICQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCkpCi1lbmRpZgotCi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnMKLSQoZm9yZWFjaCBOLCQocGF0c3Vic3QgJChUUlVOTkVSX09VVFBVVCkvJS5vLCUsJChUUlVOTkVSX0VYVFJBX09CSlMpKSwJXAotCSQoZXZhbCAkKFRSVU5ORVJfT1VUUFVUKS8kKE4pLm86IENGTEFHUyAmIzQzOz0gJCgkKE4pLmMtQ0ZMQUdTKSkpCi0KLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOgkJCQlcCi0JCSAgICAgICAlLmMJCQkJCQlcCi0JCSAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUykJCQkJXAotCQkgICAgICAgJChWRVJJRllfU0lHX0hEUikJCQkJXAotCQkgICAgICAgJChUUlVOTkVSX1RFU1RTX0hEUikJCQkJXAotCQkgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApCi0JJChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkJmx0OyAkJChMRExJQlMpIC1vICQkQAotCi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuYwotCSQkKGNhbGwgbXNnLExJQi1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJCZsdDsgJCQoTERMSUJTKSAtbyAkJEAKLQotIyBub24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhciwgd2UKLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKQotJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVCkKLWlmbmVxICgkMjokKE9VVFBVVCksOiQoc2hlbGwgcHdkKSkKLQkkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKQotCSQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpLwotZW5kaWYKLQotIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlcwotJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiB8ICQoVFJVTk5FUl9CUEZfT0JKUykKLQotJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkJXAotCQkJICAgICAkKFRSVU5ORVJfRVhUUkFfT0JKUykgJCQoQlBGT0JKKQkJXAotCQkJICAgICAkKFRSVU5ORVJfTElCX09CSlMpCQkJXAotCQkJICAgICAkKFRSVU5ORVJfQlBGVE9PTCkJCQkJXAotCQkJICAgICAkKE9VVFBVVCkvdmVyaXN0YXQJCQkJXAotCQkJICAgICB8ICQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhcwkJCVwKLQkJCSAgICAgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQoVFJVTk5FUl9URVNUX09CSlMpKSkKLQkkJChjYWxsIG1zZyxCSU5BUlksLCQkQCkKLQkkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRACi0JJChRKWxuIC1zZiAkKGlmICQyLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXAotCQkgICAkKE9VVFBVVCkvJChpZiAkMiwkMi8pYnBmdG9vbAotCi1lbmRlZgotCi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoCi1WRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oCi1WRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXIKLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW0KLQotJChWRVJJRklDQVRJT05fQ0VSVCkgJChQUklWQVRFX0tFWSk6ICQoVkVSSUZZX1NJR19TRVRVUCkKJiM0MzsjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdAomIzQzOyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZQomIzQzOyMgb3BlbnNzbCBpbnZvY2F0aW9ucyByYWNlOyB0aGUgcGF0dGVybiBmb3JtIGlzIGltcGxpY2l0bHkgZ3JvdXBlZCBldmVuCiYjNDM7IyB3aXRoIG1ha2UgJmx0OyA0LjMgKHNhbWUgd29ya2Fyb3VuZCBhcyB0aGUgdGVzdF9rbW9kcyBydWxlKS4KJiM0MzskKEJVSUxEX0RJUikvJS5wZW0gJChCVUlMRF9ESVIpLyUuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApCiAJJChRKW1rZGlyIC1wICQoQlVJTERfRElSKQogCSQoUSkkKFZFUklGWV9TSUdfU0VUVVApIGdlbmtleSAkKEJVSUxEX0RJUikKIApAQCAtODMzLDExNiAmIzQzOzQwOCwxNjIgQEAgTElCQVJFTkFfQlBGX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZQkJXAogCQkJCSBsaWJhcmVuYS9zZWxmdGVzdHMvKgkJXAogCQkJCSBsaWJhcmVuYS8qLmJwZi5vKQogCi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaAotCiAkKExJQkFSRU5BX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpCiAJJiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUykKIAogaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLCkKLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaAotQ0ZMQUdTICYjNDM7PSAtREhBU19CUEZfQVJFTkFfQVNBTgotCiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUykKIAkmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpCiBlbmRpZgogCi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLgotVFJVTk5FUl9URVNUU19ESVIgOj0gcHJvZ190ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jCQlcCi0JCQkgY2dyb3VwX2hlbHBlcnMuYwlcCi0JCQkgdHJhY2VfaGVscGVycy5jCVwKLQkJCSBuZXR3b3JrX2hlbHBlcnMuYwlcCi0JCQkgdGVzdGluZ19oZWxwZXJzLmMJXAotCQkJIGJ0Zl9oZWxwZXJzLmMJCVwKLQkJCSBjYXBfaGVscGVycy5jCQlcCi0JCQkgdW5wcml2X2hlbHBlcnMuYyAJXAotCQkJIHN5c2N0bF9oZWxwZXJzLmMJXAotCQkJIG5ldGxpbmtfaGVscGVycy5jCVwKLQkJCSBqaXRfZGlzYXNtX2hlbHBlcnMuYwlcCi0JCQkgaW9faGVscGVycy5jCQlcCi0JCQkgdGVzdF9sb2FkZXIuYwkJXAotCQkJIHhzay5jCQkJXAotCQkJIGRpc2FzbS5jCQlcCi0JCQkgZGlzYXNtX2hlbHBlcnMuYwlcCi0JCQkganNvbl93cml0ZXIuYyAJCVwKLQkJCSAkKFZFUklGWV9TSUdfSERSKQkJXAotCQkJIGZsb3dfZGlzc2VjdG9yX2xvYWQuaAlcCi0JCQkgaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmgJXAotCQkJIGJwZnRvb2xfaGVscGVycy5jCVwKLQkJCSB1c2R0XzEuYyB1c2R0XzIuYwlcCi0JCQkgJChMSUJBUkVOQV9TS0VMKQlcCi0JCQkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmMKLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZAkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCQkJXAotCQkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eQkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlCQkJCVwKLQkJICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkJCQkJXAotCQkgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUykJCQkJXAotCQkgICAgICAgaW1hX3NldHVwLnNoIAkJCQkJXAotCQkgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKQkJCQlcCi0JCSAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpCQlcCi0JCSAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pCi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUUwotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncykpCi0KLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuCi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEUKLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKQotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpCi0KLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVycwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7ZGVmaW5lIGdlbl90ZXN0c19oZHIKJiM0MzsJJChjYWxsIG1zZyxURVNULUhEUiwsJEApCiYjNDM7CSQoUSkoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7CQlcCiYjNDM7CSAgICAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXCgodm9pZCk/XCkuKi9ERUZJTkVfVEVTVChcMikvcCYjMzk7IFwKJiM0MzsJCSQoQEQpLyouYyB8IHNvcnQpICZndDsgJEAKJiM0MztlbmRlZgomIzQzOwomIzQzO3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYykKJiM0MzsJJChnZW5fdGVzdHNfaGRyKQomIzQzOwomIzQzO21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpCiYjNDM7CSQoZ2VuX3Rlc3RzX2hkcikKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVGVzdCBydW5uZXIgaW5zdGFuY2VzLCBvbmUgc3ViLW1ha2UgZWFjaCAoc2VlIE1ha2VmaWxlLnJ1bm5lcikuCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzsjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cywgQlBGX0dDQyBhbmQgVEVTVF9LTU9EUyBhcmUgZXhwb3J0ZWQKJiM0MzsjIHRvIHRoZSBydW5uZXIgc3ViLW1ha2VzLiBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQKJiM0MzsjIHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MgQ0MgaW50byB0aGUgbGliYnBmL2JwZnRvb2wvcmVzb2x2ZV9idGZpZHMKJiM0MzsjIHN1Yi1idWlsZHMsIHdoaWNoIGNvbXB1dGUgdGhlaXIgb3duLiAoJiMzOTtleHBvcnQgTkFNRSYjMzk7IG9uIGFuIHVuZGVmaW5lZAomIzQzOyMgdmFyaWFibGUgY3JlYXRlcyBhbiBlbXB0eSBvbmUsIHNvIHRoZXNlIHN0YXkgYmVsb3cgdGhlIGRlZmluaXRpb25zLikKJiM0MztleHBvcnQgTExWTV9DRkxBR1MgTExWTV9MRExJQlMgTExWTV9MREZMQUdTIEJQRl9HQ0MgVEVTVF9LTU9EUwomIzQzOwomIzQzO1JVTk5FUl9NQUtFIDo9ICQoTUFLRSkgLWYgTWFrZWZpbGUucnVubmVyIE9VVFBVVD0kKE9VVFBVVCkgQ0M9JiMzOTskKENDKSYjMzk7CiYjNDM7CiYjNDM7IyBFdmVyeXRoaW5nIGEgcnVubmVyIGluc3RhbmNlIHJlZmVyZW5jZXMgYnV0IGRvZXMgbm90IGtub3cgaG93IHRvIGJ1aWxkLgomIzQzO1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKQkJXAomIzQzOwkJICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUykJCQlcCiYjNDM7CQkgICQoT1VUUFVUKS92ZXJpc3RhdAkJCQkJXAomIzQzOwkJICAkKFZFUklGWV9TSUdfSERSKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKQlcCiYjNDM7CQkgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCQlcCiYjNDM7CQkgIHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaAkJCVwKJiM0MzsJCSAgJChIRUxQRVJfT0JKUykJCQkJCVwKJiM0MzsJCSAgJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCVwKJiM0MzsJCSAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlCQlcCiYjNDM7CQkgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUykKJiM0MzsKJiM0MztGT1JDRToKJiM0MzsKJiM0MzsjIFRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBza2VsZXRvbnMgYXJlIGFsc28gaW5wdXRzIG9mIGJlbmNoLCB0ZXN0X21hcHMsCiYjNDM7IyB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHA7ICYjMzQ7ZGVmYXVsdC1za2VscyYjMzQ7IGJ1aWxkcyBqdXN0IHRob3NlCiYjNDM7IyB3aXRob3V0IHRoZSB0ZXN0X3Byb2dzIHRlc3Qgb2JqZWN0cyBhbmQgYmluYXJ5LgomIzQzOy5QSE9OWTogZGVmYXVsdC1za2VscwomIzQzO2RlZmF1bHQtc2tlbHM6ICQoUlVOTkVSX1BSRVJFUVMpCiYjNDM7CSYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5OwlcCiYjNDM7CQlCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djMmIzM5OwkJXAomIzQzOwkJQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUyBza2VscwomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzOiAkKFJVTk5FUl9QUkVSRVFTKSBkZWZhdWx0LXNrZWxzIEZPUkNFCiYjNDM7CSYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5OwlcCiYjNDM7CQlCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djMmIzM5OwkJXAomIzQzOwkJQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUwomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLW5vX2FsdTMyOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5OwlcCiYjNDM7CQlCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djImIzM5OwomIzQzOwogaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLCkKLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEUKLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTCi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGNwdXY0KSkKJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy1jcHV2NDogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWNwdXY0IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFwKJiM0MzsJCUJQRl9DQz0mIzM5OyQoQ0xBTkcpJiMzOTsgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChDTEFOR19TWVNfSU5DTFVERVMpJiMzOTsJXAomIzQzOwkJQlBGX0NDX0ZMQUdTPSYjMzk7LU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0JiMzOTsJCVwKJiM0MzsJCUJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKIGVuZGlmCiAKLSMgRGVmaW5lIHRlc3RfcHJvZ3MgQlBGLUdDQy1mbGF2b3JlZCB0ZXN0IHJ1bm5lci4KIGlmbmVxICgkKEJQRl9HQ0MpLCkKLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKQotJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSkKLWVuZGlmCi0KLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci4KLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMKLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0KLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0KLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9Ci0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKQotCi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLgotIyBJdCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tCi0jIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3QKLSMgZXhwbGljaXRseSBkZWZpbmluZyBhbGwgdGhlIHJ1bGVzIGV4cGxpY2l0bHkuCiYjNDM7IyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2MmIzM5O3Mgb3duCiYjNDM7IyBzZWFyY2ggcGF0aCBsYWNrcyB0aGUgaG9zdCYjMzk7cyBhc20tZ2VuZXJpYy8gaGVhZGVycy4KJiM0MztHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChCUEZfR0NDKSYjMzk7IEJQRl9DQ19NU0c9R0NDLUJQRgkJCQlcCiYjNDM7CQlCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChHQ0NfU1lTX0lOQ0xVREVTKSYjMzk7CQkJCVwKJiM0MzsJCUJQRl9DQ19GTEFHUz0mIzM5Oy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJiMzOTsKJiM0MztlbmRpZgomIzQzOwomIzQzOyMgdGVzdF9tYXBzIGNvbXBpbGVzIG1hcF90ZXN0cy8qLmMgYWdhaW5zdCB0aGUgZGVmYXVsdCBmbGF2b3ImIzM5O3Mgc2tlbGV0b25zCiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgbWFwX3Rlc3RzL3Rlc3RzLmggZGVmYXVsdC1za2VscyBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9tYXBzIEZMQVZPUj0gVEVTVFNfRElSPW1hcF90ZXN0cwomIzQzOwomIzQzOyMgRGVmYXVsdC1mbGF2b3IgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBjb25zdW1lZCBieSB0YXJnZXRzIGluIHRoaXMKJiM0MzsjIE1ha2VmaWxlIChhbmQgYnkgbGliLm1rJiMzOTtzIGluc3RhbGwgcnVsZSkgYXJlIHByb2R1Y2VkIGJ5IHRoZSBydW5uZXIKJiM0MzsjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlCiYjNDM7IyBtYWtlcyB0aGVtIGF2YWlsYWJsZSBoZXJlIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHJ1bm5lciYjMzk7cyBydWxlcy4KJiM0MztERUZBVUxUX0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgcHJvZ3MvJS5jLCQoT1VUUFVUKS8lLmJwZi5vLCQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChERUZBVUxUX0JQRl9PQkpTKQomIzQzOwomIzQzO0JFTkNIX1NLRUxTIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sCQkJCQlcCiYjNDM7CSAgICAgICB0ZXN0X292ZXJoZWFkLnNrZWwuaCB0cmlnZ2VyX2JlbmNoLnNrZWwuaAkJXAomIzQzOwkgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmgJCVwKJiM0MzsJICAgICAgIGJsb29tX2ZpbHRlcl9iZW5jaC5za2VsLmggYnBmX2xvb3BfYmVuY2guc2tlbC5oCQlcCiYjNDM7CSAgICAgICBzdHJuY21wX2JlbmNoLnNrZWwuaCBicGZfaGFzaG1hcF9mdWxsX3VwZGF0ZV9iZW5jaC5za2VsLmhcCiYjNDM7CSAgICAgICBsb2NhbF9zdG9yYWdlX2JlbmNoLnNrZWwuaAkJCQlcCiYjNDM7CSAgICAgICBsb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZV9iZW5jaC5za2VsLmgJCVwKJiM0MzsJICAgICAgIGJlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLnNrZWwuaAkJCVwKJiM0MzsJICAgICAgIGJwZl9oYXNobWFwX2xvb2t1cC5za2VsLmggaHRhYl9tZW1fYmVuY2guc2tlbC5oCQlcCiYjNDM7CSAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmgJCVwKJiM0MzsJICAgICAgIGxwbV90cmllX2JlbmNoLnNrZWwuaCBscG1fdHJpZV9tYXAuc2tlbC5oCQlcCiYjNDM7CSAgICAgICBicGZfbm9wX2JlbmNoLnNrZWwuaCB4ZHBfbGJfYmVuY2guc2tlbC5oKQomIzQzO1RPUF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLHhza194ZHBfcHJvZ3Muc2tlbC5oCQlcCiYjNDM7CSAgICAgeGRwX2h3X21ldGFkYXRhLnNrZWwuaCB4ZHBfZmVhdHVyZXMuc2tlbC5oCQkJXAomIzQzOwkgICAgIHRlc3RfY29yZV9leHRlcm4uc2tlbC5oKSAkKEJFTkNIX1NLRUxTKQomIzQzOwomIzQzOyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246ICYjMzQ7ZGVmYXVsdC1za2VscyYjMzQ7IChyZSlidWlsZHMgdGhlIGZpbGUgdmlhIHRoZQomIzQzOyMgcnVubmVyIHN1Yi1tYWtlLCBhZnRlciB3aGljaCBtYWtlIHJlLXN0YXRzIHRoZSB0YXJnZXQsIHNvIGRlcGVuZGVudHMKJiM0MzsjIHNlZSBmcmVzaCB0aW1lc3RhbXBzIHdpdGhpbiB0aGUgc2FtZSBpbnZvY2F0aW9uLiBEZXBlbmRlbnRzIHN0aWxsCiYjNDM7IyByZWJ1aWxkIG9uIG10aW1lIG9ubHkgLSB0aGUgcGhvbnkgcHJlcmVxdWlzaXRlIGRvZXMgbm90IGNhc2NhZGUuCiYjNDM7JChERUZBVUxUX0JQRl9PQkpTKSAkKFRPUF9TS0VMUyk6IGRlZmF1bHQtc2tlbHMgOwomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBTdGFuZGFsb25lIHRlc3QgYmluYXJpZXMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzOyMgdGVzdF92ZXJpZmllciBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQKJiM0MzsjIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbSB0aGVtIChlLmcuLCBpdHMgdGVzdHMuaCB1c2VzIGEgY29tcGxldGVseQomIzQzOyMgZGlmZmVyZW50IHBhdHRlcm4pLCB0aGF0IGl0JiMzOTtzIHdvcnRoIGp1c3QgZGVmaW5pbmcgaXRzIHJ1bGVzIGV4cGxpY2l0bHkuCiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmMKLQkkKHNoZWxsICggY2QgdmVyaWZpZXIvOyBcCi0JCSAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFwKLQkJICBlY2hvICYjMzk7I2lmZGVmIEZJTExfQVJSQVkmIzM5OzsgXAotCQkgIGxzICouYyAyJmd0OyAvZGV2L251bGwgfCBzZWQgLWUgJiMzOTtzQFwoLipcKUAjaW5jbHVkZSBcJiMzNDtcMVwmIzM0O0AmIzM5OzsgXAotCQkgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcCi0JCSkgJmd0OyB2ZXJpZmllci90ZXN0cy5oKQotJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKQomIzQzOwkkKFEpKCBjZCB2ZXJpZmllci87IFwKJiM0MzsJICAgICAgZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7IFwKJiM0MzsJICAgICAgZWNobyAmIzM5OyNpZmRlZiBGSUxMX0FSUkFZJiMzOTs7IFwKJiM0MzsJICAgICAgbHMgKi5jIDImZ3Q7IC9kZXYvbnVsbCB8IHNlZCAtZSAmIzM5O3NAXCguKlwpQCNpbmNsdWRlIFwmIzM0O1wxXCYjMzQ7QCYjMzk7OyBcCiYjNDM7CSAgICAgIGVjaG8gJiMzOTsjZW5kaWYmIzM5OyBcCiYjNDM7CSAgICApICZndDsgdmVyaWZpZXIvdGVzdHMuaAomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSikKIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiAJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRACiAKICMgSW5jbHVkZSBmaW5kX2JpdC5jIHRvIGNvbXBpbGUgeHNreGNlaXZlci4KIEVYVFJBX1NSQyA6PSAkKFRPT0xTRElSKS9saWIvZmluZF9iaXQuYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmMgcHJvZ190ZXN0cy90ZXN0X3hzay5oCi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpCiYjNDM7JChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKQogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKIAkkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEAKIAotJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaCB8ICQoT1VUUFVUKQomIzQzOyQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmgKIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCiAJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRACiAKLSQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaCB8ICQoT1VUUFVUKQomIzQzOyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaAogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKIAkkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEAKIApAQCAtOTU0LDExICYjNDM7NTc1LDE4IEBAICQoT1VUUFVUKS90ZXN0X2NwcDogdGVzdF9jcHAuY3BwICQoT1VUUFVUKS90ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCAkKEJQRk9CSikKIAkkKGNhbGwgbXNnLENYWCwsJEApCiAJJChRKSQoQ1hYKSAkKENYWEZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuY3BwLCReKSAkKExETElCUykgLW8gJEAKIAotIyBCZW5jaG1hcmsgcnVubmVyCi0kKE9VVFBVVCkvYmVuY2hfJS5vOiBiZW5jaHMvYmVuY2hfJS5jIGJlbmNoLmggJChCUEZPQkopCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpbgomIzQzOyMgYmVuY2hzLzogZXZlcnkgYmVuY2hzL2JlbmNoXyouYyBpcyBjb21waWxlZCBhbmQgbGlua2VkIGluLgomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7CiYjNDM7QkVOQ0hfT0JKUyA6PSAkKHNvcnQgJChwYXRzdWJzdCBiZW5jaHMvJS5jLCQoT1VUUFVUKS8lLm8sJCh3aWxkY2FyZCBiZW5jaHMvYmVuY2hfKi5jKSkpCiYjNDM7CiYjNDM7JChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHMKIAkkKGNhbGwgbXNnLENDLCwkQCkKLQkkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJEA7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CRU5DSCYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTsgMSZndDsmYW1wOzIpKQomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpIC1PMiAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpCiYjNDM7CiYjNDM7IyBiZW5jaG1hcmstc3BlY2lmaWMgZ2VuZXJhdGVkLXNrZWxldG9uIGRlcGVuZGVuY2llcwogJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vOiAkKE9VVFBVVCkvdGVzdF9vdmVyaGVhZC5za2VsLmgKICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm86ICQoT1VUUFVUKS90cmlnZ2VyX2JlbmNoLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm86ICQoT1VUUFVUKS9yaW5nYnVmX2JlbmNoLnNrZWwuaCBcCkBAIC05NzgsMzcgJiM0Mzs2MDYsMTkgQEAgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vOiAkKE9VVFBVVCkvbHBtX3RyaWVfYmVuY2guc2tlbC5oICQoT1VUUFVUKS9scG1fdHIKICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm86ICQoT1VUUFVUKS9icGZfbm9wX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmgKICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubzogJChPVVRQVVQpL3hkcF9sYl9iZW5jaC5za2VsLmggYmVuY2hfYnBmX3RpbWluZy5oCiAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vOiBiZW5jaF9icGZfdGltaW5nLmgKJiM0MzsKICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKQogJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgJiM0Mzs9IC1sbQotJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcCi0JCSAkKFRFU1RJTkdfSEVMUEVSUykgXAotCQkgJChUUkFDRV9IRUxQRVJTKSBcCi0JCSAkKENHUk9VUF9IRUxQRVJTKSBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfY291bnQubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYmxvb21fZmlsdGVyX21hcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfbG9vcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9zdHJuY21wLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2UubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2UubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfY3JlYXRlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2h0YWJfbWVtLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vIFwKLQkJICQoT1VUUFVUKS91c2R0XzEubyBcCi0JCSAkKE9VVFBVVCkvdXNkdF8yLm8gXAotCQkgIwomIzQzOyQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8JCVwKJiM0MzsJCSAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm8JXAomIzQzOwkJICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm8JXAomIzQzOwkJICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vCVwKJiM0MzsJCSAkKE9VVFBVVCkvdXNkdF8xLm8JCVwKJiM0MzsJCSAkKE9VVFBVVCkvdXNkdF8yLm8JCVwKJiM0MzsJCSAkKEJFTkNIX09CSlMpCiAJJChjYWxsIG1zZyxCSU5BUlksLCRAKQotCSQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtTElOSyYjMzk7ICYjMzk7JChub3RkaXIgJEApIChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcCiYjNDM7CQkkKGNhbGwgc2tpcF9vbl9mYWlsLExJTkssLChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSkKIAogIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZToKICMKQEAgLTEwMzYsNyAmIzQzOzY0Niw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUikJCQlcCiAJCQkgICAgICAgbGlidXJhbmRvbV9yZWFkLnNvKQkJCVwKIAkkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0cwogCi0uUEhPTlk6IGRvY3MgZG9jcy1jbGVhbgomIzQzOy5QSE9OWTogZG9jcyBkb2NzLWNsZWFuIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4KIAogIyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3IKIC5ERUxFVEVfT05fRVJST1I6CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uM2E0OTYyYjA1ODVmZWMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzCkBAIC0wLDAgJiM0MzsxLDE3MyBAQAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0cwomIzQzOyMgYnVpbGQsIGluY2x1ZGVkIGJ5IGJvdGggTWFrZWZpbGUgYW5kIE1ha2VmaWxlLnJ1bm5lci4gRGVmaW5pdGlvbnMKJiM0MzsjIGZvbGxvdyB0aGUgb3JkZXIgdGhleSBoYWQgaW4gdGhlIE1ha2VmaWxlIGJlZm9yZSB0aGUgc3BsaXQuCiYjNDM7CiYjNDM7Q1hYID89ICQoQ1JPU1NfQ09NUElMRSlnJiM0MzsmIzQzOwomIzQzO09CSkNPUFkgPz0gJChDUk9TU19DT01QSUxFKW9iamNvcHkKJiM0MzsKJiM0MztDVVJESVIgOj0gJChhYnNwYXRoIC4pCiYjNDM7CiYjNDM7VE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKQomIzQzO0xJQkRJUiA6PSAkKFRPT0xTRElSKS9saWIKJiM0MztCUEZESVIgOj0gJChMSUJESVIpL2JwZgomIzQzO1RPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGUKJiM0MztUT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGUKJiM0MztCUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sCiYjNDM7QVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGkKJiM0MztpZm5lcSAoJChPKSwpCiYjNDM7R0VORElSIDo9ICQoTykvaW5jbHVkZS9nZW5lcmF0ZWQKJiM0MztlbHNlCiYjNDM7R0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZCkKJiM0MztlbmRpZgomIzQzO0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaAomIzQzO1BLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWcKJiM0MzsKJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLCkKJiM0MzsgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFIKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmZGVmIEFTQU4KJiM0MztTQU5fQ0ZMQUdTIAk/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKJiM0MztlbHNlCiYjNDM7U0FOX0NGTEFHUwk/PQomIzQzO2VuZGlmCiYjNDM7U0FOX0xERkxBR1MJPz0gJChTQU5fQ0ZMQUdTKQomIzQzO1JFTEVBU0UJCT89CiYjNDM7T1BUX0ZMQUdTCT89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKQomIzQzOwomIzQzO0xJQkVMRl9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyJmd0Oy9kZXYvbnVsbCkKJiM0MztMSUJFTEZfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyJmd0Oy9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKQomIzQzOwomIzQzOyMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yCiYjNDM7IyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXMKJiM0MzsjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLgomIzQzO0JQRl9TVFJJQ1RfQlVJTEQgPz0gMQomIzQzO1BFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKQomIzQzOwomIzQzOyMgUGVybWlzc2l2ZS1tb2RlIHJlY2lwZSBzdWZmaXg6IG9uIGZhaWx1cmUsIHJlbW92ZSB0aGUgdGFyZ2V0LCBlbWl0IGEKJiM0MzsjIFNLSVAgbWFya2VyIGFuZCByZXBvcnQgc3VjY2VzcyBzbyB0aGUgcmVzdCBvZiB0aGUgYnVpbGQgY29udGludWVzLgomIzQzOyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pCiYjNDM7IyAkKDIpIC0gb3B0aW9uYWwgZXh0cmEgZmlsZXMgdG8gcmVtb3ZlIGFsb25nc2lkZSB0aGUgdGFyZ2V0CiYjNDM7IyAkKDMpIC0gb3B0aW9uYWwgbm90ZSBhcHBlbmRlZCB0byB0aGUgU0tJUCBtZXNzYWdlCiYjNDM7c2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXAomIzQzOwlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtJCgxKSYjMzk7ICYjMzk7JChub3RkaXIgJEApJChpZiAkKDMpLCAkKDMpKSYjMzk7IDEmZ3Q7JmFtcDsyOyB9KQomIzQzOwomIzQzO2lmZXEgKCQoc3JjdHJlZSksKQomIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoQ1VSRElSKSkpCiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MztDT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExCQkJCVwKJiM0MzsJICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCQkJCVwKJiM0MzsJICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlCQkJCQlcCiYjNDM7CSAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpCQkJXAomIzQzOwkgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUikJCVwKJiM0MzsJICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpCVwKJiM0MzsJICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlCiYjNDM7TERGTEFHUyAmIzQzOz0gJChTQU5fTERGTEFHUykKJiM0MztMRExJQlMgJiM0Mzs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZAomIzQzOwomIzQzO1BDQVBfQ0ZMQUdTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDImZ3Q7L2Rldi9udWxsICZhbXA7JmFtcDsgZWNobyAmIzM0Oy1EVFJBRkZJQ19NT05JVE9SPTEmIzM0OykKJiM0MztQQ0FQX0xJQlMJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDImZ3Q7L2Rldi9udWxsKQomIzQzO0xETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpCiYjNDM7IyBVbmxpa2UgdGhlIHByZS1zcGxpdCBNYWtlZmlsZSwgdGhpcyBmaWxlIGlzIGluY2x1ZGVkIGFmdGVyIC4uL2xpYi5tawomIzQzOyMgKHRvcCBsZXZlbCkgb3Igd2l0aG91dCBpdCAocnVubmVyKSwgc28gQ09NTU9OX0NGTEFHUyBpcyBwcmVwZW5kZWQgdG8KJiM0MzsjIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBpbmNsdWRlLXNlYXJjaCBvcmRlci4KJiM0MztMSUJfTUtfQ0ZMQUdTIDo9ICQoQ0ZMQUdTKQomIzQzO0NGTEFHUyA9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUykgJChMSUJfTUtfQ0ZMQUdTKQomIzQzOwomIzQzO2lmbmVxICgkKExMVk0pLCkKJiM0MzsjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmcKJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudAomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KQomIzQzO0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAmIzM5O2ludCB4OyYjMzk7IHwgXAomIzQzOwkkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcCiYjNDM7CS1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFwKJiM0MzsJLXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGVjaG8gMSkKJiM0MzsKJiM0MztTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHMKJiM0MztCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGQKJiM0MztJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlCiYjNDM7QlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmEKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7SE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKS9ob3N0CiYjNDM7SE9TVF9TQ1JBVENIX0RJUgk6PSAkKE9VVFBVVCkvaG9zdC10b29scwomIzQzO0hPU1RfSU5DTFVERV9ESVIJOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlCiYjNDM7ZWxzZQomIzQzO0hPU1RfQlVJTERfRElSCQk6PSAkKEJVSUxEX0RJUikKJiM0MztIT1NUX1NDUkFUQ0hfRElSCTo9ICQoU0NSQVRDSF9ESVIpCiYjNDM7SE9TVF9JTkNMVURFX0RJUgk6PSAkKElOQ0xVREVfRElSKQomIzQzO2VuZGlmCiYjNDM7SE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCiYjNDM7UkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHMKJiM0MzsKJiM0MztERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7Q1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKQomIzQzO1VTRV9CT09UU1RSQVAgOj0gJiMzNDsmIzM0OwomIzQzO2Vsc2UKJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpCiYjNDM7VVNFX0JPT1RTVFJBUCA6PSAmIzM0O2Jvb3RzdHJhcC8mIzM0OwomIzQzO2VuZGlmCiYjNDM7CiYjNDM7QlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTCkKJiM0MzsKJiM0MzsjIEdldCBDbGFuZyYjMzk7cyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnkKJiM0MzsjICYjMzk7LS10YXJnZXQ9YnBmJiMzOTsuIFRoaXMgZml4ZXMgJiMzNDttaXNzaW5nJiMzNDsgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsCiYjNDM7IyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuCiYjNDM7IwomIzQzOyMgVXNlICYjMzk7LWlkaXJhZnRlciYjMzk7OiBEb24mIzM5O3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZQomIzQzOyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy4KJiM0MztkZWZpbmUgZ2V0X3N5c19pbmNsdWRlcwomIzQzOyQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gJmx0Oy9kZXYvbnVsbCAyJmd0OyZhbXA7MSBcCiYjNDM7CXwgc2VkIC1uICYjMzk7LyZsdDsuLi4mZ3Q7IHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXCgvLipcKXwtaWRpcmFmdGVyIFwxfHAgfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWQmIzM0OywgJCQzLCAkJDMpfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX2xvb25nYXJjaF9ncmxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZCYjMzQ7LCAkJDMpfSYjMzk7KSBcCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgLUUgJiMzOTtNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRCVzPSVzICYjMzQ7LCAkJDIsICQkMyl9JiMzOTspCiYjNDM7ZW5kZWYKJiM0MzsKJiM0MzsjIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy4KJiM0MztJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IFwKJiM0MzsJCQlncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspCiYjNDM7TUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pCiYjNDM7QlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYikKJiM0MzsKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7Q0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MzsjIEltbWVkaWF0ZSBvbiBwdXJwb3NlOiBleHBhbmRpbmcgZ2V0X3N5c19pbmNsdWRlcyBmb3JrcyBzZXZlcmFsIHNoZWxscy4KJiM0MztDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpCiYjNDM7QlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKQlcCiYjNDM7CSAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKQkJCVwKJiM0MzsJICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlCQkJCVwKJiM0MzsJICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpCQkJXAomIzQzOwkgICAgIC1zdGQ9Z251MTEJCSAJCQkJCVwKJiM0MzsJICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyAJCQkJCVwKJiM0MzsJICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZwkJCQkJXAomIzQzOwkgICAgIC1mbXMtZXh0ZW5zaW9ucwkJCQkJCVwKJiM0MzsJICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlcwkJCVwKJiM0MzsJICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlcwkJCQkJXAomIzQzOwkgICAgICMKJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZQomIzQzOwomIzQzO0NMQU5HX0NGTEFHUyA9ICQoQ0xBTkdfU1lTX0lOQ0xVREVTKQomIzQzOwomIzQzO1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKJiM0MztWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oCiYjNDM7VkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyCiYjNDM7UFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbQomIzQzOwomIzQzO0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oCiYjNDM7CiYjNDM7aWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLCkKJiM0MztMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmgKJiM0MztDRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOCiYjNDM7ZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5jZWQ0NGFhZDdlZGVkNAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIKQEAgLTAsMCAmIzQzOzEsMzE1IEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIEJ1aWxkIG9uZSBCUEYgdGVzdC1ydW5uZXIgaW5zdGFuY2U6IHRlc3RfcHJvZ3MsIG9uZSBvZiBpdHMgZmxhdm9ycwomIzQzOyMgKG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYyksIG9yIHRlc3RfbWFwcy4KJiM0MzsjCiYjNDM7IyBFYWNoIGluc3RhbmNlIGlzIGFuIGluZGVwZW5kZW50IHN1Yi1tYWtlIHdpdGggaXRzIG93biBvdXRwdXQgZGlyZWN0b3J5LAomIzQzOyMgc28gZXZlcnl0aGluZyBoZXJlIGlzIHdyaXR0ZW4gaW4gcGxhaW4gbWFrZSAtIG5vICQkLWVzY2FwaW5nLCBubyBldmFsLAomIzQzOyMgbm8gcGVyLWZsYXZvciBndWFyZHMuIFRoaXMgZmlsZSBpcyBhbHdheXMgaW52b2tlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSwKJiM0MzsjIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkIHByZXJlcXVpc2l0ZXMgKGxpYmJwZiwgYnBmdG9vbCwgdm1saW51eC5oLAomIzQzOyMgdmVyaXN0YXQsIGhlbHBlciBvYmplY3RzLCBzaWduaW5nIGtleSwgZ2VuZXJhdGVkIHRlc3RzLmgsIGV4dHJhCiYjNDM7IyBiaW5hcmllcykgYXJlIGJ1aWx0IGJ5IHRoZSBtYWluIE1ha2VmaWxlICpiZWZvcmUqIHRoaXMgb25lIHJ1bnMgYW5kIGFyZQomIzQzOyMgcmVmZXJlbmNlZCBiZWxvdyBhcyBwbGFpbiBmaWxlcy4KJiM0MzsjCiYjNDM7IyBQYXJhbWV0ZXJzIChhbGwgcGFzc2VkIG9uIHRoZSBzdWItbWFrZSBjb21tYW5kIGxpbmUpOgomIzQzOyMgICBPVVRQVVQgICAgICBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBzZWxmdGVzdHMgb3V0cHV0IGRpcmVjdG9yeQomIzQzOyMgICBSVU5ORVIgICAgICBiYXNlIGJpbmFyeSBuYW1lOiB0ZXN0X3Byb2dzIHwgdGVzdF9tYXBzCiYjNDM7IyAgIEZMQVZPUiAgICAgIGZsYXZvciBzdWZmaXg6IGVtcHR5IHwgbm9fYWx1MzIgfCBjcHV2NCB8IGJwZl9nY2MKJiM0MzsjICAgVEVTVFNfRElSICAgZGlyZWN0b3J5IHdpdGggdGhlIHRlc3Qgc291cmNlczogcHJvZ190ZXN0cyB8IG1hcF90ZXN0cwomIzQzOyMgICBCUEZfQ0MgICAgICBjb21waWxlciBmb3IgcHJvZ3MvKi5jIEJQRiBvYmplY3RzICgkKENMQU5HKSBvcgomIzQzOyMgICAgICAgICAgICAgICAkKEJQRl9HQ0MpKTsgZW1wdHkgZm9yIHRlc3RfbWFwcywgd2hpY2ggYnVpbGRzIG5vbmUKJiM0MzsjICAgQlBGX0NDX01TRyAgYnVpbGQtbG9nIHRhZzogQ0xORy1CUEYgfCBHQ0MtQlBGCiYjNDM7IyAgIEJQRl9DQ19GTEFHUwomIzQzOyMgICAgICAgICAgICAgICBjb21waWxlci1zcGVjaWZpYyBmbGFncyAoLU8yLCB0YXJnZXQvLW1jcHUgb3IgZ2NjIGtub2JzKQomIzQzOyMgICBCUEZfU1lTX0lOQ0xVREVTCiYjNDM7IyAgICAgICAgICAgICAgIHN5c3RlbSBpbmNsdWRlIGZsYWdzIG1hdGNoaW5nIEJQRl9DQwomIzQzOyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKQomIzQzOyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpCiYjNDM7IyAgIExMVk1fQ0ZMQUdTL0xMVk1fTERMSUJTL0xMVk1fTERGTEFHUwomIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlCiYjNDM7CiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlCiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2gKJiM0MztpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZQomIzQzOwomIzQzOyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuCiYjNDM7aWZlcSAoJChWKSwxKQomIzQzO1EgPQomIzQzO21zZyA9CiYjNDM7ZWxzZQomIzQzO1EgPSBACiYjNDM7bXNnID0gQHByaW50ZiAmIzM5OyAgJS04cyVzICVzJXNcbiYjMzk7ICYjMzQ7JCgxKSYjMzQ7ICYjMzQ7JChpZiAkKDIpLCBbJCgyKV0pJiMzNDsgJiMzNDskKG5vdGRpciAkKDMpKSYjMzQ7ICYjMzQ7JChpZiAkKDQpLCAkKDQpKSYjMzQ7OwomIzQzO01BS0VGTEFHUyAmIzQzOz0gLS1uby1wcmludC1kaXJlY3RvcnkKJiM0MztlbmRpZgomIzQzOwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzCiYjNDM7CiYjNDM7IyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay4KJiM0MztDRkxBR1MgJiM0Mzs9IC1EX0dOVV9TT1VSQ0U9CiYjNDM7Q0ZMQUdTICYjNDM7PSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMKJiM0MztDRkxBR1MgJiM0Mzs9ICQoVVNFUkNGTEFHUykKJiM0MztMREZMQUdTICYjNDM7PSAkKFVTRVJMREZMQUdTKQomIzQzO2lmbmVxICgkKExMVk0pLCkKJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyCiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWdudS12YXJpYWJsZS1zaXplZC10eXBlLW5vdC1hdC1lbmQKJiM0MztlbmRpZgomIzQzOwomIzQzO0JJTkFSWSA6PSAkKFJVTk5FUikkKGlmICQoRkxBVk9SKSwtJChGTEFWT1IpKQomIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKQomIzQzOwomIzQzO2FsbDogJChPVVRQVVQpLyQoQklOQVJZKQomIzQzOy5QSE9OWTogYWxsCiYjNDM7CiYjNDM7IyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3IKJiM0MzsuREVMRVRFX09OX0VSUk9SOgomIzQzOwomIzQzOyMgUGVybWlzc2l2ZSBza2lwLW9uLWZhaWx1cmUgb2YgaW5kaXZpZHVhbCB0ZXN0cyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kCiYjNDM7IyBpdHMgZmxhdm9ycyBvbmx5OyB0ZXN0X21hcHMgdXNlcyBzdHJvbmcgY3Jvc3Mtb2JqZWN0IHJlZmVyZW5jZXMgYW5kIGtlZXBzCiYjNDM7IyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuCiYjNDM7UEVSTUlTU0lWRV9URVNUUyA6PSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MsJChSVU5ORVIpKSwkKFBFUk1JU1NJVkUpKQomIzQzOwomIzQzOyQoUkRJUik6CiYjNDM7CSQoY2FsbCBtc2csTUtESVIsLCRAKQomIzQzOwkkKFEpbWtkaXIgLXAgJEAKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgUGVyLXJ1bm5lciBzb3VyY2VzCiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MztpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncykKJiM0MztFWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYyBjZ3JvdXBfaGVscGVycy5jIHRyYWNlX2hlbHBlcnMuYwkJXAomIzQzOwkJIG5ldHdvcmtfaGVscGVycy5jIHRlc3RpbmdfaGVscGVycy5jIGJ0Zl9oZWxwZXJzLmMJXAomIzQzOwkJIGNhcF9oZWxwZXJzLmMgdW5wcml2X2hlbHBlcnMuYyBzeXNjdGxfaGVscGVycy5jCVwKJiM0MzsJCSBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmMJXAomIzQzOwkJIHRlc3RfbG9hZGVyLmMgeHNrLmMgZGlzYXNtLmMgZGlzYXNtX2hlbHBlcnMuYwkJXAomIzQzOwkJIGpzb25fd3JpdGVyLmMgYnBmdG9vbF9oZWxwZXJzLmMgdXNkdF8xLmMgdXNkdF8yLmMKJiM0MztMSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jCiYjNDM7RVhUUkFfSERSUyA6PSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmgJCVwKJiM0MzsJICAgICAgJChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTCkKJiM0MztFWFRSQV9GSUxFUyA6PSAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc28JXAomIzQzOwkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlCQlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpCQkJCQlcCiYjNDM7CSAgICAgICAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpCQkJXAomIzQzOwkgICAgICAgaW1hX3NldHVwLnNoICQoVkVSSUZZX1NJR19TRVRVUCkJCQkJXAomIzQzOwkgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKQkJCVwKJiM0MzsJICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubykKJiM0MztlbmRpZgomIzQzOwomIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpCiYjNDM7RVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuYwomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluCiYjNDM7IyBNYWtlZmlsZTogaGVscGVyIG9iamVjdHMgdGhlIG1haW4gTWFrZWZpbGUgYWxzbyB1c2VzIChhbmQgbGlzdHMgaW4gdGhlCiYjNDM7IyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLAomIzQzOyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLiBUaGlzCiYjNDM7IyBob2xkcyBiZWNhdXNlIHRoZSBtYWluIE1ha2VmaWxlJiMzOTtzIGhlbHBlci1vYmplY3QgcnVsZSBkZXBlbmRzIG9uIGEKJiM0MzsjIHN1cGVyc2V0IG9mIHRoZSBwcmVyZXF1aXNpdGVzIHRoZSBFWFRSQV9PQkpTIHJ1bGUgdXNlcyBoZXJlIC0ga2VlcAomIzQzOyMgdGhlIHR3byBsaXN0cyBpbiBzeW5jIChzZWUgdGhlIGludmFyaWFudCBjb21tZW50IHRoZXJlKS4KJiM0MzsKJiM0MztURVNUU19IRFIgOj0gJChURVNUU19ESVIpL3Rlc3RzLmgKJiM0MzsKJiM0MztURVNUX1NSQ1MgIDo9ICQobm90ZGlyICQod2lsZGNhcmQgJChURVNUU19ESVIpLyouYykpCiYjNDM7VEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSkKJiM0MztURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKQomIzQzO0VYVFJBX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChmaWx0ZXIgJS5jLCQoRVhUUkFfU09VUkNFUykpKQomIzQzO0xJQl9PQkpTICAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChMSUJfU09VUkNFUykpCiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2lmbmVxICgkKEJQRl9DQyksKQomIzQzOwomIzQzO0JQRl9TUkNTIDo9ICQobm90ZGlyICQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpCiYjNDM7CiYjNDM7IyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbi4KJiM0MztTS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jCiYjNDM7CiYjNDM7TFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIAlcCiYjNDM7CWNvcmVfa2Vybi5jIGNvcmVfa2Vybl9vdmVyZmxvdy5jIHRlc3RfcmluZ2J1Zi5jCQkJXAomIzQzOwl0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXAomIzQzOwl0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmMKJiM0MzsKJiM0MztMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuYwomIzQzOwomIzQzOyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZQomIzQzO0xTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFwKJiM0MzsJa2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYwomIzQzO1NLRUxfQkxBQ0tMSVNUICYjNDM7PSAkKExTS0VMUykgJChMU0tFTFNfU0lHTkVEKQomIzQzOwomIzQzOyMgU2tlbGV0b25zIG1hZGUgYnkgbGlua2luZyBtdWx0aXBsZSBCUEYgb2JqZWN0cyB0b2dldGhlci4gVGhlICUtZGVwcwomIzQzOyMgbWFwcGluZyBpcyB0aGUgb25seSBoYW5kLW1haW50YWluZWQgbWV0YWRhdGE6IGl0IGNhbm5vdCBiZSBkZXJpdmVkIGZyb20KJiM0MzsjIHRoZSBzb3VyY2VzLgomIzQzO3Rlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm8KJiM0MztsaW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vCiYjNDM7bGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYubwomIzQzO2xpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm8KJiM0MzsjIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZQomIzQzOyMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi4KJiM0Mzt0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vCiYjNDM7dGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vCiYjNDM7dGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vCiYjNDM7dHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCiYjNDM7dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KJiM0Mzt0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwomIzQzO3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KJiM0MzsKJiM0MztMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oCQlcCiYjNDM7CQlsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oCQkJXAomIzQzOwkJdGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oCVwKJiM0MzsJCXRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmgJCQlcCiYjNDM7CQl0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgJCQkJXAomIzQzOwkJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oCQkJCVwKJiM0MzsJCXRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgKJiM0MztMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKSkKJiM0MzsKJiM0MztTS0VMUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuc2tlbC5oLAkJCQlcCiYjNDM7CSAgICQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksJChCUEZfU1JDUykpKQomIzQzO0xTS0VMU19IICAgICAgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMUykgJChMU0tFTFNfRVhUUkEpKQomIzQzO0xTS0VMU19TSUdORURfSCA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKQomIzQzO0xJTktFRF9TS0VMU19IICA6PSAkKGFkZHByZWZpeCAkKFJESVIpLywkKExJTktFRF9TS0VMUykpCiYjNDM7QUxMX1NLRUxTIDo9ICQoU0tFTFMpICQoTFNLRUxTX0gpICQoTFNLRUxTX1NJR05FRF9IKSAkKExJTktFRF9TS0VMU19IKQomIzQzOwomIzQzO0hFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpCQkJXAomIzQzOwkJCSQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKQlcCiYjNDM7CQkJJChhZGRwcmVmaXggJChCUEZESVIpLywJYnBmX2NvcmVfcmVhZC5oCQlcCiYjNDM7CQkJCQkJYnBmX2VuZGlhbi5oCQlcCiYjNDM7CQkJCQkJYnBmX2hlbHBlcnMuaAkJXAomIzQzOwkJCQkJCWJwZl90cmFjaW5nLmgpCiYjNDM7CiYjNDM7IyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJCZsdDstQ0ZMQUdTIC8gJCZsdDstJChGTEFWT1IpLUNGTEFHUykuCiYjNDM7IyBHQ0MgY2Fubm90IGRpc2FibGUgJiMzNDtkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0JiMzNDsKJiM0MzsjIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGVzZSAodGVjaG5pY2FsbHkgbGVnYWwpIHRlc3QgcHJvZ3JhbXMuCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKJiM0MzsKJiM0MzskKEJQRl9PQkpTKTogJChSRElSKS8lLmJwZi5vOiBwcm9ncy8lLmMgcHJvZ3MvKi5oCQkJXAomIzQzOwkgICAgICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKQkJXAomIzQzOwkgICAgIHwgJChSRElSKSAkKEJQRk9CSikKJiM0MzsJJChjYWxsIG1zZywkKEJQRl9DQ19NU0cpLCQoQklOQVJZKSwkQCkKJiM0MzsJJChRKSQoQlBGX0NDKSAkKEJQRl9DRkxBR1MpICQoQlBGX1NZU19JTkNMVURFUykgJChCUEZfREVGSU5FUykJXAomIzQzOwkJJCgkJmx0Oy1DRkxBR1MpICQoJCZsdDstJChGTEFWT1IpLUNGTEFHUykJCQlcCiYjNDM7CQkkKEJQRl9DQ19GTEFHUykgLWMgJCZsdDsgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCUEYpCiYjNDM7CiYjNDM7IyBnZW5fYnBmX3NrZWwuc2ggcGlja3MgdGhlIGJwZnRvb2wgYmluYXJ5IHVwIGZyb20gdGhlIGVudmlyb25tZW50LgomIzQzO2V4cG9ydCBCUEZUT09MCiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2gKJiM0MzsKJiM0MzskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpCiYjNDM7CSQoY2FsbCBtc2csR0VOLVNLRUwsJChCSU5BUlkpLCRAKQomIzQzOwkkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqCQkJCQlcCiYjNDM7CQktLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQmbHQ7CQlcCiYjNDM7CQkkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpCiYjNDM7CiYjNDM7JChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKEdFTl9TS0VMKSAtLW5hbWUgJCpfbHNrZWwgLS1sc2tlbAkJCQlcCiYjNDM7CQktLXNrZWwgJEAgJCZsdDsgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKQomIzQzOwomIzQzOyQoTFNLRUxTX1NJR05FRF9IKTogJChSRElSKS8lLmxza2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpCVwKJiM0MzsJCSAgICAkKEdFTl9TS0VMKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKSB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSkgKHNpZ25lZCksJEApCiYjNDM7CSQoUSlQUklWQVRFX0tFWT0kKFBSSVZBVEVfS0VZKQkJCQkJXAomIzQzOwkJVkVSSUZJQ0FUSU9OX0NFUlQ9JChWRVJJRklDQVRJT05fQ0VSVCkJCQlcCiYjNDM7CQkkKEdFTl9TS0VMKSAtLXNpZ24gLS1uYW1lICQqX2xza2VsCQkJXAomIzQzOwkJLS1za2VsICRAICQmbHQ7ICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCkKJiM0MzsKJiM0MzsuU0VDT05ERVhQQU5TSU9OOgomIzQzOyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXAomIzQzOwkJICAgJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxMSU5LLUJQRiwkKEJJTkFSWSksJChAOi5za2VsLmg9LmJwZi5vKSkKJiM0MzsJJChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKEdFTl9TS0VMKSAtLW5hbWUgJCoJCQkJCVwKJiM0MzsJCS0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkJCVwKJiM0MzsJCSQoYWRkcHJlZml4ICQoUkRJUikvLCQoJCouc2tlbC5oLWRlcHMpKQkJCVwKJiM0MzsJCSQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSkKJiM0MzsKJiM0MztlbmRpZiAjIEJQRl9DQwomIzQzOwomIzQzOy5QSE9OWTogc2tlbHMKJiM0Mztza2VsczogJChBTExfU0tFTFMpCiYjNDM7CiYjNDM7IyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90IGZ1bGwKJiM0MzsjIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nICUubyBmaWxlLgomIzQzOyMgVGhlIHZwYXRoIGRpcmVjdGl2ZXMgaW5zdHJ1Y3QgbWFrZSB0byBhbHNvIHNlYXJjaCBmb3Igc2tlbCBmaWxlcyBpbgomIzQzOyMgJChSRElSKSBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuCiYjNDM7dnBhdGggJS5za2VsLmggJChSRElSKQomIzQzO3ZwYXRoICUubHNrZWwuaCAkKFJESVIpCiYjNDM7dnBhdGggJS5zdWJza2VsLmggJChSRElSKQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBUZXN0IG9iamVjdHMgYW5kIHJ1bm5lciBiaW5hcnkKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vCiYjNDM7JChSRElSKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxCiYjNDM7CiYjNDM7IyBDb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlcy4KJiM0MzsjIE5vdGU6IHdlIGNkIGludG8gdGhlIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3RzCiYjNDM7IyBhcmUgZm91bmQuIFRoZSAlLnRlc3QuZCBkZXBlbmRlbmN5IGZpbGVzIGFyZSBhIHNpZGUgZWZmZWN0IG9mIHRoZSAtTU1ECiYjNDM7IyBiZWxvdzsgdGhlIHNlcGFyYXRlIG5vLXJlY2lwZSBydWxlIGZvciB0aGVtIG9yZGVycyB0aGUgZmlyc3QKJiM0MzsjIGNvbXBpbGF0aW9uIGFmdGVyIHNrZWxldG9uIGdlbmVyYXRpb24gYW5kIHJlLW9yZGVycyB0ZXN0IG9iamVjdAomIzQzOyMgY29tcGlsYXRpb24gd2hlbiBoZWFkZXJzIGNoYW5nZS4KJiM0MzskKFRFU1RfT0JKUyk6ICQoUkRJUikvJS50ZXN0Lm86ICQoVEVTVFNfRElSKS8lLmMgfCAkKFJESVIpLyUudGVzdC5kCiYjNDM7CSQoY2FsbCBtc2csVEVTVC1PQkosJChCSU5BUlkpLCRAKQomIzQzOwkkKFEpKGNkICQoQEQpICZhbXA7JmFtcDsgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJCZsdDsgLW8gJChARikpIFwKJiM0MzsJCSQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKQomIzQzOwkkKGlmICQoVEVTVF9ORUVEU19CVEZJRFMpLAkJCQkJXAomIzQzOwkJJChRKWlmIFsgLWYgJEAgXTsgdGhlbgkJCQkJXAomIzQzOwkJJChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzQ7QlRGSURTJiMzNDsgJiMzNDsgWyQoQklOQVJZKV0mIzM0OyAmIzM0OyQobm90ZGlyICRAKSYjMzQ7KTsgXAomIzQzOwkJJChSRVNPTFZFX0JURklEUykgLS1idGYgJChSRElSKS9idGZfZGF0YS5icGYubyAkQDsJXAomIzQzOwkJJChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDsJCVwKJiM0MzsJCWZpKQomIzQzOwomIzQzOyQoVEVTVF9ERVBTKTogJChSRElSKS8lLnRlc3QuZDogJChURVNUU19ESVIpLyUuYyAkKEVYVFJBX0hEUlMpICQoQlBGT0JKKSBcCiYjNDM7CSAgICAgIHwgJChSRElSKSAkKEFMTF9TS0VMUykKJiM0MzsKJiM0MztpbmNsdWRlICQod2lsZGNhcmQgJChURVNUX0RFUFMpKQomIzQzOwomIzQzOyQoUkRJUikvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyAmIzQzOz0gJChMTFZNX0NGTEFHUykKJiM0MzsKJiM0MzskKEVYVFJBX09CSlMpOiAkKFJESVIpLyUubzogJS5jICQoRVhUUkFfSERSUykgJChURVNUU19IRFIpICQoQlBGT0JKKSB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxFWFQtT0JKLCQoQklOQVJZKSwkQCkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkJmx0OyAtbyAkQAomIzQzOwomIzQzOyQoTElCX09CSlMpOiAkKFJESVIpLyUubzogJChUT09MU0RJUikvbGliLyUuYyB8ICQoUkRJUikKJiM0MzsJJChjYWxsIG1zZyxMSUItT0JKLCQoQklOQVJZKSwkQCkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkJmx0OyAtbyAkQAomIzQzOwomIzQzOyMgTm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIKJiM0MzsjIHdlIGRvIG5vdCBuZWVkIHRvIGNvcHkgZXh0cmEgcmVzb3VyY2VzIChzZWUgZS5nLiB0ZXN0X2J0Zl9kdW1wX2Nhc2UoKSkuCiYjNDM7LlBIT05ZOiBleHRyYXMKJiM0MztleHRyYXM6ICQoaWYgJChQRVJNSVNTSVZFKSwkKHdpbGRjYXJkICQoRVhUUkFfRklMRVMpKSwkKEVYVFJBX0ZJTEVTKSkgfCAkKFJESVIpCiYjNDM7aWZuZXEgKCQoRkxBVk9SKTokKE9VVFBVVCksOiQoQ1VSRElSKSkKJiM0MztpZm5lcSAoJChzdHJpcCAkKEVYVFJBX0ZJTEVTKSksKQomIzQzOwkkKGNhbGwgbXNnLEVYVC1DT1BZLCQoQklOQVJZKSwkKG5vdGRpciAkKEVYVFJBX0ZJTEVTKSkpCiYjNDM7CSQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS8KJiM0MztlbmRpZgomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBJbiBwZXJtaXNzaXZlIG1vZGUsIGxpbmsgd2hhdGV2ZXIgdGVzdCBvYmplY3RzIHdlcmUgc3VjY2Vzc2Z1bGx5IGJ1aWx0CiYjNDM7IyAodGhlaXIgY29tcGlsYXRpb24gbWF5IGhhdmUgYmVlbiBza2lwcGVkKTogdGhlIG9iamVjdHMgZXhpc3RpbmcgYXQKJiM0MzsjIHBhcnNlIHRpbWUgYXJlIG5vcm1hbCBwcmVyZXF1aXNpdGVzIC0gc28gZWRpdGluZyBhIHRlc3Qgc291cmNlIHN0aWxsCiYjNDM7IyByZWxpbmtzIHRoZSBydW5uZXIgLSB3aGlsZSB0aGUgZnVsbCBzZXQgc3RheXMgb3JkZXItb25seSB0byBkcml2ZSB0aGUKJiM0MzsjIGJ1aWxkIGF0dGVtcHRzLCBhbmQgdGhlIHdpbGRjYXJkIGluIHRoZSByZWNpcGUgcGlja3MgdXAgdGhlIHN1cnZpdm9ycwomIzQzOyMgYXQgbGluayB0aW1lLgomIzQzOyMgUHJlcmVxdWlzaXRlIG9yZGVyIGlzIGFsc28gbGluayBvcmRlciAodGVzdCBvYmplY3RzLCBleHRyYSBvYmplY3RzLAomIzQzOyMgbGliYnBmLCBsaWIgb2JqZWN0cykuCiYjNDM7JChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFwKJiM0MzsJCSAgICAgJChFWFRSQV9PQkpTKSAkKEJQRk9CSikgJChMSUJfT0JKUykJCVwKJiM0MzsJCSAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdAkJXAomIzQzOwkJICAgICB8IGV4dHJhcyAkKEJQRl9PQkpTKQkJCQlcCiYjNDM7CQkgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpCiYjNDM7CSQoY2FsbCBtc2csQklOQVJZLCwkQCkKJiM0MzsJJChRKSQoQ0MpICQoQ0ZMQUdTKQkJCQkJCVwKJiM0MzsJCSQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSkJXAomIzQzOwkJCSQoZmlsdGVyLW91dCAkKFRFU1RfT0JKUyksJChmaWx0ZXIgJS5hICUubywkXikpLFwKJiM0MzsJCQkkKGZpbHRlciAlLmEgJS5vLCReKSkJCQkJXAomIzQzOwkJJChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRACiYjNDM7CSQoUSlsbiAtc2YgJChpZiAkKEZMQVZPUiksLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcCiYjNDM7CQkgICAkKFJESVIpL2JwZnRvb2wKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5lMjM0ZjNhNTdkNDZiZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2gKQEAgLTAsMCAmIzQzOzEsOTMgQEAKJiM0MzsjIS9iaW4vYmFzaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBMaW5rIEJQRiBvYmplY3QgZmlsZShzKSB3aXRoICYjMzQ7YnBmdG9vbCBnZW4gb2JqZWN0JiMzNDsgYW5kIGdlbmVyYXRlIGEKJiM0MzsjIHNrZWxldG9uIChvciBsaWdodCBza2VsZXRvbikgaGVhZGVyIGZyb20gdGhlIHJlc3VsdC4KJiM0MzsjCiYjNDM7IyBVc2FnZToKJiM0MzsjICAgQlBGVE9PTD0mbHQ7YnBmdG9vbCZndDsgZ2VuX2JwZl9za2VsLnNoIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLgomIzQzOyMKJiM0MzsjICAgLS1uYW1lIE5BTUUgICAgICAgc2tlbGV0b24gb2JqZWN0IG5hbWUgKCYjMzQ7bmFtZSBOQU1FJiMzNDsgZm9yIGJwZnRvb2wpCiYjNDM7IyAgIC0tc2tlbCBPVVQgICAgICAgIG91dHB1dCBoZWFkZXIgKCYjMzQ7Zm9vLnNrZWwuaCYjMzQ7IG9yICYjMzQ7Zm9vLmxza2VsLmgmIzM0OykKJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVAomIzQzOyMgICAtLWxza2VsICAgICAgICAgICBnZW5lcmF0ZSBhIGxpZ2h0IHNrZWxldG9uIChicGZ0b29sIGdlbiBza2VsZXRvbiAtTCkKJiM0MzsjICAgLS1zaWduICAgICAgICAgICAgc2lnbiB0aGUgKGxpZ2h0KSBza2VsZXRvbiwgd2l0aCB0aGUga2V5IGFuZAomIzQzOyMgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSB0YWtlbiBmcm9tICRQUklWQVRFX0tFWSBhbmQKJiM0MzsjICAgICAgICAgICAgICAgICAgICAgJFZFUklGSUNBVElPTl9DRVJUCiYjNDM7IwomIzQzOyMgVGhlIGlucHV0cyBhcmUgbGlua2VkIHRocmVlIHRpbWVzIGFuZCB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0cwomIzQzOyMgY29tcGFyZWQsIGFzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgZGV0ZXJtaW5pc20gb2YgJiMzNDticGZ0b29sIGdlbgomIzQzOyMgb2JqZWN0JiMzNDsuCiYjNDM7IwomIzQzOyMgSW50ZXJtZWRpYXRlIGZpbGVzIGNhcnJ5IGEgJiMzNDtsaW5rZWQmIzM0OyBpbmZpeCAtICYjMzQ7bGxpbmtlZCYjMzQ7IGZvciBsaWdodCBvcgomIzQzOyMgc2lnbmVkIHNrZWxldG9ucywgc28gZ2VuZXJhdGluZyBhIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGUKJiM0MzsjIHNhbWUgLmJwZi5vIGluIHBhcmFsbGVsIG5ldmVyIHJhY2VzIG9uIHRoZSBpbnRlcm1lZGlhdGVzLgomIzQzOyMKJiM0MzsjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuCiYjNDM7IyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0CiYjNDM7IyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXImIzM5O3MgYnVzaW5lc3MKJiM0MzsjIChzZWUgc2tpcF9vbl9mYWlsIGluIE1ha2VmaWxlLmJ1aWxkdmFycykuCiYjNDM7CiYjNDM7c2V0IC11CiYjNDM7CiYjNDM7YnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9CiYjNDM7bmFtZT0mIzM5OyYjMzk7IHNrZWw9JiMzOTsmIzM5OyBzdWJza2VsPSYjMzk7JiMzOTsKJiM0Mztsc2tlbD0wIHNpZ249MAomIzQzOwomIzQzO3doaWxlIFsgJCMgLWd0IDAgXTsgZG8KJiM0MzsJY2FzZSAmIzM0OyQxJiMzNDsgaW4KJiM0MzsJLS1uYW1lKQkJbmFtZT0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXNrZWwpCQlza2VsPSQyOyBzaGlmdCAyIDs7CiYjNDM7CS0tc3Vic2tlbCkJc3Vic2tlbD0kMjsgc2hpZnQgMiA7OwomIzQzOwktLWxza2VsKQlsc2tlbD0xOyBzaGlmdCA7OwomIzQzOwktLXNpZ24pCQlzaWduPTE7IHNoaWZ0IDs7CiYjNDM7CS0tKQkJc2hpZnQ7IGJyZWFrIDs7CiYjNDM7CS0qKQkJZWNobyAmIzM0OyQwOiB1bmtub3duIG9wdGlvbjogJDEmIzM0OyAmZ3Q7JmFtcDsyOyBleGl0IDEgOzsKJiM0MzsJKikJCWJyZWFrIDs7CiYjNDM7CWVzYWMKJiM0Mztkb25lCiYjNDM7CiYjNDM7aWYgWyAteiAmIzM0OyRuYW1lJiMzNDsgXSB8fCBbIC16ICYjMzQ7JHNrZWwmIzM0OyBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlbgomIzQzOwllY2hvICYjMzQ7dXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLiYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJZXhpdCAxCiYjNDM7ZmkKJiM0MzsKJiM0MztpbmZpeD1saW5rZWQKJiM0MztpZiBbICYjMzQ7JGxza2VsJiMzNDsgLWVxIDEgXSB8fCBbICYjMzQ7JHNpZ24mIzM0OyAtZXEgMSBdOyB0aGVuCiYjNDM7CWluZml4PWxsaW5rZWQKJiM0MztmaQomIzQzOwomIzQzO2Jhc2U9JHtza2VsJS5za2VsLmh9CiYjNDM7YmFzZT0ke2Jhc2UlLmxza2VsLmh9CiYjNDM7dDE9JGJhc2UuJHtpbmZpeH0xLm8KJiM0Mzt0Mj0kYmFzZS4ke2luZml4fTIubwomIzQzO3QzPSRiYXNlLiR7aW5maXh9My5vCiYjNDM7CiYjNDM7ZmFpbCgpIHsKJiM0MzsJcm0gLWYgJiMzNDskc2tlbCYjMzQ7ICR7c3Vic2tlbDomIzQzOyYjMzQ7JHN1YnNrZWwmIzM0O30gJiMzNDskdDEmIzM0OyAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQzJiMzNDsKJiM0MzsJZXhpdCAxCiYjNDM7fQomIzQzOwomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gb2JqZWN0ICYjMzQ7JHQxJiMzNDsgJiMzNDskQCYjMzQ7IHx8IGZhaWwKJiM0MzsmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIG9iamVjdCAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQxJiMzNDsgfHwgZmFpbAomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gb2JqZWN0ICYjMzQ7JHQzJiMzNDsgJiMzNDskdDImIzM0OyB8fCBmYWlsCiYjNDM7aWYgISBjbXAgLXMgJiMzNDskdDImIzM0OyAmIzM0OyR0MyYjMzQ7OyB0aGVuCiYjNDM7CWVjaG8gJiMzNDskMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbCYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJZmFpbAomIzQzO2ZpCiYjNDM7CiYjNDM7YXJncz0oKQomIzQzO2lmIFsgJiMzNDskc2lnbiYjMzQ7IC1lcSAxIF07IHRoZW4KJiM0MzsJYXJncyYjNDM7PSgtUyAtayAmIzM0OyR7UFJJVkFURV9LRVk6P30mIzM0OyAtaSAmIzM0OyR7VkVSSUZJQ0FUSU9OX0NFUlQ6P30mIzM0OykKJiM0MztmaQomIzQzO2lmIFsgJiMzNDskbHNrZWwmIzM0OyAtZXEgMSBdOyB0aGVuCiYjNDM7CWFyZ3MmIzQzOz0oLUwpCiYjNDM7ZmkKJiM0MzsmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIHNrZWxldG9uICR7YXJnc1tAXSYjNDM7JiMzNDske2FyZ3NbQF19JiMzNDt9ICYjMzQ7JHQzJiMzNDsgbmFtZSAmIzM0OyRuYW1lJiMzNDsgJmd0OyAmIzM0OyRza2VsJiMzNDsgfHwgZmFpbAomIzQzOwomIzQzO2lmIFsgLW4gJiMzNDskc3Vic2tlbCYjMzQ7IF07IHRoZW4KJiM0MzsJJiMzNDskYnBmdG9vbCYjMzQ7IGdlbiBzdWJza2VsZXRvbiAmIzM0OyR0MyYjMzQ7IG5hbWUgJiMzNDskbmFtZSYjMzQ7ICZndDsgJiMzNDskc3Vic2tlbCYjMzQ7IHx8IGZhaWwKJiM0MztmaQomIzQzOwomIzQzO3JtIC1mICYjMzQ7JHQxJiMzNDsgJiMzNDskdDImIzM0OyAmIzM0OyR0MyYjMzQ7CiYjNDM7ZXhpdCAwCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NDc5CgkJCQkJCQlvdXRwdXQ6IDc3CgkJCQkJCQl0aG91Z2h0czogMzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIEJQRiBzZWxmdGVzdHMgTWFrZWZpbGVzLiBJdCBzZWVtcyB0byBiZSBicmVha2luZyBkb3duIGEgbW9ub2xpdGhpYyBgTWFrZWZpbGVgIGludG8gc21hbGxlciwgbW9yZSBtYW5hZ2VhYmxlIHBpZWNlczogYE1ha2VmaWxlYCwgYE1ha2VmaWxlLmJ1aWxkdmFyc2AsIGFuZCBgTWFrZWZpbGUucnVubmVyYC4gIFRoZXJlJiMzOTtzIGFsc28gYSBuZXcgc2hlbGwgc2NyaXB0LCBgZ2VuX2JwZl9za2VsLnNoYCwgZm9yIHNrZWxldG9uIGdlbmVyYXRpb24uIFRoaXMgd2hvbGUgdGhpbmcgc2NyZWFtcyAmIzM0O2J1aWxkIHN5c3RlbSBhbmQgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlJiMzNDsgdG8gbWUuCgpDcnVjaWFsbHksIGl0ICpkb2VzbiYjMzk7dCogdG91Y2ggYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBldmVuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlLiBUaGVyZSYjMzk7cyB6ZXJvIG1vZGlmaWNhdGlvbiBvZiBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS4gU28sIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGludHJvZHVjZSBhbnl0aGluZyBuZXcgdG8gdGhlIGZ1enppbmcgc3VyZmFjZT8gQWJzb2x1dGVseSBub3QuIFRoaXMgaXMgcHVyZWx5IGEgcmVzdHJ1Y3R1cmluZyBvZiB0aGUgdGVzdGluZyBmcmFtZXdvcmsuCgpUbyBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgbW9kaWZpZWQgZmlsZXMuIE9rYXksIGl0JiMzOTtzIGp1c3QgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZWAsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzYCwgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJgLCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hgLiBZdXAsIGFsbCBvZiB0aGVtIGFyZSB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCBkaXJlY3RvcnkuCgpCYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCB0aGVyZSYjMzk7cyBub3RoaW5nIGhlcmUgdGhhdCYjMzk7cyByZW1vdGVseSByZWxldmFudCB0byBmdXp6aW5nIGtlcm5lbCBmdW5jdGlvbmFsaXR5LiBTbywgdGhlIG9ubHkgbG9naWNhbCBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuIEkmIzM5O20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA4OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KSBmb3IgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzg6MzEuNTU1ODc3OTY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM3OTk1NjE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KSBmb3IgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM4OjMxLjU1NTg4NDE2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQwMTkzMDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzNkMzEzZjJjYjE3YzYxYzhlNmRkNjM5MjQxMWNjZjRlYTMyZGJmZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwODozODoyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG5pbmRleCA1NWQzOTQ0Mzg3MDVhNi4uMDljZmY2OTNiN2Q3ODIgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuQEAgLTEsOTYgKzEsMzIgQEBcXG4gIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgRXZlcnl0aGluZyB0aGF0IGV4aXN0cyBvbmNlIGxpdmVzIGhlcmU6IHRvb2xjaGFpbiBzZXR1cCwgdG9vbFxcbisjIHN1Yi1idWlsZHMsIHZtbGludXguaCwgc2hhcmVkIGhlbHBlciBvYmplY3RzLCBzdGFuZGFsb25lIGJpbmFyaWVzIGFuZFxcbisjIHRoZSBsaWIubWsgY29udHJhY3QuIEVhY2ggdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MgYW5kIGl0c1xcbisjIGZsYXZvcnMsIHRlc3RfbWFwcykgaXMgYnVpbHQgYnkgaXRzIG93biBNYWtlZmlsZS5ydW5uZXIgc3ViLW1ha2U7XFxuKyMgc2hhcmVkIGRlZmluaXRpb25zIGxpdmUgaW4gTWFrZWZpbGUuYnVpbGR2YXJzLlxcbitcXG4gaW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXFxuIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoXFxuIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlXFxuIFxcbi1DWFggPz0gJChDUk9TU19DT01QSUxFKWcrK1xcbi1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XFxuLVxcbi1DVVJESVIgOj0gJChhYnNwYXRoIC4pXFxuLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcXG4tTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxcbi1CUEZESVIgOj0gJChMSUJESVIpL2JwZlxcbi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXFxuLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxcbi1CUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sXFxuLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXFxuLWlmbmVxICgkKE8pLClcXG4tR0VORElSIDo9ICQoTykvaW5jbHVkZS9nZW5lcmF0ZWRcXG4tZWxzZVxcbi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKVxcbi1lbmRpZlxcbi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcXG4tUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xcbiBcXG4taWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXFxuLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxcbisjIE5lZWRlZCBiZWZvcmUgbGliLm1rIGlzIGluY2x1ZGVkIChnYXRlcyB0aGUgZmxhdm9yIGxpc3QgYmVsb3cpLCB3aGljaFxcbisjIGlzIGFsc28gd2h5IGl0IGNhbm5vdCBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy5cXG4raWZlcSAoJChvcmlnaW4gQlBGX0dDQyksdW5kZWZpbmVkKVxcbitCUEZfR0NDIDo9ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcXG4gZW5kaWZcXG4gXFxuLUJQRl9HQ0NcXHRcXHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXFxuLWlmZGVmIEFTQU5cXG4tU0FOX0NGTEFHUyBcXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXG4tZWxzZVxcbi1TQU5fQ0ZMQUdTXFx0Pz1cXG4tZW5kaWZcXG4tU0FOX0xERkxBR1NcXHQ/PSAkKFNBTl9DRkxBR1MpXFxuLVJFTEVBU0VcXHRcXHQ/PVxcbi1PUFRfRkxBR1NcXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcXG4tXFxuLUxJQkVMRl9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcXHUwMDNlL2Rldi9udWxsKVxcbi1MSUJFTEZfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXFxuLVxcbiBTS0lQX0RPQ1NcXHQ/PVxcbiBTS0lQX0xMVk1cXHQ/PVxcbiBTS0lQX0xJQkJGRFxcdD89XFxuIFNLSVBfQ1JZUFRPXFx0Pz1cXG4gXFxuLSMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yXFxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXFxuLSMgYW5kIGNvbnRpbnVlIGJ1aWxkaW5nIHRoZSByZW1haW5pbmcgdGVzdHMuXFxuLUJQRl9TVFJJQ1RfQlVJTEQgPz0gMVxcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcXG4tXFxuLWlmZXEgKCQoc3JjdHJlZSksKVxcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbi1lbmRpZlxcbiBcXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXFx0XFx0XFx0XFxcXFxcbi1cXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcXHRcXHRcXFxcXFxuLVxcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVxcdFxcXFxcXG4tXFx0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXFxuLUxERkxBR1MgKz0gJChTQU5fTERGTEFHUylcXG4tTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxcbi1cXG4tUENBUF9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbCBcXHUwMDI2XFx1MDAyNiBlY2hvIFxcXCItRFRSQUZGSUNfTU9OSVRPUj0xXFxcIilcXG4tUENBUF9MSUJTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcXHUwMDNlL2Rldi9udWxsKVxcbi1MRExJQlMgKz0gJChQQ0FQX0xJQlMpXFxuLUNGTEFHUyArPSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXFxuLVxcbi0jIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzXFxuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXFxuLVxcbi1pZm5lcSAoJChMTFZNKSwpXFxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xcbi1DRkxBR1MgKz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XFxuLWVuZGlmXFxuLVxcbi0jIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXFxuIGlmbmVxICgkKHNoZWxsICQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtbWNwdT1oZWxwIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwICd2NCcpLClcXG4gQ0xBTkdfQ1BVVjQgOj0gMVxcbiBlbmRpZlxcbiBcXG4tIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXFxuLUNMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXFxcXG4tXFx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcXFxcbi1cXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxcXFxuLVxcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyAxKVxcbi1cXG4gIyBPcmRlciBjb3JyZXNwb25kIHRvICdtYWtlIHJ1bl90ZXN0cycgb3JkZXJcXG4gVEVTVF9HRU5fUFJPR1MgPSB0ZXN0X3ZlcmlmaWVyIHRlc3RfdGFnIHRlc3RfbWFwcyB0ZXN0X2xydV9tYXAgdGVzdF9wcm9ncyBcXFxcXFxuIFxcdHRlc3Rfc29ja21hcCBcXFxcXFxuQEAgLTEwMiwxNiArMzgsNiBAQCBURVNUX0lOU1RfU1VCRElSUyA6PSBub19hbHUzMlxcbiBpZm5lcSAoJChCUEZfR0NDKSwpXFxuIFRFU1RfR0VOX1BST0dTICs9IHRlc3RfcHJvZ3MtYnBmX2djY1xcbiBURVNUX0lOU1RfU1VCRElSUyArPSBicGZfZ2NjXFxuLVxcbi0jIFRoZSBmb2xsb3dpbmcgdGVzdHMgY29udGFpbiBDIGNvZGUgdGhhdCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgbGVnYWwsXFxuLSMgdHJpZ2dlcnMgR0NDIHdhcm5pbmdzIHRoYXQgY2Fubm90IGJlIGRpc2FibGVkOiBkZWNsYXJhdGlvbiBvZlxcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tXFxuIGVuZGlmXFxuIFxcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxcbkBAIC0yMTMsMjEgKzEzOSw4IEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKVxcbiBlbmRpZlxcbiBlbmRpZlxcbiBcXG4tU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXFxuLUJVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxcbi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXFxuLUJQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4tSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxcbi1IT1NUX1NDUkFUQ0hfRElSXFx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcXG4tSE9TVF9JTkNMVURFX0RJUlxcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxcbi1lbHNlXFxuLUhPU1RfQlVJTERfRElSXFx0XFx0Oj0gJChCVUlMRF9ESVIpXFxuLUhPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKFNDUkFUQ0hfRElSKVxcbi1IT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChJTkNMVURFX0RJUilcXG4tZW5kaWZcXG4tSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuLVJFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXFxuK2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzXFxuK1xcbiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0ICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KVxcdFxcXFxcXG4gXFx0XFx0ICAgICAuLi8uLi8uLi8uLi92bWxpbnV4XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0yNDIsNyArMTU1LDcgQEAgZW5kaWZcXG4gIyB0byBidWlsZCBpbmRpdmlkdWFsIHRlc3RzLlxcbiAjIE5PVEU6IFNlbWljb2xvbiBhdCB0aGUgZW5kIGlzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIGxpYi5taydzIGRlZmF1bHQgc3RhdGljXFxuICMgcnVsZSBmb3IgYmluYXJpZXMuXFxuLSQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcXHRcXHRcXHRcXHRcXFxcXFxuKyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7XFxuIFxcbiAjIHNvcnQgcmVtb3ZlcyBsaWJicGYgZHVwbGljYXRlcyB3aGVuIG5vdCBjcm9zcy1idWlsZGluZ1xcbkBAIC0yNTYsMTEgKzE2OSwxNCBAQCAkKE1BS0VfRElSUyk6XFxuIFxcbiAkKE9VVFBVVCkvJS5vOiAlLmNcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEBcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pIC1vICRAXFxuIFxcbisjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcXG4rIyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXFxuKyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS5cXG4gJChPVVRQVVQpLyU6JS5jXFxuIFxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4tXFx0JChRKSQoTElOSy5jKSAkXiAkKExETElCUykgLW8gJEBcXG4rXFx0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuICMgTExWTSdzIGxkLmxsZCBkb2Vzbid0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODZcXG4gaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpXFxuQEAgLTMxNCwxNiArMjMwLDYgQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpXFxuIFxcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcXG4gXFxuIFxcbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1DUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxcbi1VU0VfQk9PVFNUUkFQIDo9IFxcXCJcXFwiXFxuLWVsc2VcXG4tVFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKVxcbi1VU0VfQk9PVFNUUkFQIDo9IFxcXCJib290c3RyYXAvXFxcIlxcbi1lbmRpZlxcbi1cXG4gJChURVNUX0dFTl9QUk9HUykgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCk6ICQoQlBGT0JKKVxcbiBcXG4gVEVTVElOR19IRUxQRVJTXFx0Oj0gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXFxuQEAgLTM0NCw3ICsyNTAsMzkgQEAgJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXFxuICQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiAkKFRFU1RJTkdfSEVMUEVSUykgJChDQVBfSEVMUEVSUykgJChVTlBSSVZfSEVMUEVSUylcXG4gJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcXG4gXFxuLUJQRlRPT0wgPz0gJChERUZBVUxUX0JQRlRPT0wpXFxuKyMgQWxsIGhlbHBlciBvYmplY3RzIGEgcnVubmVyIGluc3RhbmNlIGxpbmtzLCBwcmUtYnVpbHQgaGVyZSBzbyBydW5uZXJcXG4rIyBzdWItbWFrZXMgc2hhcmluZyAkKE9VVFBVVCkgbmV2ZXIgY29tcGlsZSB0aGVtIGNvbmN1cnJlbnRseS5cXG4rSEVMUEVSX09CSlMgOj0gJChURVNUSU5HX0hFTFBFUlMpICQoQ0dST1VQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXFx0XFxcXFxcbitcXHQgICAgICAgJChUUkFDRV9IRUxQRVJTKSAkKEpTT05fV1JJVEVSKSAkKENBUF9IRUxQRVJTKVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQoTkVUV09SS19IRUxQRVJTKSAkKE9VVFBVVCkvdXNkdF8xLm8gJChPVVRQVVQpL3VzZHRfMi5vXFx0XFxcXFxcbitcXHQgICAgICAgJChPVVRQVVQpL3hzay5vXFxuK1xcbisjICQoQlBGVE9PTCkgaXMgYSBwcmVyZXF1aXNpdGUgYmVjYXVzZSBpdHMgc3ViLW1ha2UgaXMgd2hhdCBpbnN0YWxsc1xcbisjIGxpYmJwZidzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50b1xcbisjICQoSU5DTFVERV9ESVIpOyB3aXRob3V0IGl0LCBoZWxwZXJzIGluY2x1ZGluZyB0aG9zZSBoZWFkZXJzIHJhY2UgdGhlXFxuKyMgaW5zdGFsbCBhbmQgY2FuIHNpbGVudGx5IHBpY2sgdXAgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLlxcbisjXFxuKyMgSW52YXJpYW50OiB0aGlzIGxpc3QgbXVzdCBiZSBhIHN1cGVyc2V0IG9mIGV2ZXJ5IHByZXJlcXVpc2l0ZSB0aGVcXG4rIyBydW5uZXIncyBFWFRSQV9PQkpTIHJ1bGUgYXR0YWNoZXMgdG8gdGhlc2Ugc2FtZSBvYmplY3RzIChFWFRSQV9IRFJTLFxcbisjIGJvdGggdGVzdHMuaCBmbGF2b3JzLCAkKEJQRk9CSikpLiBJdCBndWFyYW50ZWVzIHRoZSBoZWxwZXJzIGJ1aWx0XFxuKyMgaGVyZSBhcmUgbmV2ZXIgb2xkZXIgdGhhbiBhIHJ1bm5lci1zaWRlIHByZXJlcXVpc2l0ZSwgc28gdGhlXFxuKyMgdW5mbGF2b3JlZCB0ZXN0X3Byb2dzIGFuZCB0ZXN0X21hcHMgc3ViLW1ha2VzLCB3aGljaCBzaGFyZSAkKE9VVFBVVCksXFxuKyMgdHJlYXQgdGhlbSBhcyB1cCB0byBkYXRlIGluc3RlYWQgb2YgYm90aCByZWNvbXBpbGluZyB0aGUgc2FtZSBvYmplY3RcXG4rIyBmaWxlIGNvbmN1cnJlbnRseS5cXG4rJChIRUxQRVJfT0JKUyk6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFxcdFxcdFxcXFxcXG4rXFx0XFx0JChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcXFxcXFxuK1xcdFxcdHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaCAkKEJQRk9CSikgJChCUEZUT09MKVxcbitcXG4rJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBUb29sIHN1Yi1idWlsZHM6IGJwZnRvb2wgYW5kIGxpYmJwZiAoaG9zdCBhbmQsIHdoZW4gY3Jvc3MtY29tcGlsaW5nLFxcbisjIHRhcmdldCB2YXJpYW50cykgYW5kIHJlc29sdmVfYnRmaWRzLlxcbisjXFxuKyMgTm90ZSB0aGUgZGVsaWJlcmF0ZSBhc3ltbWV0cnk6IHRoZSBob3N0IGxpYmJwZiBidWlsZHMgd2l0aG91dFxcbisjIHNhbml0aXplcnMgYW5kIHdpdGggdGhlIGhvc3QgdG9vbGNoYWluLlxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4gJChERUZBVUxUX0JQRlRPT0wpOiAkKHdpbGRjYXJkICQoQlBGVE9PTERJUikvKi5bY2hdICQoQlBGVE9PTERJUikvTWFrZWZpbGUpICAgIFxcXFxcXG4gXFx0XFx0ICAgICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvYnBmdG9vbFxcbiBcXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKSAgLUMgJChCUEZUT09MRElSKVxcdFxcdFxcdCAgICAgICBcXFxcXFxuQEAgLTQxMiw3ICszNTAsNyBAQCBlbmRpZlxcbiBcXG4gIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG9cXG4gIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2ZcXG4tIyAkKFRSVU5ORVJfQlBGX09CSlMpXFxuKyMgQlBGIG9iamVjdHMuXFxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXFxuIGlmZXEgKCQoVk1MSU5VWF9IKSwpXFxuIFxcdCQoY2FsbCBtc2csR0VOLCwkQClcXG5AQCAtNDM3LDM3NCArMzc1LDExIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXFx0XFxcXFxcbiBcXHRcXHRIT1NUUEtHX0NPTkZJRz0nJChQS0dfQ09ORklHKScgXFxcXFxcbiBcXHRcXHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxcbiBcXG4tIyBHZXQgQ2xhbmcncyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnlcXG4tIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcXFwibWlzc2luZ1xcXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxcbi0jXFxuLSMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXFxuLWRlZmluZSBnZXRfc3lzX2luY2x1ZGVzXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXFx1MDAzYy9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIFxcXFxcXG4tXFx0fCBzZWQgLW4gJy9cXHUwMDNjLi4uXFx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcXFwoLy4qXFxcXCl8LWlkaXJhZnRlciBcXFxcMXxwIH0nKSBcXFxcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX3Jpc2N2X3hsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMsICQkMyl9JykgXFxcXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMpfScpIFxcXFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXFxcIi1EJXM9JXMgXFxcIiwgJCQyLCAkJDMpfScpXFxuLWVuZGVmXFxuLVxcbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cXG4tSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBcXFxcXFxuLVxcdFxcdFxcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXFxuLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxcbi1CUEZfVEFSR0VUX0VORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC0tdGFyZ2V0PWJwZmVsLC0tdGFyZ2V0PWJwZmViKVxcbi1cXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1DTEFOR19UQVJHRVRfQVJDSCA9IC0tdGFyZ2V0PSQobm90ZGlyICQoQ1JPU1NfQ09NUElMRTolLT0lKSlcXG4tZW5kaWZcXG4tXFxuLUNMQU5HX1NZU19JTkNMVURFUyA9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXFx0XFxcXFxcbi1cXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgI1xcbi0jIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbi1cXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuLVxcbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tXFxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcbi1cXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXFxuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXFxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxcbi0jICQzIC0gQ0ZMQUdTXFxuLSMgJDQgLSBiaW5hcnkgbmFtZVxcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcXG4tXFx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcXHUwMDNlXFx1MDAyNjIpKVxcbi1lbmRlZlxcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXFxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcXG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xcbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tXFxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcXG4tXFxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcXHRcXHRcXFxcXFxuLVxcdFxcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuLVxcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuLVxcbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXFx0XFxcXFxcbi1cXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1xcdFxcdFxcdFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXFxuLVxcbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xcbi1cXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXFxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXFxcXG4tXFx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuY1xcbi1TS0VMX0JMQUNLTElTVCArPSAkJChMU0tFTFMpICQkKExTS0VMU19TSUdORUQpXFxuLVxcbi10ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXFxuLWxpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xcbi1saW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXFxuLSMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXFxuLSMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxcbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXFxuLXRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYub1xcbi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXFxuLXhkcF9od19tZXRhZGF0YS5za2VsLmgtZGVwcyA6PSB4ZHBfaHdfbWV0YWRhdGEuYnBmLm9cXG4teGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYub1xcbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi1cXG4tTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpXFxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcXG4tXFxuLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSlcXHRcXFxcXFxuLVxcdFxcdFxcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXFx0YnBmX2NvcmVfcmVhZC5oXFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICAgICAgICAgICAgICAgICAgICBicGZfZW5kaWFuLmhcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdFxcdFxcdGJwZl9oZWxwZXJzLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXFxuLVxcbi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCBcXFwidGVtcG9yYXJ5XFxcIiB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IChyZWxpZXMgb25cXG4tIyAkZXZhbCgpKSBhbmQgcGFzcyBjb250cm9sIHRvIERFRklORV9URVNUX1JVTk5FUl9SVUxFUy5cXG4tIyBQYXJhbWV0ZXJzOlxcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcXG4tIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhIFxcXCJmbGF2b3JcXFwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YylcXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUlxcbi1cXG4tTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKVxcbi1UUlVOTkVSX09VVFBVVCA6PSAkKE9VVFBVVCkkKGlmICQyLC8pJDJcXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcXG4tVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubyxcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXFxuLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpXFxuLVRSVU5ORVJfTElCX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHQgJCQoZmlsdGVyICUuYywkKFRSVU5ORVJfTElCX1NPVVJDRVMpKSlcXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxcbi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oXFxuLVRSVU5ORVJfQlBGX1NSQ1MgOj0gJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmMpKVxcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXFxuLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsXFx0XFxcXFxcbi1cXHRcXHRcXHRcXHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICAgJCQoVFJVTk5FUl9CUEZfU1JDUykpKVxcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcXG4tVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSlcXG4tVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTX1NJR05FRCkpXFxuLVRFU1RfR0VOX0ZJTEVTICs9ICQkKFRSVU5ORVJfQlBGX09CSlMpXFxuLVxcbi0jIEV2YWx1YXRlIHJ1bGVzIG5vdyB3aXRoIGV4dHJhIFRSVU5ORVJfWFhYIHZhcmlhYmxlcyBhYm92ZSBhbHJlYWR5IGRlZmluZWRcXG4tJCQoZXZhbCAkJChjYWxsIERFRklORV9URVNUX1JVTk5FUl9SVUxFUywkMSwkMikpXFxuLVxcbi1lbmRlZlxcbi1cXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxcbi0jIHNldCB1cCBieSBERUZJTkVfVEVTVF9SVU5ORVIgaXRzZWxmLCBjcmVhdGUgdGVzdCBydW5uZXIgYnVpbGQgcnVsZXMgd2l0aDpcXG4tIyAkMSAtIHRlc3QgcnVubmVyIGJhc2UgYmluYXJ5IG5hbWUgKGUuZy4sIHRlc3RfcHJvZ3MpXFxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcXFwiZmxhdm9yXFxcIiAoZS5nLiwgbm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjLCBldGMpXFxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcXG4tXFxuLSMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHlcXG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3RcXG4tIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxcbi0jIFRoZSBjaGVjayBpcyBpbmxpbmVkIHBlci1ydW5uZXIgc28gJDEgaXMgc3Vic3RpdHV0ZWQgYXQgJChjYWxsKSB0aW1lIGFuZFxcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUncyByZWNpcGUuXFxuLVxcbi1pZmVxICgkKCQoVFJVTk5FUl9PVVRQVVQpLWRpciksKVxcbi0kKFRSVU5ORVJfT1VUUFVUKS1kaXIgOj0geVxcbi0kKFRSVU5ORVJfT1VUUFVUKTpcXG4tXFx0JCQoY2FsbCBtc2csTUtESVIsLCQkQClcXG4tXFx0JChRKW1rZGlyIC1wICQkQFxcbi1lbmRpZlxcbi1cXG4tIyBlbnN1cmUgd2Ugc2V0IHVwIEJQRiBvYmplY3RzIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UgZm9yIGEgZ2l2ZW5cXG4tIyBpbnB1dC9vdXRwdXQgZGlyZWN0b3J5IGNvbWJpbmF0aW9uXFxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcXG4tJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMgOj0geVxcbi0kKFRSVU5ORVJfQlBGX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vOlxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvJS5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8qLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcXG4tXFx0JCQoY2FsbCAkKFRSVU5ORVJfQlBGX0JVSUxEX1JVTEUpLCQkXFx1MDAzYywkJEAsXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICQoVFJVTk5FUl9CUEZfQ0ZMQUdTKSAgICAgICAgIFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0ICAkJCgkJFxcdTAwM2MtQ0ZMQUdTKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0ICAkJCgkJFxcdTAwM2MtJDItQ0ZMQUdTKSwkKFRSVU5ORVJfQklOQVJZKSlcXG4tXFxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcXG4tXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcXHUwMDNjIF07IHRoZW5cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHRcXHRleGl0IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRmaTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcXHUwMDNjIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChcXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPSkpIFxcdTAwM2UgJCRAIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89KSkgXFx1MDAzZSAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubylcXG4tXFxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFxcdTAwM2MgXTsgdGhlblxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0XFx0ZXhpdCAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0Zmk7KVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFxcdTAwM2MgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFxcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubylcXG4tXFxuLSQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCk6ICUubHNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcXG4tXFx0JChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCRcXHUwMDNjIF07IHRoZW5cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEA7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGZpOylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSkgKHNpZ25lZCldICQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCRcXHUwMDNjIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQxLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdGRpZmYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkKExTS0VMX1NJR04pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFxcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFxcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDsgXFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0cm0gLWYgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubylcXG4tXFxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxcbi1cXG4tIyAuU0VDT05ERVhQQU5TSU9OIGhlcmUgYWxsb3dzIHRvIGNvcnJlY3RseSBleHBhbmQgJS1kZXBzIHZhcmlhYmxlcyBhcyBwcmVyZXF1aXNpdGVzXFxuLS5TRUNPTkRFWFBBTlNJT046XFxuLSQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKTogJChUUlVOTkVSX09VVFBVVCkvJTogJCQkJCglLWRlcHMpICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcXFxcbi1cXHRcXHRpZiBbICEgLWYgJCQkJGYgXTsgdGhlblxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdGZpO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ZG9uZTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0xJTkstQlBGJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdGRpZmYgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjIgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcXHUwMDNlICQkQCBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFxcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdH0pIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxcbi1cXG4tIyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90XFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xcbi0jIGZpbGUuIHZwYXRoIGRpcmVjdGl2ZXMgYmVsb3cgaW5zdHJ1Y3QgbWFrZSB0byBzZWFyY2ggZm9yIHNrZWwgZmlsZXNcXG4tIyBpbiBUUlVOTkVSX09VVFBVVCwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Llxcbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxcbi12cGF0aCAlLmxza2VsLmggJChUUlVOTkVSX09VVFBVVClcXG4tdnBhdGggJS5zdWJza2VsLmggJChUUlVOTkVSX09VVFBVVClcXG4tXFxuLWVuZGlmXFxuLVxcbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxcbi1pZmVxICgkKCQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciksKVxcbi0kKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIgOj0geVxcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXFxuLVxcdCQkKGNhbGwgbXNnLFRFU1QtSERSLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JCQoc2hlbGwgKGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgc2VkIC1uIC1FICdzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10rKVxcXFwoKHZvaWQpP1xcXFwpLiovREVGSU5FX1RFU1QoXFxcXDIpL3AnXFx0XFxcXFxcbi1cXHRcXHRcXHQkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMgfCBzb3J0IDtcXHRcXFxcXFxuLVxcdFxcdCApIFxcdTAwM2UgJCRAKVxcbi1lbmRpZlxcbi1cXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYub1xcbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXFxuLVxcbi0jIGNvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzXFxuLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kXFxuLSQoVFJVTk5FUl9URVNUX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubzpcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1xcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZFxcbi1cXHQkJChjYWxsIG1zZyxURVNULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXFxuLVxcdCQoUSkoY2QgJCQoQEQpIFxcdTAwMjZcXHUwMDI2ICQkKENDKSAtSS4gJCQoQ0ZMQUdTKSAtTU1EIC1NVCAkJEAgLWMgJChDVVJESVIpLyQkXFx1MDAzYyAkJChMRExJQlMpIC1vICQkKEBGKSkgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLVRFU1QnICckJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MikpKVxcbi1cXHQkJChpZiAkJChURVNUX05FRURTX0JURklEUyksXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQkKFEpaWYgWyAtZiAkJEAgXTsgdGhlblxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcXFxuJyBcXFwiQlRGSURTXFxcIiBcXFwiIFskKFRSVU5ORVJfQklOQVJZKV1cXFwiIFxcXCIkJChub3RkaXIgJCRAKVxcXCIpOyBcXFxcXFxuLVxcdFxcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vICQkQDtcXHRcXFxcXFxuLVxcdFxcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDtcXHRcXHRcXFxcXFxuLVxcdFxcdGZpKVxcbi1cXG4tJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOlxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKVxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKVxcbi1cXG4taWZlcSAoJChmaWx0ZXIgY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzLCQoTUFLRUNNREdPQUxTKSksKVxcbi1pbmNsdWRlICQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCkpXFxuLWVuZGlmXFxuLVxcbi0jIGFkZCBwZXIgZXh0cmEgb2JqIENGR0xBR1MgZGVmaW5pdGlvbnNcXG4tJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLFxcdFxcXFxcXG4tXFx0JChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICs9ICQoJChOKS5jLUNGTEFHUykpKVxcbi1cXG4tJChUUlVOTkVSX0VYVFJBX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJS5jXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkXFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxcbi1cXG4tJChUUlVOTkVSX0xJQl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOiQoVE9PTFNESVIpL2xpYi8lLmNcXG4tXFx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXFxuLVxcdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFxcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcXG4tXFxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXFxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxcbi0kKFRSVU5ORVJfQklOQVJZKS1leHRyYXM6ICQoVFJVTk5FUl9FWFRSQV9GSUxFUykgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXFxuLVxcdCQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoVFJVTk5FUl9CSU5BUlkpLCQoVFJVTk5FUl9FWFRSQV9GSUxFUykpXFxuLVxcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xcbi1lbmRpZlxcbi1cXG4tIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlc1xcbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKVxcbi1cXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSlcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChUUlVOTkVSX0VYVFJBX09CSlMpICQkKEJQRk9CSilcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChUUlVOTkVSX0xJQl9PQkpTKVxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKFRSVU5ORVJfQlBGVE9PTClcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChPVVRQVVQpL3ZlcmlzdGF0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXFxuLVxcdCQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKVxcbi1cXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRAXFxuLVxcdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXFxcXG4tXFx0XFx0ICAgJChPVVRQVVQpLyQoaWYgJDIsJDIvKWJwZnRvb2xcXG4tXFxuLWVuZGVmXFxuLVxcbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXFxuLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4tVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXFxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cXG4tXFxuLSQoVkVSSUZJQ0FUSU9OX0NFUlQpICQoUFJJVkFURV9LRVkpOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuKyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90XFxuKyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZVxcbisjIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybSBpcyBpbXBsaWNpdGx5IGdyb3VwZWQgZXZlblxcbisjIHdpdGggbWFrZSBcXHUwMDNjIDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLlxcbiskKEJVSUxEX0RJUikvJS5wZW0gJChCVUlMRF9ESVIpLyUuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuIFxcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcXG4gXFx0JChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKVxcbiBcXG5AQCAtODMzLDExNiArNDA4LDE2MiBAQCBMSUJBUkVOQV9CUEZfREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlXFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHQgbGliYXJlbmEvc2VsZnRlc3RzLypcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdCBsaWJhcmVuYS8qLmJwZi5vKVxcbiBcXG4tTElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcXG4tXFxuICQoTElCQVJFTkFfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcXG4gXFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmEuc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxcbiBcXG4gaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcXG4tTElCQVJFTkFfQVNBTl9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2FzYW4uc2tlbC5oXFxuLUNGTEFHUyArPSAtREhBU19CUEZfQVJFTkFfQVNBTlxcbi1cXG4gJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXFxuIFxcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxcbiBlbmRpZlxcbiBcXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci5cXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gcHJvZ190ZXN0c1xcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3NcXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGNncm91cF9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCB0cmFjZV9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBuZXR3b3JrX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IHRlc3RpbmdfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgYnRmX2hlbHBlcnMuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGNhcF9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCB1bnByaXZfaGVscGVycy5jIFxcdFxcXFxcXG4tXFx0XFx0XFx0IHN5c2N0bF9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBuZXRsaW5rX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IGppdF9kaXNhc21faGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgaW9faGVscGVycy5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgdGVzdF9sb2FkZXIuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IHhzay5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgZGlzYXNtLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBkaXNhc21faGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQganNvbl93cml0ZXIuYyBcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAkKFZFUklGWV9TSUdfSERSKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcdFxcXFxcXG4tXFx0XFx0XFx0IGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXFx0XFxcXFxcbi1cXHRcXHRcXHQgYnBmdG9vbF9oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCB1c2R0XzEuYyB1c2R0XzIuY1xcdFxcXFxcXG4tXFx0XFx0XFx0ICQoTElCQVJFTkFfU0tFTClcXHRcXFxcXFxuLVxcdFxcdFxcdCAkKExJQkFSRU5BX0FTQU5fU0tFTClcXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jXFxuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKE9VVFBVVCkveGRwX3N5bnByb3h5XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChPVVRQVVQpL3NpZ24tZmlsZVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFRFU1RfS01PRF9UQVJHRVRTKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgIGltYV9zZXR1cC5zaCBcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19CUEZfQlVJTERfUlVMRVxcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzKSlcXG4tXFxuLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUylcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpXFxuLVxcbi0jIERlZmluZSB0ZXN0X3Byb2dzLWNwdXY0IHRlc3QgcnVubmVyLlxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVyc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rZGVmaW5lIGdlbl90ZXN0c19oZHJcXG4rXFx0JChjYWxsIG1zZyxURVNULUhEUiwsJEApXFxuK1xcdCQoUSkoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1xcdFxcdFxcXFxcXG4rXFx0ICAgICBzZWQgLW4gLUUgJ3MvXnZvaWQgKHNlcmlhbF8pP3Rlc3RfKFthLXpBLVowLTlfXSspXFxcXCgodm9pZCk/XFxcXCkuKi9ERUZJTkVfVEVTVChcXFxcMikvcCcgXFxcXFxcbitcXHRcXHQkKEBEKS8qLmMgfCBzb3J0KSBcXHUwMDNlICRAXFxuK2VuZGVmXFxuK1xcbitwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXFxuK1xcdCQoZ2VuX3Rlc3RzX2hkcilcXG4rXFxuK21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpXFxuK1xcdCQoZ2VuX3Rlc3RzX2hkcilcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVGVzdCBydW5uZXIgaW5zdGFuY2VzLCBvbmUgc3ViLW1ha2UgZWFjaCAoc2VlIE1ha2VmaWxlLnJ1bm5lcikuXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbisjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cywgQlBGX0dDQyBhbmQgVEVTVF9LTU9EUyBhcmUgZXhwb3J0ZWRcXG4rIyB0byB0aGUgcnVubmVyIHN1Yi1tYWtlcy4gQ0MgaXMgcGFzc2VkIGV4cGxpY2l0bHkgaW5zdGVhZDogZXhwb3J0aW5nIGl0XFxuKyMgd291bGQgYWxzbyBsZWFrIGxpYi5taydzIENDIGludG8gdGhlIGxpYmJwZi9icGZ0b29sL3Jlc29sdmVfYnRmaWRzXFxuKyMgc3ViLWJ1aWxkcywgd2hpY2ggY29tcHV0ZSB0aGVpciBvd24uICgnZXhwb3J0IE5BTUUnIG9uIGFuIHVuZGVmaW5lZFxcbisjIHZhcmlhYmxlIGNyZWF0ZXMgYW4gZW1wdHkgb25lLCBzbyB0aGVzZSBzdGF5IGJlbG93IHRoZSBkZWZpbml0aW9ucy4pXFxuK2V4cG9ydCBMTFZNX0NGTEFHUyBMTFZNX0xETElCUyBMTFZNX0xERkxBR1MgQlBGX0dDQyBURVNUX0tNT0RTXFxuK1xcbitSVU5ORVJfTUFLRSA6PSAkKE1BS0UpIC1mIE1ha2VmaWxlLnJ1bm5lciBPVVRQVVQ9JChPVVRQVVQpIENDPSckKENDKSdcXG4rXFxuKyMgRXZlcnl0aGluZyBhIHJ1bm5lciBpbnN0YW5jZSByZWZlcmVuY2VzIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZC5cXG4rUlVOTkVSX1BSRVJFUVMgOj0gJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKEJQRlRPT0wpXFx0XFx0XFxcXFxcbitcXHRcXHQgICQoVFJVTk5FUl9CUEZUT09MKSAkKFJFU09MVkVfQlRGSURTKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKE9VVFBVVCkvdmVyaXN0YXRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgJChWRVJJRllfU0lHX0hEUikgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVClcXHRcXFxcXFxuK1xcdFxcdCAgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcXHRcXHRcXFxcXFxuK1xcdFxcdCAgcHJvZ190ZXN0cy90ZXN0cy5oIG1hcF90ZXN0cy90ZXN0cy5oXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICQoSEVMUEVSX09CSlMpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1xcdFxcXFxcXG4rXFx0XFx0ICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcXHRcXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aSAkKFRFU1RfS01PRF9UQVJHRVRTKVxcbitcXG4rRk9SQ0U6XFxuK1xcbisjIFRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9ucyBhcmUgYWxzbyBpbnB1dHMgb2YgYmVuY2gsIHRlc3RfbWFwcyxcXG4rIyB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHA7IFxcXCJkZWZhdWx0LXNrZWxzXFxcIiBidWlsZHMganVzdCB0aG9zZVxcbisjIHdpdGhvdXQgdGhlIHRlc3RfcHJvZ3MgdGVzdCBvYmplY3RzIGFuZCBiaW5hcnkuXFxuKy5QSE9OWTogZGVmYXVsdC1za2Vsc1xcbitkZWZhdWx0LXNrZWxzOiAkKFJVTk5FUl9QUkVSRVFTKVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcXFxcbitcXHRcXHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcXHRcXFxcXFxuK1xcdFxcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYzJ1xcdFxcdFxcXFxcXG4rXFx0XFx0QlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUyBza2Vsc1xcbitcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXFxcXG4rXFx0XFx0QlBGX0NDPSckKENMQU5HKScgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSckKENMQU5HX1NZU19JTkNMVURFUyknXFx0XFxcXFxcbitcXHRcXHRCUEZfQ0NfRkxBR1M9Jy1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12MydcXHRcXHRcXFxcXFxuK1xcdFxcdEJQRl9ERUZJTkVTPS1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcXG4rXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLW5vX2FsdTMyOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1ub19hbHUzMiBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9DQz0nJChDTEFORyknIEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0nJChDTEFOR19TWVNfSU5DTFVERVMpJ1xcdFxcXFxcXG4rXFx0XFx0QlBGX0NDX0ZMQUdTPSctTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djInXFxuK1xcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXFxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsY3B1djQpKVxcbiskKE9VVFBVVCkvdGVzdF9wcm9ncy1jcHV2NDogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9Y3B1djQgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcXFxcbitcXHRcXHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcXHRcXFxcXFxuK1xcdFxcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0J1xcdFxcdFxcXFxcXG4rXFx0XFx0QlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xcbiBlbmRpZlxcbiBcXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyBCUEYtR0NDLWZsYXZvcmVkIHRlc3QgcnVubmVyLlxcbiBpZm5lcSAoJChCUEZfR0NDKSwpXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFXFxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsYnBmX2djYykpXFxuLWVuZGlmXFxuLVxcbi0jIERlZmluZSB0ZXN0X21hcHMgdGVzdCBydW5uZXIuXFxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0c1xcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3NcXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfbWFwcy5jXFxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj1cXG4tVFJVTk5FUl9FWFRSQV9GSUxFUyA6PVxcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9ICQkKGVycm9yIG5vIEJQRiBvYmplY3RzIHNob3VsZCBiZSBidWlsdClcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9XFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfbWFwcykpXFxuLVxcbi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLlxcbi0jIEl0IGlzIG11Y2ggc2ltcGxlciB0aGFuIHRlc3RfbWFwcy90ZXN0X3Byb2dzIGFuZCBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb21cXG4tIyB0aGVtIChlLmcuLCB0ZXN0LmggaXMgdXNpbmcgY29tcGxldGVseSBwYXR0ZXJuKSwgdGhhdCBpdCdzIHdvcnRoIGp1c3RcXG4tIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cXG4rIyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSAtIGJwZi1nY2MncyBvd25cXG4rIyBzZWFyY2ggcGF0aCBsYWNrcyB0aGUgaG9zdCdzIGFzbS1nZW5lcmljLyBoZWFkZXJzLlxcbitHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXFxuK1xcbiskKE9VVFBVVCkvdGVzdF9wcm9ncy1icGZfZ2NjOiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1icGZfZ2NjIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXFxcXG4rXFx0XFx0QlBGX0NDPSckKEJQRl9HQ0MpJyBCUEZfQ0NfTVNHPUdDQy1CUEZcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdEJQRl9TWVNfSU5DTFVERVM9JyQoR0NDX1NZU19JTkNMVURFUyknXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRCUEZfQ0NfRkxBR1M9Jy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJ1xcbitlbmRpZlxcbitcXG4rIyB0ZXN0X21hcHMgY29tcGlsZXMgbWFwX3Rlc3RzLyouYyBhZ2FpbnN0IHRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9uc1xcbiskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSBtYXBfdGVzdHMvdGVzdHMuaCBkZWZhdWx0LXNrZWxzIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHNcXG4rXFxuKyMgRGVmYXVsdC1mbGF2b3IgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBjb25zdW1lZCBieSB0YXJnZXRzIGluIHRoaXNcXG4rIyBNYWtlZmlsZSAoYW5kIGJ5IGxpYi5taydzIGluc3RhbGwgcnVsZSkgYXJlIHByb2R1Y2VkIGJ5IHRoZSBydW5uZXJcXG4rIyBzdWItbWFrZSBhYm92ZTsgdGhlIGVtcHR5IHJlY2lwZSBwbHVzIHRoZSBvcmRlci1vbmx5IHByZXJlcXVpc2l0ZVxcbisjIG1ha2VzIHRoZW0gYXZhaWxhYmxlIGhlcmUgd2l0aG91dCBkdXBsaWNhdGluZyB0aGUgcnVubmVyJ3MgcnVsZXMuXFxuK0RFRkFVTFRfQlBGX09CSlMgOj0gJChwYXRzdWJzdCBwcm9ncy8lLmMsJChPVVRQVVQpLyUuYnBmLm8sJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxcbitURVNUX0dFTl9GSUxFUyArPSAkKERFRkFVTFRfQlBGX09CSlMpXFxuK1xcbitCRU5DSF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIHRlc3Rfb3ZlcmhlYWQuc2tlbC5oIHRyaWdnZXJfYmVuY2guc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oIGJwZl9sb29wX2JlbmNoLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIHN0cm5jbXBfYmVuY2guc2tlbC5oIGJwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaFxcXFxcXG4rXFx0ICAgICAgIGxvY2FsX3N0b3JhZ2VfYmVuY2guc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYmVuY2guc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgICAgYmVuY2hfbG9jYWxfc3RvcmFnZV9jcmVhdGUuc2tlbC5oXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgYnBmX2hhc2htYXBfbG9va3VwLnNrZWwuaCBodGFiX21lbV9iZW5jaC5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBjcnlwdG9fYmVuY2guc2tlbC5oIGJlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICBscG1fdHJpZV9iZW5jaC5za2VsLmggbHBtX3RyaWVfbWFwLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGJwZl9ub3BfYmVuY2guc2tlbC5oIHhkcF9sYl9iZW5jaC5za2VsLmgpXFxuK1RPUF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLHhza194ZHBfcHJvZ3Muc2tlbC5oXFx0XFx0XFxcXFxcbitcXHQgICAgIHhkcF9od19tZXRhZGF0YS5za2VsLmggeGRwX2ZlYXR1cmVzLnNrZWwuaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICB0ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCkgJChCRU5DSF9TS0VMUylcXG4rXFxuKyMgRW1wdHktcmVjaXBlIGRlbGVnYXRpb246IFxcXCJkZWZhdWx0LXNrZWxzXFxcIiAocmUpYnVpbGRzIHRoZSBmaWxlIHZpYSB0aGVcXG4rIyBydW5uZXIgc3ViLW1ha2UsIGFmdGVyIHdoaWNoIG1ha2UgcmUtc3RhdHMgdGhlIHRhcmdldCwgc28gZGVwZW5kZW50c1xcbisjIHNlZSBmcmVzaCB0aW1lc3RhbXBzIHdpdGhpbiB0aGUgc2FtZSBpbnZvY2F0aW9uLiBEZXBlbmRlbnRzIHN0aWxsXFxuKyMgcmVidWlsZCBvbiBtdGltZSBvbmx5IC0gdGhlIHBob255IHByZXJlcXVpc2l0ZSBkb2VzIG5vdCBjYXNjYWRlLlxcbiskKERFRkFVTFRfQlBGX09CSlMpICQoVE9QX1NLRUxTKTogZGVmYXVsdC1za2VscyA7XFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFN0YW5kYWxvbmUgdGVzdCBiaW5hcmllc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rIyB0ZXN0X3ZlcmlmaWVyIGlzIG11Y2ggc2ltcGxlciB0aGFuIHRlc3RfbWFwcy90ZXN0X3Byb2dzIGFuZFxcbisjIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbSB0aGVtIChlLmcuLCBpdHMgdGVzdHMuaCB1c2VzIGEgY29tcGxldGVseVxcbisjIGRpZmZlcmVudCBwYXR0ZXJuKSwgdGhhdCBpdCdzIHdvcnRoIGp1c3QgZGVmaW5pbmcgaXRzIHJ1bGVzIGV4cGxpY2l0bHkuXFxuIHZlcmlmaWVyL3Rlc3RzLmg6IHZlcmlmaWVyLyouY1xcbi1cXHQkKHNoZWxsICggY2QgdmVyaWZpZXIvOyBcXFxcXFxuLVxcdFxcdCAgZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nOyBcXFxcXFxuLVxcdFxcdCAgZWNobyAnI2lmZGVmIEZJTExfQVJSQVknOyBcXFxcXFxuLVxcdFxcdCAgbHMgKi5jIDJcXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAnc0BcXFxcKC4qXFxcXClAI2luY2x1ZGUgXFxcXFxcXCJcXFxcMVxcXFxcXFwiQCc7IFxcXFxcXG4tXFx0XFx0ICBlY2hvICcjZW5kaWYnIFxcXFxcXG4tXFx0XFx0KSBcXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmgpXFxuLSQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSikgfCAkKE9VVFBVVClcXG4rXFx0JChRKSggY2QgdmVyaWZpZXIvOyBcXFxcXFxuK1xcdCAgICAgIGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJzsgXFxcXFxcbitcXHQgICAgICBlY2hvICcjaWZkZWYgRklMTF9BUlJBWSc7IFxcXFxcXG4rXFx0ICAgICAgbHMgKi5jIDJcXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAnc0BcXFxcKC4qXFxcXClAI2luY2x1ZGUgXFxcXFxcXCJcXFxcMVxcXFxcXFwiQCc7IFxcXFxcXG4rXFx0ICAgICAgZWNobyAnI2VuZGlmJyBcXFxcXFxuK1xcdCAgICApIFxcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaFxcbitcXG4rJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKVxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4gIyBJbmNsdWRlIGZpbmRfYml0LmMgdG8gY29tcGlsZSB4c2t4Y2VpdmVyLlxcbiBFWFRSQV9TUkMgOj0gJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMgcHJvZ190ZXN0cy90ZXN0X3hzay5jIHByb2dfdGVzdHMvdGVzdF94c2suaFxcbi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS94c2t4Y2VpdmVyOiAkKEVYVFJBX1NSQykgeHNreGNlaXZlci5jIHhza3hjZWl2ZXIuaCAkKE9VVFBVVCkvbmV0d29ya19oZWxwZXJzLm8gJChPVVRQVVQpL3hzay5vICQoT1VUUFVUKS94c2tfeGRwX3Byb2dzLnNrZWwuaCAkKEJQRk9CSilcXG4gXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbiBcXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuLSQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmggfCAkKE9VVFBVVClcXG4rJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaFxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4tJChPVVRQVVQpL3hkcF9mZWF0dXJlczogeGRwX2ZlYXR1cmVzLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94ZHBfZmVhdHVyZXMuc2tlbC5oIHwgJChPVVRQVVQpXFxuKyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaFxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG5AQCAtOTU0LDExICs1NzUsMTggQEAgJChPVVRQVVQpL3Rlc3RfY3BwOiB0ZXN0X2NwcC5jcHAgJChPVVRQVVQpL3Rlc3RfY29yZV9leHRlcm4uc2tlbC5oICQoQlBGT0JKKVxcbiBcXHQkKGNhbGwgbXNnLENYWCwsJEApXFxuIFxcdCQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRAXFxuIFxcbi0jIEJlbmNobWFyayBydW5uZXJcXG4tJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKVxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpblxcbisjIGJlbmNocy86IGV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi5cXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rXFxuK0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxcbitcXG4rJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHNcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUJFTkNIJyAnJChub3RkaXIgJEApJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJFTkNIKVxcbitcXG4rIyBiZW5jaG1hcmstc3BlY2lmaWMgZ2VuZXJhdGVkLXNrZWxldG9uIGRlcGVuZGVuY2llc1xcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm86ICQoT1VUUFVUKS9yaW5nYnVmX2JlbmNoLnNrZWwuaCBcXFxcXFxuQEAgLTk3OCwzNyArNjA2LDE5IEBAICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyXFxuICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm86ICQoT1VUUFVUKS9icGZfbm9wX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcXG4gJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vOiAkKE9VVFBVVCkveGRwX2xiX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcXG4gJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubzogYmVuY2hfYnBmX3RpbWluZy5oXFxuK1xcbiAkKE9VVFBVVCkvYmVuY2gubzogYmVuY2guaCB0ZXN0aW5nX2hlbHBlcnMuaCAkKEJQRk9CSilcXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgKz0gLWxtXFxuLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcXFxcbi1cXHRcXHQgJChURVNUSU5HX0hFTFBFUlMpIFxcXFxcXG4tXFx0XFx0ICQoVFJBQ0VfSEVMUEVSUykgXFxcXFxcbi1cXHRcXHQgJChDR1JPVVBfSEVMUEVSUykgXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2NvdW50Lm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3JpbmdidWZzLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvdXNkdF8xLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXFxcXG4tXFx0XFx0ICNcXG4rJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS90cmFjZV9oZWxwZXJzLm9cXHRcXFxcXFxuK1xcdFxcdCAkKE9VVFBVVCkvY2dyb3VwX2hlbHBlcnMub1xcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS91c2R0XzEub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS91c2R0XzIub1xcdFxcdFxcXFxcXG4rXFx0XFx0ICQoQkVOQ0hfT0JKUylcXG4gXFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxcbi1cXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUxJTksnICckKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcXFxcXFxuK1xcdFxcdCQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKVxcbiBcXG4gIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZTpcXG4gI1xcbkBAIC0xMDM2LDcgKzY0Niw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUilcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdCAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pXFx0XFx0XFx0XFxcXFxcbiBcXHQkKE9VVFBVVCkvRkVBVFVSRS1EVU1QLnNlbGZ0ZXN0c1xcbiBcXG4tLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW5cXG4rLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW4gbGliYXJlbmEgbGliYXJlbmFfYXNhblxcbiBcXG4gIyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3JcXG4gLkRFTEVURV9PTl9FUlJPUjpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zYTQ5NjJiMDU4NWZlY1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXFxuQEAgLTAsMCArMSwxNzMgQEBcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgU2hhcmVkIHRvb2xjaGFpbiwgcGF0aCBhbmQgZmxhZyBkZWZpbml0aW9ucyBmb3IgdGhlIEJQRiBzZWxmdGVzdHNcXG4rIyBidWlsZCwgaW5jbHVkZWQgYnkgYm90aCBNYWtlZmlsZSBhbmQgTWFrZWZpbGUucnVubmVyLiBEZWZpbml0aW9uc1xcbisjIGZvbGxvdyB0aGUgb3JkZXIgdGhleSBoYWQgaW4gdGhlIE1ha2VmaWxlIGJlZm9yZSB0aGUgc3BsaXQuXFxuK1xcbitDWFggPz0gJChDUk9TU19DT01QSUxFKWcrK1xcbitPQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XFxuK1xcbitDVVJESVIgOj0gJChhYnNwYXRoIC4pXFxuK1xcbitUT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXFxuK0xJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcXG4rQlBGRElSIDo9ICQoTElCRElSKS9icGZcXG4rVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxcbitUT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcXG4rQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxcbitBUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxcbitpZm5lcSAoJChPKSwpXFxuK0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXFxuK2Vsc2VcXG4rR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcXG4rZW5kaWZcXG4rR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXFxuK1BLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcXG4rXFxuK2lmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxcbisgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcXG4rZW5kaWZcXG4rXFxuK2lmZGVmIEFTQU5cXG4rU0FOX0NGTEFHUyBcXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXG4rZWxzZVxcbitTQU5fQ0ZMQUdTXFx0Pz1cXG4rZW5kaWZcXG4rU0FOX0xERkxBR1NcXHQ/PSAkKFNBTl9DRkxBR1MpXFxuK1JFTEVBU0VcXHRcXHQ/PVxcbitPUFRfRkxBR1NcXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcXG4rXFxuK0xJQkVMRl9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcXHUwMDNlL2Rldi9udWxsKVxcbitMSUJFTEZfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXFxuK1xcbisjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxcbisjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xcbisjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxcbitCUEZfU1RSSUNUX0JVSUxEID89IDFcXG4rUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXFxuK1xcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXFxuKyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXFxuKyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXFxuKyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxcbisjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcXG4rc2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcXFxcbitcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSknIDFcXHUwMDNlXFx1MDAyNjI7IH0pXFxuK1xcbitpZmVxICgkKHNyY3RyZWUpLClcXG4rc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcXG4rc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4rZW5kaWZcXG4rXFxuK0NPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXFx0XFx0XFxcXFxcbitcXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcXHRcXFxcXFxuK1xcdCAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcbitMREZMQUdTICs9ICQoU0FOX0xERkxBR1MpXFxuK0xETElCUyArPSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcXG4rXFxuK1BDQVBfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyBcXFwiLURUUkFGRklDX01PTklUT1I9MVxcXCIpXFxuK1BDQVBfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rTERMSUJTICs9ICQoUENBUF9MSUJTKVxcbisjIFVubGlrZSB0aGUgcHJlLXNwbGl0IE1ha2VmaWxlLCB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgYWZ0ZXIgLi4vbGliLm1rXFxuKyMgKHRvcCBsZXZlbCkgb3Igd2l0aG91dCBpdCAocnVubmVyKSwgc28gQ09NTU9OX0NGTEFHUyBpcyBwcmVwZW5kZWQgdG9cXG4rIyBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgaW5jbHVkZS1zZWFyY2ggb3JkZXIuXFxuK0xJQl9NS19DRkxBR1MgOj0gJChDRkxBR1MpXFxuK0NGTEFHUyA9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUykgJChMSUJfTUtfQ0ZMQUdTKVxcbitcXG4raWZuZXEgKCQoTExWTSksKVxcbisjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcXG4rQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxcbitlbmRpZlxcbitcXG4rIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXFxuK0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXFxcXG4rXFx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcXFxcbitcXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxcXFxuK1xcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyAxKVxcbitcXG4rU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXFxuK0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxcbitJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXFxuK0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4rSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxcbitIT1NUX1NDUkFUQ0hfRElSXFx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcXG4rSE9TVF9JTkNMVURFX0RJUlxcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxcbitlbHNlXFxuK0hPU1RfQlVJTERfRElSXFx0XFx0Oj0gJChCVUlMRF9ESVIpXFxuK0hPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKFNDUkFUQ0hfRElSKVxcbitIT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChJTkNMVURFX0RJUilcXG4rZW5kaWZcXG4rSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuK1JFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXFxuK1xcbitERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbitDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxcbitVU0VfQk9PVFNUUkFQIDo9IFxcXCJcXFwiXFxuK2Vsc2VcXG4rVFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKVxcbitVU0VfQk9PVFNUUkFQIDo9IFxcXCJib290c3RyYXAvXFxcIlxcbitlbmRpZlxcbitcXG4rQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcXG4rXFxuKyMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XFxuKyMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXFxcIm1pc3NpbmdcXFwiIGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxcbisjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cXG4rI1xcbisjIFVzZSAnLWlkaXJhZnRlcic6IERvbid0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcXG4rIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxcbitkZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xcbiskKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFxcdTAwM2MvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXFxcXFxuK1xcdHwgc2VkIC1uICcvXFx1MDAzYy4uLlxcdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXFxcKC8uKlxcXFwpfC1pZGlyYWZ0ZXIgXFxcXDF8cCB9JykgXFxcXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzLCAkJDMpfScpIFxcXFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fbG9vbmdhcmNoX2dybGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzKX0nKSBcXFxcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFxcXCItRCVzPSVzIFxcXCIsICQkMiwgJCQzKX0nKVxcbitlbmRlZlxcbitcXG4rIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXFxuK0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgXFxcXFxcbitcXHRcXHRcXHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxcbitNRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbilcXG4rQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcXG4rXFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4rQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXFxuK2VuZGlmXFxuK1xcbisjIEltbWVkaWF0ZSBvbiBwdXJwb3NlOiBleHBhbmRpbmcgZ2V0X3N5c19pbmNsdWRlcyBmb3JrcyBzZXZlcmFsIHNoZWxscy5cXG4rQ0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxcbitCUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXFx0XFxcXFxcbitcXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgI1xcbisjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbitcXG4rQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuK1xcbitWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXFxuK1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4rVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXFxuK1BSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cXG4rXFxuK0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXFxuK1xcbitpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxcbitMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcXG4rQ0ZMQUdTICs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXFxuK2VuZGlmXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uY2VkNDRhYWQ3ZWRlZDRcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxcbkBAIC0wLDAgKzEsMzE1IEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI1xcbisjIEJ1aWxkIG9uZSBCUEYgdGVzdC1ydW5uZXIgaW5zdGFuY2U6IHRlc3RfcHJvZ3MsIG9uZSBvZiBpdHMgZmxhdm9yc1xcbisjIChub19hbHUzMiwgY3B1djQsIGJwZl9nY2MpLCBvciB0ZXN0X21hcHMuXFxuKyNcXG4rIyBFYWNoIGluc3RhbmNlIGlzIGFuIGluZGVwZW5kZW50IHN1Yi1tYWtlIHdpdGggaXRzIG93biBvdXRwdXQgZGlyZWN0b3J5LFxcbisjIHNvIGV2ZXJ5dGhpbmcgaGVyZSBpcyB3cml0dGVuIGluIHBsYWluIG1ha2UgLSBubyAkJC1lc2NhcGluZywgbm8gZXZhbCxcXG4rIyBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5cyBpbnZva2VkIGJ5IHRoZSBtYWluIE1ha2VmaWxlLFxcbisjIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkIHByZXJlcXVpc2l0ZXMgKGxpYmJwZiwgYnBmdG9vbCwgdm1saW51eC5oLFxcbisjIHZlcmlzdGF0LCBoZWxwZXIgb2JqZWN0cywgc2lnbmluZyBrZXksIGdlbmVyYXRlZCB0ZXN0cy5oLCBleHRyYVxcbisjIGJpbmFyaWVzKSBhcmUgYnVpbHQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKmJlZm9yZSogdGhpcyBvbmUgcnVucyBhbmQgYXJlXFxuKyMgcmVmZXJlbmNlZCBiZWxvdyBhcyBwbGFpbiBmaWxlcy5cXG4rI1xcbisjIFBhcmFtZXRlcnMgKGFsbCBwYXNzZWQgb24gdGhlIHN1Yi1tYWtlIGNvbW1hbmQgbGluZSk6XFxuKyMgICBPVVRQVVQgICAgICBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBzZWxmdGVzdHMgb3V0cHV0IGRpcmVjdG9yeVxcbisjICAgUlVOTkVSICAgICAgYmFzZSBiaW5hcnkgbmFtZTogdGVzdF9wcm9ncyB8IHRlc3RfbWFwc1xcbisjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djY1xcbisjICAgVEVTVFNfRElSICAgZGlyZWN0b3J5IHdpdGggdGhlIHRlc3Qgc291cmNlczogcHJvZ190ZXN0cyB8IG1hcF90ZXN0c1xcbisjICAgQlBGX0NDICAgICAgY29tcGlsZXIgZm9yIHByb2dzLyouYyBCUEYgb2JqZWN0cyAoJChDTEFORykgb3JcXG4rIyAgICAgICAgICAgICAgICQoQlBGX0dDQykpOyBlbXB0eSBmb3IgdGVzdF9tYXBzLCB3aGljaCBidWlsZHMgbm9uZVxcbisjICAgQlBGX0NDX01TRyAgYnVpbGQtbG9nIHRhZzogQ0xORy1CUEYgfCBHQ0MtQlBGXFxuKyMgICBCUEZfQ0NfRkxBR1NcXG4rIyAgICAgICAgICAgICAgIGNvbXBpbGVyLXNwZWNpZmljIGZsYWdzICgtTzIsIHRhcmdldC8tbWNwdSBvciBnY2Mga25vYnMpXFxuKyMgICBCUEZfU1lTX0lOQ0xVREVTXFxuKyMgICAgICAgICAgICAgICBzeXN0ZW0gaW5jbHVkZSBmbGFncyBtYXRjaGluZyBCUEZfQ0NcXG4rIyAgIEJQRl9ERUZJTkVTIGV4dHJhIGRlZmluZXMgZm9yIEJQRiBvYmplY3RzIChlLmcuIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMpXFxuKyMgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW4gTWFrZWZpbGUpXFxuKyMgICBMTFZNX0NGTEFHUy9MTFZNX0xETElCUy9MTFZNX0xERkxBR1NcXG4rIyAgICAgICAgICAgICAgIHJlc3VsdHMgb2YgdGhlIHRvcC1sZXZlbCBMTFZNIGZlYXR1cmUgcHJvYmVcXG4rXFxuK2luY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxcbitcXG4rIyBTYW1lIG1lc3NhZ2UgaGVscGVycyBhcyAuLi9saWIubWssIHdoaWNoIG9ubHkgdGhlIHRvcCBsZXZlbCBpbmNsdWRlcy5cXG4raWZlcSAoJChWKSwxKVxcbitRID1cXG4rbXNnID1cXG4rZWxzZVxcbitRID0gQFxcbittc2cgPSBAcHJpbnRmICcgICUtOHMlcyAlcyVzXFxcXG4nIFxcXCIkKDEpXFxcIiBcXFwiJChpZiAkKDIpLCBbJCgyKV0pXFxcIiBcXFwiJChub3RkaXIgJCgzKSlcXFwiIFxcXCIkKGlmICQoNCksICQoNCkpXFxcIjtcXG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XFxuK2VuZGlmXFxuK1xcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xcbitcXG4rIyBLZWVwIGluIHN5bmMgd2l0aCB0aGUgQ0ZMQUdTL0xERkxBR1MgYWRkaXRpb25zIGluIC4uL2xpYi5tay5cXG4rQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0U9XFxuK0NGTEFHUyArPSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcXG4rQ0ZMQUdTICs9ICQoVVNFUkNGTEFHUylcXG4rTERGTEFHUyArPSAkKFVTRVJMREZMQUdTKVxcbitpZm5lcSAoJChMTFZNKSwpXFxuK0NGTEFHUyArPSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlclxcbitDRkxBR1MgKz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXFxuK2VuZGlmXFxuK1xcbitCSU5BUlkgOj0gJChSVU5ORVIpJChpZiAkKEZMQVZPUiksLSQoRkxBVk9SKSlcXG4rUkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXFxuK1xcbithbGw6ICQoT1VUUFVUKS8kKEJJTkFSWSlcXG4rLlBIT05ZOiBhbGxcXG4rXFxuKyMgRGVsZXRlIHBhcnRpYWxseSB1cGRhdGVkIChjb3JydXB0ZWQpIGZpbGVzIG9uIGVycm9yXFxuKy5ERUxFVEVfT05fRVJST1I6XFxuK1xcbisjIFBlcm1pc3NpdmUgc2tpcC1vbi1mYWlsdXJlIG9mIGluZGl2aWR1YWwgdGVzdHMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZFxcbisjIGl0cyBmbGF2b3JzIG9ubHk7IHRlc3RfbWFwcyB1c2VzIHN0cm9uZyBjcm9zcy1vYmplY3QgcmVmZXJlbmNlcyBhbmQga2VlcHNcXG4rIyBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBCUEZfU1RSSUNUX0JVSUxEPTAuXFxuK1BFUk1JU1NJVkVfVEVTVFMgOj0gJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzLCQoUlVOTkVSKSksJChQRVJNSVNTSVZFKSlcXG4rXFxuKyQoUkRJUik6XFxuK1xcdCQoY2FsbCBtc2csTUtESVIsLCRAKVxcbitcXHQkKFEpbWtkaXIgLXAgJEBcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgUGVyLXJ1bm5lciBzb3VyY2VzXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncylcXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X3Byb2dzLmMgY2dyb3VwX2hlbHBlcnMuYyB0cmFjZV9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuK1xcdFxcdCBuZXR3b3JrX2hlbHBlcnMuYyB0ZXN0aW5nX2hlbHBlcnMuYyBidGZfaGVscGVycy5jXFx0XFxcXFxcbitcXHRcXHQgY2FwX2hlbHBlcnMuYyB1bnByaXZfaGVscGVycy5jIHN5c2N0bF9oZWxwZXJzLmNcXHRcXFxcXFxuK1xcdFxcdCBuZXRsaW5rX2hlbHBlcnMuYyBqaXRfZGlzYXNtX2hlbHBlcnMuYyBpb19oZWxwZXJzLmNcXHRcXFxcXFxuK1xcdFxcdCB0ZXN0X2xvYWRlci5jIHhzay5jIGRpc2FzbS5jIGRpc2FzbV9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuK1xcdFxcdCBqc29uX3dyaXRlci5jIGJwZnRvb2xfaGVscGVycy5jIHVzZHRfMS5jIHVzZHRfMi5jXFxuK0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcXG4rRVhUUkFfSERSUyA6PSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcXHRcXHRcXFxcXFxuK1xcdCAgICAgICQoVkVSSUZZX1NJR19IRFIpICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuK0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1xcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgaW1hX3NldHVwLnNoICQoVkVSSUZZX1NJR19TRVRVUClcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxcbitlbmRpZlxcbitcXG4raWZlcSAoJChSVU5ORVIpLHRlc3RfbWFwcylcXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuY1xcbitlbmRpZlxcbitcXG4rIyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluXFxuKyMgTWFrZWZpbGU6IGhlbHBlciBvYmplY3RzIHRoZSBtYWluIE1ha2VmaWxlIGFsc28gdXNlcyAoYW5kIGxpc3RzIGluIHRoZVxcbisjIHJ1bm5lciBwcmVyZXF1aXNpdGVzKSBhcmUgYWxyZWFkeSBidWlsdCBhbmQgZnJlc2ggd2hlbiBhIHJ1bm5lciBzdGFydHMsXFxuKyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLiBUaGlzXFxuKyMgaG9sZHMgYmVjYXVzZSB0aGUgbWFpbiBNYWtlZmlsZSdzIGhlbHBlci1vYmplY3QgcnVsZSBkZXBlbmRzIG9uIGFcXG4rIyBzdXBlcnNldCBvZiB0aGUgcHJlcmVxdWlzaXRlcyB0aGUgRVhUUkFfT0JKUyBydWxlIHVzZXMgaGVyZSAtIGtlZXBcXG4rIyB0aGUgdHdvIGxpc3RzIGluIHN5bmMgKHNlZSB0aGUgaW52YXJpYW50IGNvbW1lbnQgdGhlcmUpLlxcbitcXG4rVEVTVFNfSERSIDo9ICQoVEVTVFNfRElSKS90ZXN0cy5oXFxuK1xcbitURVNUX1NSQ1MgIDo9ICQobm90ZGlyICQod2lsZGNhcmQgJChURVNUU19ESVIpLyouYykpXFxuK1RFU1RfT0JKUyAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLnRlc3QubywkKFRFU1RfU1JDUykpXFxuK1RFU1RfREVQUyAgOj0gJChURVNUX09CSlM6Lm89LmQpXFxuK0VYVFJBX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLm8sJChmaWx0ZXIgJS5jLCQoRVhUUkFfU09VUkNFUykpKVxcbitMSUJfT0JKUyAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5vLCQoTElCX1NPVVJDRVMpKVxcbitcXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4rIyBCUEYgb2JqZWN0cyBhbmQgc2tlbGV0b25zXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitpZm5lcSAoJChCUEZfQ0MpLClcXG4rXFxuK0JQRl9TUkNTIDo9ICQobm90ZGlyICQod2lsZGNhcmQgcHJvZ3MvKi5jKSlcXG4rQlBGX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmJwZi5vLCQoQlBGX1NSQ1MpKVxcbitcXG4rIyBCUEYgb2JqZWN0cyB0aGF0IGNhbm5vdCBoYXZlIGEgcmVndWxhciBza2VsZXRvbi5cXG4rU0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uY1xcbitcXG4rTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIFxcdFxcXFxcXG4rXFx0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcXHRcXHRcXHRcXFxcXFxuK1xcdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxcXFxuK1xcdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xcbitcXG4rTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcXG4rXFxuKyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxcbitMU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxcXFxuK1xcdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmNcXG4rU0tFTF9CTEFDS0xJU1QgKz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRClcXG4rXFxuKyMgU2tlbGV0b25zIG1hZGUgYnkgbGlua2luZyBtdWx0aXBsZSBCUEYgb2JqZWN0cyB0b2dldGhlci4gVGhlICUtZGVwc1xcbisjIG1hcHBpbmcgaXMgdGhlIG9ubHkgaGFuZC1tYWludGFpbmVkIG1ldGFkYXRhOiBpdCBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tXFxuKyMgdGhlIHNvdXJjZXMuXFxuK3Rlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cXG4rbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xcbitsaW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vXFxuK2xpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cXG4rIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcXG4rIyBidXQgdGhhdCdzIGNyZWF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgc2tlbC5oIGdlbmVyYXRpb24uXFxuK3Rlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm9cXG4rdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXFxuK3Rlc3RfdXNkdC5za2VsLmgtZGVwcyA6PSB0ZXN0X3VzZHQuYnBmLm8gdGVzdF91c2R0X211bHRpc3BlYy5icGYub1xcbit0cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4rdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4rdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4rdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbitcXG4rTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaFxcdFxcdFxcXFxcXG4rXFx0XFx0bGlua2VkX3ZhcnMuc2tlbC5oIGxpbmtlZF9tYXBzLnNrZWwuaFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oXFx0XFxcXFxcbitcXHRcXHR0ZXN0X3VzZHQuc2tlbC5oIHRyYWNpbmdfbXVsdGkuc2tlbC5oXFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxcbitMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKSlcXG4rXFxuK1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLCQoQlBGX1NSQ1MpKSlcXG4rTFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTKSAkKExTS0VMU19FWFRSQSkpXFxuK0xTS0VMU19TSUdORURfSCA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxcbitMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxcbitBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXFxuK1xcbitIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXFx0XFxcXFxcbitcXHRcXHRcXHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFxcdGJwZl9jb3JlX3JlYWQuaFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0YnBmX2VuZGlhbi5oXFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRicGZfaGVscGVycy5oXFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRicGZfdHJhY2luZy5oKVxcbitcXG4rIyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJFxcdTAwM2MtQ0ZMQUdTIC8gJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUykuXFxuKyMgR0NDIGNhbm5vdCBkaXNhYmxlIFxcXCJkZWNsYXJhdGlvbiBvZiBhbm9ueW1vdXMgc3RydWN0IGluIHBhcmFtZXRlciBsaXN0XFxcIlxcbisjIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGVzZSAodGVjaG5pY2FsbHkgbGVnYWwpIHRlc3QgcHJvZ3JhbXMuXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitcXG4rJChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcXHRcXHRcXFxcXFxuK1xcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxcbitcXHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChCUEZfQ0MpICQoQlBGX0NGTEFHUykgJChCUEZfU1lTX0lOQ0xVREVTKSAkKEJQRl9ERUZJTkVTKVxcdFxcXFxcXG4rXFx0XFx0JCgkXFx1MDAzYy1DRkxBR1MpICQoJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoQlBGX0NDX0ZMQUdTKSAtYyAkXFx1MDAzYyAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJQRilcXG4rXFxuKyMgZ2VuX2JwZl9za2VsLnNoIHBpY2tzIHRoZSBicGZ0b29sIGJpbmFyeSB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudC5cXG4rZXhwb3J0IEJQRlRPT0xcXG4rR0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcXG4rXFxuKyQoU0tFTFMpOiAkKFJESVIpLyUuc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcXG4rXFx0JChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApXFxuK1xcdCQoUSkkKEdFTl9TS0VMKSAtLW5hbWUgJCpcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJFxcdTAwM2NcXHRcXHRcXFxcXFxuK1xcdFxcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcXG4rXFxuKyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXFxuK1xcdCQoY2FsbCBtc2csR0VOLVNLRUwsJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqX2xza2VsIC0tbHNrZWxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAkXFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXFxuK1xcbiskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVxcdFxcXFxcXG4rXFx0XFx0ICAgICQoR0VOX1NLRUwpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpIHwgJChSRElSKVxcbitcXHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSAoc2lnbmVkKSwkQClcXG4rXFx0JChRKVBSSVZBVEVfS0VZPSQoUFJJVkFURV9LRVkpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRWRVJJRklDQVRJT05fQ0VSVD0kKFZFUklGSUNBVElPTl9DRVJUKVxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0JChHRU5fU0tFTCkgLS1zaWduIC0tbmFtZSAkKl9sc2tlbFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LS1za2VsICRAICRcXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcXG4rXFxuKy5TRUNPTkRFWFBBTlNJT046XFxuKyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcXFxcbitcXHRcXHQgICAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKVxcbitcXHQkKGNhbGwgbXNnLExJTkstQlBGLCQoQklOQVJZKSwkKEA6LnNrZWwuaD0uYnBmLm8pKVxcbitcXHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSwkQClcXG4rXFx0JChRKSQoR0VOX1NLRUwpIC0tbmFtZSAkKlxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKVxcdFxcdFxcXFxcXG4rXFx0XFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXFxuK1xcbitlbmRpZiAjIEJQRl9DQ1xcbitcXG4rLlBIT05ZOiBza2Vsc1xcbitza2VsczogJChBTExfU0tFTFMpXFxuK1xcbisjIFdoZW4gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhICUuZCBmaWxlLCBvbmx5IHNrZWwgYmFzZW5hbWVzIChub3QgZnVsbFxcbisjIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nICUubyBmaWxlLlxcbisjIFRoZSB2cGF0aCBkaXJlY3RpdmVzIGluc3RydWN0IG1ha2UgdG8gYWxzbyBzZWFyY2ggZm9yIHNrZWwgZmlsZXMgaW5cXG4rIyAkKFJESVIpIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cXG4rdnBhdGggJS5za2VsLmggJChSRElSKVxcbit2cGF0aCAlLmxza2VsLmggJChSRElSKVxcbit2cGF0aCAlLnN1YnNrZWwuaCAkKFJESVIpXFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFRlc3Qgb2JqZWN0cyBhbmQgcnVubmVyIGJpbmFyeVxcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4rJChSRElSKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoUkRJUikvYnRmX2RhdGEuYnBmLm9cXG4rJChSRElSKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXFxuK1xcbisjIENvbXBpbGUgaW5kaXZpZHVhbCB0ZXN0IGZpbGVzLlxcbisjIE5vdGU6IHdlIGNkIGludG8gdGhlIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3RzXFxuKyMgYXJlIGZvdW5kLiBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRFxcbisjIGJlbG93OyB0aGUgc2VwYXJhdGUgbm8tcmVjaXBlIHJ1bGUgZm9yIHRoZW0gb3JkZXJzIHRoZSBmaXJzdFxcbisjIGNvbXBpbGF0aW9uIGFmdGVyIHNrZWxldG9uIGdlbmVyYXRpb24gYW5kIHJlLW9yZGVycyB0ZXN0IG9iamVjdFxcbisjIGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycyBjaGFuZ2UuXFxuKyQoVEVTVF9PQkpTKTogJChSRElSKS8lLnRlc3QubzogJChURVNUU19ESVIpLyUuYyB8ICQoUkRJUikvJS50ZXN0LmRcXG4rXFx0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXFxuK1xcdCQoUSkoY2QgJChARCkgXFx1MDAyNlxcdTAwMjYgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJFxcdTAwM2MgLW8gJChARikpIFxcXFxcXG4rXFx0XFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoY2FsbCBza2lwX29uX2ZhaWwsVEVTVCkpXFxuK1xcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJyAgJS04cyVzICVzXFxcXG4nIFxcXCJCVEZJRFNcXFwiIFxcXCIgWyQoQklOQVJZKV1cXFwiIFxcXCIkKG5vdGRpciAkQClcXFwiKTsgXFxcXFxcbitcXHRcXHQkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vICRAO1xcdFxcXFxcXG4rXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcXHRcXHRcXFxcXFxuK1xcdFxcdGZpKVxcbitcXG4rJChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXFxcXG4rXFx0ICAgICAgfCAkKFJESVIpICQoQUxMX1NLRUxTKVxcbitcXG4raW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcXG4rXFxuKyQoUkRJUikvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyArPSAkKExMVk1fQ0ZMQUdTKVxcbitcXG4rJChFWFRSQV9PQkpTKTogJChSRElSKS8lLm86ICUuYyAkKEVYVFJBX0hEUlMpICQoVEVTVFNfSERSKSAkKEJQRk9CSikgfCAkKFJESVIpXFxuK1xcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXFxuK1xcdCQoUSkkKENDKSAkKENGTEFHUykgLWMgJFxcdTAwM2MgLW8gJEBcXG4rXFxuKyQoTElCX09CSlMpOiAkKFJESVIpLyUubzogJChUT09MU0RJUikvbGliLyUuYyB8ICQoUkRJUilcXG4rXFx0JChjYWxsIG1zZyxMSUItT0JKLCQoQklOQVJZKSwkQClcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXFx1MDAzYyAtbyAkQFxcbitcXG4rIyBOb24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhclxcbisjIHdlIGRvIG5vdCBuZWVkIHRvIGNvcHkgZXh0cmEgcmVzb3VyY2VzIChzZWUgZS5nLiB0ZXN0X2J0Zl9kdW1wX2Nhc2UoKSkuXFxuKy5QSE9OWTogZXh0cmFzXFxuK2V4dHJhczogJChpZiAkKFBFUk1JU1NJVkUpLCQod2lsZGNhcmQgJChFWFRSQV9GSUxFUykpLCQoRVhUUkFfRklMRVMpKSB8ICQoUkRJUilcXG4raWZuZXEgKCQoRkxBVk9SKTokKE9VVFBVVCksOiQoQ1VSRElSKSlcXG4raWZuZXEgKCQoc3RyaXAgJChFWFRSQV9GSUxFUykpLClcXG4rXFx0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChub3RkaXIgJChFWFRSQV9GSUxFUykpKVxcbitcXHQkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvXFxuK2VuZGlmXFxuK2VuZGlmXFxuK1xcbisjIEluIHBlcm1pc3NpdmUgbW9kZSwgbGluayB3aGF0ZXZlciB0ZXN0IG9iamVjdHMgd2VyZSBzdWNjZXNzZnVsbHkgYnVpbHRcXG4rIyAodGhlaXIgY29tcGlsYXRpb24gbWF5IGhhdmUgYmVlbiBza2lwcGVkKTogdGhlIG9iamVjdHMgZXhpc3RpbmcgYXRcXG4rIyBwYXJzZSB0aW1lIGFyZSBub3JtYWwgcHJlcmVxdWlzaXRlcyAtIHNvIGVkaXRpbmcgYSB0ZXN0IHNvdXJjZSBzdGlsbFxcbisjIHJlbGlua3MgdGhlIHJ1bm5lciAtIHdoaWxlIHRoZSBmdWxsIHNldCBzdGF5cyBvcmRlci1vbmx5IHRvIGRyaXZlIHRoZVxcbisjIGJ1aWxkIGF0dGVtcHRzLCBhbmQgdGhlIHdpbGRjYXJkIGluIHRoZSByZWNpcGUgcGlja3MgdXAgdGhlIHN1cnZpdm9yc1xcbisjIGF0IGxpbmsgdGltZS5cXG4rIyBQcmVyZXF1aXNpdGUgb3JkZXIgaXMgYWxzbyBsaW5rIG9yZGVyICh0ZXN0IG9iamVjdHMsIGV4dHJhIG9iamVjdHMsXFxuKyMgbGliYnBmLCBsaWIgb2JqZWN0cykuXFxuKyQoT1VUUFVUKS8kKEJJTkFSWSk6ICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSksJChURVNUX09CSlMpKSBcXFxcXFxuK1xcdFxcdCAgICAgJChFWFRSQV9PQkpTKSAkKEJQRk9CSikgJChMSUJfT0JKUylcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICB8IGV4dHJhcyAkKEJQRl9PQkpTKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICAkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChURVNUX09CSlMpKVxcbitcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuK1xcdCQoUSkkKENDKSAkKENGTEFHUylcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSlcXHRcXFxcXFxuK1xcdFxcdFxcdCQoZmlsdGVyLW91dCAkKFRFU1RfT0JKUyksJChmaWx0ZXIgJS5hICUubywkXikpLFxcXFxcXG4rXFx0XFx0XFx0JChmaWx0ZXIgJS5hICUubywkXikpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKExETElCUykgJChMTFZNX0xETElCUykgJChMREZMQUdTKSAkKExMVk1fTERGTEFHUykgLW8gJEBcXG4rXFx0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXFxcXG4rXFx0XFx0ICAgJChSRElSKS9icGZ0b29sXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZTIzNGYzYTU3ZDQ2YmZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxcbkBAIC0wLDAgKzEsOTMgQEBcXG4rIyEvYmluL2Jhc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcXFwiYnBmdG9vbCBnZW4gb2JqZWN0XFxcIiBhbmQgZ2VuZXJhdGUgYVxcbisjIHNrZWxldG9uIChvciBsaWdodCBza2VsZXRvbikgaGVhZGVyIGZyb20gdGhlIHJlc3VsdC5cXG4rI1xcbisjIFVzYWdlOlxcbisjICAgQlBGVE9PTD1cXHUwMDNjYnBmdG9vbFxcdTAwM2UgZ2VuX2JwZl9za2VsLnNoIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLlxcbisjXFxuKyMgICAtLW5hbWUgTkFNRSAgICAgICBza2VsZXRvbiBvYmplY3QgbmFtZSAoXFxcIm5hbWUgTkFNRVxcXCIgZm9yIGJwZnRvb2wpXFxuKyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcXFwiZm9vLnNrZWwuaFxcXCIgb3IgXFxcImZvby5sc2tlbC5oXFxcIilcXG4rIyAgIC0tc3Vic2tlbCBPVVQgICAgIGFsc28gZ2VuZXJhdGUgYSBzdWJza2VsZXRvbiBoZWFkZXIgaW50byBPVVRcXG4rIyAgIC0tbHNrZWwgICAgICAgICAgIGdlbmVyYXRlIGEgbGlnaHQgc2tlbGV0b24gKGJwZnRvb2wgZ2VuIHNrZWxldG9uIC1MKVxcbisjICAgLS1zaWduICAgICAgICAgICAgc2lnbiB0aGUgKGxpZ2h0KSBza2VsZXRvbiwgd2l0aCB0aGUga2V5IGFuZFxcbisjICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGUgdGFrZW4gZnJvbSAkUFJJVkFURV9LRVkgYW5kXFxuKyMgICAgICAgICAgICAgICAgICAgICAkVkVSSUZJQ0FUSU9OX0NFUlRcXG4rI1xcbisjIFRoZSBpbnB1dHMgYXJlIGxpbmtlZCB0aHJlZSB0aW1lcyBhbmQgdGhlIDJuZCBhbmQgM3JkIHJlc3VsdHNcXG4rIyBjb21wYXJlZCwgYXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBkZXRlcm1pbmlzbSBvZiBcXFwiYnBmdG9vbCBnZW5cXG4rIyBvYmplY3RcXFwiLlxcbisjXFxuKyMgSW50ZXJtZWRpYXRlIGZpbGVzIGNhcnJ5IGEgXFxcImxpbmtlZFxcXCIgaW5maXggLSBcXFwibGxpbmtlZFxcXCIgZm9yIGxpZ2h0IG9yXFxuKyMgc2lnbmVkIHNrZWxldG9ucywgc28gZ2VuZXJhdGluZyBhIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGVcXG4rIyBzYW1lIC5icGYubyBpbiBwYXJhbGxlbCBuZXZlciByYWNlcyBvbiB0aGUgaW50ZXJtZWRpYXRlcy5cXG4rI1xcbisjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuXFxuKyMgT24gZmFpbHVyZSBhbGwgb3V0cHV0cyBhbmQgaW50ZXJtZWRpYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHNjcmlwdFxcbisjIGV4aXRzIG5vbi16ZXJvOyBwZXJtaXNzaXZlLW1vZGUgc2tpcHBpbmcgaXMgdGhlIGNhbGxlcidzIGJ1c2luZXNzXFxuKyMgKHNlZSBza2lwX29uX2ZhaWwgaW4gTWFrZWZpbGUuYnVpbGR2YXJzKS5cXG4rXFxuK3NldCAtdVxcbitcXG4rYnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9XFxuK25hbWU9Jycgc2tlbD0nJyBzdWJza2VsPScnXFxuK2xza2VsPTAgc2lnbj0wXFxuK1xcbit3aGlsZSBbICQjIC1ndCAwIF07IGRvXFxuK1xcdGNhc2UgXFxcIiQxXFxcIiBpblxcbitcXHQtLW5hbWUpXFx0XFx0bmFtZT0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLXNrZWwpXFx0XFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLXN1YnNrZWwpXFx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLWxza2VsKVxcdGxza2VsPTE7IHNoaWZ0IDs7XFxuK1xcdC0tc2lnbilcXHRcXHRzaWduPTE7IHNoaWZ0IDs7XFxuK1xcdC0tKVxcdFxcdHNoaWZ0OyBicmVhayA7O1xcbitcXHQtKilcXHRcXHRlY2hvIFxcXCIkMDogdW5rbm93biBvcHRpb246ICQxXFxcIiBcXHUwMDNlXFx1MDAyNjI7IGV4aXQgMSA7O1xcbitcXHQqKVxcdFxcdGJyZWFrIDs7XFxuK1xcdGVzYWNcXG4rZG9uZVxcbitcXG4raWYgWyAteiBcXFwiJG5hbWVcXFwiIF0gfHwgWyAteiBcXFwiJHNrZWxcXFwiIF0gfHwgWyAkIyAtZXEgMCBdOyB0aGVuXFxuK1xcdGVjaG8gXFxcInVzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRleGl0IDFcXG4rZmlcXG4rXFxuK2luZml4PWxpbmtlZFxcbitpZiBbIFxcXCIkbHNrZWxcXFwiIC1lcSAxIF0gfHwgWyBcXFwiJHNpZ25cXFwiIC1lcSAxIF07IHRoZW5cXG4rXFx0aW5maXg9bGxpbmtlZFxcbitmaVxcbitcXG4rYmFzZT0ke3NrZWwlLnNrZWwuaH1cXG4rYmFzZT0ke2Jhc2UlLmxza2VsLmh9XFxuK3QxPSRiYXNlLiR7aW5maXh9MS5vXFxuK3QyPSRiYXNlLiR7aW5maXh9Mi5vXFxuK3QzPSRiYXNlLiR7aW5maXh9My5vXFxuK1xcbitmYWlsKCkge1xcbitcXHRybSAtZiBcXFwiJHNrZWxcXFwiICR7c3Vic2tlbDorXFxcIiRzdWJza2VsXFxcIn0gXFxcIiR0MVxcXCIgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCJcXG4rXFx0ZXhpdCAxXFxuK31cXG4rXFxuK1xcXCIkYnBmdG9vbFxcXCIgZ2VuIG9iamVjdCBcXFwiJHQxXFxcIiBcXFwiJEBcXFwiIHx8IGZhaWxcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDJcXFwiIFxcXCIkdDFcXFwiIHx8IGZhaWxcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDNcXFwiIFxcXCIkdDJcXFwiIHx8IGZhaWxcXG4raWYgISBjbXAgLXMgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCI7IHRoZW5cXG4rXFx0ZWNobyBcXFwiJDA6IGJwZnRvb2wgZ2VuIG9iamVjdCBpcyBub3QgZGV0ZXJtaW5pc3RpYyBmb3IgJHNrZWxcXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRmYWlsXFxuK2ZpXFxuK1xcbithcmdzPSgpXFxuK2lmIFsgXFxcIiRzaWduXFxcIiAtZXEgMSBdOyB0aGVuXFxuK1xcdGFyZ3MrPSgtUyAtayBcXFwiJHtQUklWQVRFX0tFWTo/fVxcXCIgLWkgXFxcIiR7VkVSSUZJQ0FUSU9OX0NFUlQ6P31cXFwiKVxcbitmaVxcbitpZiBbIFxcXCIkbHNrZWxcXFwiIC1lcSAxIF07IHRoZW5cXG4rXFx0YXJncys9KC1MKVxcbitmaVxcbitcXFwiJGJwZnRvb2xcXFwiIGdlbiBza2VsZXRvbiAke2FyZ3NbQF0rXFxcIiR7YXJnc1tAXX1cXFwifSBcXFwiJHQzXFxcIiBuYW1lIFxcXCIkbmFtZVxcXCIgXFx1MDAzZSBcXFwiJHNrZWxcXFwiIHx8IGZhaWxcXG4rXFxuK2lmIFsgLW4gXFxcIiRzdWJza2VsXFxcIiBdOyB0aGVuXFxuK1xcdFxcXCIkYnBmdG9vbFxcXCIgZ2VuIHN1YnNrZWxldG9uIFxcXCIkdDNcXFwiIG5hbWUgXFxcIiRuYW1lXFxcIiBcXHUwMDNlIFxcXCIkc3Vic2tlbFxcXCIgfHwgZmFpbFxcbitmaVxcbitcXG4rcm0gLWYgXFxcIiR0MVxcXCIgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCJcXG4rZXhpdCAwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM4OjMyLjE5NzAzNjc2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY3Mzg3OTI0NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3M2QzMTNmMmNiMTdjNjFjOGU2ZGQ2MzkyNDExY2NmNGVhMzJkYmZkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMjUgMDg6Mzg6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbmluZGV4IDU1ZDM5NDQzODcwNWE2Li4wOWNmZjY5M2I3ZDc4MiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG5AQCAtMSw5NiArMSwzMiBAQFxuICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBFdmVyeXRoaW5nIHRoYXQgZXhpc3RzIG9uY2UgbGl2ZXMgaGVyZTogdG9vbGNoYWluIHNldHVwLCB0b29sXG4rIyBzdWItYnVpbGRzLCB2bWxpbnV4LmgsIHNoYXJlZCBoZWxwZXIgb2JqZWN0cywgc3RhbmRhbG9uZSBiaW5hcmllcyBhbmRcbisjIHRoZSBsaWIubWsgY29udHJhY3QuIEVhY2ggdGVzdC1ydW5uZXIgaW5zdGFuY2UgKHRlc3RfcHJvZ3MgYW5kIGl0c1xuKyMgZmxhdm9ycywgdGVzdF9tYXBzKSBpcyBidWlsdCBieSBpdHMgb3duIE1ha2VmaWxlLnJ1bm5lciBzdWItbWFrZTtcbisjIHNoYXJlZCBkZWZpbml0aW9ucyBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy5cbitcbiBpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGVcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxuIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlXG4gXG4tQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcbi1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XG4tXG4tQ1VSRElSIDo9ICQoYWJzcGF0aCAuKVxuLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbi1MSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4tQlBGRElSIDo9ICQoTElCRElSKS9icGZcbi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4tVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4tQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXG4taWZuZXEgKCQoTyksKVxuLUdFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4tZWxzZVxuLUdFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4tZW5kaWZcbi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcbi1QS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4gXG4taWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXG4tICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4rIyBOZWVkZWQgYmVmb3JlIGxpYi5tayBpcyBpbmNsdWRlZCAoZ2F0ZXMgdGhlIGZsYXZvciBsaXN0IGJlbG93KSwgd2hpY2hcbisjIGlzIGFsc28gd2h5IGl0IGNhbm5vdCBsaXZlIGluIE1ha2VmaWxlLmJ1aWxkdmFycy5cbitpZmVxICgkKG9yaWdpbiBCUEZfR0NDKSx1bmRlZmluZWQpXG4rQlBGX0dDQyA6PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4gZW5kaWZcbiBcbi1CUEZfR0NDXHRcdD89ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOylcbi1pZmRlZiBBU0FOXG4tU0FOX0NGTEFHUyBcdD89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxuLWVsc2Vcbi1TQU5fQ0ZMQUdTXHQ/PVxuLWVuZGlmXG4tU0FOX0xERkxBR1NcdD89ICQoU0FOX0NGTEFHUylcbi1SRUxFQVNFXHRcdD89XG4tT1BUX0ZMQUdTXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcbi1cbi1MSUJFTEZfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcdTAwM2UvZGV2L251bGwpXG4tTElCRUxGX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcdTAwM2UvZGV2L251bGwgfHwgZWNobyAtbGVsZilcbi1cbiBTS0lQX0RPQ1NcdD89XG4gU0tJUF9MTFZNXHQ/PVxuIFNLSVBfTElCQkZEXHQ/PVxuIFNLSVBfQ1JZUFRPXHQ/PVxuIFxuLSMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yXG4tIyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXNcbi0jIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuLUJQRl9TVFJJQ1RfQlVJTEQgPz0gMVxuLVBFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKVxuLVxuLWlmZXEgKCQoc3JjdHJlZSksKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoQ1VSRElSKSkpXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4tZW5kaWZcbiBcbi1DT01NT05fQ0ZMQUdTID0gLWcgJChPUFRfRkxBR1MpIC1yZHluYW1pYyAtc3RkPWdudTExXHRcdFx0XHRcXFxuLVx0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXHRcdFx0XHRcXFxuLVx0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXHRcdFx0XHRcdFxcXG4tXHQgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKVx0XHRcdFxcXG4tXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcdFx0XFxcbi1cdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVx0XFxcbi1cdCAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxuLUxERkxBR1MgKz0gJChTQU5fTERGTEFHUylcbi1MRExJQlMgKz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4tXG4tUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCItRFRSQUZGSUNfTU9OSVRPUj0xXCIpXG4tUENBUF9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbClcbi1MRExJQlMgKz0gJChQQ0FQX0xJQlMpXG4tQ0ZMQUdTICs9ICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUylcbi1cbi0jIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzXG4taml0X2Rpc2FzbV9oZWxwZXJzLmMtQ0ZMQUdTID0gJChMTFZNX0NGTEFHUylcbi1cbi1pZm5lcSAoJChMTFZNKSwpXG4tIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nXG4tQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuLWVuZGlmXG4tXG4tIyBDaGVjayB3aGV0aGVyIGJwZiBjcHU9djQgaXMgc3VwcG9ydGVkIG9yIG5vdCBieSBjbGFuZ1xuIGlmbmVxICgkKHNoZWxsICQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtbWNwdT1oZWxwIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAndjQnKSwpXG4gQ0xBTkdfQ1BVVjQgOj0gMVxuIGVuZGlmXG4gXG4tIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXG4tQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICdpbnQgeDsnIHwgXFxcbi1cdCQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFxcXG4tXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuLVx0LXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIDEpXG4tXG4gIyBPcmRlciBjb3JyZXNwb25kIHRvICdtYWtlIHJ1bl90ZXN0cycgb3JkZXJcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXG4gXHR0ZXN0X3NvY2ttYXAgXFxcbkBAIC0xMDIsMTYgKzM4LDYgQEAgVEVTVF9JTlNUX1NVQkRJUlMgOj0gbm9fYWx1MzJcbiBpZm5lcSAoJChCUEZfR0NDKSwpXG4gVEVTVF9HRU5fUFJPR1MgKz0gdGVzdF9wcm9ncy1icGZfZ2NjXG4gVEVTVF9JTlNUX1NVQkRJUlMgKz0gYnBmX2djY1xuLVxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2Zcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tXG4gZW5kaWZcbiBcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuQEAgLTIxMywyMSArMTM5LDggQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXG4gZW5kaWZcbiBlbmRpZlxuIFxuLVNDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29sc1xuLUJVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxuLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcbi1CUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbi1IT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxuLUhPU1RfU0NSQVRDSF9ESVJcdDo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzXG4tSE9TVF9JTkNMVURFX0RJUlx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXG4tZWxzZVxuLUhPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKVxuLUhPU1RfU0NSQVRDSF9ESVJcdDo9ICQoU0NSQVRDSF9ESVIpXG4tSE9TVF9JTkNMVURFX0RJUlx0Oj0gJChJTkNMVURFX0RJUilcbi1lbmRpZlxuLUhPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuLVJFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbitcbiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVx0XHRcdFx0XFxcbiBcdFx0ICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KVx0XFxcbiBcdFx0ICAgICAuLi8uLi8uLi8uLi92bWxpbnV4XHRcdFx0XHRcXFxuQEAgLTI0Miw3ICsxNTUsNyBAQCBlbmRpZlxuICMgdG8gYnVpbGQgaW5kaXZpZHVhbCB0ZXN0cy5cbiAjIE5PVEU6IFNlbWljb2xvbiBhdCB0aGUgZW5kIGlzIGNyaXRpY2FsIHRvIG92ZXJyaWRlIGxpYi5taydzIGRlZmF1bHQgc3RhdGljXG4gIyBydWxlIGZvciBiaW5hcmllcy5cbi0kKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpXHRcdFx0XHRcXFxuKyQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuIFx0ICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpKTogJTogJChPVVRQVVQpLyUgO1xuIFxuICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nXG5AQCAtMjU2LDExICsxNjksMTQgQEAgJChNQUtFX0RJUlMpOlxuIFxuICQoT1VUUFVUKS8lLm86ICUuY1xuIFx0JChjYWxsIG1zZyxDQywsJEApXG4tXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAXG4rXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgLW8gJEBcbiBcbisjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcbisjIHRoZXkgbXVzdCBub3QgcmVhY2ggdGhlIGNsYW5nL2djYyBjb21tYW5kIGxpbmUgKGNsYW5nIHRyZWF0cyBhIGJhcmUgLmhcbisjIGFyZ3VtZW50IGFzIGEgcHJlY29tcGlsZWQtaGVhZGVyIGpvYiBhbmQgcmVmdXNlcyAtbykuXG4gJChPVVRQVVQpLyU6JS5jXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4tXHQkKFEpJChMSU5LLmMpICReICQoTERMSUJTKSAtbyAkQFxuK1x0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIExMVk0ncyBsZC5sbGQgZG9lc24ndCBzdXBwb3J0IGFsbCB0aGUgYXJjaGl0ZWN0dXJlcywgc28gdXNlIGl0IG9ubHkgb24geDg2XG4gaWZlcSAoJChTUkNBUkNIKSwkKGZpbHRlciAkKFNSQ0FSQ0gpLHg4NiByaXNjdikpXG5AQCAtMzE0LDE2ICsyMzAsNiBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSlcbiBcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcbiBcbiBcbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCJcIlxuLWVsc2Vcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4tVVNFX0JPT1RTVFJBUCA6PSBcImJvb3RzdHJhcC9cIlxuLWVuZGlmXG4tXG4gJChURVNUX0dFTl9QUk9HUykgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCk6ICQoQlBGT0JKKVxuIFxuIFRFU1RJTkdfSEVMUEVSU1x0Oj0gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXG5AQCAtMzQ0LDcgKzI1MCwzOSBAQCAkKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFRFU1RJTkdfSEVMUEVSUylcbiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXG4gJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcbiBcbi1CUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuKyMgQWxsIGhlbHBlciBvYmplY3RzIGEgcnVubmVyIGluc3RhbmNlIGxpbmtzLCBwcmUtYnVpbHQgaGVyZSBzbyBydW5uZXJcbisjIHN1Yi1tYWtlcyBzaGFyaW5nICQoT1VUUFVUKSBuZXZlciBjb21waWxlIHRoZW0gY29uY3VycmVudGx5LlxuK0hFTFBFUl9PQkpTIDo9ICQoVEVTVElOR19IRUxQRVJTKSAkKENHUk9VUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVx0XFxcbitcdCAgICAgICAkKFRSQUNFX0hFTFBFUlMpICQoSlNPTl9XUklURVIpICQoQ0FQX0hFTFBFUlMpXHRcdFxcXG4rXHQgICAgICAgJChORVRXT1JLX0hFTFBFUlMpICQoT1VUUFVUKS91c2R0XzEubyAkKE9VVFBVVCkvdXNkdF8yLm9cdFxcXG4rXHQgICAgICAgJChPVVRQVVQpL3hzay5vXG4rXG4rIyAkKEJQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXQgaW5zdGFsbHNcbisjIGxpYmJwZidzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaCkgaW50b1xuKyMgJChJTkNMVURFX0RJUik7IHdpdGhvdXQgaXQsIGhlbHBlcnMgaW5jbHVkaW5nIHRob3NlIGhlYWRlcnMgcmFjZSB0aGVcbisjIGluc3RhbGwgYW5kIGNhbiBzaWxlbnRseSBwaWNrIHVwIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC5cbisjXG4rIyBJbnZhcmlhbnQ6IHRoaXMgbGlzdCBtdXN0IGJlIGEgc3VwZXJzZXQgb2YgZXZlcnkgcHJlcmVxdWlzaXRlIHRoZVxuKyMgcnVubmVyJ3MgRVhUUkFfT0JKUyBydWxlIGF0dGFjaGVzIHRvIHRoZXNlIHNhbWUgb2JqZWN0cyAoRVhUUkFfSERSUyxcbisjIGJvdGggdGVzdHMuaCBmbGF2b3JzLCAkKEJQRk9CSikpLiBJdCBndWFyYW50ZWVzIHRoZSBoZWxwZXJzIGJ1aWx0XG4rIyBoZXJlIGFyZSBuZXZlciBvbGRlciB0aGFuIGEgcnVubmVyLXNpZGUgcHJlcmVxdWlzaXRlLCBzbyB0aGVcbisjIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBhbmQgdGVzdF9tYXBzIHN1Yi1tYWtlcywgd2hpY2ggc2hhcmUgJChPVVRQVVQpLFxuKyMgdHJlYXQgdGhlbSBhcyB1cCB0byBkYXRlIGluc3RlYWQgb2YgYm90aCByZWNvbXBpbGluZyB0aGUgc2FtZSBvYmplY3RcbisjIGZpbGUgY29uY3VycmVudGx5LlxuKyQoSEVMUEVSX09CSlMpOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmggaXBfY2hlY2tfZGVmcmFnX2ZyYWdzLmhcdFx0XFxcbitcdFx0JChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcXFxuK1x0XHRwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmggJChCUEZPQkopICQoQlBGVE9PTClcbitcbiskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogZmxvd19kaXNzZWN0b3JfbG9hZC5oXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFRvb2wgc3ViLWJ1aWxkczogYnBmdG9vbCBhbmQgbGliYnBmIChob3N0IGFuZCwgd2hlbiBjcm9zcy1jb21waWxpbmcsXG4rIyB0YXJnZXQgdmFyaWFudHMpIGFuZCByZXNvbHZlX2J0Zmlkcy5cbisjXG4rIyBOb3RlIHRoZSBkZWxpYmVyYXRlIGFzeW1tZXRyeTogdGhlIGhvc3QgbGliYnBmIGJ1aWxkcyB3aXRob3V0XG4rIyBzYW5pdGl6ZXJzIGFuZCB3aXRoIHRoZSBob3N0IHRvb2xjaGFpbi5cbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcXFxuIFx0XHQgICAgJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9icGZ0b29sXG4gXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKSAgLUMgJChCUEZUT09MRElSKVx0XHRcdCAgICAgICBcXFxuQEAgLTQxMiw3ICszNTAsNyBAQCBlbmRpZlxuIFxuICMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXG4gIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2Zcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcbisjIEJQRiBvYmplY3RzLlxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXG4gaWZlcSAoJChWTUxJTlVYX0gpLClcbiBcdCQoY2FsbCBtc2csR0VOLCwkQClcbkBAIC00MzcsMzc0ICszNzUsMTEgQEAgJChSRVNPTFZFX0JURklEUyk6ICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHNcdFxcXG4gXHRcdEhPU1RQS0dfQ09ORklHPSckKFBLR19DT05GSUcpJyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XG4tIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcIm1pc3NpbmdcIiBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbi0jIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cbi0jXG4tIyBVc2UgJy1pZGlyYWZ0ZXInOiBEb24ndCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4tIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxuLWRlZmluZSBnZXRfc3lzX2luY2x1ZGVzXG4tJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbi1cdHwgc2VkIC1uICcvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfScpIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXCItRF9fcmlzY3ZfeGxlbj0lZCAtRF9fQklUU19QRVJfTE9ORz0lZFwiLCAkJDMsICQkMyl9JykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX2xvb25nYXJjaF9ncmxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzKX0nKSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXCItRCVzPSVzIFwiLCAkJDIsICQkMyl9Jylcbi1lbmRlZlxuLVxuLSMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuLUlTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBcXFxuLVx0XHRcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVx0XHRcdFx0XFxcbi1cdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4tXHQgICAgIC1zdGQ9Z251MTFcdFx0IFx0XHRcdFx0XHRcXFxuLVx0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZtcy1leHRlbnNpb25zXHRcdFx0XHRcdFx0XFxcbi1cdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcdFx0XHRcXFxuLVx0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuLVx0ICAgICAjXG4tIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcbi1cbi1DTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUylcbi1cbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcbi0kKE9VVFBVVCkvdGVzdF94ZHBfbm9pbmxpbmUubzogQlBGX0NGTEFHUyArPSAtZm5vLWlubGluZVxuLVxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxuLSQoT1VUUFVUKS9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5vOiBjZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oXG4tXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXG4tIyAkMSAtIGlucHV0IC5jIGZpbGVcbi0jICQyIC0gb3V0cHV0IC5vIGZpbGVcbi0jICQzIC0gQ0ZMQUdTXG4tIyAkNCAtIGJpbmFyeSBuYW1lXG4tZGVmaW5lIENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJQRicgJyQobm90ZGlyICQyKScgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBkaXNhYmxlZCBhbHUzMlxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MiAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJQRicgJyQobm90ZGlyICQyKScgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcbi1kZWZpbmUgQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXY0IC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgR0NDXG4tZGVmaW5lIEdDQ19CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxHQ0MtQlBGLCQ0LCQyKVxuLVx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLVxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcbi1cbi1MSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4tXHRcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXHRcdFx0XFxcbi1cdFx0dGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oXHRcXFxuLVx0XHR0ZXN0X3VzZHQuc2tlbC5oIHRyYWNpbmdfbXVsdGkuc2tlbC5oXHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oXHRcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmhcdFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmhcbi1cbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXHRcXFxuLVx0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuLVx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXG4tXHR0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmNcbi1cbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xuLVxuLSMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXG4tXHRrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jXG4tU0tFTF9CTEFDS0xJU1QgKz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxuLXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm9cbi10ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cbi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cbi14c2tfeGRwX3Byb2dzLnNrZWwuaC1kZXBzIDo9IHhza194ZHBfcHJvZ3MuYnBmLm9cbi14ZHBfaHdfbWV0YWRhdGEuc2tlbC5oLWRlcHMgOj0geGRwX2h3X21ldGFkYXRhLmJwZi5vXG4teGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYub1xuLXRyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tXG4tTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpXG4tTElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKVxuLVxuLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXHRcdFxcXG4tXHRcdFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXHRcXFxuLVx0XHRcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXHRicGZfY29yZV9yZWFkLmhcdFxcXG4tXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX2VuZGlhbi5oXHRcXFxuLVx0XHRcdFx0XHRcdGJwZl9oZWxwZXJzLmhcdFxcXG4tXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcbi1cbi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCBcInRlbXBvcmFyeVwiIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcImZsYXZvclwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0Yylcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSXG4tXG4tTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKVxuLVRSVU5ORVJfT1VUUFVUIDo9ICQoT1VUUFVUKSQoaWYgJDIsLykkMlxuLVRSVU5ORVJfQklOQVJZIDo9ICQxJChpZiAkMiwtKSQyXG4tVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubyxcdFxcXG4tXHRcdFx0XHQgJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUU19ESVIpLyouYykpKVxuLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcdFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9MSUJfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcdFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9MSUJfU09VUkNFUykpKVxuLVRSVU5ORVJfRVhUUkFfSERSUyA6PSAkJChmaWx0ZXIgJS5oLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSlcbi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oXG4tVFJVTk5FUl9CUEZfU1JDUyA6PSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouYykpXG4tVFJVTk5FUl9CUEZfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm8sICQkKFRSVU5ORVJfQlBGX1NSQ1MpKVxuLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsXHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLFxcXG4tXHRcdFx0XHRcdCAgICAgICAkJChUUlVOTkVSX0JQRl9TUkNTKSkpXG4tVFJVTk5FUl9CUEZfTFNLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFMpICQkKExTS0VMU19FWFRSQSkpXG4tVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFNfU0lHTkVEKSlcbi1URVNUX0dFTl9GSUxFUyArPSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcImZsYXZvclwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0Yylcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTXG4tXG4tIyBQZXJtaXNzaXZlIGJ1aWxkIGJlaGF2aW91ciAoc2tpcC1vbi1mYWlsdXJlIGNvbXBpbGUsIHBhcnRpYWwtbGluaykgb25seVxuLSMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZCBpdHMgZmxhdm9yczsgcnVubmVycyB0aGF0IHVzZSBzdHJvbmcgY3Jvc3Mtb2JqZWN0XG4tIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxuLSMgVGhlIGNoZWNrIGlzIGlubGluZWQgcGVyLXJ1bm5lciBzbyAkMSBpcyBzdWJzdGl0dXRlZCBhdCAkKGNhbGwpIHRpbWUgYW5kXG4tIyB0aGUgcmVzdWx0IGlzIGJha2VkIGludG8gZWFjaCBydWxlJ3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKSAoc2lnbmVkKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdMSU5LLUJQRicgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkKEA6LnNrZWwuaD0uYnBmLm8pKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1x0XHRcdFx0XHRcXFxuLVx0XHQgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJ1x0XFxcbi1cdFx0XHQkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMgfCBzb3J0IDtcdFxcXG4tXHRcdCApIFx1MDAzZSAkJEApXG4tZW5kaWZcbi1cbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuLVxuLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcbi0jIE5vdGU6IHdlIGNkIGludG8gb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdCBpcyBmb3VuZFxuLSQoVFJVTk5FUl9URVNUX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubzpcdFx0XHRcXFxuLVx0XHQgICAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmNcdFx0XHRcdFxcXG4tXHRcdCAgICAgIHwgJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmRcbi1cdCQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkoY2QgJCQoQEQpIFx1MDAyNlx1MDAyNiAkJChDQykgLUkuICQkKENGTEFHUykgLU1NRCAtTVQgJCRAIC1jICQoQ1VSRElSKS8kJFx1MDAzYyAkJChMRExJQlMpIC1vICQkKEBGKSkgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkJEA7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtVEVTVCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MikpKVxuLVx0JCQoaWYgJCQoVEVTVF9ORUVEU19CVEZJRFMpLFx0XHRcdFx0XHRcdFxcXG4tXHRcdCQoUSlpZiBbIC1mICQkQCBdOyB0aGVuXHRcdFx0XHRcdFx0XFxcbi1cdFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcbicgXCJCVEZJRFNcIiBcIiBbJChUUlVOTkVSX0JJTkFSWSldXCIgXCIkJChub3RkaXIgJCRAKVwiKTsgXFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1x0XFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1x0XHRcXFxuLVx0XHRmaSlcbi1cbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRClcbi1cbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXG4taW5jbHVkZSAkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlM6Lm89LmQpKVxuLWVuZGlmXG4tXG4tIyBhZGQgcGVyIGV4dHJhIG9iaiBDRkdMQUdTIGRlZmluaXRpb25zXG4tJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLFx0XFxcbi1cdCQoZXZhbCAkKFRSVU5ORVJfT1VUUFVUKS8kKE4pLm86IENGTEFHUyArPSAkKCQoTikuYy1DRkxBR1MpKSlcbi1cbi0kKFRSVU5ORVJfRVhUUkFfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAlLmNcdFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuY1xuLVx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0jIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZVxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxuLSQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhczogJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4taWZuZXEgKCQyOiQoT1VUUFVUKSw6JChzaGVsbCBwd2QpKVxuLVx0JCQoY2FsbCBtc2csRVhULUNPUFksJChUUlVOTkVSX0JJTkFSWSksJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSlcbi1cdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xuLWVuZGlmXG4tXG4tIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlc1xuLSQoT1VUUFVUKS8kKFRSVU5ORVJfQklOQVJZKTogfCAkKFRSVU5ORVJfQlBGX09CSlMpXG4tXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSlcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfRVhUUkFfT0JKUykgJCQoQlBGT0JKKVx0XHRcXFxuLVx0XHRcdCAgICAgJChUUlVOTkVSX0xJQl9PQkpTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfQlBGVE9PTClcdFx0XHRcdFxcXG4tXHRcdFx0ICAgICAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XHRcdFxcXG4tXHRcdFx0ICAgICB8ICQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhc1x0XHRcdFxcXG4tXHRcdFx0ICAgICAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJChUUlVOTkVSX1RFU1RfT0JKUykpKVxuLVx0JCQoY2FsbCBtc2csQklOQVJZLCwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRAXG4tXHQkKFEpbG4gLXNmICQoaWYgJDIsLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcXFxuLVx0XHQgICAkKE9VVFBVVCkvJChpZiAkMiwkMi8pYnBmdG9vbFxuLVxuLWVuZGVmXG4tXG4tVkVSSUZZX1NJR19TRVRVUCA6PSAkKENVUkRJUikvdmVyaWZ5X3NpZ19zZXR1cC5zaFxuLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0Lmhcbi1WRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcbi1QUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXG4tXG4tJChWRVJJRklDQVRJT05fQ0VSVCkgJChQUklWQVRFX0tFWSk6ICQoVkVSSUZZX1NJR19TRVRVUClcbisjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdFxuKyMgZ3JvdXBlZCAtIHVuZGVyIC1qIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSBjb25jdXJyZW50bHkgYW5kIHRoZVxuKyMgb3BlbnNzbCBpbnZvY2F0aW9ucyByYWNlOyB0aGUgcGF0dGVybiBmb3JtIGlzIGltcGxpY2l0bHkgZ3JvdXBlZCBldmVuXG4rIyB3aXRoIG1ha2UgXHUwMDNjIDQuMyAoc2FtZSB3b3JrYXJvdW5kIGFzIHRoZSB0ZXN0X2ttb2RzIHJ1bGUpLlxuKyQoQlVJTERfRElSKS8lLnBlbSAkKEJVSUxEX0RJUikvJS5kZXI6ICQoVkVSSUZZX1NJR19TRVRVUClcbiBcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcbiBcdCQoUSkkKFZFUklGWV9TSUdfU0VUVVApIGdlbmtleSAkKEJVSUxEX0RJUilcbiBcbkBAIC04MzMsMTE2ICs0MDgsMTYyIEBAIExJQkFSRU5BX0JQRl9ERVBTIDo9ICQod2lsZGNhcmQgbGliYXJlbmEvTWFrZWZpbGVcdFx0XFxcbiBcdFx0XHRcdCBsaWJhcmVuYS9zZWxmdGVzdHMvKlx0XHRcXFxuIFx0XHRcdFx0IGxpYmFyZW5hLyouYnBmLm8pXG4gXG4tTElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcbi1cbiAkKExJQkFSRU5BX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXG4gXHQrJChNQUtFKSAtQyBsaWJhcmVuYSBsaWJhcmVuYS5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gXG4gaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbi1MSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbi1DRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbi1cbiAkKExJQkFSRU5BX0FTQU5fU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CUEZfREVQUylcbiBcdCskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKVxuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci5cbi1UUlVOTkVSX1RFU1RTX0RJUiA6PSBwcm9nX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuY1x0XHRcXFxuLVx0XHRcdCBjZ3JvdXBfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0cmFjZV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldHdvcmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCB0ZXN0aW5nX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgYnRmX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCBjYXBfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHVucHJpdl9oZWxwZXJzLmMgXHRcXFxuLVx0XHRcdCBzeXNjdGxfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBuZXRsaW5rX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaml0X2Rpc2FzbV9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IGlvX2hlbHBlcnMuY1x0XHRcXFxuLVx0XHRcdCB0ZXN0X2xvYWRlci5jXHRcdFxcXG4tXHRcdFx0IHhzay5jXHRcdFx0XFxcbi1cdFx0XHQgZGlzYXNtLmNcdFx0XFxcbi1cdFx0XHQgZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQganNvbl93cml0ZXIuYyBcdFx0XFxcbi1cdFx0XHQgJChWRVJJRllfU0lHX0hEUilcdFx0XFxcbi1cdFx0XHQgZmxvd19kaXNzZWN0b3JfbG9hZC5oXHRcXFxuLVx0XHRcdCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XFxcbi1cdFx0XHQgYnBmdG9vbF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHVzZHRfMS5jIHVzZHRfMi5jXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX1NLRUwpXHRcXFxuLVx0XHRcdCAkKExJQkFSRU5BX0FTQU5fU0tFTClcbi1UUlVOTkVSX0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcdFx0XFxcbi1cdFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKVxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MtY3B1djQgdGVzdCBydW5uZXIuXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVyc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rZGVmaW5lIGdlbl90ZXN0c19oZHJcbitcdCQoY2FsbCBtc2csVEVTVC1IRFIsLCRAKVxuK1x0JChRKShlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7XHRcdFxcXG4rXHQgICAgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJyBcXFxuK1x0XHQkKEBEKS8qLmMgfCBzb3J0KSBcdTAwM2UgJEBcbitlbmRlZlxuK1xuK3Byb2dfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBwcm9nX3Rlc3RzLyouYylcbitcdCQoZ2VuX3Rlc3RzX2hkcilcbitcbittYXBfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBtYXBfdGVzdHMvKi5jKVxuK1x0JChnZW5fdGVzdHNfaGRyKVxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBUZXN0IHJ1bm5lciBpbnN0YW5jZXMsIG9uZSBzdWItbWFrZSBlYWNoIChzZWUgTWFrZWZpbGUucnVubmVyKS5cbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuKyMgVGhlIExMVk0gZmVhdHVyZS1wcm9iZSByZXN1bHRzLCBCUEZfR0NDIGFuZCBURVNUX0tNT0RTIGFyZSBleHBvcnRlZFxuKyMgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuIENDIGlzIHBhc3NlZCBleHBsaWNpdGx5IGluc3RlYWQ6IGV4cG9ydGluZyBpdFxuKyMgd291bGQgYWxzbyBsZWFrIGxpYi5taydzIENDIGludG8gdGhlIGxpYmJwZi9icGZ0b29sL3Jlc29sdmVfYnRmaWRzXG4rIyBzdWItYnVpbGRzLCB3aGljaCBjb21wdXRlIHRoZWlyIG93bi4gKCdleHBvcnQgTkFNRScgb24gYW4gdW5kZWZpbmVkXG4rIyB2YXJpYWJsZSBjcmVhdGVzIGFuIGVtcHR5IG9uZSwgc28gdGhlc2Ugc3RheSBiZWxvdyB0aGUgZGVmaW5pdGlvbnMuKVxuK2V4cG9ydCBMTFZNX0NGTEFHUyBMTFZNX0xETElCUyBMTFZNX0xERkxBR1MgQlBGX0dDQyBURVNUX0tNT0RTXG4rXG4rUlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0nJChDQyknXG4rXG4rIyBFdmVyeXRoaW5nIGEgcnVubmVyIGluc3RhbmNlIHJlZmVyZW5jZXMgYnV0IGRvZXMgbm90IGtub3cgaG93IHRvIGJ1aWxkLlxuK1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKVx0XHRcXFxuK1x0XHQgICQoVFJVTk5FUl9CUEZUT09MKSAkKFJFU09MVkVfQlRGSURTKVx0XHRcdFxcXG4rXHRcdCAgJChPVVRQVVQpL3ZlcmlzdGF0XHRcdFx0XHRcdFxcXG4rXHRcdCAgJChWRVJJRllfU0lHX0hEUikgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVClcdFxcXG4rXHRcdCAgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcdFx0XFxcbitcdFx0ICBwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmhcdFx0XHRcXFxuK1x0XHQgICQoSEVMUEVSX09CSlMpXHRcdFx0XHRcdFxcXG4rXHRcdCAgJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcXFxuK1x0XHQgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVx0XHRcXFxuK1x0XHQgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUylcbitcbitGT1JDRTpcbitcbisjIFRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9ucyBhcmUgYWxzbyBpbnB1dHMgb2YgYmVuY2gsIHRlc3RfbWFwcyxcbisjIHhza3hjZWl2ZXIsIHhkcF8qIGFuZCB0ZXN0X2NwcDsgXCJkZWZhdWx0LXNrZWxzXCIgYnVpbGRzIGp1c3QgdGhvc2VcbisjIHdpdGhvdXQgdGhlIHRlc3RfcHJvZ3MgdGVzdCBvYmplY3RzIGFuZCBiaW5hcnkuXG4rLlBIT05ZOiBkZWZhdWx0LXNrZWxzXG4rZGVmYXVsdC1za2VsczogJChSVU5ORVJfUFJFUkVRUylcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYzJ1x0XHRcXFxuK1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTIHNrZWxzXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpIGRlZmF1bHQtc2tlbHMgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYzJ1x0XHRcXFxuK1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1ub19hbHUzMiBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYyJ1xuK1xuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxjcHV2NCkpXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtY3B1djQ6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1jcHV2NCBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0J1x0XHRcXFxuK1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGJwZl9nY2MpKVxuLWVuZGlmXG4tXG4tIyBEZWZpbmUgdGVzdF9tYXBzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0c1xuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xuLVRSVU5ORVJfRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuY1xuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj1cbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSAkJChlcnJvciBubyBCUEYgb2JqZWN0cyBzaG91bGQgYmUgYnVpbHQpXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9XG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcbi1cbi0jIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLlxuLSMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxuLSMgdGhlbSAoZS5nLiwgdGVzdC5oIGlzIHVzaW5nIGNvbXBsZXRlbHkgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0XG4tIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbisjIFN5cyBpbmNsdWRlcyBjb21lIGZyb20gdGhlICpob3N0KiBnY2MsIG5vdCAkKEJQRl9HQ0MpIC0gYnBmLWdjYydzIG93blxuKyMgc2VhcmNoIHBhdGggbGFja3MgdGhlIGhvc3QncyBhc20tZ2VuZXJpYy8gaGVhZGVycy5cbitHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbitcdFx0QlBGX0NDPSckKEJQRl9HQ0MpJyBCUEZfQ0NfTVNHPUdDQy1CUEZcdFx0XHRcdFxcXG4rXHRcdEJQRl9TWVNfSU5DTFVERVM9JyQoR0NDX1NZU19JTkNMVURFUyknXHRcdFx0XHRcXFxuK1x0XHRCUEZfQ0NfRkxBR1M9Jy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJ1xuK2VuZGlmXG4rXG4rIyB0ZXN0X21hcHMgY29tcGlsZXMgbWFwX3Rlc3RzLyouYyBhZ2FpbnN0IHRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9uc1xuKyQoT1VUUFVUKS90ZXN0X21hcHM6ICQoUlVOTkVSX1BSRVJFUVMpIG1hcF90ZXN0cy90ZXN0cy5oIGRlZmF1bHQtc2tlbHMgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHNcbitcbisjIERlZmF1bHQtZmxhdm9yIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgY29uc3VtZWQgYnkgdGFyZ2V0cyBpbiB0aGlzXG4rIyBNYWtlZmlsZSAoYW5kIGJ5IGxpYi5taydzIGluc3RhbGwgcnVsZSkgYXJlIHByb2R1Y2VkIGJ5IHRoZSBydW5uZXJcbisjIHN1Yi1tYWtlIGFib3ZlOyB0aGUgZW1wdHkgcmVjaXBlIHBsdXMgdGhlIG9yZGVyLW9ubHkgcHJlcmVxdWlzaXRlXG4rIyBtYWtlcyB0aGVtIGF2YWlsYWJsZSBoZXJlIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlIHJ1bm5lcidzIHJ1bGVzLlxuK0RFRkFVTFRfQlBGX09CSlMgOj0gJChwYXRzdWJzdCBwcm9ncy8lLmMsJChPVVRQVVQpLyUuYnBmLm8sJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuK1RFU1RfR0VOX0ZJTEVTICs9ICQoREVGQVVMVF9CUEZfT0JKUylcbitcbitCRU5DSF9TS0VMUyA6PSAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLFx0XHRcdFx0XHRcXFxuK1x0ICAgICAgIHRlc3Rfb3ZlcmhlYWQuc2tlbC5oIHRyaWdnZXJfYmVuY2guc2tlbC5oXHRcdFxcXG4rXHQgICAgICAgcmluZ2J1Zl9iZW5jaC5za2VsLmggcGVyZmJ1Zl9iZW5jaC5za2VsLmhcdFx0XFxcbitcdCAgICAgICBibG9vbV9maWx0ZXJfYmVuY2guc2tlbC5oIGJwZl9sb29wX2JlbmNoLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIHN0cm5jbXBfYmVuY2guc2tlbC5oIGJwZl9oYXNobWFwX2Z1bGxfdXBkYXRlX2JlbmNoLnNrZWwuaFxcXG4rXHQgICAgICAgbG9jYWxfc3RvcmFnZV9iZW5jaC5za2VsLmhcdFx0XHRcdFxcXG4rXHQgICAgICAgbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2VfYmVuY2guc2tlbC5oXHRcdFxcXG4rXHQgICAgICAgYmVuY2hfbG9jYWxfc3RvcmFnZV9jcmVhdGUuc2tlbC5oXHRcdFx0XFxcbitcdCAgICAgICBicGZfaGFzaG1hcF9sb29rdXAuc2tlbC5oIGh0YWJfbWVtX2JlbmNoLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIGNyeXB0b19iZW5jaC5za2VsLmggYmVuY2hfc29ja21hcF9wcm9nLnNrZWwuaFx0XHRcXFxuK1x0ICAgICAgIGxwbV90cmllX2JlbmNoLnNrZWwuaCBscG1fdHJpZV9tYXAuc2tlbC5oXHRcdFxcXG4rXHQgICAgICAgYnBmX25vcF9iZW5jaC5za2VsLmggeGRwX2xiX2JlbmNoLnNrZWwuaClcbitUT1BfU0tFTFMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyx4c2tfeGRwX3Byb2dzLnNrZWwuaFx0XHRcXFxuK1x0ICAgICB4ZHBfaHdfbWV0YWRhdGEuc2tlbC5oIHhkcF9mZWF0dXJlcy5za2VsLmhcdFx0XHRcXFxuK1x0ICAgICB0ZXN0X2NvcmVfZXh0ZXJuLnNrZWwuaCkgJChCRU5DSF9TS0VMUylcbitcbisjIEVtcHR5LXJlY2lwZSBkZWxlZ2F0aW9uOiBcImRlZmF1bHQtc2tlbHNcIiAocmUpYnVpbGRzIHRoZSBmaWxlIHZpYSB0aGVcbisjIHJ1bm5lciBzdWItbWFrZSwgYWZ0ZXIgd2hpY2ggbWFrZSByZS1zdGF0cyB0aGUgdGFyZ2V0LCBzbyBkZXBlbmRlbnRzXG4rIyBzZWUgZnJlc2ggdGltZXN0YW1wcyB3aXRoaW4gdGhlIHNhbWUgaW52b2NhdGlvbi4gRGVwZW5kZW50cyBzdGlsbFxuKyMgcmVidWlsZCBvbiBtdGltZSBvbmx5IC0gdGhlIHBob255IHByZXJlcXVpc2l0ZSBkb2VzIG5vdCBjYXNjYWRlLlxuKyQoREVGQVVMVF9CUEZfT0JKUykgJChUT1BfU0tFTFMpOiBkZWZhdWx0LXNrZWxzIDtcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgU3RhbmRhbG9uZSB0ZXN0IGJpbmFyaWVzXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbisjIHRlc3RfdmVyaWZpZXIgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kXG4rIyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IGZyb20gdGhlbSAoZS5nLiwgaXRzIHRlc3RzLmggdXNlcyBhIGNvbXBsZXRlbHlcbisjIGRpZmZlcmVudCBwYXR0ZXJuKSwgdGhhdCBpdCdzIHdvcnRoIGp1c3QgZGVmaW5pbmcgaXRzIHJ1bGVzIGV4cGxpY2l0bHkuXG4gdmVyaWZpZXIvdGVzdHMuaDogdmVyaWZpZXIvKi5jXG4tXHQkKHNoZWxsICggY2QgdmVyaWZpZXIvOyBcXFxuLVx0XHQgIGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJzsgXFxcbi1cdFx0ICBlY2hvICcjaWZkZWYgRklMTF9BUlJBWSc7IFxcXG4tXHRcdCAgbHMgKi5jIDJcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICdzQFxcKC4qXFwpQCNpbmNsdWRlIFxcXCJcXDFcXFwiQCc7IFxcXG4tXHRcdCAgZWNobyAnI2VuZGlmJyBcXFxuLVx0XHQpIFx1MDAzZSB2ZXJpZmllci90ZXN0cy5oKVxuLSQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiB0ZXN0X3ZlcmlmaWVyLmMgdmVyaWZpZXIvdGVzdHMuaCAkKEJQRk9CSikgfCAkKE9VVFBVVClcbitcdCQoUSkoIGNkIHZlcmlmaWVyLzsgXFxcbitcdCAgICAgIGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJzsgXFxcbitcdCAgICAgIGVjaG8gJyNpZmRlZiBGSUxMX0FSUkFZJzsgXFxcbitcdCAgICAgIGxzICouYyAyXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAnc0BcXCguKlxcKUAjaW5jbHVkZSBcXFwiXFwxXFxcIkAnOyBcXFxuK1x0ICAgICAgZWNobyAnI2VuZGlmJyBcXFxuK1x0ICAgICkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcbitcbiskKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIEluY2x1ZGUgZmluZF9iaXQuYyB0byBjb21waWxlIHhza3hjZWl2ZXIuXG4gRVhUUkFfU1JDIDo9ICQoVE9PTFNESVIpL2xpYi9maW5kX2JpdC5jIHByb2dfdGVzdHMvdGVzdF94c2suYyBwcm9nX3Rlc3RzL3Rlc3RfeHNrLmhcbi0kKE9VVFBVVCkveHNreGNlaXZlcjogJChFWFRSQV9TUkMpIHhza3hjZWl2ZXIuYyB4c2t4Y2VpdmVyLmggJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveHNrX3hkcF9wcm9ncy5za2VsLmggJChCUEZPQkopIHwgJChPVVRQVVQpXG4rJChPVVRQVVQpL3hza3hjZWl2ZXI6ICQoRVhUUkFfU1JDKSB4c2t4Y2VpdmVyLmMgeHNreGNlaXZlci5oICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hza194ZHBfcHJvZ3Muc2tlbC5oICQoQlBGT0JKKVxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4tJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YTogeGRwX2h3X21ldGFkYXRhLmMgJChPVVRQVVQpL25ldHdvcmtfaGVscGVycy5vICQoT1VUUFVUKS94c2subyAkKE9VVFBVVCkveGRwX2h3X21ldGFkYXRhLnNrZWwuaCB8ICQoT1VUUFVUKVxuKyQoT1VUUFVUKS94ZHBfaHdfbWV0YWRhdGE6IHhkcF9od19tZXRhZGF0YS5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveHNrLm8gJChPVVRQVVQpL3hkcF9od19tZXRhZGF0YS5za2VsLmhcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbiBcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaCB8ICQoT1VUUFVUKVxuKyQoT1VUUFVUKS94ZHBfZmVhdHVyZXM6IHhkcF9mZWF0dXJlcy5jICQoT1VUUFVUKS9uZXR3b3JrX2hlbHBlcnMubyAkKE9VVFBVVCkveGRwX2ZlYXR1cmVzLnNrZWwuaFxuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG5AQCAtOTU0LDExICs1NzUsMTggQEAgJChPVVRQVVQpL3Rlc3RfY3BwOiB0ZXN0X2NwcC5jcHAgJChPVVRQVVQpL3Rlc3RfY29yZV9leHRlcm4uc2tlbC5oICQoQlBGT0JKKVxuIFx0JChjYWxsIG1zZyxDWFgsLCRAKVxuIFx0JChRKSQoQ1hYKSAkKENYWEZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuY3BwLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0jIEJlbmNobWFyayBydW5uZXJcbi0kKE9VVFBVVCkvYmVuY2hfJS5vOiBiZW5jaHMvYmVuY2hfJS5jIGJlbmNoLmggJChCUEZPQkopXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEJlbmNobWFyayBydW5uZXIuIFRoZSBiZW5jaG1hcmsgbGlzdCBpcyBkZWZpbmVkIGJ5IHRoZSBmaWxlcyBpblxuKyMgYmVuY2hzLzogZXZlcnkgYmVuY2hzL2JlbmNoXyouYyBpcyBjb21waWxlZCBhbmQgbGlua2VkIGluLlxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4rQkVOQ0hfT0JKUyA6PSAkKHNvcnQgJChwYXRzdWJzdCBiZW5jaHMvJS5jLCQoT1VUUFVUKS8lLm8sJCh3aWxkY2FyZCBiZW5jaHMvYmVuY2hfKi5jKSkpXG4rXG4rJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKSB8IGRlZmF1bHQtc2tlbHNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CRU5DSCcgJyQobm90ZGlyICRAKScgMVx1MDAzZVx1MDAyNjIpKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJFTkNIKVxuK1xuKyMgYmVuY2htYXJrLXNwZWNpZmljIGdlbmVyYXRlZC1za2VsZXRvbiBkZXBlbmRlbmNpZXNcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm86ICQoT1VUUFVUKS90cmlnZ2VyX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcbkBAIC05NzgsMzcgKzYwNiwxOSBAQCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm86ICQoT1VUUFVUKS9scG1fdHJpZV9iZW5jaC5za2VsLmggJChPVVRQVVQpL2xwbV90clxuICQoT1VUUFVUKS9iZW5jaF9icGZfbm9wLm86ICQoT1VUUFVUKS9icGZfbm9wX2JlbmNoLnNrZWwuaCBiZW5jaF9icGZfdGltaW5nLmhcbiAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm86ICQoT1VUUFVUKS94ZHBfbGJfYmVuY2guc2tlbC5oIGJlbmNoX2JwZl90aW1pbmcuaFxuICQoT1VUUFVUKS9iZW5jaF9icGZfdGltaW5nLm86IGJlbmNoX2JwZl90aW1pbmcuaFxuK1xuICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKVxuICQoT1VUUFVUKS9iZW5jaDogTERMSUJTICs9IC1sbVxuLSQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbi1cdFx0ICQoVEVTVElOR19IRUxQRVJTKSBcXFxuLVx0XHQgJChUUkFDRV9IRUxQRVJTKSBcXFxuLVx0XHQgJChDR1JPVVBfSEVMUEVSUykgXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYmxvb21fZmlsdGVyX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfaHRhYl9tZW0ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS91c2R0XzEubyBcXFxuLVx0XHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXG4tXHRcdCAjXG4rJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gub1x0XHRcXFxuK1x0XHQgJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXHRcXFxuK1x0XHQgJChPVVRQVVQpL3RyYWNlX2hlbHBlcnMub1x0XFxcbitcdFx0ICQoT1VUUFVUKS9jZ3JvdXBfaGVscGVycy5vXHRcXFxuK1x0XHQgJChPVVRQVVQpL3VzZHRfMS5vXHRcdFxcXG4rXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm9cdFx0XFxcbitcdFx0ICQoQkVOQ0hfT0JKUylcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1MSU5LJyAnJChub3RkaXIgJEApIChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKScgMVx1MDAzZVx1MDAyNjIpKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCBcXFxuK1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLExJTkssLChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKSlcbiBcbiAjIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5nIGFib3V0IHNucHJpbnRmIHRydW5jYXRpbmcgc3RyaW5ncyBsaWtlOlxuICNcbkBAIC0xMDM2LDcgKzY0Niw3IEBAIEVYVFJBX0NMRUFOIDo9ICQoU0NSQVRDSF9ESVIpICQoSE9TVF9TQ1JBVENIX0RJUilcdFx0XHRcXFxuIFx0XHRcdCAgICAgICBsaWJ1cmFuZG9tX3JlYWQuc28pXHRcdFx0XFxcbiBcdCQoT1VUUFVUKS9GRUFUVVJFLURVTVAuc2VsZnRlc3RzXG4gXG4tLlBIT05ZOiBkb2NzIGRvY3MtY2xlYW5cbisuUEhPTlk6IGRvY3MgZG9jcy1jbGVhbiBsaWJhcmVuYSBsaWJhcmVuYV9hc2FuXG4gXG4gIyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3JcbiAuREVMRVRFX09OX0VSUk9SOlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNhNDk2MmIwNTg1ZmVjXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXG5AQCAtMCwwICsxLDE3MyBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0c1xuKyMgYnVpbGQsIGluY2x1ZGVkIGJ5IGJvdGggTWFrZWZpbGUgYW5kIE1ha2VmaWxlLnJ1bm5lci4gRGVmaW5pdGlvbnNcbisjIGZvbGxvdyB0aGUgb3JkZXIgdGhleSBoYWQgaW4gdGhlIE1ha2VmaWxlIGJlZm9yZSB0aGUgc3BsaXQuXG4rXG4rQ1hYID89ICQoQ1JPU1NfQ09NUElMRSlnKytcbitPQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5XG4rXG4rQ1VSRElSIDo9ICQoYWJzcGF0aCAuKVxuK1xuK1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbitMSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4rQlBGRElSIDo9ICQoTElCRElSKS9icGZcbitUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4rVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4rQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuK0FQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpXG4raWZuZXEgKCQoTyksKVxuK0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXG4rZWxzZVxuK0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4rZW5kaWZcbitHRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmhcbitQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4rXG4raWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpXG4rICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4rZW5kaWZcbitcbitpZmRlZiBBU0FOXG4rU0FOX0NGTEFHUyBcdD89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxuK2Vsc2VcbitTQU5fQ0ZMQUdTXHQ/PVxuK2VuZGlmXG4rU0FOX0xERkxBR1NcdD89ICQoU0FOX0NGTEFHUylcbitSRUxFQVNFXHRcdD89XG4rT1BUX0ZMQUdTXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcbitcbitMSUJFTEZfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcdTAwM2UvZGV2L251bGwpXG4rTElCRUxGX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcdTAwM2UvZGV2L251bGwgfHwgZWNobyAtbGVsZilcbitcbisjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuKyMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4rIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbitCUEZfU1RSSUNUX0JVSUxEID89IDFcbitQRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbitcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXG4rIyBTS0lQIG1hcmtlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgc28gdGhlIHJlc3Qgb2YgdGhlIGJ1aWxkIGNvbnRpbnVlcy5cbisjICQoMSkgLSBTS0lQIHRhZyAoQlBGLCBURVNULCBCRU5DSCwgU0tFTCwgTElOSywgLi4uKVxuKyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxuKyMgJCgzKSAtIG9wdGlvbmFsIG5vdGUgYXBwZW5kZWQgdG8gdGhlIFNLSVAgbWVzc2FnZVxuK3NraXBfb25fZmFpbCA9ICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7ICQoUk0pICRAICQoMik7IFxcXG4rXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLSQoMSknICckKG5vdGRpciAkQCkkKGlmICQoMyksICQoMykpJyAxXHUwMDNlXHUwMDI2MjsgfSlcbitcbitpZmVxICgkKHNyY3RyZWUpLClcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuK2VuZGlmXG4rXG4rQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbitcdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbitcdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuK1x0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuK1x0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4rXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4rXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbitMREZMQUdTICs9ICQoU0FOX0xERkxBR1MpXG4rTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxuK1xuK1BDQVBfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIFwiLURUUkFGRklDX01PTklUT1I9MVwiKVxuK1BDQVBfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwpXG4rTERMSUJTICs9ICQoUENBUF9MSUJTKVxuKyMgVW5saWtlIHRoZSBwcmUtc3BsaXQgTWFrZWZpbGUsIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhZnRlciAuLi9saWIubWtcbisjICh0b3AgbGV2ZWwpIG9yIHdpdGhvdXQgaXQgKHJ1bm5lciksIHNvIENPTU1PTl9DRkxBR1MgaXMgcHJlcGVuZGVkIHRvXG4rIyBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgaW5jbHVkZS1zZWFyY2ggb3JkZXIuXG4rTElCX01LX0NGTEFHUyA6PSAkKENGTEFHUylcbitDRkxBR1MgPSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpICQoTElCX01LX0NGTEFHUylcbitcbitpZm5lcSAoJChMTFZNKSwpXG4rIyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nXG4rQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxuK2VuZGlmXG4rXG4rIyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMispXG4rQ0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICdpbnQgeDsnIHwgXFxcbitcdCQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFxcXG4rXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuK1x0LXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIDEpXG4rXG4rU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4rQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXG4rSU5DTFVERV9ESVIgOj0gJChTQ1JBVENIX0RJUikvaW5jbHVkZVxuK0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuK0hPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKS9ob3N0XG4rSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbitIT1NUX0lOQ0xVREVfRElSXHQ6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL2luY2x1ZGVcbitlbHNlXG4rSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4rSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChTQ1JBVENIX0RJUilcbitIT1NUX0lOQ0xVREVfRElSXHQ6PSAkKElOQ0xVREVfRElSKVxuK2VuZGlmXG4rSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4rUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcbitcbitERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4rQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuK1VTRV9CT09UU1RSQVAgOj0gXCJcIlxuK2Vsc2VcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXG4rVVNFX0JPT1RTVFJBUCA6PSBcImJvb3RzdHJhcC9cIlxuK2VuZGlmXG4rXG4rQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcbitcbisjIEdldCBDbGFuZydzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuKyMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXCJtaXNzaW5nXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXG4rIyBzdWNoIGFzIGFzbS9ieXRlb3JkZXIuaCwgYXNtL3NvY2tldC5oLCBhc20vc29ja2lvcy5oLCBzeXMvY2RlZnMuaCBldGMuXG4rI1xuKyMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxuKyMgYnVpbGQgd291bGQgaGF2ZSBmYWlsZWQgYW55d2F5cy5cbitkZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xuKyQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXHUwMDNjL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIFxcXG4rXHR8IHNlZCAtbiAnL1x1MDAzYy4uLlx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcKC8uKlxcKXwtaWRpcmFmdGVyIFxcMXxwIH0nKSBcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fcmlzY3ZfeGxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzLCAkJDMpfScpIFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcIi1EX19CSVRTX1BFUl9MT05HPSVkXCIsICQkMyl9JykgXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFwiLUQlcz0lcyBcIiwgJCQyLCAkJDMpfScpXG4rZW5kZWZcbitcbisjIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbitJU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbitcdFx0XHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxuK01FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuK0JQRl9UQVJHRVRfRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXG4rXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuK0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxuK2VuZGlmXG4rXG4rIyBJbW1lZGlhdGUgb24gcHVycG9zZTogZXhwYW5kaW5nIGdldF9zeXNfaW5jbHVkZXMgZm9ya3Mgc2V2ZXJhbCBzaGVsbHMuXG4rQ0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxuK0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTilcdFxcXG4rXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcdFx0XHRcXFxuK1x0ICAgICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFx0XHRcXFxuK1x0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXHRcdFx0XFxcbitcdCAgICAgLXN0ZD1nbnUxMVx0XHQgXHRcdFx0XHRcdFxcXG4rXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFx0XHRcdFx0XHRcXFxuK1x0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1x0XHRcdFx0XHRcXFxuK1x0ICAgICAtZm1zLWV4dGVuc2lvbnNcdFx0XHRcdFx0XHRcXFxuK1x0ICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlc1x0XHRcdFxcXG4rXHQgICAgIC1Xbm8taW5pdGlhbGl6ZXItb3ZlcnJpZGVzXHRcdFx0XHRcdFxcXG4rXHQgICAgICNcbisjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxuK1xuK0NMQU5HX0NGTEFHUyA9ICQoQ0xBTkdfU1lTX0lOQ0xVREVTKVxuK1xuK1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2hcbitWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oXG4rVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXG4rUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxuK1xuK0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4rXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbitMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbitDRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbitlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNlZDQ0YWFkN2VkZWQ0XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5AQCAtMCwwICsxLDMxNSBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcbisjIChub19hbHUzMiwgY3B1djQsIGJwZl9nY2MpLCBvciB0ZXN0X21hcHMuXG4rI1xuKyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSB3aXRoIGl0cyBvd24gb3V0cHV0IGRpcmVjdG9yeSxcbisjIHNvIGV2ZXJ5dGhpbmcgaGVyZSBpcyB3cml0dGVuIGluIHBsYWluIG1ha2UgLSBubyAkJC1lc2NhcGluZywgbm8gZXZhbCxcbisjIG5vIHBlci1mbGF2b3IgZ3VhcmRzLiBUaGlzIGZpbGUgaXMgYWx3YXlzIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsXG4rIyBuZXZlciBkaXJlY3RseTogYWxsIHNoYXJlZCBwcmVyZXF1aXNpdGVzIChsaWJicGYsIGJwZnRvb2wsIHZtbGludXguaCxcbisjIHZlcmlzdGF0LCBoZWxwZXIgb2JqZWN0cywgc2lnbmluZyBrZXksIGdlbmVyYXRlZCB0ZXN0cy5oLCBleHRyYVxuKyMgYmluYXJpZXMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZCBhcmVcbisjIHJlZmVyZW5jZWQgYmVsb3cgYXMgcGxhaW4gZmlsZXMuXG4rI1xuKyMgUGFyYW1ldGVycyAoYWxsIHBhc3NlZCBvbiB0aGUgc3ViLW1ha2UgY29tbWFuZCBsaW5lKTpcbisjICAgT1VUUFVUICAgICAgYWJzb2x1dGUgcGF0aCBvZiB0aGUgc2VsZnRlc3RzIG91dHB1dCBkaXJlY3RvcnlcbisjICAgUlVOTkVSICAgICAgYmFzZSBiaW5hcnkgbmFtZTogdGVzdF9wcm9ncyB8IHRlc3RfbWFwc1xuKyMgICBGTEFWT1IgICAgICBmbGF2b3Igc3VmZml4OiBlbXB0eSB8IG5vX2FsdTMyIHwgY3B1djQgfCBicGZfZ2NjXG4rIyAgIFRFU1RTX0RJUiAgIGRpcmVjdG9yeSB3aXRoIHRoZSB0ZXN0IHNvdXJjZXM6IHByb2dfdGVzdHMgfCBtYXBfdGVzdHNcbisjICAgQlBGX0NDICAgICAgY29tcGlsZXIgZm9yIHByb2dzLyouYyBCUEYgb2JqZWN0cyAoJChDTEFORykgb3JcbisjICAgICAgICAgICAgICAgJChCUEZfR0NDKSk7IGVtcHR5IGZvciB0ZXN0X21hcHMsIHdoaWNoIGJ1aWxkcyBub25lXG4rIyAgIEJQRl9DQ19NU0cgIGJ1aWxkLWxvZyB0YWc6IENMTkctQlBGIHwgR0NDLUJQRlxuKyMgICBCUEZfQ0NfRkxBR1NcbisjICAgICAgICAgICAgICAgY29tcGlsZXItc3BlY2lmaWMgZmxhZ3MgKC1PMiwgdGFyZ2V0Ly1tY3B1IG9yIGdjYyBrbm9icylcbisjICAgQlBGX1NZU19JTkNMVURFU1xuKyMgICAgICAgICAgICAgICBzeXN0ZW0gaW5jbHVkZSBmbGFncyBtYXRjaGluZyBCUEZfQ0NcbisjICAgQlBGX0RFRklORVMgZXh0cmEgZGVmaW5lcyBmb3IgQlBGIG9iamVjdHMgKGUuZy4gLURFTkFCTEVfQVRPTUlDU19URVNUUylcbisjICAgQ0MgICAgICAgICAgQyBjb21waWxlciAoYXMgcmVzb2x2ZWQgYnkgbGliLm1rIGluIHRoZSBtYWluIE1ha2VmaWxlKVxuKyMgICBMTFZNX0NGTEFHUy9MTFZNX0xETElCUy9MTFZNX0xERkxBR1NcbisjICAgICAgICAgICAgICAgcmVzdWx0cyBvZiB0aGUgdG9wLWxldmVsIExMVk0gZmVhdHVyZSBwcm9iZVxuK1xuK2luY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxuK2luY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoXG4raW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcbitcbisjIFNhbWUgbWVzc2FnZSBoZWxwZXJzIGFzIC4uL2xpYi5taywgd2hpY2ggb25seSB0aGUgdG9wIGxldmVsIGluY2x1ZGVzLlxuK2lmZXEgKCQoViksMSlcbitRID1cbittc2cgPVxuK2Vsc2VcbitRID0gQFxuK21zZyA9IEBwcmludGYgJyAgJS04cyVzICVzJXNcXG4nIFwiJCgxKVwiIFwiJChpZiAkKDIpLCBbJCgyKV0pXCIgXCIkKG5vdGRpciAkKDMpKVwiIFwiJChpZiAkKDQpLCAkKDQpKVwiO1xuK01BS0VGTEFHUyArPSAtLW5vLXByaW50LWRpcmVjdG9yeVxuK2VuZGlmXG4rXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbitcbisjIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBDRkxBR1MvTERGTEFHUyBhZGRpdGlvbnMgaW4gLi4vbGliLm1rLlxuK0NGTEFHUyArPSAtRF9HTlVfU09VUkNFPVxuK0NGTEFHUyArPSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcbitDRkxBR1MgKz0gJChVU0VSQ0ZMQUdTKVxuK0xERkxBR1MgKz0gJChVU0VSTERGTEFHUylcbitpZm5lcSAoJChMTFZNKSwpXG4rQ0ZMQUdTICs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyXG4rQ0ZMQUdTICs9IC1Xbm8tZ251LXZhcmlhYmxlLXNpemVkLXR5cGUtbm90LWF0LWVuZFxuK2VuZGlmXG4rXG4rQklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXG4rUkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXG4rXG4rYWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXG4rLlBIT05ZOiBhbGxcbitcbisjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuKy5ERUxFVEVfT05fRVJST1I6XG4rXG4rIyBQZXJtaXNzaXZlIHNraXAtb24tZmFpbHVyZSBvZiBpbmRpdmlkdWFsIHRlc3RzIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmRcbisjIGl0cyBmbGF2b3JzIG9ubHk7IHRlc3RfbWFwcyB1c2VzIHN0cm9uZyBjcm9zcy1vYmplY3QgcmVmZXJlbmNlcyBhbmQga2VlcHNcbisjIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIEJQRl9TVFJJQ1RfQlVJTEQ9MC5cbitQRVJNSVNTSVZFX1RFU1RTIDo9ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncywkKFJVTk5FUikpLCQoUEVSTUlTU0lWRSkpXG4rXG4rJChSRElSKTpcbitcdCQoY2FsbCBtc2csTUtESVIsLCRAKVxuK1x0JChRKW1rZGlyIC1wICRAXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIFBlci1ydW5uZXIgc291cmNlc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4raWZlcSAoJChSVU5ORVIpLHRlc3RfcHJvZ3MpXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X3Byb2dzLmMgY2dyb3VwX2hlbHBlcnMuYyB0cmFjZV9oZWxwZXJzLmNcdFx0XFxcbitcdFx0IG5ldHdvcmtfaGVscGVycy5jIHRlc3RpbmdfaGVscGVycy5jIGJ0Zl9oZWxwZXJzLmNcdFxcXG4rXHRcdCBjYXBfaGVscGVycy5jIHVucHJpdl9oZWxwZXJzLmMgc3lzY3RsX2hlbHBlcnMuY1x0XFxcbitcdFx0IG5ldGxpbmtfaGVscGVycy5jIGppdF9kaXNhc21faGVscGVycy5jIGlvX2hlbHBlcnMuY1x0XFxcbitcdFx0IHRlc3RfbG9hZGVyLmMgeHNrLmMgZGlzYXNtLmMgZGlzYXNtX2hlbHBlcnMuY1x0XHRcXFxuK1x0XHQganNvbl93cml0ZXIuYyBicGZ0b29sX2hlbHBlcnMuYyB1c2R0XzEuYyB1c2R0XzIuY1xuK0xJQl9TT1VSQ0VTIDo9IGZpbmRfYml0LmNcbitFWFRSQV9IRFJTIDo9IGZsb3dfZGlzc2VjdG9yX2xvYWQuaCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFx0XHRcXFxuK1x0ICAgICAgJChWRVJJRllfU0lHX0hEUikgJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcbitFWFRSQV9GSUxFUyA6PSAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFxcXG4rXHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXHRcdFxcXG4rXHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XHRcXFxuK1x0ICAgICAgICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcdFx0XHRcXFxuK1x0ICAgICAgIGltYV9zZXR1cC5zaCAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuK1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcdFx0XHRcXFxuK1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbitlbmRpZlxuK1xuK2lmZXEgKCQoUlVOTkVSKSx0ZXN0X21hcHMpXG4rRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuYyB0ZXN0aW5nX2hlbHBlcnMuY1xuK2VuZGlmXG4rXG4rIyBOb3RlIG9uIHRoZSB1bmZsYXZvcmVkIHJ1bm5lcnMsIHdoaWNoIHNoYXJlICQoT1VUUFVUKSB3aXRoIHRoZSBtYWluXG4rIyBNYWtlZmlsZTogaGVscGVyIG9iamVjdHMgdGhlIG1haW4gTWFrZWZpbGUgYWxzbyB1c2VzIChhbmQgbGlzdHMgaW4gdGhlXG4rIyBydW5uZXIgcHJlcmVxdWlzaXRlcykgYXJlIGFscmVhZHkgYnVpbHQgYW5kIGZyZXNoIHdoZW4gYSBydW5uZXIgc3RhcnRzLFxuKyMgc28gdGhlIHJ1bGVzIGJlbG93IGZpbmQgdGhlbSB1cCB0byBkYXRlIGFuZCBuZXZlciB3cml0ZSB0aGVtLiBUaGlzXG4rIyBob2xkcyBiZWNhdXNlIHRoZSBtYWluIE1ha2VmaWxlJ3MgaGVscGVyLW9iamVjdCBydWxlIGRlcGVuZHMgb24gYVxuKyMgc3VwZXJzZXQgb2YgdGhlIHByZXJlcXVpc2l0ZXMgdGhlIEVYVFJBX09CSlMgcnVsZSB1c2VzIGhlcmUgLSBrZWVwXG4rIyB0aGUgdHdvIGxpc3RzIGluIHN5bmMgKHNlZSB0aGUgaW52YXJpYW50IGNvbW1lbnQgdGhlcmUpLlxuK1xuK1RFU1RTX0hEUiA6PSAkKFRFU1RTX0RJUikvdGVzdHMuaFxuK1xuK1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSlcbitURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxuK1RFU1RfREVQUyAgOj0gJChURVNUX09CSlM6Lm89LmQpXG4rRVhUUkFfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKGZpbHRlciAlLmMsJChFWFRSQV9TT1VSQ0VTKSkpXG4rTElCX09CSlMgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubywkKExJQl9TT1VSQ0VTKSlcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4raWZuZXEgKCQoQlBGX0NDKSwpXG4rXG4rQlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuK0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5icGYubywkKEJQRl9TUkNTKSlcbitcbisjIEJQRiBvYmplY3RzIHRoYXQgY2Fubm90IGhhdmUgYSByZWd1bGFyIHNrZWxldG9uLlxuK1NLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcbitcbitMU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXHRcXFxuK1x0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuK1x0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXG4rXHR0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmNcbitcbitMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xuK1xuKyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuK0xTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXG4rXHRrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jXG4rU0tFTF9CTEFDS0xJU1QgKz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRClcbitcbisjIFNrZWxldG9ucyBtYWRlIGJ5IGxpbmtpbmcgbXVsdGlwbGUgQlBGIG9iamVjdHMgdG9nZXRoZXIuIFRoZSAlLWRlcHNcbisjIG1hcHBpbmcgaXMgdGhlIG9ubHkgaGFuZC1tYWludGFpbmVkIG1ldGFkYXRhOiBpdCBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tXG4rIyB0aGUgc291cmNlcy5cbit0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4rbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuK2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cbitsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4rIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbisjIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbit0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4rdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4rdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4rdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4rdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbit0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuK3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbitcbitMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4rXHRcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmhcdFx0XHRcXFxuK1x0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4rXHRcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcdFx0XHRcXFxuK1x0XHR0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmhcdFx0XHRcdFxcXG4rXHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbitcdFx0dHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaFxuK0xJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpKVxuK1xuK1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsXHRcdFx0XHRcXFxuK1x0ICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpXG4rTFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTKSAkKExTS0VMU19FWFRSQSkpXG4rTFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTX1NJR05FRCkpXG4rTElOS0VEX1NLRUxTX0ggIDo9ICQoYWRkcHJlZml4ICQoUkRJUikvLCQoTElOS0VEX1NLRUxTKSlcbitBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXG4rXG4rSEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaClcdFx0XHRcXFxuK1x0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbitcdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcdFxcXG4rXHRcdFx0XHRcdFx0YnBmX2VuZGlhbi5oXHRcdFxcXG4rXHRcdFx0XHRcdFx0YnBmX2hlbHBlcnMuaFx0XHRcXFxuK1x0XHRcdFx0XHRcdGJwZl90cmFjaW5nLmgpXG4rXG4rIyBQZXItc291cmNlIEJQRiBjb21waWxhdGlvbiBmbGFnIG92ZXJyaWRlcyAoJFx1MDAzYy1DRkxBR1MgLyAkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpLlxuKyMgR0NDIGNhbm5vdCBkaXNhYmxlIFwiZGVjbGFyYXRpb24gb2YgYW5vbnltb3VzIHN0cnVjdCBpbiBwYXJhbWV0ZXIgbGlzdFwiXG4rIyB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlc2UgKHRlY2huaWNhbGx5IGxlZ2FsKSB0ZXN0IHByb2dyYW1zLlxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rXG4rJChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFx0XHRcdFxcXG4rXHQgICAgICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcXFxuK1x0ICAgICB8ICQoUkRJUikgJChCUEZPQkopXG4rXHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxuK1x0JChRKSQoQlBGX0NDKSAkKEJQRl9DRkxBR1MpICQoQlBGX1NZU19JTkNMVURFUykgJChCUEZfREVGSU5FUylcdFxcXG4rXHRcdCQoJFx1MDAzYy1DRkxBR1MpICQoJFx1MDAzYy0kKEZMQVZPUiktQ0ZMQUdTKVx0XHRcdFxcXG4rXHRcdCQoQlBGX0NDX0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQlBGKVxuK1xuKyMgZ2VuX2JwZl9za2VsLnNoIHBpY2tzIHRoZSBicGZ0b29sIGJpbmFyeSB1cCBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbitleHBvcnQgQlBGVE9PTFxuK0dFTl9TS0VMIDo9IC4vZ2VuX2JwZl9za2VsLnNoXG4rXG4rJChTS0VMUyk6ICQoUkRJUikvJS5za2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKVxuK1x0JChjYWxsIG1zZyxHRU4tU0tFTCwkKEJJTkFSWSksJEApXG4rXHQkKFEpJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFxcXG4rXHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJFx1MDAzY1x0XHRcXFxuK1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXG4rXG4rJChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csR0VOLVNLRUwsJChCSU5BUlkpLCRAKVxuK1x0JChRKSQoR0VOX1NLRUwpIC0tbmFtZSAkKl9sc2tlbCAtLWxza2VsXHRcdFx0XHRcXFxuK1x0XHQtLXNrZWwgJEAgJFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXG4rXG4rJChMU0tFTFNfU0lHTkVEX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTClcdFxcXG4rXHRcdCAgICAkKEdFTl9TS0VMKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csR0VOLVNLRUwsJChCSU5BUlkpIChzaWduZWQpLCRAKVxuK1x0JChRKVBSSVZBVEVfS0VZPSQoUFJJVkFURV9LRVkpXHRcdFx0XHRcdFxcXG4rXHRcdFZFUklGSUNBVElPTl9DRVJUPSQoVkVSSUZJQ0FUSU9OX0NFUlQpXHRcdFx0XFxcbitcdFx0JChHRU5fU0tFTCkgLS1zaWduIC0tbmFtZSAkKl9sc2tlbFx0XHRcdFxcXG4rXHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbitcbisuU0VDT05ERVhQQU5TSU9OOlxuKyQoTElOS0VEX1NLRUxTX0gpOiAkKFJESVIpLyUuc2tlbC5oOiAkJChhZGRwcmVmaXggJChSRElSKS8sJCQoJCQqLnNrZWwuaC1kZXBzKSkgXFxcbitcdFx0ICAgJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csTElOSy1CUEYsJChCSU5BUlkpLCQoQDouc2tlbC5oPS5icGYubykpXG4rXHQkKGNhbGwgbXNnLEdFTi1TS0VMLCQoQklOQVJZKSwkQClcbitcdCQoUSkkKEdFTl9TS0VMKSAtLW5hbWUgJCpcdFx0XHRcdFx0XFxcbitcdFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKVx0XHRcXFxuK1x0XHQkKGFkZHByZWZpeCAkKFJESVIpLywkKCQqLnNrZWwuaC1kZXBzKSlcdFx0XHRcXFxuK1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXG4rXG4rZW5kaWYgIyBCUEZfQ0NcbitcbisuUEhPTlk6IHNrZWxzXG4rc2tlbHM6ICQoQUxMX1NLRUxTKVxuK1xuKyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdCBmdWxsXG4rIyBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyAlLm8gZmlsZS5cbisjIFRoZSB2cGF0aCBkaXJlY3RpdmVzIGluc3RydWN0IG1ha2UgdG8gYWxzbyBzZWFyY2ggZm9yIHNrZWwgZmlsZXMgaW5cbisjICQoUkRJUikgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuK3ZwYXRoICUuc2tlbC5oICQoUkRJUilcbit2cGF0aCAlLmxza2VsLmggJChSRElSKVxuK3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbitcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xuKyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuK1xuKyMgQ29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMuXG4rIyBOb3RlOiB3ZSBjZCBpbnRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0c1xuKyMgYXJlIGZvdW5kLiBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRFxuKyMgYmVsb3c7IHRoZSBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0XG4rIyBjb21waWxhdGlvbiBhZnRlciBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3RcbisjIGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycyBjaGFuZ2UuXG4rJChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZFxuK1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpKGNkICQoQEQpIFx1MDAyNlx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXHUwMDNjIC1vICQoQEYpKSBcXFxuK1x0XHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChjYWxsIHNraXBfb25fZmFpbCxURVNUKSlcbitcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4rXHRcdCQoUSlpZiBbIC1mICRAIF07IHRoZW5cdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcbicgXCJCVEZJRFNcIiBcIiBbJChCSU5BUlkpXVwiIFwiJChub3RkaXIgJEApXCIpOyBcXFxuK1x0XHQkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vICRAO1x0XFxcbitcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbitcdFx0ZmkpXG4rXG4rJChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoRVhUUkFfSERSUykgJChCUEZPQkopIFxcXG4rXHQgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpXG4rXG4raW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSlcbitcbiskKFJESVIpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgKz0gJChMTFZNX0NGTEFHUylcbitcbiskKEVYVFJBX09CSlMpOiAkKFJESVIpLyUubzogJS5jICQoRVhUUkFfSERSUykgJChURVNUU19IRFIpICQoQlBGT0JKKSB8ICQoUkRJUilcbitcdCQoY2FsbCBtc2csRVhULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICRcdTAwM2MgLW8gJEBcbitcbiskKExJQl9PQkpTKTogJChSRElSKS8lLm86ICQoVE9PTFNESVIpL2xpYi8lLmMgfCAkKFJESVIpXG4rXHQkKGNhbGwgbXNnLExJQi1PQkosJChCSU5BUlkpLCRAKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAXG4rXG4rIyBOb24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhclxuKyMgd2UgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKS5cbisuUEhPTlk6IGV4dHJhc1xuK2V4dHJhczogJChpZiAkKFBFUk1JU1NJVkUpLCQod2lsZGNhcmQgJChFWFRSQV9GSUxFUykpLCQoRVhUUkFfRklMRVMpKSB8ICQoUkRJUilcbitpZm5lcSAoJChGTEFWT1IpOiQoT1VUUFVUKSw6JChDVVJESVIpKVxuK2lmbmVxICgkKHN0cmlwICQoRVhUUkFfRklMRVMpKSwpXG4rXHQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoQklOQVJZKSwkKG5vdGRpciAkKEVYVFJBX0ZJTEVTKSkpXG4rXHQkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvXG4rZW5kaWZcbitlbmRpZlxuK1xuKyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdFxuKyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk6IHRoZSBvYmplY3RzIGV4aXN0aW5nIGF0XG4rIyBwYXJzZSB0aW1lIGFyZSBub3JtYWwgcHJlcmVxdWlzaXRlcyAtIHNvIGVkaXRpbmcgYSB0ZXN0IHNvdXJjZSBzdGlsbFxuKyMgcmVsaW5rcyB0aGUgcnVubmVyIC0gd2hpbGUgdGhlIGZ1bGwgc2V0IHN0YXlzIG9yZGVyLW9ubHkgdG8gZHJpdmUgdGhlXG4rIyBidWlsZCBhdHRlbXB0cywgYW5kIHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnNcbisjIGF0IGxpbmsgdGltZS5cbisjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgZXh0cmEgb2JqZWN0cyxcbisjIGxpYmJwZiwgbGliIG9iamVjdHMpLlxuKyQoT1VUUFVUKS8kKEJJTkFSWSk6ICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSksJChURVNUX09CSlMpKSBcXFxuK1x0XHQgICAgICQoRVhUUkFfT0JKUykgJChCUEZPQkopICQoTElCX09CSlMpXHRcdFxcXG4rXHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcXFxuK1x0XHQgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpXHRcdFx0XHRcXFxuK1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4rXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpXHRcdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKVx0XFxcbitcdFx0XHQkKGZpbHRlci1vdXQgJChURVNUX09CSlMpLCQoZmlsdGVyICUuYSAlLm8sJF4pKSxcXFxuK1x0XHRcdCQoZmlsdGVyICUuYSAlLm8sJF4pKVx0XHRcdFx0XFxcbitcdFx0JChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRAXG4rXHQkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcbitcdFx0ICAgJChSRElSKS9icGZ0b29sXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZTIzNGYzYTU3ZDQ2YmZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcbkBAIC0wLDAgKzEsOTMgQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBMaW5rIEJQRiBvYmplY3QgZmlsZShzKSB3aXRoIFwiYnBmdG9vbCBnZW4gb2JqZWN0XCIgYW5kIGdlbmVyYXRlIGFcbisjIHNrZWxldG9uIChvciBsaWdodCBza2VsZXRvbikgaGVhZGVyIGZyb20gdGhlIHJlc3VsdC5cbisjXG4rIyBVc2FnZTpcbisjICAgQlBGVE9PTD1cdTAwM2NicGZ0b29sXHUwMDNlIGdlbl9icGZfc2tlbC5zaCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cbisjXG4rIyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcIm5hbWUgTkFNRVwiIGZvciBicGZ0b29sKVxuKyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcImZvby5za2VsLmhcIiBvciBcImZvby5sc2tlbC5oXCIpXG4rIyAgIC0tc3Vic2tlbCBPVVQgICAgIGFsc28gZ2VuZXJhdGUgYSBzdWJza2VsZXRvbiBoZWFkZXIgaW50byBPVVRcbisjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXG4rIyAgIC0tc2lnbiAgICAgICAgICAgIHNpZ24gdGhlIChsaWdodCkgc2tlbGV0b24sIHdpdGggdGhlIGtleSBhbmRcbisjICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGUgdGFrZW4gZnJvbSAkUFJJVkFURV9LRVkgYW5kXG4rIyAgICAgICAgICAgICAgICAgICAgICRWRVJJRklDQVRJT05fQ0VSVFxuKyNcbisjIFRoZSBpbnB1dHMgYXJlIGxpbmtlZCB0aHJlZSB0aW1lcyBhbmQgdGhlIDJuZCBhbmQgM3JkIHJlc3VsdHNcbisjIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFwiYnBmdG9vbCBnZW5cbisjIG9iamVjdFwiLlxuKyNcbisjIEludGVybWVkaWF0ZSBmaWxlcyBjYXJyeSBhIFwibGlua2VkXCIgaW5maXggLSBcImxsaW5rZWRcIiBmb3IgbGlnaHQgb3JcbisjIHNpZ25lZCBza2VsZXRvbnMsIHNvIGdlbmVyYXRpbmcgYSAuc2tlbC5oIGFuZCBhIC5sc2tlbC5oIGZyb20gdGhlXG4rIyBzYW1lIC5icGYubyBpbiBwYXJhbGxlbCBuZXZlciByYWNlcyBvbiB0aGUgaW50ZXJtZWRpYXRlcy5cbisjXG4rIyBUaGUgYnBmdG9vbCBiaW5hcnkgaXMgdGFrZW4gZnJvbSAkQlBGVE9PTCAoZGVmYXVsdDogYnBmdG9vbCBmcm9tIFBBVEgpLlxuKyMgT24gZmFpbHVyZSBhbGwgb3V0cHV0cyBhbmQgaW50ZXJtZWRpYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHNjcmlwdFxuKyMgZXhpdHMgbm9uLXplcm87IHBlcm1pc3NpdmUtbW9kZSBza2lwcGluZyBpcyB0aGUgY2FsbGVyJ3MgYnVzaW5lc3NcbisjIChzZWUgc2tpcF9vbl9mYWlsIGluIE1ha2VmaWxlLmJ1aWxkdmFycykuXG4rXG4rc2V0IC11XG4rXG4rYnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9XG4rbmFtZT0nJyBza2VsPScnIHN1YnNrZWw9Jydcbitsc2tlbD0wIHNpZ249MFxuK1xuK3doaWxlIFsgJCMgLWd0IDAgXTsgZG9cbitcdGNhc2UgXCIkMVwiIGluXG4rXHQtLW5hbWUpXHRcdG5hbWU9JDI7IHNoaWZ0IDIgOztcbitcdC0tc2tlbClcdFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xuK1x0LS1zdWJza2VsKVx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xuK1x0LS1sc2tlbClcdGxza2VsPTE7IHNoaWZ0IDs7XG4rXHQtLXNpZ24pXHRcdHNpZ249MTsgc2hpZnQgOztcbitcdC0tKVx0XHRzaGlmdDsgYnJlYWsgOztcbitcdC0qKVx0XHRlY2hvIFwiJDA6IHVua25vd24gb3B0aW9uOiAkMVwiIFx1MDAzZVx1MDAyNjI7IGV4aXQgMSA7O1xuK1x0KilcdFx0YnJlYWsgOztcbitcdGVzYWNcbitkb25lXG4rXG4raWYgWyAteiBcIiRuYW1lXCIgXSB8fCBbIC16IFwiJHNrZWxcIiBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxuK1x0ZWNobyBcInVzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cIiBcdTAwM2VcdTAwMjYyXG4rXHRleGl0IDFcbitmaVxuK1xuK2luZml4PWxpbmtlZFxuK2lmIFsgXCIkbHNrZWxcIiAtZXEgMSBdIHx8IFsgXCIkc2lnblwiIC1lcSAxIF07IHRoZW5cbitcdGluZml4PWxsaW5rZWRcbitmaVxuK1xuK2Jhc2U9JHtza2VsJS5za2VsLmh9XG4rYmFzZT0ke2Jhc2UlLmxza2VsLmh9XG4rdDE9JGJhc2UuJHtpbmZpeH0xLm9cbit0Mj0kYmFzZS4ke2luZml4fTIub1xuK3QzPSRiYXNlLiR7aW5maXh9My5vXG4rXG4rZmFpbCgpIHtcbitcdHJtIC1mIFwiJHNrZWxcIiAke3N1YnNrZWw6K1wiJHN1YnNrZWxcIn0gXCIkdDFcIiBcIiR0MlwiIFwiJHQzXCJcbitcdGV4aXQgMVxuK31cbitcbitcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0MVwiIFwiJEBcIiB8fCBmYWlsXG4rXCIkYnBmdG9vbFwiIGdlbiBvYmplY3QgXCIkdDJcIiBcIiR0MVwiIHx8IGZhaWxcbitcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0M1wiIFwiJHQyXCIgfHwgZmFpbFxuK2lmICEgY21wIC1zIFwiJHQyXCIgXCIkdDNcIjsgdGhlblxuK1x0ZWNobyBcIiQwOiBicGZ0b29sIGdlbiBvYmplY3QgaXMgbm90IGRldGVybWluaXN0aWMgZm9yICRza2VsXCIgXHUwMDNlXHUwMDI2MlxuK1x0ZmFpbFxuK2ZpXG4rXG4rYXJncz0oKVxuK2lmIFsgXCIkc2lnblwiIC1lcSAxIF07IHRoZW5cbitcdGFyZ3MrPSgtUyAtayBcIiR7UFJJVkFURV9LRVk6P31cIiAtaSBcIiR7VkVSSUZJQ0FUSU9OX0NFUlQ6P31cIilcbitmaVxuK2lmIFsgXCIkbHNrZWxcIiAtZXEgMSBdOyB0aGVuXG4rXHRhcmdzKz0oLUwpXG4rZmlcbitcIiRicGZ0b29sXCIgZ2VuIHNrZWxldG9uICR7YXJnc1tAXStcIiR7YXJnc1tAXX1cIn0gXCIkdDNcIiBuYW1lIFwiJG5hbWVcIiBcdTAwM2UgXCIkc2tlbFwiIHx8IGZhaWxcbitcbitpZiBbIC1uIFwiJHN1YnNrZWxcIiBdOyB0aGVuXG4rXHRcIiRicGZ0b29sXCIgZ2VuIHN1YnNrZWxldG9uIFwiJHQzXCIgbmFtZSBcIiRuYW1lXCIgXHUwMDNlIFwiJHN1YnNrZWxcIiB8fCBmYWlsXG4rZmlcbitcbitybSAtZiBcIiR0MVwiIFwiJHQyXCIgXCIkdDNcIlxuK2V4aXQgMFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDg6Mzg6MzIuMTk3MDM4NzY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjczODc2NDAyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBhIHJlZmFjdG9yaW5nIG9mIHRoZSBCUEYgc2VsZnRlc3RzIE1ha2VmaWxlcy4gSXQgc2VlbXMgdG8gYmUgYnJlYWtpbmcgZG93biBhIG1vbm9saXRoaWMgYE1ha2VmaWxlYCBpbnRvIHNtYWxsZXIsIG1vcmUgbWFuYWdlYWJsZSBwaWVjZXM6IGBNYWtlZmlsZWAsIGBNYWtlZmlsZS5idWlsZHZhcnNgLCBhbmQgYE1ha2VmaWxlLnJ1bm5lcmAuICBUaGVyZSdzIGFsc28gYSBuZXcgc2hlbGwgc2NyaXB0LCBgZ2VuX2JwZl9za2VsLnNoYCwgZm9yIHNrZWxldG9uIGdlbmVyYXRpb24uIFRoaXMgd2hvbGUgdGhpbmcgc2NyZWFtcyBcImJ1aWxkIHN5c3RlbSBhbmQgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlXCIgdG8gbWUuXG5cbkNydWNpYWxseSwgaXQgKmRvZXNuJ3QqIHRvdWNoIGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgZXZlbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZS4gVGhlcmUncyB6ZXJvIG1vZGlmaWNhdGlvbiBvZiBhbnkgZnVuY3Rpb25hbCBrZXJuZWwgY29kZS4gU28sIHRoZSBxdWVzdGlvbiBpcywgZG9lcyB0aGlzIGludHJvZHVjZSBhbnl0aGluZyBuZXcgdG8gdGhlIGZ1enppbmcgc3VyZmFjZT8gQWJzb2x1dGVseSBub3QuIFRoaXMgaXMgcHVyZWx5IGEgcmVzdHJ1Y3R1cmluZyBvZiB0aGUgdGVzdGluZyBmcmFtZXdvcmsuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBtb2RpZmllZCBmaWxlcy4gT2theSwgaXQncyBqdXN0IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVgLCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc2AsIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyYCwgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoYC4gWXVwLCBhbGwgb2YgdGhlbSBhcmUgd2l0aGluIHRoZSBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AgZGlyZWN0b3J5LlxuXG5CYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCB0aGVyZSdzIG5vdGhpbmcgaGVyZSB0aGF0J3MgcmVtb3RlbHkgcmVsZXZhbnQgdG8gZnV6emluZyBrZXJuZWwgZnVuY3Rpb25hbGl0eS4gU28sIHRoZSBvbmx5IGxvZ2ljYWwgY29uY2x1c2lvbiBpcyB0aGF0IGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBJJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQ3OSwiT3V0cHV0VG9rZW5zIjo3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA4OjM4OjM4LjkzNTgwNDc5M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIGEgc2hlbGwgc2NyaXB0KSBmb3IgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBhIHNoZWxsIHNjcmlwdCkgZm9yIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrcpwx[1] Phase: Running StartedAt: 2026-07-25 08:39:04 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrcpwx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-25 08:39:04 +0000 UTC FinishedAt: 2026-07-25 08:40:04 +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,}