Name: series-workflowlx7jh Phase: Failed StartedAt: 2026-08-23 19:45:46 +0000 UTC FinishedAt: 2026-08-23 20:15:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlx7jh[0] Phase: Succeeded StartedAt: 2026-08-23 19:45:46 +0000 UTC FinishedAt: 2026-08-23 20:15:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlx7jh[0].run-triage Phase: Succeeded StartedAt: 2026-08-23 19:45:46 +0000 UTC FinishedAt: 2026-08-23 20:15:07 +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+CgkJCTx0ZD4yMDI2LzA4LzIzIDIwOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBzY3JpcHRzKSBhbmQgcmVuYW1lcyBhIHRlc3QgaGVhZGVyIGZpbGUuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAyMDoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJkYWZlMmI5NjFkMTNiYzQzOWNhYzFjNDJiOTk2NWMzNDhhYzQ0ZDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAyMDoxNDozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbmluZGV4IDVmMWEzYmZjMDU2OWYuLjliOTkwNTYxMDA3MGQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuQEAgLTQsOTMgJiM0Mzs0LDE5IEBAIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoXG4gaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcbiBcbiBDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7XG4tT0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxuLVxuLUNVUkRJUiA6PSAkKGFic3BhdGggLilcbi1UT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4tTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxuLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmXG4tVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxuLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcbi1BUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxuLWlmbmVxICgkKE8pLClcbi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuLWVsc2Vcbi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKVxuLWVuZGlmXG4tR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXG4tUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xuLVxuLWlmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxuLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxuLWVuZGlmXG4gXG4gQlBGX0dDQ1x0XHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4taWZkZWYgQVNBTlxuLVNBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbi1lbHNlXG4tU0FOX0NGTEFHU1x0Pz1cbi1lbmRpZlxuLVNBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4tUkVMRUFTRVx0XHQ/PVxuLU9QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4tXG4tTElCRUxGX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXHUwMDNlL2Rldi9udWxsKVxuLUxJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4gXG4gU0tJUF9ET0NTXHQ/PVxuIFNLSVBfTExWTVx0Pz1cbiBTS0lQX0xJQkJGRFx0Pz1cbiBTS0lQX0NSWVBUT1x0Pz1cbiBcbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbi1cbi1pZmVxICgkKHNyY3RyZWUpLClcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLWVuZGlmXG4tXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbi1cdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbi1cdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuLVx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuLVx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4tXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4tXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbi1MREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKVxuLUxETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4tXG4tUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCYjMzQ7LURUUkFGRklDX01PTklUT1I9MVwmIzM0Oylcbi1QQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuLUxETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpXG4tQ0ZMQUdTICYjNDM7PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXG4tXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXG4tXG4taWZuZXEgKCQoTExWTSksKVxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuLUNGTEFHUyAmIzQzOz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4tZW5kaWZcbi1cbiAjIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwICYjMzk7djQmIzM5OyksKVxuIENMQU5HX0NQVVY0IDo9IDFcbiBlbmRpZlxuIFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOylcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4tXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxuLVx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcbi1cdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuLVxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAmIzM5O21ha2UgcnVuX3Rlc3RzJiMzOTsgb3JkZXJcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXG4gXHR0ZXN0X3NvY2ttYXAgXFxcbkBAIC0xMDIsMTYgJiM0MzsyOCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuIFRFU1RfR0VOX1BST0dTICYjNDM7PSB0ZXN0X3Byb2dzLWJwZl9nY2NcbiBURVNUX0lOU1RfU1VCRElSUyAmIzQzOz0gYnBmX2djY1xuLVxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2Zcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tXG4gZW5kaWZcbiBcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuQEAgLTE2OCw3ICYjNDM7ODQsMjEgQEAgb3ZlcnJpZGUgZGVmaW5lIENMRUFOXG4gXHQkKFEpJChNQUtFKSBkb2NzLWNsZWFuXG4gZW5kZWZcbiBcbiYjNDM7IyAuLi9saWIubWsgYXBwZW5kcyB0byB0aGUgZmxhZ3MgaW5oZXJpdGVkIGZyb20gdGhlIGVudmlyb25tZW50O1xuJiM0MzsjIE1ha2VmaWxlLmJ1aWxkdmFycyByZWJ1aWxkcyBDRkxBR1MgYW5kIExERkxBR1MgYXJvdW5kIHRoZXNlIHNuYXBzaG90c1xuJiM0MzsjIHNvIHRoYXQgaXRzIG93biBhZGRpdGlvbnMgcHJlY2VkZSBsaWIubWsmIzM5O3MsIGFzIHRoZXkgZGlkIHdoZW4gdGhleVxuJiM0MzsjIHdlcmUgZGVmaW5lZCBhYm92ZSB0aGUgaW5jbHVkZS5cbiYjNDM7SU5IRVJJVEVEX0NGTEFHUyA6PSAkKENGTEFHUylcbiYjNDM7SU5IRVJJVEVEX0xERkxBR1MgOj0gJChMREZMQUdTKVxuIGluY2x1ZGUgLi4vbGliLm1rXG4mIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzXG4mIzQzO1xuJiM0MzsjIERlZmluaXRpb25zIG9ubHkgdGhpcyBNYWtlZmlsZSBjb25zdW1lczsgcGxhY2VkIGFmdGVyIHRoZSBpbmNsdWRlXG4mIzQzOyMgYmVjYXVzZSBzb21lIG9mIHRoZW0gZGVyaXZlIGZyb20gTWFrZWZpbGUuYnVpbGR2YXJzIHZhbHVlcy5cbiYjNDM7QlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuJiM0MztIT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbiYjNDM7QlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbiYjNDM7Q0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4gXG4gTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHNcbiBDSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLCBcJiMzNDtub25lXCYjMzQ7KSlcbkBAIC0yMTMsMjEgJiM0MzsxNDMsOSBAQCBpZmVxICgkKGZlYXR1cmUtbGx2bSksMSlcbiBlbmRpZlxuIGVuZGlmXG4gXG4tU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4tQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXG4tSU5DTFVERV9ESVIgOj0gJChTQ1JBVENIX0RJUikvaW5jbHVkZVxuLUJQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuLUhPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKS9ob3N0XG4tSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbi1IT1NUX0lOQ0xVREVfRElSXHQ6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL2luY2x1ZGVcbi1lbHNlXG4tSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4tSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChTQ1JBVENIX0RJUilcbi1IT1NUX0lOQ0xVREVfRElSXHQ6PSAkKElOQ0xVREVfRElSKVxuLWVuZGlmXG4tSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4tUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcbiYjNDM7IyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuJiM0MzskKE9VVFBVVCkvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyAmIzQzOz0gJChMTFZNX0NGTEFHUylcbiYjNDM7XG4gVk1MSU5VWF9CVEZfUEFUSFMgPz0gJChpZiAkKE8pLCQoTykvdm1saW51eClcdFx0XHRcdFxcXG4gXHRcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcdFxcXG4gXHRcdCAgICAgLi4vLi4vLi4vLi4vdm1saW51eFx0XHRcdFx0XFxcbkBAIC0yNDYsNyAmIzQzOzE2NCw3IEBAICQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcdFx0XHRcdFxcXG4gXHQgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7XG4gXG4gIyBzb3J0IHJlbW92ZXMgbGliYnBmIGR1cGxpY2F0ZXMgd2hlbiBub3QgY3Jvc3MtYnVpbGRpbmdcbi1NQUtFX0RJUlMgOj0gJChzb3J0ICQoQlVJTERfRElSKS9saWJicGYgJChIT1NUX0JVSUxEX0RJUikvbGliYnBmXHRcXFxuJiM0MztNQUtFX0RJUlMgOj0gJChzb3J0ICQoT1VUUFVUKSAkKEJVSUxEX0RJUikvbGliYnBmICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZiBcXFxuIFx0ICAgICAgICQoQlVJTERfRElSKS9icGZ0b29sICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcdFx0XFxcbiBcdCAgICAgICAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkc1x0XHRcdFx0XFxcbiBcdCAgICAgICAkKElOQ0xVREVfRElSKSlcbkBAIC0yNTgsOSAmIzQzOzE3NiwxMiBAQCAkKE9VVFBVVCkvJS5vOiAlLmNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuJiM0MzsjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcbiYjNDM7IyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXG4mIzQzOyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS5cbiAkKE9VVFBVVCkvJTolLmNcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKExJTksuYykgJF4gJChMRExJQlMpIC1vICRAXG4mIzQzO1x0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIExMVk0mIzM5O3MgbGQubGxkIGRvZXNuJiMzOTt0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODZcbiBpZmVxICgkKFNSQ0FSQ0gpLCQoZmlsdGVyICQoU1JDQVJDSCkseDg2IHJpc2N2KSlcbkBAIC0zMTMsMTcgJiM0MzsyMzQsNiBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSlcbiBcdCQoY2FsbCBtc2csTU9ELCwkQClcbiBcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcbiBcbi1cbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCYjMzQ7XCYjMzQ7XG4tZWxzZVxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwmIzM0O2Jvb3RzdHJhcC9cJiMzNDtcbi1lbmRpZlxuLVxuICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSilcbiBcbiBURVNUSU5HX0hFTFBFUlNcdDo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuQEAgLTMzOSwxMiAmIzQzOzI0OSwzMyBAQCAkKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpICQoVFJBQ0VfSEVMUFxuICQoT1VUUFVUKS90ZXN0X3NvY2tfZmllbGRzOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUylcbiAkKE9VVFBVVCkvdGVzdF90YWc6ICQoVEVTVElOR19IRUxQRVJTKVxuICQoT1VUUFVUKS90ZXN0X2xpcmNfbW9kZTJfdXNlcjogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKVxuLSQoT1VUUFVUKS90ZXN0X21hcHM6ICQoVEVTVElOR19IRUxQRVJTKVxuJiM0MzskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpIGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxuICQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiAkKFRFU1RJTkdfSEVMUEVSUykgJChDQVBfSEVMUEVSUykgJChVTlBSSVZfSEVMUEVSUylcbi0kKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKVxuIFxuLUJQRlRPT0wgPz0gJChERUZBVUxUX0JQRlRPT0wpXG4mIzQzOyMgRGVmaW5lZCBhaGVhZCBvZiB0aGUgZmlyc3QgcnVsZSB0aGF0IGxpc3RzIGl0IGFzIGEgcHJlcmVxdWlzaXRlLlxuJiM0MztWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oXG4mIzQzO1xuJiM0MzsjIFRoZSB1c2Vyc3BhY2Ugb2JqZWN0cyB0aGUgcnVubmVyIGluc3RhbmNlcyBsaW5rIChSVU5ORVJfT0JKUywgc2VlXG4mIzQzOyMgTWFrZWZpbGUuYnVpbGR2YXJzKSBhcmUgYnVpbHQgaGVyZSwgb25jZSwgc28gdGhhdCBubyBydW5uZXIgc3ViLW1ha2VcbiYjNDM7IyBldmVyIHdyaXRlcyBhIGZpbGUgdGhpcyBNYWtlZmlsZSBhbHNvIGJ1aWxkcy5cbiYjNDM7I1xuJiM0MzsjICQoVFJVTk5FUl9CUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0XG4mIzQzOyMgaW5zdGFsbHMgbGliYnBmJiMzOTtzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaClcbiYjNDM7IyBpbnRvICQoSU5DTFVERV9ESVIpIC0gdGhlIGNyb3NzLWNvbXBpbGVkIGJwZnRvb2wmIzM5O3Mgd2hlbiBjcm9zcy1jb21waWxpbmc7XG4mIzQzOyMgd2l0aG91dCBpdCwgdHJhY2VfaGVscGVycy5jIHJhY2VzIHRoZSBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cFxuJiM0MzsjIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC5cbiYjNDM7UlVOTkVSX09CSlMgOj0gJChzb3J0ICQoUlVOTkVSX09CSlMtdGVzdF9wcm9ncykgJChSVU5ORVJfT0JKUy10ZXN0X21hcHMpXFxcbiYjNDM7XHRcdCAgICAgICQoUlVOTkVSX0xJQl9PQkpTLXRlc3RfcHJvZ3MpKVxuJiM0MzskKFJVTk5FUl9PQkpTKTogJChWRVJJRllfU0lHX0hEUikgJChCUEZPQkopICQoVFJVTk5FUl9CUEZUT09MKVxuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy5vOiBwcm9nX3Rlc3RzL3Rlc3RzLmhcbiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwcy5vOiBtYXBfdGVzdHMvdGVzdHMuaFxuJiM0MztcbiYjNDM7IyBmaW5kX2JpdC5jIGlzIHRoZSBvbmx5IHJ1bm5lciBzb3VyY2Ugb3V0c2lkZSB0aGlzIGRpcmVjdG9yeSxcbiYjNDM7IyBzbyBpdCBuZWVkcyBhIHJ1bGUgb2YgaXRzIG93bi5cbiYjNDM7JChPVVRQVVQpL2ZpbmRfYml0Lm86ICQoVE9PTFNESVIpL2xpYi9maW5kX2JpdC5jXG4mIzQzO1x0JChjYWxsIG1zZyxDQywsJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjICQoTERMSUJTKSAtbyAkQFxuJiM0MztcbiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXFxcbiBcdFx0ICAgICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvYnBmdG9vbFxuIFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcdFx0XHQgICAgICAgXFxcbkBAIC00MTIsNyAmIzQzOzM0Myw3IEBAIGVuZGlmXG4gXG4gIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG9cbiAjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxuLSMgJChUUlVOTkVSX0JQRl9PQkpTKVxuJiM0MzsjIEJQRiBvYmplY3RzLlxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXG4gaWZlcSAoJChWTUxJTlVYX0gpLClcbiBcdCQoY2FsbCBtc2csR0VOLCwkQClcbkBAIC00MzcsMzc0ICYjNDM7MzY4LDEyIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHRIT1NUUEtHX0NPTkZJRz0mIzM5OyQoUEtHX0NPTkZJRykmIzM5OyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyBcJiMzNDttaXNzaW5nXCYjMzQ7IGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxuLSNcbi0jIFVzZSAmIzM5Oy1pZGlyYWZ0ZXImIzM5OzogRG9uJiMzOTt0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXG4tZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbi0kKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuLVx0fCBzZWQgLW4gJiMzOTsvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfSYjMzk7KSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZFwmIzM0OywgJCQzKX0mIzM5OykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EJXM9JXMgXCYjMzQ7LCAkJDIsICQkMyl9JiMzOTspXG4tZW5kZWZcbi1cbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbi1cdFx0XHRncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKFRPT0xTSU5DRElSKSAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFxcXG4tXHQgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSlcdFx0XHRcXFxuLVx0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXHRcdFx0XFxcbi1cdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcdFx0XHRcdFx0XFxcbi1cdCAgICAgI1xuLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlXG4tXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4tXG4tJChPVVRQVVQpL3Rlc3RfbDRsYl9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICYjNDM7PSAtZm5vLWlubGluZVxuLSQoT1VUUFVUKS90ZXN0X3hkcF9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICYjNDM7PSAtZm5vLWlubGluZVxuLVxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxuLSQoT1VUUFVUKS9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5vOiBjZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oXG4tXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXG4tIyAkMSAtIGlucHV0IC5jIGZpbGVcbi0jICQyIC0gb3V0cHV0IC5vIGZpbGVcbi0jICQzIC0gQ0ZMQUdTXG4tIyAkNCAtIGJpbmFyeSBuYW1lXG4tZGVmaW5lIENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBkaXNhYmxlZCBhbHUzMlxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MiAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcbi1kZWZpbmUgQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXY0IC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgR0NDXG4tZGVmaW5lIEdDQ19CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxHQ0MtQlBGLCQ0LCQyKVxuLVx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLVxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcbi1cbi1MSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4tXHRcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXHRcdFx0XFxcbi1cdFx0dGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oXHRcXFxuLVx0XHR0ZXN0X3VzZHQuc2tlbC5oIHRyYWNpbmdfbXVsdGkuc2tlbC5oXHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oXHRcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmhcdFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmhcbi1cbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXHRcXFxuLVx0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuLVx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXG4tXHR0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmNcbi1cbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xuLVxuLSMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXG4tXHRrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNcbi1TS0VMX0JMQUNLTElTVCAmIzQzOz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4tdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xuLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm9cbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLVxuLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcbi1cbi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuLVx0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbi1cdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbi1cdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4tXG4tIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggXCYjMzQ7dGVtcG9yYXJ5XCYjMzQ7IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJcbi1cbi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpXG4tVFJVTk5FUl9PVVRQVVQgOj0gJChPVVRQVVQpJChpZiAkMiwvKSQyXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcbi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLFx0XFxcbi1cdFx0XHRcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXG4tVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSlcbi1UUlVOTkVSX0xJQl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0xJQl9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxuLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmhcbi1UUlVOTkVSX0JQRl9TUkNTIDo9ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5jKSlcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXG4tVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCxcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcbi1cdFx0XHRcdFx0ICAgICAgICQkKFRSVU5ORVJfQlBGX1NSQ1MpKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcbi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKVxuLVRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMU19TSUdORUQpKVxuLVRFU1RfR0VOX0ZJTEVTICYjNDM7PSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcbi1cbi0jIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3Rcbi0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXG4tIyBUaGUgY2hlY2sgaXMgaW5saW5lZCBwZXItcnVubmVyIHNvICQxIGlzIHN1YnN0aXR1dGVkIGF0ICQoY2FsbCkgdGltZSBhbmRcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUmIzM5O3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpIChzaWduZWQpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7XHRcdFx0XHRcdFxcXG4tXHRcdCAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXFwoKHZvaWQpP1xcKS4qL0RFRklORV9URVNUKFxcMikvcCYjMzk7XHRcXFxuLVx0XHRcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1x0XFxcbi1cdFx0ICkgXHUwMDNlICQkQClcbi1lbmRpZlxuLVxuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm9cbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXG4tXG4tIyBjb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlc1xuLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kXG4tJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOlx0XHRcdFxcXG4tXHRcdCAgICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFx0XFxcbi1cdFx0ICAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZFxuLVx0JCQoY2FsbCBtc2csVEVTVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKVxuLVx0JChRKShjZCAkJChARCkgXHUwMDI2XHUwMDI2ICQkKENDKSAtSS4gJCQoQ0ZMQUdTKSAtTU1EIC1NVCAkJEAgLWMgJChDVVJESVIpLyQkXHUwMDNjICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1URVNUJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSkpXG4tXHQkJChpZiAkJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFx0XFxcbi1cdFx0JChRKWlmIFsgLWYgJCRAIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoVFJVTk5FUl9CSU5BUlkpXVwmIzM0OyBcJiMzNDskJChub3RkaXIgJCRAKVwmIzM0Oyk7IFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vICQkQDtcdFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDtcdFx0XFxcbi1cdFx0ZmkpXG4tXG4tJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOlx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRClcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXG4tXG4taWZlcSAoJChmaWx0ZXIgY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzLCQoTUFLRUNNREdPQUxTKSksKVxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcbi1lbmRpZlxuLVxuLSMgYWRkIHBlciBleHRyYSBvYmogQ0ZHTEFHUyBkZWZpbml0aW9uc1xuLSQoZm9yZWFjaCBOLCQocGF0c3Vic3QgJChUUlVOTkVSX09VVFBVVCkvJS5vLCUsJChUUlVOTkVSX0VYVFJBX09CSlMpKSxcdFxcXG4tXHQkKGV2YWwgJChUUlVOTkVSX09VVFBVVCkvJChOKS5vOiBDRkxBR1MgJiM0Mzs9ICQoJChOKS5jLUNGTEFHUykpKVxuLVxuLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOlx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICUuY1x0XHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVFJVTk5FUl9URVNUU19IRFIpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSQoVFJVTk5FUl9MSUJfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzokKFRPT0xTRElSKS9saWIvJS5jXG4tXHQkJChjYWxsIG1zZyxMSUItT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXG4tIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXG4tJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVClcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXG4tXHQkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKVxuLVx0JChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvXG4tZW5kaWZcbi1cbi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiB8ICQoVFJVTk5FUl9CUEZfT0JKUylcbi1cbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKVx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopXHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfTElCX09CSlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKVx0XHRcdFx0XFxcbi1cdFx0XHQgICAgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XFxcbi1cdFx0XHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXG4tXHQkJChjYWxsIG1zZyxCSU5BUlksLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEBcbi1cdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4tXHRcdCAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sXG4tXG4tZW5kZWZcbi1cbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4tVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxuLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cbi1cbi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKVxuJiM0MzsjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdFxuJiM0MzsjIGdyb3VwZWQgLSBpZiBib3RoIGZpbGVzIGFyZSBzdGFsZSBtYWtlIHdvdWxkIHJ1biBnZW5rZXkgdHdpY2UsIHVuZGVyXG4mIzQzOyMgLWogY29uY3VycmVudGx5LCBhbmQgdGhlIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybVxuJiM0MzsjIGlzIGltcGxpY2l0bHkgZ3JvdXBlZCBldmVuIHdpdGggbWFrZSBcdTAwM2MgNC4zLiBUaGUgc3RlbSBvbmx5IHN0YW5kcyBpblxuJiM0MzsjIGZvciAmIzM5O3NpZ25pbmcmIzM5OyBzbyB0aGF0IG5vIG90aGVyIC5wZW0vLmRlciB1bmRlciAkKEJVSUxEX0RJUikgbWF0Y2hlcy5cbiYjNDM7JChCVUlMRF9ESVIpLyVfa2V5LnBlbSAkKEJVSUxEX0RJUikvJV9rZXkuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXG4gXHQkKFEpbWtkaXIgLXAgJChCVUlMRF9ESVIpXG4gXHQkKFEpJChWRVJJRllfU0lHX1NFVFVQKSBnZW5rZXkgJChCVUlMRF9ESVIpXG4gXG5AQCAtODMzLDcgJiM0Mzs0MDIsNiBAQCBMSUJBUkVOQV9DT01NT05fREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlXHRcdFxcXG4gTElCQVJFTkFfQlBGX0RFUFMgOj0gJChMSUJBUkVOQV9DT01NT05fREVQUykgJCh3aWxkY2FyZCBsaWJhcmVuYS9zZWxmdGVzdHMvKilcbiBMSUJBUkVOQV9CRU5DSF9CUEZfREVQUyA6PSAkKExJQkFSRU5BX0NPTU1PTl9ERVBTKSAkKHdpbGRjYXJkIGxpYmFyZW5hL2JlbmNocy8qKVxuIFxuLUxJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4gTElCQVJFTkFfQkVOQ0hfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9iZW5jaC5za2VsLmhcbiBcbiAkKExJQkFSRU5BX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXG5AQCAtODQzLDk1ICYjNDM7NDExLDEyNiBAQCAkKExJQkFSRU5BX0JFTkNIX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQkVOQ0hfQlBGX1xuIFx0JiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGJlbmNobWFya3MgJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gXG4gaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbi1MSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbi1DRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXG4gXG4gJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXG4gXHQmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHNcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3Ncbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jXHRcdFxcXG4tXHRcdFx0IGNncm91cF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRyYWNlX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgbmV0d29ya19oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRlc3RpbmdfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBidGZfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IGNhcF9oZWxwZXJzLmNcdFx0XFxcbi1cdFx0XHQgdW5wcml2X2hlbHBlcnMuYyBcdFxcXG4tXHRcdFx0IHN5c2N0bF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldGxpbmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBqaXRfZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaW9faGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHRlc3RfbG9hZGVyLmNcdFx0XFxcbi1cdFx0XHQgeHNrLmNcdFx0XHRcXFxuLVx0XHRcdCBkaXNhc20uY1x0XHRcXFxuLVx0XHRcdCBkaXNhc21faGVscGVycy5jXHRcXFxuLVx0XHRcdCBqc29uX3dyaXRlci5jIFx0XHRcXFxuLVx0XHRcdCAkKFZFUklGWV9TSUdfSERSKVx0XHRcXFxuLVx0XHRcdCBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcdFxcXG4tXHRcdFx0IGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcXFxuLVx0XHRcdCBicGZ0b29sX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgdXNkdF8xLmMgdXNkdF8yLmNcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfU0tFTClcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICBpbWFfc2V0dXAuc2ggXHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpXG4tXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1jcHV2NCB0ZXN0IHJ1bm5lci5cbiYjNDM7IyBHZW5lcmF0ZWQgdGVzdCBsaXN0IGhlYWRlcnNcbiYjNDM7XG4mIzQzO2RlZmluZSBnZW5fdGVzdHNfaGRyXG4mIzQzO1x0JChjYWxsIG1zZyxURVNULUhEUiwsJEApXG4mIzQzO1x0JChRKShlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OztcdFx0XFxcbiYjNDM7XHRcdCAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXFwoKHZvaWQpP1xcKS4qL0RFRklORV9URVNUKFxcMikvcCYjMzk7XHRcXFxuJiM0MztcdFx0JChARCkvKi5jIHwgc29ydCkgXHUwMDNlICRAXG4mIzQzO2VuZGVmXG4mIzQzO1xuJiM0Mztwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXG4mIzQzO1x0JChnZW5fdGVzdHNfaGRyKVxuJiM0MztcbiYjNDM7bWFwX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgbWFwX3Rlc3RzLyouYylcbiYjNDM7XHQkKGdlbl90ZXN0c19oZHIpXG4mIzQzO1xuJiM0MzsjIFRlc3QgcnVubmVyIGluc3RhbmNlcywgb25lIHN1Yi1tYWtlIGVhY2ggKHNlZSBNYWtlZmlsZS5ydW5uZXIpLlxuJiM0MztcbiYjNDM7IyBUaGUgTExWTSBmZWF0dXJlLXByb2JlIHJlc3VsdHMgYW5kIFRFU1RfS01PRFMgYXJlIGV4cG9ydGVkXG4mIzQzOyMgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuIENDIGlzIHBhc3NlZCBleHBsaWNpdGx5IGluc3RlYWQ6IGV4cG9ydGluZyBpdFxuJiM0MzsjIHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MgQ0MgaW50byB0aGUgbGliYnBmIHN1Yi1idWlsZCwgd2hpY2ggY29tcHV0ZXNcbiYjNDM7IyBpdHMgb3duLiAoJiMzOTtleHBvcnQgTkFNRSYjMzk7IG9uIGFuIHVuZGVmaW5lZFxuJiM0MzsjIHZhcmlhYmxlIGNyZWF0ZXMgYW4gZW1wdHkgb25lLCBzbyB0aGVzZSBzdGF5IGJlbG93IHRoZSBkZWZpbml0aW9ucy4pXG4mIzQzO2V4cG9ydCBMTFZNX0xETElCUyBMTFZNX0xERkxBR1MgVEVTVF9LTU9EU1xuJiM0MztleHBvcnQgSU5IRVJJVEVEX0NGTEFHUyBJTkhFUklURURfTERGTEFHU1xuJiM0MztcbiYjNDM7UlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0mIzM5OyQoQ0MpJiMzOTtcdFxcXG4mIzQzO1x0ICAgICAgIENMQU5HPSYjMzk7JChDTEFORykmIzM5O1xuJiM0MztcbiYjNDM7IyBFdmVyeXRoaW5nIGEgcnVubmVyIGluc3RhbmNlIHJlZmVyZW5jZXMgYnV0IGRvZXMgbm90IGtub3cgaG93IHRvIGJ1aWxkLlxuJiM0MztSVU5ORVJfUFJFUkVRUyA6PSAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoQlBGVE9PTClcdFx0XFxcbiYjNDM7XHRcdCAgJChUUlVOTkVSX0JQRlRPT0wpICQoUkVTT0xWRV9CVEZJRFMpXHRcdFx0XFxcbiYjNDM7XHRcdCAgJChPVVRQVVQpL3ZlcmlzdGF0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXHRcXFxuJiM0MztcdFx0ICAkKExJQkFSRU5BX1NLRUwpICQoTElCQVJFTkFfQVNBTl9TS0VMKVx0XHRcXFxuJiM0MztcdFx0ICBwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmhcdFx0XHRcXFxuJiM0MztcdFx0ICAkKFJVTk5FUl9PQkpTKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFxcXG4mIzQzO1x0XHQgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdXByb2JlX211bHRpICQoVEVTVF9LTU9EX1RBUkdFVFMpXG4mIzQzO1xuJiM0MzsjIFRoZSBtYWluIE1ha2VmaWxlIGNhbm5vdCB0ZWxsIHdoZXRoZXIgJChPVVRQVVQpL3Rlc3RfcHJvZ3MgaXMgc3RhbGUgLVxuJiM0MzsjIG9ubHkgdGhlIHJ1bm5lciBzdWItbWFrZSBrbm93cyBpdHMgZnVsbCBkZXBlbmRlbmN5IGdyYXBoLiBGT1JDRSBtYWtlc1xuJiM0MzsjIHRoZSBkZWxlZ2F0aW5nIHJ1bGVzIGJlbG93IGFsd2F5cyBydW47IHRoZWlyIGRlcGVuZGVudHMgc3RpbGwgcmVidWlsZFxuJiM0MzsjIG9uIG10aW1lIG9ubHkuXG4mIzQzO0ZPUkNFOlxuJiM0MztcbiYjNDM7IyBUaGUgZGVmYXVsdCBmbGF2b3ImIzM5O3MgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBhcmUgY29uc3VtZWQgaGVyZSBhc1xuJiM0MzsjIHdlbGwgYXMgaW5zaWRlIHRoZSBydW5uZXIgc3ViLW1ha2VzOiBiZW5jaCwgeHNreGNlaXZlciwgeGRwXyogYW5kXG4mIzQzOyMgdGVzdF9jcHAgZGVwZW5kIG9uIGluZGl2aWR1YWwgc2tlbGV0b25zLCBhbmQgbGliLm1rJiMzOTtzXG4mIzQzOyMgaW5zdGFsbCBydWxlIGNvcGllcyB0aGUgQlBGIG9iamVjdHMuIEluc3RhbnRpYXRlIHRoZSBzaGFyZWQgcnVsZXNcbiYjNDM7IyAoTWFrZWZpbGUuc2tlbCkgZm9yIHRoZSBkZWZhdWx0IGZsYXZvciwgc28gdGhvc2UgY29uc3VtZXJzIGRlcGVuZCBvblxuJiM0MzsjIGV4YWN0bHkgdGhlIGZpbGVzIHRoZXkgdXNlOyB0aGUgdW5mbGF2b3JlZCBydW5uZXJzJiMzOTsgZGVsZWdhdGlvbiBydWxlc1xuJiM0MzsjIGJlbG93IGxpc3QgdGhlIHdob2xlIHNldCBhcyBwcmVyZXF1aXNpdGVzLCBzbyB0aG9zZSBzdWItbWFrZXMgZmluZCB0aGVcbiYjNDM7IyBmaWxlcyB0aGlzIE1ha2VmaWxlIG93bnMgdXAgdG8gZGF0ZS5cbiYjNDM7UkRJUiA6PSAkKE9VVFBVVClcbiYjNDM7RkxBVk9SIDo9XG4mIzQzO0JJTkFSWSA6PSB0ZXN0X3Byb2dzXG4mIzQzO0JQRl9DQyA6PSAkKENMQU5HKVxuJiM0MztCUEZfQ0NfTVNHIDo9IENMTkctQlBGXG4mIzQzO0JQRl9TWVNfSU5DTFVERVMgOj0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4mIzQzO0JQRl9DQ19GTEFHUyA6PSAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djNcbiYjNDM7QlBGX0RFRklORVMgOj0gLURFTkFCTEVfQVRPTUlDU19URVNUU1xuJiM0MztpbmNsdWRlIE1ha2VmaWxlLnNrZWxcbiYjNDM7XG4mIzQzO0RFRkFVTFRfUlVOTkVSX0FSR1MgOj0gUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0c1x0XFxcbiYjNDM7XHRCUEZfQ0M9JiMzOTskKEJQRl9DQykmIzM5OyBCUEZfQ0NfTVNHPSQoQlBGX0NDX01TRylcdFx0XHRcXFxuJiM0MztcdEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKEJQRl9TWVNfSU5DTFVERVMpJiMzOTtcdFx0XHRcdFxcXG4mIzQzO1x0QlBGX0NDX0ZMQUdTPSYjMzk7JChCUEZfQ0NfRkxBR1MpJiMzOTsgQlBGX0RFRklORVM9JChCUEZfREVGSU5FUylcbiYjNDM7XG4mIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzOiAkKFJVTk5FUl9QUkVSRVFTKSAkKEJQRl9PQkpTKSAkKEFMTF9TS0VMUykgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSAkKERFRkFVTFRfUlVOTkVSX0FSR1MpXG4mIzQzO1xuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy1ub19hbHUzMjogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9DQz0mIzM5OyQoQ0xBTkcpJiMzOTsgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChDTEFOR19TWVNfSU5DTFVERVMpJiMzOTtcdFxcXG4mIzQzO1x0XHRCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djImIzM5O1xuJiM0MztcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsY3B1djQpKVxuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy1jcHV2NDogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9Y3B1djQgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9DQz0mIzM5OyQoQ0xBTkcpJiMzOTsgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChDTEFOR19TWVNfSU5DTFVERVMpJiMzOTtcdFxcXG4mIzQzO1x0XHRCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djQmIzM5O1x0XHRcXFxuJiM0MztcdFx0QlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyBCUEYtR0NDLWZsYXZvcmVkIHRlc3QgcnVubmVyLlxuIGlmbmVxICgkKEJQRl9HQ0MpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IEdDQ19CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSlcbiYjNDM7IyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSwgYXMgdGhlIHJ1bGVcbiYjNDM7IyB0aGlzIHJlcGxhY2VzIGhhZCBpdC5cbiYjNDM7R0NDX1NZU19JTkNMVURFUyA6PSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKVxuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9YnBmX2djYyBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuJiM0MztcdFx0QlBGX0NDPSYjMzk7JChCUEZfR0NDKSYjMzk7IEJQRl9DQ19NU0c9R0NDLUJQRlx0XHRcdFx0XFxcbiYjNDM7XHRcdEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKEdDQ19TWVNfSU5DTFVERVMpJiMzOTtcdFx0XHRcdFxcXG4mIzQzO1x0XHRCUEZfQ0NfRkxBR1M9JiMzOTstREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiYjMzk7XG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X21hcHMgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gbWFwX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfbWFwcy5jXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PVxuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj1cbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9ICQkKGVycm9yIG5vIEJQRiBvYmplY3RzIHNob3VsZCBiZSBidWlsdClcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj1cbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKVxuJiM0MzsjIHRlc3RfbWFwcyBjb21waWxlcyBtYXBfdGVzdHMvKi5jIGFnYWluc3QgdGhlIGRlZmF1bHQgZmxhdm9yJiMzOTtzIHNrZWxldG9uc1xuJiM0MzskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSAkKEJQRl9PQkpTKVx0XFxcbiYjNDM7XHRcdCAgICAgJChBTExfU0tFTFMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHNcbiYjNDM7XG4mIzQzO1RFU1RfR0VOX0ZJTEVTICYjNDM7PSAkKEJQRl9PQkpTKVxuIFxuICMgRGVmaW5lIHRlc3RfdmVyaWZpZXIgdGVzdCBydW5uZXIuXG4gIyBJdCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tXG4gIyB0aGVtIChlLmcuLCB0ZXN0LmggaXMgdXNpbmcgY29tcGxldGVseSBwYXR0ZXJuKSwgdGhhdCBpdCYjMzk7cyB3b3J0aCBqdXN0XG4gIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcbi1cdCQoc2hlbGwgKCBjZCB2ZXJpZmllci87IFxcXG4mIzQzO1x0JChRKSggY2QgdmVyaWZpZXIvOyBcXFxuIFx0XHQgIGVjaG8gJiMzOTsvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyYjMzk7OyBcXFxuIFx0XHQgIGVjaG8gJiMzOTsjaWZkZWYgRklMTF9BUlJBWSYjMzk7OyBcXFxuIFx0XHQgIGxzICouYyAyXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAmIzM5O3NAXFwoLipcXClAI2luY2x1ZGUgXFxcJiMzNDtcXDFcXFwmIzM0O0AmIzM5OzsgXFxcbiBcdFx0ICBlY2hvICYjMzk7I2VuZGlmJiMzOTsgXFxcbi1cdFx0KSBcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaClcbiYjNDM7XHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcbiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopIHwgJChPVVRQVVQpXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbkBAIC05NjcsMTEgJiM0Mzs1NjYsMTEgQEAgJChPVVRQVVQpL3Rlc3RfY3BwOiB0ZXN0X2NwcC5jcHAgJChPVVRQVVQpL3Rlc3RfY29yZV9leHRlcm4uc2tlbC5oICQoQlBGT0JKKVxuIFx0JChjYWxsIG1zZyxDWFgsLCRAKVxuIFx0JChRKSQoQ1hYKSAkKENYWEZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuY3BwLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0jIEJlbmNobWFyayBydW5uZXJcbiYjNDM7IyBCZW5jaG1hcmsgcnVubmVyLiBFdmVyeSBiZW5jaHMvYmVuY2hfKi5jIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW4uXG4mIzQzO0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxuICQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CRU5DSCYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpXG4gJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vOiAkKE9VVFBVVCkvdGVzdF9vdmVyaGVhZC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFxcXG5AQCAtOTk5LDMzICYjNDM7NTk4LDExIEBAICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbiBcdFx0ICQoVEVTVElOR19IRUxQRVJTKSBcXFxuIFx0XHQgJChUUkFDRV9IRUxQRVJTKSBcXFxuIFx0XHQgJChDR1JPVVBfSEVMUEVSUykgXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYmxvb21fZmlsdGVyX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfaHRhYl9tZW0ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9saWJhcmVuYS5vIFxcXG4mIzQzO1x0XHQgJChCRU5DSF9PQkpTKSBcXFxuIFx0XHQgJChPVVRQVVQpL3VzZHRfMS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcbi1cdFx0ICNcbiYjNDM7XHRcdCAkKE9VVFBVVCkvdXNkdF8yLm9cbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1MSU5LJiMzOTsgJiMzOTskKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxMSU5LLCwoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkpXG4gXG4gIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZTpcbiAjXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi41YzZjMTQ3ZDAzYzc0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXG5AQCAtMCwwICYjNDM7MSwxOTYgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgU2hhcmVkIHRvb2xjaGFpbiwgcGF0aCBhbmQgZmxhZyBkZWZpbml0aW9ucyBmb3IgdGhlIEJQRiBzZWxmdGVzdHNcbiYjNDM7IyBidWlsZCwgaW5jbHVkZWQgYnkgYm90aCBNYWtlZmlsZSBhbmQgTWFrZWZpbGUucnVubmVyLiBEZWZpbml0aW9uc1xuJiM0MzsjIGZvbGxvdyB0aGUgb3JkZXIgdGhleSBoYWQgaW4gdGhlIE1ha2VmaWxlIGJlZm9yZSB0aGUgc3BsaXQuXG4mIzQzO1xuJiM0MztUT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4mIzQzO0xJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcbiYjNDM7QlBGRElSIDo9ICQoTElCRElSKS9icGZcbiYjNDM7VE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuJiM0MztUT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcbiYjNDM7QVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcbiYjNDM7aWZuZXEgKCQoTyksKVxuJiM0MztHRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuJiM0MztlbHNlXG4mIzQzO0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4mIzQzO2VuZGlmXG4mIzQzO0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxuJiM0MztQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4mIzQzO1xuJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbiYjNDM7ICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpZmRlZiBBU0FOXG4mIzQzO1NBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbiYjNDM7ZWxzZVxuJiM0MztTQU5fQ0ZMQUdTXHQ/PVxuJiM0MztlbmRpZlxuJiM0MztTQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuJiM0MztSRUxFQVNFXHRcdD89XG4mIzQzO09QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4mIzQzO1xuJiM0MztMSUJFTEZfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzO0xJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4mIzQzO1xuJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuJiM0MzsjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuJiM0MzsjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDFcbiYjNDM7UEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXG4mIzQzOyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXG4mIzQzOyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXG4mIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxuJiM0MzsjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcbiYjNDM7c2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcbiYjNDM7XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgfSlcbiYjNDM7XG4mIzQzOyMgUGVybWlzc2l2ZS1tb2RlIHJlY2lwZSBwcmVmaXg6IHdoZW4gYSBwcmVyZXF1aXNpdGUgb2JqZWN0IGlzIG1pc3NpbmdcbiYjNDM7IyAoaXRzIGNvbXBpbGUgZmFpbGVkIGFuZCB3YXMgc2tpcHBlZCksIHJlbW92ZSB0aGUgdGFyZ2V0IGFuZCAkKDMpLFxuJiM0MzsjIGVtaXQgYSBTS0lQIG1hcmtlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgd2l0aG91dCBydW5uaW5nIHRoZSByZXN0IG9mXG4mIzQzOyMgdGhlIHJlY2lwZS5cbiYjNDM7IyAkKDEpIC0gU0tJUCB0YWdcbiYjNDM7IyAkKDIpIC0gaW5wdXQgZmlsZXMgdG8gY2hlY2tcbiYjNDM7IyAkKDMpIC0gb3B0aW9uYWwgZXh0cmEgZmlsZXMgdG8gcmVtb3ZlIGFsb25nc2lkZSB0aGUgdGFyZ2V0XG4mIzQzO3NraXBfaWZfbWlzc2luZyA9ICQoaWYgJChQRVJNSVNTSVZFKSxmb3IgZiBpbiAkKDIpOyBkbyBbIC1mICQkZiBdIHx8IHsgXFxcbiYjNDM7XHQkKFJNKSAkQCAkKDMpOyBcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtJCgxKSYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IGV4aXQgMDsgfTsgZG9uZTspXG4mIzQzO1xuJiM0MztpZmVxICgkKHNyY3RyZWUpLClcbiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcbiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4mIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuJiM0MztzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzO0NPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcdFx0XHRcdFxcXG4mIzQzO1x0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXHRcdFx0XHRcXFxuJiM0MztcdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuJiM0MztcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXHRcdFx0XFxcbiYjNDM7XHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcdFx0XFxcbiYjNDM7XHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4mIzQzO1x0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXG4mIzQzO0xETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4mIzQzO1xuJiM0MztQQ0FQX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyBcJiMzNDstRFRSQUZGSUNfTU9OSVRPUj0xXCYjMzQ7KVxuJiM0MztQQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MztMRExJQlMgJiM0Mzs9ICQoUENBUF9MSUJTKVxuJiM0MztcbiYjNDM7aWZuZXEgKCQoTExWTSksKVxuJiM0MzsjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcbiYjNDM7Q0xBTkdfV0FSTl9DRkxBR1MgOj0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIEJlZm9yZSB0aGUgc3BsaXQgdGhlc2UgZGVmaW5pdGlvbnMgc2F0IGFib3ZlIHRoZSAuLi9saWIubWsgaW5jbHVkZTpcbiYjNDM7IyB0aGV5IGFwcGVuZGVkIHRvIHRoZSBmbGFncyBpbmhlcml0ZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZFxuJiM0MzsjIGxpYi5tayYjMzk7cyBhZGRpdGlvbnMgKFVTRVJDRkxBR1MvVVNFUkxERkxBR1MgYW1vbmcgdGhlbSkgY2FtZSBsYXN0LlxuJiM0MzsjIFRoaXMgZmlsZSBpcyBwYXJzZWQgYWZ0ZXIgbGliLm1rIGF0IHRoZSB0b3AgbGV2ZWwgYW5kIGluIGl0cyBwbGFjZVxuJiM0MzsjIGluIHRoZSBydW5uZXIgc3ViLW1ha2VzLCBzbyB0aGUgc2FtZSBvcmRlciBpcyByZWJ1aWx0IGhlcmUuIFRoZVxuJiM0MzsjIGluY2x1ZGVyIHNuYXBzaG90cyB0aGUgaW5oZXJpdGVkIGZsYWdzIGluIElOSEVSSVRFRF9DRkxBR1MgYW5kXG4mIzQzOyMgSU5IRVJJVEVEX0xERkxBR1MgYmVmb3JlIGxpYi5tayBydW5zOyB3aGF0ZXZlciBsaWIubWsgYXBwZW5kZWQgc2luY2VcbiYjNDM7IyBpcyB0aGUgdGFpbCBvZiB0aGUgY3VycmVudCB2YWx1ZS5cbiYjNDM7bGliX21rX2FkZGVkID0gJCh3b3JkbGlzdCAkKHdvcmRzIHggJChJTkhFUklURURfJCgxKSkpLCQod29yZHMgJCgkKDEpKSksJCgkKDEpKSlcbiYjNDM7TElCX01LX0NGTEFHUyA6PSAkKGNhbGwgbGliX21rX2FkZGVkLENGTEFHUylcbiYjNDM7TElCX01LX0xERkxBR1MgOj0gJChjYWxsIGxpYl9ta19hZGRlZCxMREZMQUdTKVxuJiM0MztDRkxBR1MgPSAkKElOSEVSSVRFRF9DRkxBR1MpICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUylcdFx0XFxcbiYjNDM7XHQgJChDTEFOR19XQVJOX0NGTEFHUykgJChMSUJfTUtfQ0ZMQUdTKVxuJiM0MztMREZMQUdTID0gJChJTkhFUklURURfTERGTEFHUykgJChTQU5fTERGTEFHUykgJChMSUJfTUtfTERGTEFHUylcbiYjNDM7XG4mIzQzOyMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOykuXG4mIzQzOyMgVGhpcyBydW5zIGFmdGVyIC4uL2xpYi5tayBoYXMgcmVzb2x2ZWQgQ0xBTkcgZnJvbSBMTFZNPVx1MDAzY3N1ZmZpeCBvciBwYXRoXHUwMDNlLFxuJiM0MzsjIHNvIGl0IHByb2JlcyB0aGUgY29tcGlsZXIgdGhhdCBidWlsZHMgdGhlIEJQRiBvYmplY3RzLlxuJiM0MztDTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4mIzQzO1x0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbiYjNDM7XHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuJiM0MztcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuJiM0MztcbiYjNDM7U0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4mIzQzO0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxuJiM0MztJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4mIzQzO0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4mIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbiYjNDM7SE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3RcbiYjNDM7SE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbiYjNDM7SE9TVF9JTkNMVURFX0RJUlx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXG4mIzQzO2Vsc2VcbiYjNDM7SE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4mIzQzO0hPU1RfU0NSQVRDSF9ESVJcdDo9ICQoU0NSQVRDSF9ESVIpXG4mIzQzO0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4mIzQzO2VuZGlmXG4mIzQzO1JFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXG4mIzQzO1xuJiM0MztERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbiYjNDM7aWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuJiM0MztDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuJiM0MztVU0VfQk9PVFNUUkFQIDo9IFwmIzM0O1wmIzM0O1xuJiM0MztlbHNlXG4mIzQzO1RSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbiYjNDM7VVNFX0JPT1RTVFJBUCA6PSBcJiMzNDtib290c3RyYXAvXCYjMzQ7XG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuJiM0MztcbiYjNDM7IyBHZXQgQ2xhbmcmIzM5O3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XG4mIzQzOyMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyBcJiMzNDttaXNzaW5nXCYjMzQ7IGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuJiM0MzsjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cbiYjNDM7I1xuJiM0MzsjIFVzZSAmIzM5Oy1pZGlyYWZ0ZXImIzM5OzogRG9uJiMzOTt0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbiYjNDM7IyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxuJiM0MztkZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xuJiM0MzskKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuJiM0MztcdHwgc2VkIC1uICYjMzk7L1x1MDAzYy4uLlx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcKC8uKlxcKXwtaWRpcmFmdGVyIFxcMXxwIH0mIzM5OykgXFxcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fcmlzY3ZfeGxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcJiMzNDssICQkMywgJCQzKX0mIzM5OykgXFxcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZFwmIzM0OywgJCQzKX0mIzM5OykgXFxcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAtRSAmIzM5O01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRCVzPSVzIFwmIzM0OywgJCQyLCAkJDMpfSYjMzk7KVxuJiM0MztlbmRlZlxuJiM0MztcbiYjNDM7IyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXG4mIzQzO0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBcXFxuJiM0MztcdFx0XHRncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspXG4mIzQzO01FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuJiM0MztcbiYjNDM7aWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuJiM0MztDTEFOR19UQVJHRVRfQVJDSCA9IC0tdGFyZ2V0PSQobm90ZGlyICQoQ1JPU1NfQ09NUElMRTolLT0lKSlcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgSW1tZWRpYXRlIG9uIHB1cnBvc2U6IGV4cGFuZGluZyBnZXRfc3lzX2luY2x1ZGVzIGZvcmtzIHNldmVyYWwgc2hlbGxzLlxuJiM0MztDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpXG4mIzQzO0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTilcdFxcXG4mIzQzO1x0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbiYjNDM7XHQgICAgIC1JJChUT09MU0lOQ0RJUikgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVx0XHRcXFxuJiM0MztcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlc1x0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgI1xuJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxuJiM0MztcbiYjNDM7VkVSSUZZX1NJR19TRVRVUCA6PSAkKENVUkRJUikvdmVyaWZ5X3NpZ19zZXR1cC5zaFxuJiM0MztWRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcbiYjNDM7UFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxuJiM0MztcbiYjNDM7TElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcbiYjNDM7XG4mIzQzO2lmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXG4mIzQzO0xJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxuJiM0MztDRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztSVU5ORVJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sXHRcdFx0XFxcbiYjNDM7XHR0ZXN0X3Byb2dzLm8gY2dyb3VwX2hlbHBlcnMubyB0cmFjZV9oZWxwZXJzLm9cdFx0XHRcXFxuJiM0MztcdG5ldHdvcmtfaGVscGVycy5vIHRlc3RpbmdfaGVscGVycy5vIGJ0Zl9oZWxwZXJzLm9cdFx0XFxcbiYjNDM7XHRjYXBfaGVscGVycy5vIHVucHJpdl9oZWxwZXJzLm8gc3lzY3RsX2hlbHBlcnMub1x0XHRcdFxcXG4mIzQzO1x0bmV0bGlua19oZWxwZXJzLm8gaml0X2Rpc2FzbV9oZWxwZXJzLm8gaW9faGVscGVycy5vXHRcdFxcXG4mIzQzO1x0dGVzdF9sb2FkZXIubyB4c2subyBkaXNhc20ubyBkaXNhc21faGVscGVycy5vXHRcdFx0XFxcbiYjNDM7XHRqc29uX3dyaXRlci5vIGJwZnRvb2xfaGVscGVycy5vIHVzZHRfMS5vIHVzZHRfMi5vKVxuJiM0MztSVU5ORVJfT0JKUy10ZXN0X21hcHMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcXFxuJiM0MztcdHRlc3RfbWFwcy5vIHRlc3RpbmdfaGVscGVycy5vKVxuJiM0MztcbiYjNDM7UlVOTkVSX0xJQl9PQkpTLXRlc3RfcHJvZ3MgOj0gJChPVVRQVVQpL2ZpbmRfYml0Lm9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjczNjFmZjdkZTMzMGNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJcbkBAIC0wLDAgJiM0MzsxLDE5OSBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcbiYjNDM7IyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLlxuJiM0MzsjXG4mIzQzOyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSAtIHRoZSBmbGF2b3JlZCBvbmVzIHdpdGggdGhlaXJcbiYjNDM7IyBvd24gb3V0cHV0IGRpcmVjdG9yeSwgdGhlIHVuZmxhdm9yZWQgb25lcyBzaGFyaW5nICQoT1VUUFVUKSB3aXRoIHRoZVxuJiM0MzsjIG1haW4gTWFrZWZpbGUgLSBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlOiBub1xuJiM0MzsjIGRlZmluZS9ldmFsIGxheWVyLCBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5c1xuJiM0MzsjIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkXG4mIzQzOyMgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLFxuJiM0MzsjIHJlc29sdmVfYnRmaWRzLCB2bWxpbnV4LmgsIHZlcmlzdGF0LCB1c2Vyc3BhY2Ugb2JqZWN0cywgc2lnbmluZyBrZXksXG4mIzQzOyMgbGliYXJlbmEgc2tlbGV0b25zLCBleHRyYSBiaW5hcmllcyBhbmQgLSBmb3IgdGhlXG4mIzQzOyMgdW5mbGF2b3JlZCBpbnN0YW5jZXMgLSB0aGUgZGVmYXVsdCBmbGF2b3ImIzM5O3MgQlBGIG9iamVjdHMgYW5kXG4mIzQzOyMgc2tlbGV0b25zKSBhcmUgYnVpbHQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKmJlZm9yZSogdGhpcyBvbmUgcnVucyBhbmRcbiYjNDM7IyBhcmUgcmVmZXJlbmNlZCBiZWxvdyBhcyBwbGFpbiBmaWxlcy5cbiYjNDM7I1xuJiM0MzsjIFBhcmFtZXRlcnMsIHBhc3NlZCBvbiB0aGUgc3ViLW1ha2UgY29tbWFuZCBsaW5lOlxuJiM0MzsjICAgT1VUUFVUICAgICAgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5LCBhcyBsaWIubWsgcmVzb2x2ZWQgaXRcbiYjNDM7IyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHNcbiYjNDM7IyAgIEZMQVZPUiAgICAgIGZsYXZvciBzdWZmaXg6IGVtcHR5IHwgbm9fYWx1MzIgfCBjcHV2NCB8IGJwZl9nY2NcbiYjNDM7IyAgIFRFU1RTX0RJUiAgIGRpcmVjdG9yeSB3aXRoIHRoZSB0ZXN0IHNvdXJjZXM6IHByb2dfdGVzdHMgfCBtYXBfdGVzdHNcbiYjNDM7IyAgIEJQRl9DQyAgICAgIGNvbXBpbGVyIGZvciBwcm9ncy8qLmMgQlBGIG9iamVjdHMgKCQoQ0xBTkcpIG9yXG4mIzQzOyMgICAgICAgICAgICAgICAkKEJQRl9HQ0MpKTsgZW1wdHkgZm9yIHRlc3RfbWFwcywgd2hpY2ggYnVpbGRzIG5vbmVcbiYjNDM7IyAgIEJQRl9DQ19NU0cgIGJ1aWxkLWxvZyB0YWc6IENMTkctQlBGIHwgR0NDLUJQRlxuJiM0MzsjICAgQlBGX0NDX0ZMQUdTXG4mIzQzOyMgICAgICAgICAgICAgICBjb21waWxlci1zcGVjaWZpYyBmbGFncyAoLU8yLCB0YXJnZXQvLW1jcHUgb3IgZ2NjIGtub2JzKVxuJiM0MzsjICAgQlBGX1NZU19JTkNMVURFU1xuJiM0MzsjICAgICAgICAgICAgICAgc3lzdGVtIGluY2x1ZGUgZmxhZ3MgbWF0Y2hpbmcgQlBGX0NDXG4mIzQzOyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKVxuJiM0MzsjICAgQ0MsIENMQU5HICAgQyBjb21waWxlciBhbmQgY2xhbmcgKGFzIHJlc29sdmVkIGJ5IGxpYi5tayBpbiB0aGUgbWFpblxuJiM0MzsjICAgICAgICAgICAgICAgTWFrZWZpbGU7IGNsYW5nIGFsc28gZHJpdmVzIHRoZSBmZWF0dXJlIHByb2JlcyBpblxuJiM0MzsjICAgICAgICAgICAgICAgTWFrZWZpbGUuYnVpbGR2YXJzKVxuJiM0MzsjXG4mIzQzOyMgRnJvbSB0aGUgZW52aXJvbm1lbnQsIGV4cG9ydGVkIGJ5IHRoZSBtYWluIE1ha2VmaWxlOlxuJiM0MzsjICAgTExWTV9MRExJQlMvTExWTV9MREZMQUdTXG4mIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlXG4mIzQzOyMgICBURVNUX0tNT0RTICB0aGUga2VybmVsIHRlc3QgbW9kdWxlcyB0byBjb3B5IGludG8gYSBmbGF2b3IgZGlyZWN0b3J5XG4mIzQzOyMgICBJTkhFUklURURfQ0ZMQUdTL0lOSEVSSVRFRF9MREZMQUdTXG4mIzQzOyMgICAgICAgICAgICAgICB0aGUgZmxhZ3MgdGhlIG1haW4gTWFrZWZpbGUgaW5oZXJpdGVkIGZyb20gaXRzIG93blxuJiM0MzsjICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHNlZSBNYWtlZmlsZS5idWlsZHZhcnMpXG4mIzQzO1xuJiM0MztpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGVcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcbiYjNDM7XG4mIzQzOyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuXG4mIzQzO2lmZXEgKCQoViksMSlcbiYjNDM7USA9XG4mIzQzO21zZyA9XG4mIzQzO2Vsc2VcbiYjNDM7USA9IEBcbiYjNDM7bXNnID0gQHByaW50ZiAmIzM5OyAgJS04cyVzICVzJXNcXG4mIzM5OyBcJiMzNDskKDEpXCYjMzQ7IFwmIzM0OyQoaWYgJCgyKSwgWyQoMildKVwmIzM0OyBcJiMzNDskKG5vdGRpciAkKDMpKVwmIzM0OyBcJiMzNDskKGlmICQoNCksICQoNCkpXCYjMzQ7O1xuJiM0MztNQUtFRkxBR1MgJiM0Mzs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIFRoZSB0b3AgTWFrZWZpbGUgaGFuZHMgZG93biB0aGUgZmxhZ3MgaXQgaW5oZXJpdGVkIGZyb20gdGhlXG4mIzQzOyMgZW52aXJvbm1lbnQgaW4gSU5IRVJJVEVEX0NGTEFHUy9JTkhFUklURURfTERGTEFHUzsgc3RhcnQgZnJvbSB0aG9zZVxuJiM0MzsjIHJhdGhlciB0aGFuIGZyb20gaXRzIGFzc2VtYmxlZCBDRkxBR1MvTERGTEFHUywgd2hpY2ggbWFrZSBleHBvcnRzXG4mIzQzOyMgYWxvbmdzaWRlIHdoZW5ldmVyIHRoZXkgY2FtZSBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiYjNDM7Q0ZMQUdTIDo9ICQoSU5IRVJJVEVEX0NGTEFHUylcbiYjNDM7TERGTEFHUyA6PSAkKElOSEVSSVRFRF9MREZMQUdTKVxuJiM0MztcbiYjNDM7aW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbiYjNDM7XG4mIzQzOyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWssIGluIGl0c1xuJiM0MzsjIG9yZGVyICh0aGUgc2VsZnRlc3RzIGluY2x1ZGUgcGF0aCBpcyBzcGVsbGVkIGZyb20gc3JjdHJlZSBoZXJlOyBsaWIubWtcbiYjNDM7IyBzcGVsbHMgaXQgZnJvbSBpdHMgb3duIGRpcmVjdG9yeSkuXG4mIzQzO2lmbmVxICgkKExMVk0pLClcbiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlclxuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tZ251LXZhcmlhYmxlLXNpemVkLXR5cGUtbm90LWF0LWVuZFxuJiM0MztlbmRpZlxuJiM0MztDRkxBR1MgJiM0Mzs9IC1EX0dOVV9TT1VSQ0U9XG4mIzQzO0NGTEFHUyAmIzQzOz0gLUkkKHNyY3RyZWUpL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzXG4mIzQzO0NGTEFHUyAmIzQzOz0gJChVU0VSQ0ZMQUdTKVxuJiM0MztMREZMQUdTICYjNDM7PSAkKFVTRVJMREZMQUdTKVxuJiM0MztcbiYjNDM7QklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXG4mIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKVxuJiM0MztcbiYjNDM7YWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXG4mIzQzOy5QSE9OWTogYWxsXG4mIzQzO1xuJiM0MzsjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuJiM0MzsuREVMRVRFX09OX0VSUk9SOlxuJiM0MztcbiYjNDM7IyBObyBidWlsdC1pbiBydWxlczogZXZlcnkgZmlsZSBidWlsdCBoZXJlIGhhcyBhbiBleHBsaWNpdCBydWxlLCBhbmQgdGhlXG4mIzQzOyMgb2JqZWN0cyB0aGF0IGNvbWUgZnJvbSB0aGUgbWFpbiBNYWtlZmlsZSBoYXZlIHRvIGJlIGFuIGVycm9yIHdoZW5cbiYjNDM7IyBtaXNzaW5nIHJhdGhlciB0aGFuIGEgc2lsZW50IHJlYnVpbGQgYnkgdGhlIGJ1aWx0LWluICUubyByZWNpcGVzLlxuJiM0MztNQUtFRkxBR1MgJiM0Mzs9IC1yXG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4mIzQzOyMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZCBpdHMgZmxhdm9yczsgcnVubmVycyB0aGF0IHVzZSBzdHJvbmcgY3Jvc3Mtb2JqZWN0XG4mIzQzOyMgcmVmZXJlbmNlcyAoZS5nLiB0ZXN0X21hcHMpIGtlZXAgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gcGVybWlzc2l2ZS5cbiYjNDM7UEVSTUlTU0lWRV9URVNUUyA6PSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MsJChSVU5ORVIpKSwkKFBFUk1JU1NJVkUpKVxuJiM0MztcbiYjNDM7JChSRElSKTpcbiYjNDM7XHQkKGNhbGwgbXNnLE1LRElSLCwkQClcbiYjNDM7XHQkKFEpbWtkaXIgLXAgJEBcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgUGVyLXJ1bm5lciBzb3VyY2VzXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncylcbiYjNDM7R0VORVJBVEVEX0hEUlMgOj0gJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcbiYjNDM7RVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1x0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcdFx0XFxcbiYjNDM7XHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXHRcdFxcXG4mIzQzO1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzO1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSlcbiYjNDM7VEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSlcbiYjNDM7VEVTVF9ERVBTICA6PSAkKFRFU1RfT0JKUzoubz0uZClcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyAtIHJ1bGVzIHNoYXJlZCB3aXRoIHRoZSBtYWluIE1ha2VmaWxlXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztpbmNsdWRlIE1ha2VmaWxlLnNrZWxcbiYjNDM7XG4mIzQzOyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuJiM0MzsjIGZ1bGwgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgY29ycmVzcG9uZGluZyAlLm9cbiYjNDM7IyBmaWxlLiB2cGF0aCBkaXJlY3RpdmVzIGJlbG93IGluc3RydWN0IG1ha2UgdG8gc2VhcmNoIGZvciBza2VsIGZpbGVzXG4mIzQzOyMgaW4gJChSRElSKSwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuJiM0Mzt2cGF0aCAlLnNrZWwuaCAkKFJESVIpXG4mIzQzO3ZwYXRoICUubHNrZWwuaCAkKFJESVIpXG4mIzQzO3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MzskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xuJiM0MzskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcbiYjNDM7XG4mIzQzOyMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcbiYjNDM7IyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcbiYjNDM7IyBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRCBiZWxvdzsgdGhlXG4mIzQzOyMgc2VwYXJhdGUgbm8tcmVjaXBlIHJ1bGUgZm9yIHRoZW0gb3JkZXJzIHRoZSBmaXJzdCBjb21waWxhdGlvbiBhZnRlclxuJiM0MzsjIHNrZWxldG9uIGdlbmVyYXRpb24gYW5kIHJlLW9yZGVycyB0ZXN0IG9iamVjdCBjb21waWxhdGlvbiB3aGVuIGhlYWRlcnNcbiYjNDM7IyBjaGFuZ2UuXG4mIzQzOyQoVEVTVF9PQkpTKTogJChSRElSKS8lLnRlc3QubzogJChURVNUU19ESVIpLyUuYyB8ICQoUkRJUikvJS50ZXN0LmRcbiYjNDM7XHQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpKGNkICQoQEQpIFx1MDAyNlx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXHUwMDNjICQoTERMSUJTKSAtbyAkKEBGKSkgXFxcbiYjNDM7XHRcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKVxuJiM0MztcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoQklOQVJZKV1cJiMzNDsgXCYjMzQ7JChub3RkaXIgJEApXCYjMzQ7KTsgXFxcbiYjNDM7XHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7XHRcXFxuJiM0MztcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbiYjNDM7XHRcdGZpKVxuJiM0MztcbiYjNDM7JChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoR0VORVJBVEVEX0hEUlMpICQoQlBGT0JKKSBcXFxuJiM0MztcdCAgICAgIHwgJChSRElSKSAkKEFMTF9TS0VMUylcbiYjNDM7XG4mIzQzO2luY2x1ZGUgJCh3aWxkY2FyZCAkKFRFU1RfREVQUykpXG4mIzQzO1xuJiM0MzsjIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZVxuJiM0MzsjIGRvIG5vdCBuZWVkIHRvIGNvcHkgZXh0cmEgcmVzb3VyY2VzIChzZWUgZS5nLiB0ZXN0X2J0Zl9kdW1wX2Nhc2UoKSlcbiYjNDM7LlBIT05ZOiBleHRyYXNcbiYjNDM7ZXh0cmFzOiAkKGlmICQoUEVSTUlTU0lWRSksJCh3aWxkY2FyZCAkKEVYVFJBX0ZJTEVTKSksJChFWFRSQV9GSUxFUykpIHwgJChSRElSKVxuJiM0MztpZm5lcSAoJChGTEFWT1IpOiQocmVhbHBhdGggJChPVVRQVVQpKSw6JChDVVJESVIpKVxuJiM0MztpZm5lcSAoJChzdHJpcCAkKEVYVFJBX0ZJTEVTKSksKVxuJiM0MztcdCQoY2FsbCBtc2csRVhULUNPUFksJChCSU5BUlkpLCQoRVhUUkFfRklMRVMpKVxuJiM0MztcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cbiYjNDM7ZW5kaWZcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgc29tZSBYLnRlc3QubyBmaWxlcyBoYXZlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9uIFkuYnBmLm8gZmlsZXNcbiYjNDM7IyBJbiBwZXJtaXNzaXZlIG1vZGUsIGxpbmsgd2hhdGV2ZXIgdGVzdCBvYmplY3RzIHdlcmUgc3VjY2Vzc2Z1bGx5IGJ1aWx0XG4mIzQzOyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk6IHRoZSBvYmplY3RzIGV4aXN0aW5nIGF0XG4mIzQzOyMgcGFyc2UgdGltZSBhcmUgbm9ybWFsIHByZXJlcXVpc2l0ZXMgLSBzbyBlZGl0aW5nIGEgdGVzdCBzb3VyY2Ugc3RpbGxcbiYjNDM7IyByZWxpbmtzIHRoZSBydW5uZXIgLSB3aGlsZSB0aGUgZnVsbCBzZXQgc3RheXMgb3JkZXItb25seSB0byBkcml2ZSB0aGVcbiYjNDM7IyBidWlsZCBhdHRlbXB0cywgYW5kIHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnNcbiYjNDM7IyBhdCBsaW5rIHRpbWUuXG4mIzQzOyMgUHJlcmVxdWlzaXRlIG9yZGVyIGlzIGFsc28gbGluayBvcmRlciAodGVzdCBvYmplY3RzLCBydW5uZXIgb2JqZWN0cyxcbiYjNDM7IyBsaWJicGYsIGxpYiBvYmplY3RzKS5cbiYjNDM7JChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFxcXG4mIzQzO1x0XHQgICAgICQoUlVOTkVSX09CSlMtJChSVU5ORVIpKSAkKEJQRk9CSilcdFx0XHRcXFxuJiM0MztcdFx0ICAgICAkKFJVTk5FUl9MSUJfT0JKUy0kKFJVTk5FUikpXHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcXFxuJiM0MztcdFx0ICAgICB8IGV4dHJhcyAkKEJQRl9PQkpTKVx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoVEVTVF9PQkpTKSlcbiYjNDM7XHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKVx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJCh3aWxkY2FyZCAkKFRFU1RfT0JKUykpXHRcXFxuJiM0MztcdFx0XHQkKGZpbHRlci1vdXQgJChURVNUX09CSlMpLCQoZmlsdGVyICUuYSAlLm8sJF4pKSxcXFxuJiM0MztcdFx0XHQkKGZpbHRlciAlLmEgJS5vLCReKSlcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKExETElCUykgJChMTFZNX0xETElCUykgJChMREZMQUdTKSAkKExMVk1fTERGTEFHUykgLW8gJEBcbiYjNDM7XHQkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcbiYjNDM7XHRcdCAgICQoUkRJUikvYnBmdG9vbFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5za2VsIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hODcxZWE3NjgxN2RmXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuc2tlbFxuQEAgLTAsMCAmIzQzOzEsMTQxIEBAXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7IyBSdWxlcyB0byBidWlsZCB0aGUgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBvZiBvbmUgYnVpbGQgZmxhdm9yLFxuJiM0MzsjIHNoYXJlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSAod2hpY2ggaW5zdGFudGlhdGVzIHRoZW0gZm9yIHRoZSBkZWZhdWx0XG4mIzQzOyMgZmxhdm9yLCBzbyB0aGF0IGJlbmNoLCB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHAgY2FuIGRlcGVuZCBvblxuJiM0MzsjIHRoZSBleGFjdCBza2VsZXRvbnMgdGhleSBjb25zdW1lKSBhbmQgYnkgTWFrZWZpbGUucnVubmVyICh3aGljaFxuJiM0MzsjIGluc3RhbnRpYXRlcyB0aGVtIGZvciBlYWNoIHJ1bm5lciBpbnN0YW5jZSB0aGF0IGJ1aWxkcyBCUEYgb2JqZWN0czpcbiYjNDM7IyB0aGUgZmxhdm9yZWQgb25lcyBpbiB0aGVpciBvd24gb3V0cHV0IGRpcmVjdG9yaWVzLCB0aGUgdW5mbGF2b3JlZFxuJiM0MzsjIHRlc3RfcHJvZ3Mgb25lIGluICQoT1VUUFVUKSwgd2hlcmUgaXQgZmluZHMgdGhlbSBhbHJlYWR5IGJ1aWx0KS5cbiYjNDM7I1xuJiM0MzsjIFBhcmFtZXRlcnMgKHZhcmlhYmxlcyBkZWZpbmVkIGJ5IHRoZSBpbmNsdWRlcik6XG4mIzQzOyMgICBSRElSICAgICAgICAgICAgIG91dHB1dCBkaXJlY3Rvcnkgb2YgdGhpcyBmbGF2b3JcbiYjNDM7IyAgIEZMQVZPUiAgICAgICAgICAgZmxhdm9yIG5hbWUsIGVtcHR5IGZvciB0aGUgZGVmYXVsdFxuJiM0MzsjICAgQklOQVJZICAgICAgICAgICBydW5uZXIgYmluYXJ5IG5hbWUsIGZvciBidWlsZC1sb2cgbWVzc2FnZXNcbiYjNDM7IyAgIEJQRl9DQyAgICAgICAgICAgQlBGIGNvbXBpbGVyXG4mIzQzOyMgICBCUEZfQ0NfTVNHICAgICAgIGJ1aWxkLWxvZyB0YWcgKENMTkctQlBGL0dDQy1CUEYpXG4mIzQzOyMgICBCUEZfQ0NfRkxBR1MgICAgIHBlci1mbGF2b3IgY29tcGlsZXIgZmxhZ3NcbiYjNDM7IyAgIEJQRl9TWVNfSU5DTFVERVMgc3lzdGVtIGluY2x1ZGUgZmxhZ3MgZm9yICQoQlBGX0NDKVxuJiM0MzsjICAgQlBGX0RFRklORVMgICAgICBleHRyYSBkZWZpbmVzICgtREVOQUJMRV9BVE9NSUNTX1RFU1RTKVxuJiM0MzsjXG4mIzQzOyMgVGhlIGRlZmF1bHQgZmxhdm9yJiMzOTtzIHJ1bGVzIGFyZSBpbnN0YW50aWF0ZWQgaWRlbnRpY2FsbHkgYnkgdGhlIG1haW5cbiYjNDM7IyBNYWtlZmlsZSBhbmQgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBzdWItbWFrZTsgdGhlIG1haW4gTWFrZWZpbGVcbiYjNDM7IyBsaXN0cyBldmVyeSBza2VsZXRvbiBhbmQgQlBGIG9iamVjdCBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgdW5mbGF2b3JlZFxuJiM0MzsjIHJ1bm5lcnMmIzM5OyBkZWxlZ2F0aW9uIHJ1bGVzLCBzbyB0aGUgZmlsZXMgYXJlIGFsd2F5cyBmcmVzaCBieSB0aGUgdGltZVxuJiM0MzsjIHRoYXQgc3ViLW1ha2UgcmUtZXZhbHVhdGVzIHRoZW0uXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO2lmbmVxICgkKEJQRl9DQyksKVxuJiM0MztcbiYjNDM7QlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpXG4mIzQzO1xuJiM0MztTS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jXG4mIzQzO1xuJiM0MztMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4mIzQzO1x0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIFx0XHRcdFxcXG4mIzQzO1x0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4mIzQzO1x0XHR0ZXN0X3VzZHQuc2tlbC5oIHRyYWNpbmdfbXVsdGkuc2tlbC5oXHRcdFx0XFxcbiYjNDM7XHRcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFx0XHRcdFx0XFxcbiYjNDM7XHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbiYjNDM7XHRcdHRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmhcbiYjNDM7XG4mIzQzO0xTS0VMUyA6PSBmZXhpdF9zbGVlcC5jIHRyYWNlX3ByaW50ay5jIHRyYWNlX3ZwcmludGsuYyBtYXBfcHRyX2tlcm4uYyBcdFxcXG4mIzQzO1x0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuJiM0MztcdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuJiM0MztcdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xuJiM0MztcbiYjNDM7TFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbiYjNDM7XG4mIzQzOyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuJiM0MztMU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuJiM0MztcdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmMgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuY1xuJiM0MztTS0VMX0JMQUNLTElTVCAmIzQzOz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRClcbiYjNDM7XG4mIzQzO3Rlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbiYjNDM7bGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuJiM0MztsaW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vXG4mIzQzO2xpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbiYjNDM7IyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbiYjNDM7IyBidXQgdGhhdCYjMzk7cyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxuJiM0Mzt0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4mIzQzO3Rlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYub1xuJiM0Mzt0ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cbiYjNDM7dHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbiYjNDM7XG4mIzQzO0xJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuJiM0MztMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKExJTktFRF9CUEZfT0JKUykpXG4mIzQzO1xuJiM0MztTS0VMUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuc2tlbC5oLFx0XHRcdFx0XFxcbiYjNDM7XHQgICAkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLCQoQlBGX1NSQ1MpKSlcbiYjNDM7TFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTKSAkKExTS0VMU19FWFRSQSkpXG4mIzQzO0xTS0VMU19TSUdORURfSCA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxuJiM0MztMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxuJiM0MztBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXG4mIzQzO1xuJiM0MztIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuJiM0MztcdFx0XHQkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSlcdFxcXG4mIzQzO1x0XHRcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXHRicGZfY29yZV9yZWFkLmhcdFxcXG4mIzQzO1x0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0YnBmX2hlbHBlcnMuaFx0XFxcbiYjNDM7XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcbiYjNDM7XG4mIzQzOyMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbiYjNDM7IyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mXG4mIzQzOyMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0MztcbiYjNDM7JChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFx0XHRcdFxcXG4mIzQzO1x0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcdFx0XFxcbiYjNDM7XHQgICAgIHwgJChSRElSKSAkKEJQRk9CSilcbiYjNDM7XHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxuJiM0MztcdCQoUSkkKEJQRl9DQykgJChCUEZfQ0ZMQUdTKSAkKEJQRl9TWVNfSU5DTFVERVMpICQoQlBGX0RFRklORVMpXHRcXFxuJiM0MztcdFx0JCgkXHUwMDNjLUNGTEFHUykgJCgkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpXHRcdFx0XFxcbiYjNDM7XHRcdCQoQlBGX0NDX0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQlBGKVxuJiM0MztcbiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbiYjNDM7XG4mIzQzOyQoU0tFTFMpOiAkKFJESVIpLyUuc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXHRcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXFxcbiYjNDM7XHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJFx1MDAzY1x0XHRcXFxuJiM0MztcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuJiM0MztcbiYjNDM7JChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MpXHRcdFx0XHRcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXFxcbiYjNDM7XHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqX2xza2VsIC0tbHNrZWxcdFx0XHRcdFxcXG4mIzQzO1x0XHQtLXNrZWwgJEAgJFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXG4mIzQzO1xuJiM0MzskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVx0XFxcbiYjNDM7XHRcdCAgICAkKEdFTl9TS0VMKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MpXHRcdFx0XHRcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSkgKHNpZ25lZCldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXFxcbiYjNDM7XHRCUEZUT09MPSQoQlBGVE9PTCkgUFJJVkFURV9LRVk9JChQUklWQVRFX0tFWSlcdFx0XHRcdFxcXG4mIzQzO1x0XHRWRVJJRklDQVRJT05fQ0VSVD0kKFZFUklGSUNBVElPTl9DRVJUKVx0XHRcdFxcXG4mIzQzO1x0XHQkKEdFTl9TS0VMKSAtLXNpZ24gLS1uYW1lICQqX2xza2VsXHRcdFx0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbiYjNDM7XG4mIzQzOyMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuJiM0MzsuU0VDT05ERVhQQU5TSU9OOlxuJiM0MzskKExJTktFRF9TS0VMU19IKTogJChSRElSKS8lLnNrZWwuaDogJCQoYWRkcHJlZml4ICQoUkRJUikvLCQkKCQkKi5za2VsLmgtZGVwcykpIFxcXG4mIzQzO1x0XHQgICAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKVxuJiM0MztcdCQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKSBcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkKEA6LnNrZWwuaD0uYnBmLm8pKSYjMzk7OyBcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXFxcbiYjNDM7XHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaClcdFx0XFxcbiYjNDM7XHRcdCQoYWRkcHJlZml4ICQoUkRJUikvLCQoJCouc2tlbC5oLWRlcHMpKVx0XHRcdFxcXG4mIzQzO1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXG4mIzQzO1xuJiM0MztlbmRpZiAjIEJQRl9DQ1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZTQzY2NmMDk1NTc1NlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxuQEAgLTAsMCAmIzQzOzEsOTkgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcJiMzNDticGZ0b29sIGdlbiBvYmplY3RcJiMzNDsgYW5kIGdlbmVyYXRlIGFcbiYjNDM7IyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4mIzQzOyNcbiYjNDM7IyBVc2FnZTpcbiYjNDM7IyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4mIzQzOyNcbiYjNDM7IyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcJiMzNDtuYW1lIE5BTUVcJiMzNDsgZm9yIGJwZnRvb2wpXG4mIzQzOyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcJiMzNDtmb28uc2tlbC5oXCYjMzQ7IG9yIFwmIzM0O2Zvby5sc2tlbC5oXCYjMzQ7KVxuJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVFxuJiM0MzsjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXG4mIzQzOyMgICAtLXNpZ24gICAgICAgICAgICBzaWduIHRoZSAobGlnaHQpIHNrZWxldG9uLCB3aXRoIHRoZSBrZXkgYW5kXG4mIzQzOyMgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSB0YWtlbiBmcm9tICRQUklWQVRFX0tFWSBhbmRcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgICRWRVJJRklDQVRJT05fQ0VSVFxuJiM0MzsjXG4mIzQzOyMgVGhlIGlucHV0cyBhcmUgbGlua2VkIHRocmVlIHRpbWVzIGFuZCB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0c1xuJiM0MzsjIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFwmIzM0O2JwZnRvb2wgZ2VuXG4mIzQzOyMgb2JqZWN0XCYjMzQ7LlxuJiM0MzsjXG4mIzQzOyMgSW50ZXJtZWRpYXRlIGZpbGVzIGFyZSBuYW1lZCBhZnRlciB0aGUgb3V0cHV0IGhlYWRlciB3aXRoIGEgXCYjMzQ7bGlua2VkXCYjMzQ7XG4mIzQzOyMgaW5maXggLSBcJiMzNDtsbGlua2VkXCYjMzQ7IGZvciBsaWdodCBvciBzaWduZWQgc2tlbGV0b25zLCBzbyBnZW5lcmF0aW5nIGFcbiYjNDM7IyAuc2tlbC5oIGFuZCBhIC5sc2tlbC5oIGZyb20gdGhlIHNhbWUgLmJwZi5vIGluIHBhcmFsbGVsIG5ldmVyIHJhY2VzXG4mIzQzOyMgb24gdGhlIGludGVybWVkaWF0ZXMuXG4mIzQzOyNcbiYjNDM7IyBUaGUgYnBmdG9vbCBiaW5hcnkgaXMgdGFrZW4gZnJvbSAkQlBGVE9PTCAoZGVmYXVsdDogYnBmdG9vbCBmcm9tIFBBVEgpLlxuJiM0MzsjIE9uIGZhaWx1cmUgYWxsIG91dHB1dHMgYW5kIGludGVybWVkaWF0ZXMgYXJlIHJlbW92ZWQgYW5kIHRoZSBzY3JpcHRcbiYjNDM7IyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXImIzM5O3MgYnVzaW5lc3NcbiYjNDM7IyAoc2VlIHNraXBfb25fZmFpbCBpbiB0aGUgTWFrZWZpbGUpLlxuJiM0MztcbiYjNDM7c2V0IC11XG4mIzQzO1xuJiM0MzticGZ0b29sPSR7QlBGVE9PTDotYnBmdG9vbH1cbiYjNDM7bmFtZT0mIzM5OyYjMzk7IHNrZWw9JiMzOTsmIzM5OyBzdWJza2VsPSYjMzk7JiMzOTtcbiYjNDM7bHNrZWw9MCBzaWduPTBcbiYjNDM7XG4mIzQzO3doaWxlIFsgJCMgLWd0IDAgXTsgZG9cbiYjNDM7XHRjYXNlIFwmIzM0OyQxXCYjMzQ7IGluXG4mIzQzO1x0LS1uYW1lKVx0XHRuYW1lPSQyOyBzaGlmdCAyIDs7XG4mIzQzO1x0LS1za2VsKVx0XHRza2VsPSQyOyBzaGlmdCAyIDs7XG4mIzQzO1x0LS1zdWJza2VsKVx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tbHNrZWwpXHRsc2tlbD0xOyBzaGlmdCA7O1xuJiM0MztcdC0tc2lnbilcdFx0c2lnbj0xOyBzaGlmdCA7O1xuJiM0MztcdC0tKVx0XHRzaGlmdDsgYnJlYWsgOztcbiYjNDM7XHQtKilcdFx0ZWNobyBcJiMzNDskMDogdW5rbm93biBvcHRpb246ICQxXCYjMzQ7IFx1MDAzZVx1MDAyNjI7IGV4aXQgMSA7O1xuJiM0MztcdCopXHRcdGJyZWFrIDs7XG4mIzQzO1x0ZXNhY1xuJiM0Mztkb25lXG4mIzQzO1xuJiM0MztpZiBbIC16IFwmIzM0OyRuYW1lXCYjMzQ7IF0gfHwgWyAteiBcJiMzNDskc2tlbFwmIzM0OyBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxuJiM0MztcdGVjaG8gXCYjMzQ7dXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLlwmIzM0OyBcdTAwM2VcdTAwMjYyXG4mIzQzO1x0ZXhpdCAxXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MztpbmZpeD1saW5rZWRcbiYjNDM7aWYgWyBcJiMzNDskbHNrZWxcJiMzNDsgLWVxIDEgXSB8fCBbIFwmIzM0OyRzaWduXCYjMzQ7IC1lcSAxIF07IHRoZW5cbiYjNDM7XHRpbmZpeD1sbGlua2VkXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MztpZiBbIFwmIzM0OyRzaWduXCYjMzQ7IC1lcSAxIF0gXHUwMDI2XHUwMDI2IHsgWyAteiBcJiMzNDske1BSSVZBVEVfS0VZLX1cJiMzNDsgXSB8fCBbIC16IFwmIzM0OyR7VkVSSUZJQ0FUSU9OX0NFUlQtfVwmIzM0OyBdOyB9OyB0aGVuXG4mIzQzO1x0ZWNobyBcJiMzNDskMDogLS1zaWduIHJlcXVpcmVzIFBSSVZBVEVfS0VZIGFuZCBWRVJJRklDQVRJT05fQ0VSVCBpbiB0aGUgZW52aXJvbm1lbnRcJiMzNDsgXHUwMDNlXHUwMDI2MlxuJiM0MztcdGV4aXQgMVxuJiM0MztmaVxuJiM0MztcbiYjNDM7YmFzZT0ke3NrZWwlLnNrZWwuaH1cbiYjNDM7YmFzZT0ke2Jhc2UlLmxza2VsLmh9XG4mIzQzO3QxPSRiYXNlLiR7aW5maXh9MS5vXG4mIzQzO3QyPSRiYXNlLiR7aW5maXh9Mi5vXG4mIzQzO3QzPSRiYXNlLiR7aW5maXh9My5vXG4mIzQzO1xuJiM0MztmYWlsKCkge1xuJiM0MztcdHJtIC1mIFwmIzM0OyRza2VsXCYjMzQ7ICR7c3Vic2tlbDomIzQzO1wmIzM0OyRzdWJza2VsXCYjMzQ7fSBcJiMzNDskdDFcJiMzNDsgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0M1wmIzM0O1xuJiM0MztcdGV4aXQgMVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gb2JqZWN0IFwmIzM0OyR0MVwmIzM0OyBcJiMzNDskQFwmIzM0OyB8fCBmYWlsXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0MVwmIzM0OyB8fCBmYWlsXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQzXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyB8fCBmYWlsXG4mIzQzO2lmICEgY21wIC1zIFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDNcJiMzNDs7IHRoZW5cbiYjNDM7XHRlY2hvIFwmIzM0OyQwOiBicGZ0b29sIGdlbiBvYmplY3QgaXMgbm90IGRldGVybWluaXN0aWMgZm9yICRza2VsXCYjMzQ7IFx1MDAzZVx1MDAyNjJcbiYjNDM7XHRmYWlsXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MzthcmdzPSgpXG4mIzQzO2lmIFsgXCYjMzQ7JHNpZ25cJiMzNDsgLWVxIDEgXTsgdGhlblxuJiM0MztcdGFyZ3MmIzQzOz0oLVMgLWsgXCYjMzQ7JFBSSVZBVEVfS0VZXCYjMzQ7IC1pIFwmIzM0OyRWRVJJRklDQVRJT05fQ0VSVFwmIzM0OylcbiYjNDM7ZmlcbiYjNDM7aWYgWyBcJiMzNDskbHNrZWxcJiMzNDsgLWVxIDEgXTsgdGhlblxuJiM0MztcdGFyZ3MmIzQzOz0oLUwpXG4mIzQzO2ZpXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBza2VsZXRvbiAke2FyZ3NbQF0mIzQzO1wmIzM0OyR7YXJnc1tAXX1cJiMzNDt9IFwmIzM0OyR0M1wmIzM0OyBuYW1lIFwmIzM0OyRuYW1lXCYjMzQ7IFx1MDAzZSBcJiMzNDskc2tlbFwmIzM0OyB8fCBmYWlsXG4mIzQzO1xuJiM0MztpZiBbIC1uIFwmIzM0OyRzdWJza2VsXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gc3Vic2tlbGV0b24gXCYjMzQ7JHQzXCYjMzQ7IG5hbWUgXCYjMzQ7JG5hbWVcJiMzNDsgXHUwMDNlIFwmIzM0OyRzdWJza2VsXCYjMzQ7IHx8IGZhaWxcbiYjNDM7ZmlcbiYjNDM7XG4mIzQzO3JtIC1mIFwmIzM0OyR0MVwmIzM0OyBcJiMzNDskdDJcJiMzNDsgXCYjMzQ7JHQzXCYjMzQ7XG4mIzQzO2V4aXQgMFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jXG5pbmRleCAyYmI1NzczZDZmOTkzLi5lYTM0Mjg1OWQ2Y2UxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xuQEAgLTQ2NSw3ICYjNDM7NDY1LDcgQEAgc3RydWN0IGV4cG9zZWRfaG9vayB7XG4gXHRcdC5leHBlY3RlZF9lcnIgPSBFWFBFQ1RFRF9FUlIsIFxcXG4gXHR9LFxuIFxuLSNpbmNsdWRlIFwmIzM0O2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7cHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFwmIzM0O1xuIFxuICN1bmRlZiBCUEZfUkVUVkFMX0hPT0tcbiB9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbnNpbWlsYXJpdHkgaW5kZXggMTAwJVxucmVuYW1lIGZyb20gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbnJlbmFtZSB0byB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDIwOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmRhZmUyYjk2MWQxM2JjNDM5Y2FjMWM0MmI5OTY1YzM0OGFjNDRkOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIzIDIwOjE0OjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCmluZGV4IDVmMWEzYmZjMDU2OWYuLjliOTkwNTYxMDA3MGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKQEAgLTQsOTMgJiM0Mzs0LDE5IEBAIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoCiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZQogCiBDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7Ci1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5Ci0KLUNVUkRJUiA6PSAkKGFic3BhdGggLikKLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLikKLUxJQkRJUiA6PSAkKFRPT0xTRElSKS9saWIKLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmCi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlCi1UT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGUKLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2wKLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpCi1pZm5lcSAoJChPKSwpCi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZAotZWxzZQotR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZCkKLWVuZGlmCi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmgKLVBLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWcKLQotaWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpCi0gIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFIKLWVuZGlmCiAKIEJQRl9HQ0MJCT89ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOykKLWlmZGVmIEFTQU4KLVNBTl9DRkxBR1MgCT89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgotZWxzZQotU0FOX0NGTEFHUwk/PQotZW5kaWYKLVNBTl9MREZMQUdTCT89ICQoU0FOX0NGTEFHUykKLVJFTEVBU0UJCT89Ci1PUFRfRkxBR1MJPz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApCi0KLUxJQkVMRl9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyJmd0Oy9kZXYvbnVsbCkKLUxJQkVMRl9MSUJTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDImZ3Q7L2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpCiAKIFNLSVBfRE9DUwk/PQogU0tJUF9MTFZNCT89CiBTS0lQX0xJQkJGRAk/PQogU0tJUF9DUllQVE8JPz0KIAotIyBXaGVuIEJQRl9TVFJJQ1RfQlVJTEQgaXMgMSwgYW55IEJQRiBvYmplY3QsIHNrZWxldG9uLCB0ZXN0IG9iamVjdCwgb3IKLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzCi0jIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLgotQlBGX1NUUklDVF9CVUlMRCA/PSAxCi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSkKLQotaWZlcSAoJChzcmN0cmVlKSwpCi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKQotc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSkKLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQotZW5kaWYKLQotQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMQkJCQlcCi0JICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCQkJCVwKLQkgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCQkJCVwKLQkgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKQkJCVwKLQkgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUikJCVwKLQkgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVCkJXAotCSAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZQotTERGTEFHUyAmIzQzOz0gJChTQU5fTERGTEFHUykKLUxETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkCi0KLVBDQVBfQ0ZMQUdTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDImZ3Q7L2Rldi9udWxsICZhbXA7JmFtcDsgZWNobyAmIzM0Oy1EVFJBRkZJQ19NT05JVE9SPTEmIzM0OykKLVBDQVBfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMiZndDsvZGV2L251bGwpCi1MRExJQlMgJiM0Mzs9ICQoUENBUF9MSUJTKQotQ0ZMQUdTICYjNDM7PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpCi0KLSMgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyB1c2UgTExWTSBsaWJyYXJpZXMKLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpCi0KLWlmbmVxICgkKExMVk0pLCkKLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZwotQ0ZMQUdTICYjNDM7PSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQKLWVuZGlmCi0KICMgQ2hlY2sgd2hldGhlciBicGYgY3B1PXY0IGlzIHN1cHBvcnRlZCBvciBub3QgYnkgY2xhbmcKIGlmbmVxICgkKHNoZWxsICQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtbWNwdT1oZWxwIDImZ3Q7JmFtcDsxIHwgZ3JlcCAmIzM5O3Y0JiMzOTspLCkKIENMQU5HX0NQVVY0IDo9IDEKIGVuZGlmCiAKLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOykKLUNMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAmIzM5O2ludCB4OyYjMzk7IHwgXAotCSQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFwKLQktbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcCi0JLXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGVjaG8gMSkKLQogIyBPcmRlciBjb3JyZXNwb25kIHRvICYjMzk7bWFrZSBydW5fdGVzdHMmIzM5OyBvcmRlcgogVEVTVF9HRU5fUFJPR1MgPSB0ZXN0X3ZlcmlmaWVyIHRlc3RfdGFnIHRlc3RfbWFwcyB0ZXN0X2xydV9tYXAgdGVzdF9wcm9ncyBcCiAJdGVzdF9zb2NrbWFwIFwKQEAgLTEwMiwxNiAmIzQzOzI4LDYgQEAgVEVTVF9JTlNUX1NVQkRJUlMgOj0gbm9fYWx1MzIKIGlmbmVxICgkKEJQRl9HQ0MpLCkKIFRFU1RfR0VOX1BST0dTICYjNDM7PSB0ZXN0X3Byb2dzLWJwZl9nY2MKIFRFU1RfSU5TVF9TVUJESVJTICYjNDM7PSBicGZfZ2NjCi0KLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCwKLSMgdHJpZ2dlcnMgR0NDIHdhcm5pbmdzIHRoYXQgY2Fubm90IGJlIGRpc2FibGVkOiBkZWNsYXJhdGlvbiBvZgotIyBhbm9ueW1vdXMgc3RydWN0IHR5cGVzIGluIGZ1bmN0aW9uIHBhcmFtZXRlciBsaXN0cy4KLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLQogZW5kaWYKIAogaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLCkKQEAgLTE2OCw3ICYjNDM7ODQsMjEgQEAgb3ZlcnJpZGUgZGVmaW5lIENMRUFOCiAJJChRKSQoTUFLRSkgZG9jcy1jbGVhbgogZW5kZWYKIAomIzQzOyMgLi4vbGliLm1rIGFwcGVuZHMgdG8gdGhlIGZsYWdzIGluaGVyaXRlZCBmcm9tIHRoZSBlbnZpcm9ubWVudDsKJiM0MzsjIE1ha2VmaWxlLmJ1aWxkdmFycyByZWJ1aWxkcyBDRkxBR1MgYW5kIExERkxBR1MgYXJvdW5kIHRoZXNlIHNuYXBzaG90cwomIzQzOyMgc28gdGhhdCBpdHMgb3duIGFkZGl0aW9ucyBwcmVjZWRlIGxpYi5tayYjMzk7cywgYXMgdGhleSBkaWQgd2hlbiB0aGV5CiYjNDM7IyB3ZXJlIGRlZmluZWQgYWJvdmUgdGhlIGluY2x1ZGUuCiYjNDM7SU5IRVJJVEVEX0NGTEFHUyA6PSAkKENGTEFHUykKJiM0MztJTkhFUklURURfTERGTEFHUyA6PSAkKExERkxBR1MpCiBpbmNsdWRlIC4uL2xpYi5tawomIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzCiYjNDM7CiYjNDM7IyBEZWZpbml0aW9ucyBvbmx5IHRoaXMgTWFrZWZpbGUgY29uc3VtZXM7IHBsYWNlZCBhZnRlciB0aGUgaW5jbHVkZQomIzQzOyMgYmVjYXVzZSBzb21lIG9mIHRoZW0gZGVyaXZlIGZyb20gTWFrZWZpbGUuYnVpbGR2YXJzIHZhbHVlcy4KJiM0MztCUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sCiYjNDM7SE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCiYjNDM7QlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYikKJiM0MztDTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUykKIAogTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMKIENIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksICYjMzQ7bm9uZSYjMzQ7KSkKQEAgLTIxMywyMSAmIzQzOzE0Myw5IEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKQogZW5kaWYKIGVuZGlmCiAKLVNDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29scwotQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkCi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlCi1CUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotSE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKS9ob3N0Ci1IT1NUX1NDUkFUQ0hfRElSCTo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzCi1IT1NUX0lOQ0xVREVfRElSCTo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZQotZWxzZQotSE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKQotSE9TVF9TQ1JBVENIX0RJUgk6PSAkKFNDUkFUQ0hfRElSKQotSE9TVF9JTkNMVURFX0RJUgk6PSAkKElOQ0xVREVfRElSKQotZW5kaWYKLUhPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQotUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHMKJiM0MzsjIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzCiYjNDM7JChPVVRQVVQpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgJiM0Mzs9ICQoTExWTV9DRkxBR1MpCiYjNDM7CiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KQkJCQlcCiAJCSAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eCkJXAogCQkgICAgIC4uLy4uLy4uLy4uL3ZtbGludXgJCQkJXApAQCAtMjQ2LDcgJiM0MzsxNjQsNyBAQCAkKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpCQkJCVwKIAkgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7CiAKICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nCi1NQUtFX0RJUlMgOj0gJChzb3J0ICQoQlVJTERfRElSKS9saWJicGYgJChIT1NUX0JVSUxEX0RJUikvbGliYnBmCVwKJiM0MztNQUtFX0RJUlMgOj0gJChzb3J0ICQoT1VUUFVUKSAkKEJVSUxEX0RJUikvbGliYnBmICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZiBcCiAJICAgICAgICQoQlVJTERfRElSKS9icGZ0b29sICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2wJCVwKIAkgICAgICAgJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMJCQkJXAogCSAgICAgICAkKElOQ0xVREVfRElSKSkKQEAgLTI1OCw5ICYjNDM7MTc2LDEyIEBAICQoT1VUUFVUKS8lLm86ICUuYwogCSQoY2FsbCBtc2csQ0MsLCRAKQogCSQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAKIAomIzQzOyMgSGVhZGVycyBtYXkgYXBwZWFyIGFtb25nIHRoZSBwcmVyZXF1aXNpdGVzIGZvciBkZXBlbmRlbmN5IHRyYWNraW5nOwomIzQzOyMgdGhleSBtdXN0IG5vdCByZWFjaCB0aGUgY2xhbmcvZ2NjIGNvbW1hbmQgbGluZSAoY2xhbmcgdHJlYXRzIGEgYmFyZSAuaAomIzQzOyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS4KICQoT1VUUFVUKS8lOiUuYwogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKLQkkKFEpJChMSU5LLmMpICReICQoTERMSUJTKSAtbyAkQAomIzQzOwkkKFEpJChMSU5LLmMpICQoZmlsdGVyLW91dCAlLmgsJF4pICQoTERMSUJTKSAtbyAkQAogCiAjIExMVk0mIzM5O3MgbGQubGxkIGRvZXNuJiMzOTt0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODYKIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKQpAQCAtMzEzLDE3ICYjNDM7MjM0LDYgQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpCiAJJChjYWxsIG1zZyxNT0QsLCRAKQogCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSkKIAotCi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLCkKLUNST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sCi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKQotVVNFX0JPT1RTVFJBUCA6PSAmIzM0OyYjMzQ7Ci1lbHNlCi1UUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpCi1VU0VfQk9PVFNUUkFQIDo9ICYjMzQ7Ym9vdHN0cmFwLyYjMzQ7Ci1lbmRpZgotCiAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKTogJChCUEZPQkopCiAKIFRFU1RJTkdfSEVMUEVSUwk6PSAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm8KQEAgLTMzOSwxMiAmIzQzOzI0OSwzMyBAQCAkKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpICQoVFJBQ0VfSEVMUAogJChPVVRQVVQpL3Rlc3Rfc29ja19maWVsZHM6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKQogJChPVVRQVVQpL3Rlc3RfdGFnOiAkKFRFU1RJTkdfSEVMUEVSUykKICQoT1VUUFVUKS90ZXN0X2xpcmNfbW9kZTJfdXNlcjogJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFRFU1RJTkdfSEVMUEVSUykKJiM0MzskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpIGZsb3dfZGlzc2VjdG9yX2xvYWQuaAogJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKQotJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSikKIAotQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTCkKJiM0MzsjIERlZmluZWQgYWhlYWQgb2YgdGhlIGZpcnN0IHJ1bGUgdGhhdCBsaXN0cyBpdCBhcyBhIHByZXJlcXVpc2l0ZS4KJiM0MztWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oCiYjNDM7CiYjNDM7IyBUaGUgdXNlcnNwYWNlIG9iamVjdHMgdGhlIHJ1bm5lciBpbnN0YW5jZXMgbGluayAoUlVOTkVSX09CSlMsIHNlZQomIzQzOyMgTWFrZWZpbGUuYnVpbGR2YXJzKSBhcmUgYnVpbHQgaGVyZSwgb25jZSwgc28gdGhhdCBubyBydW5uZXIgc3ViLW1ha2UKJiM0MzsjIGV2ZXIgd3JpdGVzIGEgZmlsZSB0aGlzIE1ha2VmaWxlIGFsc28gYnVpbGRzLgomIzQzOyMKJiM0MzsjICQoVFJVTk5FUl9CUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0CiYjNDM7IyBpbnN0YWxscyBsaWJicGYmIzM5O3MgaW50ZXJuYWwgaGVhZGVycyAoYnBmL2hhc2htYXAuaCwgYnBmL2xpYmJwZl9pbnRlcm5hbC5oKQomIzQzOyMgaW50byAkKElOQ0xVREVfRElSKSAtIHRoZSBjcm9zcy1jb21waWxlZCBicGZ0b29sJiMzOTtzIHdoZW4gY3Jvc3MtY29tcGlsaW5nOwomIzQzOyMgd2l0aG91dCBpdCwgdHJhY2VfaGVscGVycy5jIHJhY2VzIHRoZSBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cAomIzQzOyMgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLgomIzQzO1JVTk5FUl9PQkpTIDo9ICQoc29ydCAkKFJVTk5FUl9PQkpTLXRlc3RfcHJvZ3MpICQoUlVOTkVSX09CSlMtdGVzdF9tYXBzKVwKJiM0MzsJCSAgICAgICQoUlVOTkVSX0xJQl9PQkpTLXRlc3RfcHJvZ3MpKQomIzQzOyQoUlVOTkVSX09CSlMpOiAkKFZFUklGWV9TSUdfSERSKSAkKEJQRk9CSikgJChUUlVOTkVSX0JQRlRPT0wpCiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MubzogcHJvZ190ZXN0cy90ZXN0cy5oCiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwcy5vOiBtYXBfdGVzdHMvdGVzdHMuaAomIzQzOwomIzQzOyMgZmluZF9iaXQuYyBpcyB0aGUgb25seSBydW5uZXIgc291cmNlIG91dHNpZGUgdGhpcyBkaXJlY3RvcnksCiYjNDM7IyBzbyBpdCBuZWVkcyBhIHJ1bGUgb2YgaXRzIG93bi4KJiM0MzskKE9VVFBVVCkvZmluZF9iaXQubzogJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMKJiM0MzsJJChjYWxsIG1zZyxDQywsJEApCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLWMgJCZsdDsgJChMRExJQlMpIC1vICRACiYjNDM7CiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXAogCQkgICAgJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9icGZ0b29sCiAJJChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUikJCQkgICAgICAgXApAQCAtNDEyLDcgJiM0MzszNDMsNyBAQCBlbmRpZgogCiAjIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0bwogIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2YKLSMgJChUUlVOTkVSX0JQRl9PQkpTKQomIzQzOyMgQlBGIG9iamVjdHMuCiAkKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKQogaWZlcSAoJChWTUxJTlVYX0gpLCkKIAkkKGNhbGwgbXNnLEdFTiwsJEApCkBAIC00MzcsMzc0ICYjNDM7MzY4LDEyIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzCVwKIAkJSE9TVFBLR19DT05GSUc9JiMzOTskKFBLR19DT05GSUcpJiMzOTsgXAogCQlPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKQogCi0jIEdldCBDbGFuZyYjMzk7cyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnkKLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyAmIzM0O21pc3NpbmcmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcywKLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLgotIwotIyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlCi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuCi1kZWZpbmUgZ2V0X3N5c19pbmNsdWRlcwotJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSAmbHQ7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIFwKLQl8IHNlZCAtbiAmIzM5Oy8mbHQ7Li4uJmd0OyBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFwoLy4qXCl8LWlkaXJhZnRlciBcMXxwIH0mIzM5OykgXAotJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWQmIzM0OywgJCQzLCAkJDMpfSYjMzk7KSBcCi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EX19CSVRTX1BFUl9MT05HPSVkJiMzNDssICQkMyl9JiMzOTspIFwKLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtICZsdDsvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LUQlcz0lcyAmIzM0OywgJCQyLCAkJDMpfSYjMzk7KQotZW5kZWYKLQotIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuCi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IFwKLQkJCWdyZXAgJiMzOTtkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18mIzM5OykKLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKQotQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYikKLQotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpCi1lbmRpZgotCi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSkKLUJQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTikJXAotCSAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKQkJCVwKLQkgICAgIC1JJChUT09MU0lOQ0RJUikgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZQkJXAotCSAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKQkJCVwKLQkgICAgIC1zdGQ9Z251MTEJCSAJCQkJCVwKLQkgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIAkJCQkJXAotCSAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWcJCQkJCVwKLQkgICAgIC1mbXMtZXh0ZW5zaW9ucwkJCQkJCVwKLQkgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzCQkJXAotCSAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXMJCQkJCVwKLQkgICAgICMKLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlCi0KLUNMQU5HX0NGTEFHUyA9ICQoQ0xBTkdfU1lTX0lOQ0xVREVTKQotCi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lCi0kKE9VVFBVVCkvdGVzdF94ZHBfbm9pbmxpbmUubzogQlBGX0NGTEFHUyAmIzQzOz0gLWZuby1pbmxpbmUKLQotJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQubzogZmxvd19kaXNzZWN0b3JfbG9hZC5oCi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaAotCi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgQ2xhbmcKLSMgJDEgLSBpbnB1dCAuYyBmaWxlCi0jICQyIC0gb3V0cHV0IC5vIGZpbGUKLSMgJDMgLSBDRkxBR1MKLSMgJDQgLSBiaW5hcnkgbmFtZQotZGVmaW5lIENMQU5HX0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYzIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggZGlzYWJsZWQgYWx1MzIKLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYyIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggY3B1LXY0Ci1kZWZpbmUgQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEUKLQkkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKQotCSQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxJmd0OyZhbXA7MikpCi1lbmRlZgotIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQwotZGVmaW5lIEdDQ19CUEZfQlVJTERfUlVMRQotCSQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMikKLQkkKFEpJChCUEZfR0NDKSAkMyAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkMSAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKLWVuZGVmCi0KLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmMKLQotTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaAkJXAotCQlsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIAkJCVwKLQkJdGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oCVwKLQkJdGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaAkJCVwKLQkJdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oCQkJCVwKLQkJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oCQkJCVwKLQkJdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaAotCi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgCVwKLQljb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuYwkJCVwKLQl0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXAotCXRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuYwotCi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuYwotCi0jIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2UKLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFwKLQlrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKLVNLRUxfQkxBQ0tMSVNUICYjNDM7PSAkJChMU0tFTFMpICQkKExTS0VMU19TSUdORUQpCi0KLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm8KLWxpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm8KLWxpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm8KLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm8KLSMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlCi0jIGJ1dCB0aGF0JiMzOTtzIGNyZWF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgc2tlbC5oIGdlbmVyYXRpb24uCi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vCi10ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8KLXRlc3RfdXNkdC5za2VsLmgtZGVwcyA6PSB0ZXN0X3VzZHQuYnBmLm8gdGVzdF91c2R0X211bHRpc3BlYy5icGYubwoteHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vCi14ZHBfaHdfbWV0YWRhdGEuc2tlbC5oLWRlcHMgOj0geGRwX2h3X21ldGFkYXRhLmJwZi5vCi14ZHBfZmVhdHVyZXMuc2tlbC5oLWRlcHMgOj0geGRwX2ZlYXR1cmVzLmJwZi5vCi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KLXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCi10cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwotdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwotCi1MSU5LRURfQlBGX09CSlMgOj0gJChmb3JlYWNoIHNrZWwsJChMSU5LRURfU0tFTFMpLCQoJChza2VsKS1kZXBzKSkKLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSkKLQotSEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaCkJCVwKLQkJCSQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKQlcCi0JCQkkKGFkZHByZWZpeCAkKEJQRkRJUikvLAlicGZfY29yZV9yZWFkLmgJXAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgYnBmX2VuZGlhbi5oCVwKLQkJCQkJCWJwZl9oZWxwZXJzLmgJXAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaCkKLQotIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggJiMzNDt0ZW1wb3JhcnkmIzM0OyB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IChyZWxpZXMgb24KLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuCi0jIFBhcmFtZXRlcnM6Ci0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncykKLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSAmIzM0O2ZsYXZvciYjMzQ7IChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YykKLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVIKLQotTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKQotVFJVTk5FUl9PVVRQVVQgOj0gJChPVVRQVVQpJChpZiAkMiwvKSQyCi1UUlVOTkVSX0JJTkFSWSA6PSAkMSQoaWYgJDIsLSkkMgotVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubywJXAotCQkJCSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpCi1UUlVOTkVSX0VYVFJBX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sCQlcCi0JCQkJICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSkKLVRSVU5ORVJfTElCX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sCQlcCi0JCQkJICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0xJQl9TT1VSQ0VTKSkpCi1UUlVOTkVSX0VYVFJBX0hEUlMgOj0gJCQoZmlsdGVyICUuaCwkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpCi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oCi1UUlVOTkVSX0JQRl9TUkNTIDo9ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5jKSkKLVRSVU5ORVJfQlBGX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vLCAkJChUUlVOTkVSX0JQRl9TUkNTKSkKLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsCVwKLQkJCQkgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXAotCQkJCQkgICAgICAgJCQoVFJVTk5FUl9CUEZfU1JDUykpKQotVFJVTk5FUl9CUEZfTFNLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFMpICQkKExTS0VMU19FWFRSQSkpCi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKQotVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTX1NJR05FRCkpCi1URVNUX0dFTl9GSUxFUyAmIzQzOz0gJCQoVFJVTk5FUl9CUEZfT0JKUykKLQotIyBFdmFsdWF0ZSBydWxlcyBub3cgd2l0aCBleHRyYSBUUlVOTkVSX1hYWCB2YXJpYWJsZXMgYWJvdmUgYWxyZWFkeSBkZWZpbmVkCi0kJChldmFsICQkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLCQxLCQyKSkKLQotZW5kZWYKLQotIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZAotIyBzZXQgdXAgYnkgREVGSU5FX1RFU1RfUlVOTkVSIGl0c2VsZiwgY3JlYXRlIHRlc3QgcnVubmVyIGJ1aWxkIHJ1bGVzIHdpdGg6Ci0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncykKLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSAmIzM0O2ZsYXZvciYjMzQ7IChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YykKLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMKLQotIyBQZXJtaXNzaXZlIGJ1aWxkIGJlaGF2aW91ciAoc2tpcC1vbi1mYWlsdXJlIGNvbXBpbGUsIHBhcnRpYWwtbGluaykgb25seQotIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3QKLSMgcmVmZXJlbmNlcyAoZS5nLiB0ZXN0X21hcHMpIGtlZXAgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gcGVybWlzc2l2ZS4KLSMgVGhlIGNoZWNrIGlzIGlubGluZWQgcGVyLXJ1bm5lciBzbyAkMSBpcyBzdWJzdGl0dXRlZCBhdCAkKGNhbGwpIHRpbWUgYW5kCi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUmIzM5O3MgcmVjaXBlLgotCi1pZmVxICgkKCQoVFJVTk5FUl9PVVRQVVQpLWRpciksKQotJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHkKLSQoVFJVTk5FUl9PVVRQVVQpOgotCSQkKGNhbGwgbXNnLE1LRElSLCwkJEApCi0JJChRKW1rZGlyIC1wICQkQAotZW5kaWYKLQotIyBlbnN1cmUgd2Ugc2V0IHVwIEJQRiBvYmplY3RzIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UgZm9yIGEgZ2l2ZW4KLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvbgotaWZlcSAoJCgkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyksKQotJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMgOj0geQotJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzoJCQkJXAotCQkgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8lLmMJCQlcCi0JCSAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaAkJCVwKLQkJICAgICAkJChJTkNMVURFX0RJUikvdm1saW51eC5oCQkJCVwKLQkJICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKQkJCQlcCi0JCSAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKSAkJChCUEZPQkopCi0JJCQoY2FsbCAkKFRSVU5ORVJfQlBGX0JVSUxEX1JVTEUpLCQkJmx0OywkJEAsCQkJXAotCQkJCQkgICQoVFJVTk5FUl9CUEZfQ0ZMQUdTKSAgICAgICAgIFwKLQkJCQkJICAkJCgkJCZsdDstQ0ZMQUdTKQkJXAotCQkJCQkgICQkKCQkJmx0Oy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKQotCi0kKFRSVU5ORVJfQlBGX1NLRUxTKTogJS5za2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCQmbHQ7IF07IHRoZW4JCQlcCi0JCSQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOwkJCVwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkJZXhpdCAwOwkJCQkJCQlcCi0JZmk7KQkJCQkJCQkJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGlua2VkMS5vKSAkJCZsdDsgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQxLm8pICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGlua2VkMy5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQyLm8pICZhbXA7JmFtcDsgXAotCWRpZmYgJCQoJmx0Ozoubz0ubGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoJmx0Ozoubz0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJCgmbHQ7Oi5icGYubz0pKSAmZ3Q7ICQkQCAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoJmx0Ozoubz0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJCgmbHQ7Oi5icGYubz0pKSAmZ3Q7ICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcCi0JCSQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JfSkgJmFtcDsmYW1wOyBcCi0Jcm0gLWYgJCQoJmx0Ozoubz0ubGlua2VkMS5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQyLm8pICQkKCZsdDs6Lm89LmxpbmtlZDMubykKLQotJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCQmbHQ7IF07IHRoZW4JCQlcCi0JCSQkKFJNKSAkJEA7CQkJCQkJXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCQlleGl0IDA7CQkJCQkJCVwKLQlmaTspCQkJCQkJCQlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAkJCZsdDsgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAmYW1wOyZhbXA7IFwKLQlkaWZmICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gLUwgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoJmx0OzouYnBmLm89X2xza2VsKSkgJmd0OyAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXAotCQkkJChSTSkgJCRAOyBcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JfSkgJmFtcDsmYW1wOyBcCi0Jcm0gLWYgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykKLQotJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKQotCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkJmx0OyBdOyB0aGVuCQkJXAotCQkkJChSTSkgJCRAOwkJCQkJCVwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkJZXhpdCAwOwkJCQkJCQlcCi0JZmk7KQkJCQkJCQkJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKSAoc2lnbmVkKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJCQmbHQ7ICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJmFtcDsmYW1wOyBcCi0JZGlmZiAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoJmx0OzouYnBmLm89X2xza2VsKSkgJmd0OyAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXAotCQkkJChSTSkgJCRAOyBcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JfSkgJmFtcDsmYW1wOyBcCi0Jcm0gLWYgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykKLQotJChMSU5LRURfQlBGX09CSlMpOiAlOiAkKFRSVU5ORVJfT1VUUFVUKS8lCi0KLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlcwotLlNFQ09OREVYUEFOU0lPTjoKLSQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKTogJChUUlVOTkVSX09VVFBVVCkvJTogJCQkJCglLWRlcHMpICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKQotCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksZm9yIGYgaW4gJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpOyBkbyBcCi0JCWlmIFsgISAtZiAkJCQkZiBdOyB0aGVuCQkJCQkJXAotCQkJJCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7CQlcCi0JCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCQkJZXhpdCAwOwkJCQkJCQlcCi0JCWZpOwkJCQkJCQkJXAotCWRvbmU7KQkJCQkJCQkJCVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0xJTkstQlBGJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJChAOi5za2VsLmg9LmJwZi5vKSkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICZhbXA7JmFtcDsgXAotCWRpZmYgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAmYW1wOyZhbXA7CVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzIgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChAOi5za2VsLmg9KSkgJmd0OyAkJEAgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChAOi5za2VsLmg9KSkgJmd0OyAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXAotCQkkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsJCQlcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JfSkgJmFtcDsmYW1wOwkJCQkJCQkJCVwKLQlybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKQotCi0jIFdoZW4gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhICUuZCBmaWxlLCBvbmx5IHNrZWwgYmFzZW5hbWVzIChub3QKLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUubwotIyBmaWxlLiB2cGF0aCBkaXJlY3RpdmVzIGJlbG93IGluc3RydWN0IG1ha2UgdG8gc2VhcmNoIGZvciBza2VsIGZpbGVzCi0jIGluIFRSVU5ORVJfT1VUUFVULCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuCi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKQotdnBhdGggJS5sc2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpCi12cGF0aCAlLnN1YnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKQotCi1lbmRpZgotCi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZQotaWZlcSAoJCgkKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIpLCkKLSQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciA6PSB5Ci0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jCi0JJCQoY2FsbCBtc2csVEVTVC1IRFIsJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQkKHNoZWxsIChlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OzsJCQkJCVwKLQkJICBzZWQgLW4gLUUgJiMzOTtzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10mIzQzOylcKCh2b2lkKT9cKS4qL0RFRklORV9URVNUKFwyKS9wJiMzOTsJXAotCQkJJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jIHwgc29ydCA7CVwKLQkJICkgJmd0OyAkJEApCi1lbmRpZgotCi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vCi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxCi0KLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMKLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kCi0kKFRSVU5ORVJfVEVTVF9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm86CQkJXAotCQkgICAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmMJCQkJXAotCQkgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kCi0JJCQoY2FsbCBtc2csVEVTVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQoUSkoY2QgJCQoQEQpICZhbXA7JmFtcDsgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCQmbHQ7ICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJCRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtVEVTVCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MikpKQotCSQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSwJCQkJCQlcCi0JCSQoUSlpZiBbIC1mICQkQCBdOyB0aGVuCQkJCQkJXAotCQkkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xuJiMzOTsgJiMzNDtCVEZJRFMmIzM0OyAmIzM0OyBbJChUUlVOTkVSX0JJTkFSWSldJiMzNDsgJiMzNDskJChub3RkaXIgJCRAKSYjMzQ7KTsgXAotCQkkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYubyAkJEA7CVwKLQkJJChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAOwkJXAotCQlmaSkKLQotJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOgkJCVwKLQkJCSAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmMJCQlcCi0JCQkgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpCQkJXAotCQkJICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpCQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKQkJCVwKLQkJCSAgICAkKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpCQlcCi0JCQkgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpCi0KLWlmZXEgKCQoZmlsdGVyIGNsZWFuIGRvY3MtY2xlYW4gZW1pdF90ZXN0cywkKE1BS0VDTURHT0FMUykpLCkKLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSkKLWVuZGlmCi0KLSMgYWRkIHBlciBleHRyYSBvYmogQ0ZHTEFHUyBkZWZpbml0aW9ucwotJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLAlcCi0JJChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICYjNDM7PSAkKCQoTikuYy1DRkxBR1MpKSkKLQotJChUUlVOTkVSX0VYVFJBX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86CQkJCVwKLQkJICAgICAgICUuYwkJCQkJCVwKLQkJICAgICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKQkJCQlcCi0JCSAgICAgICAkKFZFUklGWV9TSUdfSERSKQkJCQlcCi0JCSAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKQkJCQlcCi0JCSAgICAgICAkJChCUEZPQkopIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQCkKLQkkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCQmbHQ7ICQkKExETElCUykgLW8gJCRACi0KLSQoVFJVTk5FUl9MSUJfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzokKFRPT0xTRElSKS9saWIvJS5jCi0JJCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApCi0JJChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkJmx0OyAkJChMRExJQlMpIC1vICQkQAotCi0jIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZQotIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpCi0kKFRSVU5ORVJfQklOQVJZKS1leHRyYXM6ICQoVFJVTk5FUl9FWFRSQV9GSUxFUykgfCAkKFRSVU5ORVJfT1VUUFVUKQotaWZuZXEgKCQyOiQoT1VUUFVUKSw6JChzaGVsbCBwd2QpKQotCSQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoVFJVTk5FUl9CSU5BUlkpLCQoVFJVTk5FUl9FWFRSQV9GSUxFUykpCi0JJChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvCi1lbmRpZgotCi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzCi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKQotCi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKQlcCi0JCQkgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopCQlcCi0JCQkgICAgICQoVFJVTk5FUl9MSUJfT0JKUykJCQlcCi0JCQkgICAgICQoVFJVTk5FUl9CUEZUT09MKQkJCQlcCi0JCQkgICAgICQoT1VUUFVUKS92ZXJpc3RhdAkJCQlcCi0JCQkgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzCQkJXAotCQkJICAgICAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJChUUlVOTkVSX1RFU1RfT0JKUykpKQotCSQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKQotCSQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEAKLQkkKFEpbG4gLXNmICQoaWYgJDIsLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcCi0JCSAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sCi0KLWVuZGVmCi0KLVZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmgKLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlcgotUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbQotCi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKQomIzQzOyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90CiYjNDM7IyBncm91cGVkIC0gaWYgYm90aCBmaWxlcyBhcmUgc3RhbGUgbWFrZSB3b3VsZCBydW4gZ2Vua2V5IHR3aWNlLCB1bmRlcgomIzQzOyMgLWogY29uY3VycmVudGx5LCBhbmQgdGhlIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybQomIzQzOyMgaXMgaW1wbGljaXRseSBncm91cGVkIGV2ZW4gd2l0aCBtYWtlICZsdDsgNC4zLiBUaGUgc3RlbSBvbmx5IHN0YW5kcyBpbgomIzQzOyMgZm9yICYjMzk7c2lnbmluZyYjMzk7IHNvIHRoYXQgbm8gb3RoZXIgLnBlbS8uZGVyIHVuZGVyICQoQlVJTERfRElSKSBtYXRjaGVzLgomIzQzOyQoQlVJTERfRElSKS8lX2tleS5wZW0gJChCVUlMRF9ESVIpLyVfa2V5LmRlcjogJChWRVJJRllfU0lHX1NFVFVQKQogCSQoUSlta2RpciAtcCAkKEJVSUxEX0RJUikKIAkkKFEpJChWRVJJRllfU0lHX1NFVFVQKSBnZW5rZXkgJChCVUlMRF9ESVIpCiAKQEAgLTgzMyw3ICYjNDM7NDAyLDYgQEAgTElCQVJFTkFfQ09NTU9OX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZQkJXAogTElCQVJFTkFfQlBGX0RFUFMgOj0gJChMSUJBUkVOQV9DT01NT05fREVQUykgJCh3aWxkY2FyZCBsaWJhcmVuYS9zZWxmdGVzdHMvKikKIExJQkFSRU5BX0JFTkNIX0JQRl9ERVBTIDo9ICQoTElCQVJFTkFfQ09NTU9OX0RFUFMpICQod2lsZGNhcmQgbGliYXJlbmEvYmVuY2hzLyopCiAKLUxJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oCiBMSUJBUkVOQV9CRU5DSF9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2JlbmNoLnNrZWwuaAogCiAkKExJQkFSRU5BX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpCkBAIC04NDMsOTUgJiM0Mzs0MTEsMTI2IEBAICQoTElCQVJFTkFfQkVOQ0hfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CRU5DSF9CUEZfCiAJJiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGJlbmNobWFya3MgJChMSUJBUkVOQV9NQUtFX0FSR1MpCiAKIGlmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpCi1MSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmgKLUNGTEFHUyAmIzQzOz0gLURIQVNfQlBGX0FSRU5BX0FTQU4KIAogJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpCiAJJiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKQogZW5kaWYKIAotIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci4KLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHMKLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9ncwotVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYwkJXAotCQkJIGNncm91cF9oZWxwZXJzLmMJXAotCQkJIHRyYWNlX2hlbHBlcnMuYwlcCi0JCQkgbmV0d29ya19oZWxwZXJzLmMJXAotCQkJIHRlc3RpbmdfaGVscGVycy5jCVwKLQkJCSBidGZfaGVscGVycy5jCQlcCi0JCQkgY2FwX2hlbHBlcnMuYwkJXAotCQkJIHVucHJpdl9oZWxwZXJzLmMgCVwKLQkJCSBzeXNjdGxfaGVscGVycy5jCVwKLQkJCSBuZXRsaW5rX2hlbHBlcnMuYwlcCi0JCQkgaml0X2Rpc2FzbV9oZWxwZXJzLmMJXAotCQkJIGlvX2hlbHBlcnMuYwkJXAotCQkJIHRlc3RfbG9hZGVyLmMJCVwKLQkJCSB4c2suYwkJCVwKLQkJCSBkaXNhc20uYwkJXAotCQkJIGRpc2FzbV9oZWxwZXJzLmMJXAotCQkJIGpzb25fd3JpdGVyLmMgCQlcCi0JCQkgJChWRVJJRllfU0lHX0hEUikJCVwKLQkJCSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmgJXAotCQkJIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oCVwKLQkJCSBicGZ0b29sX2hlbHBlcnMuYwlcCi0JCQkgdXNkdF8xLmMgdXNkdF8yLmMJXAotCQkJICQoTElCQVJFTkFfU0tFTCkJXAotCQkJICQoTElCQVJFTkFfQVNBTl9TS0VMKQotVFJVTk5FUl9MSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jCi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQJCQkJXAotCQkgICAgICAgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zbwkJCVwKLQkJICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHkJCQkJXAotCQkgICAgICAgJChPVVRQVVQpL3NpZ24tZmlsZQkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpCQkJCVwKLQkJICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpCQkJCVwKLQkJICAgICAgIGltYV9zZXR1cC5zaCAJCQkJCVwKLQkJICAgICAgICQoVkVSSUZZX1NJR19TRVRVUCkJCQkJXAotCQkgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKQkJXAotCQkgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKQotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19CUEZfQlVJTERfUlVMRQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKQotCi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLgotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykKLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKQotCi0jIERlZmluZSB0ZXN0X3Byb2dzLWNwdXY0IHRlc3QgcnVubmVyLgomIzQzOyMgR2VuZXJhdGVkIHRlc3QgbGlzdCBoZWFkZXJzCiYjNDM7CiYjNDM7ZGVmaW5lIGdlbl90ZXN0c19oZHIKJiM0MzsJJChjYWxsIG1zZyxURVNULUhEUiwsJEApCiYjNDM7CSQoUSkoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7CQlcCiYjNDM7CQkgIHNlZCAtbiAtRSAmIzM5O3MvXnZvaWQgKHNlcmlhbF8pP3Rlc3RfKFthLXpBLVowLTlfXSYjNDM7KVwoKHZvaWQpP1wpLiovREVGSU5FX1RFU1QoXDIpL3AmIzM5OwlcCiYjNDM7CQkkKEBEKS8qLmMgfCBzb3J0KSAmZ3Q7ICRACiYjNDM7ZW5kZWYKJiM0MzsKJiM0Mztwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpCiYjNDM7CSQoZ2VuX3Rlc3RzX2hkcikKJiM0MzsKJiM0MzttYXBfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBtYXBfdGVzdHMvKi5jKQomIzQzOwkkKGdlbl90ZXN0c19oZHIpCiYjNDM7CiYjNDM7IyBUZXN0IHJ1bm5lciBpbnN0YW5jZXMsIG9uZSBzdWItbWFrZSBlYWNoIChzZWUgTWFrZWZpbGUucnVubmVyKS4KJiM0MzsKJiM0MzsjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cyBhbmQgVEVTVF9LTU9EUyBhcmUgZXhwb3J0ZWQKJiM0MzsjIHRvIHRoZSBydW5uZXIgc3ViLW1ha2VzLiBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQKJiM0MzsjIHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MgQ0MgaW50byB0aGUgbGliYnBmIHN1Yi1idWlsZCwgd2hpY2ggY29tcHV0ZXMKJiM0MzsjIGl0cyBvd24uICgmIzM5O2V4cG9ydCBOQU1FJiMzOTsgb24gYW4gdW5kZWZpbmVkCiYjNDM7IyB2YXJpYWJsZSBjcmVhdGVzIGFuIGVtcHR5IG9uZSwgc28gdGhlc2Ugc3RheSBiZWxvdyB0aGUgZGVmaW5pdGlvbnMuKQomIzQzO2V4cG9ydCBMTFZNX0xETElCUyBMTFZNX0xERkxBR1MgVEVTVF9LTU9EUwomIzQzO2V4cG9ydCBJTkhFUklURURfQ0ZMQUdTIElOSEVSSVRFRF9MREZMQUdTCiYjNDM7CiYjNDM7UlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0mIzM5OyQoQ0MpJiMzOTsJXAomIzQzOwkgICAgICAgQ0xBTkc9JiMzOTskKENMQU5HKSYjMzk7CiYjNDM7CiYjNDM7IyBFdmVyeXRoaW5nIGEgcnVubmVyIGluc3RhbmNlIHJlZmVyZW5jZXMgYnV0IGRvZXMgbm90IGtub3cgaG93IHRvIGJ1aWxkLgomIzQzO1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKQkJXAomIzQzOwkJICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUykJCQlcCiYjNDM7CQkgICQoT1VUUFVUKS92ZXJpc3RhdAkJCQkJXAomIzQzOwkJICAkKFZFUklGWV9TSUdfSERSKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKQlcCiYjNDM7CQkgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCQlcCiYjNDM7CQkgIHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaAkJCVwKJiM0MzsJCSAgJChSVU5ORVJfT0JKUykJCQkJCVwKJiM0MzsJCSAgJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCVwKJiM0MzsJCSAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlCQlcCiYjNDM7CQkgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUykKJiM0MzsKJiM0MzsjIFRoZSBtYWluIE1ha2VmaWxlIGNhbm5vdCB0ZWxsIHdoZXRoZXIgJChPVVRQVVQpL3Rlc3RfcHJvZ3MgaXMgc3RhbGUgLQomIzQzOyMgb25seSB0aGUgcnVubmVyIHN1Yi1tYWtlIGtub3dzIGl0cyBmdWxsIGRlcGVuZGVuY3kgZ3JhcGguIEZPUkNFIG1ha2VzCiYjNDM7IyB0aGUgZGVsZWdhdGluZyBydWxlcyBiZWxvdyBhbHdheXMgcnVuOyB0aGVpciBkZXBlbmRlbnRzIHN0aWxsIHJlYnVpbGQKJiM0MzsjIG9uIG10aW1lIG9ubHkuCiYjNDM7Rk9SQ0U6CiYjNDM7CiYjNDM7IyBUaGUgZGVmYXVsdCBmbGF2b3ImIzM5O3MgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBhcmUgY29uc3VtZWQgaGVyZSBhcwomIzQzOyMgd2VsbCBhcyBpbnNpZGUgdGhlIHJ1bm5lciBzdWItbWFrZXM6IGJlbmNoLCB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQKJiM0MzsjIHRlc3RfY3BwIGRlcGVuZCBvbiBpbmRpdmlkdWFsIHNrZWxldG9ucywgYW5kIGxpYi5tayYjMzk7cwomIzQzOyMgaW5zdGFsbCBydWxlIGNvcGllcyB0aGUgQlBGIG9iamVjdHMuIEluc3RhbnRpYXRlIHRoZSBzaGFyZWQgcnVsZXMKJiM0MzsjIChNYWtlZmlsZS5za2VsKSBmb3IgdGhlIGRlZmF1bHQgZmxhdm9yLCBzbyB0aG9zZSBjb25zdW1lcnMgZGVwZW5kIG9uCiYjNDM7IyBleGFjdGx5IHRoZSBmaWxlcyB0aGV5IHVzZTsgdGhlIHVuZmxhdm9yZWQgcnVubmVycyYjMzk7IGRlbGVnYXRpb24gcnVsZXMKJiM0MzsjIGJlbG93IGxpc3QgdGhlIHdob2xlIHNldCBhcyBwcmVyZXF1aXNpdGVzLCBzbyB0aG9zZSBzdWItbWFrZXMgZmluZCB0aGUKJiM0MzsjIGZpbGVzIHRoaXMgTWFrZWZpbGUgb3ducyB1cCB0byBkYXRlLgomIzQzO1JESVIgOj0gJChPVVRQVVQpCiYjNDM7RkxBVk9SIDo9CiYjNDM7QklOQVJZIDo9IHRlc3RfcHJvZ3MKJiM0MztCUEZfQ0MgOj0gJChDTEFORykKJiM0MztCUEZfQ0NfTVNHIDo9IENMTkctQlBGCiYjNDM7QlBGX1NZU19JTkNMVURFUyA6PSAkKENMQU5HX1NZU19JTkNMVURFUykKJiM0MztCUEZfQ0NfRkxBR1MgOj0gLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYzCiYjNDM7QlBGX0RFRklORVMgOj0gLURFTkFCTEVfQVRPTUlDU19URVNUUwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuc2tlbAomIzQzOwomIzQzO0RFRkFVTFRfUlVOTkVSX0FSR1MgOj0gUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cwlcCiYjNDM7CUJQRl9DQz0mIzM5OyQoQlBGX0NDKSYjMzk7IEJQRl9DQ19NU0c9JChCUEZfQ0NfTVNHKQkJCVwKJiM0MzsJQlBGX1NZU19JTkNMVURFUz0mIzM5OyQoQlBGX1NZU19JTkNMVURFUykmIzM5OwkJCQlcCiYjNDM7CUJQRl9DQ19GTEFHUz0mIzM5OyQoQlBGX0NDX0ZMQUdTKSYjMzk7IEJQRl9ERUZJTkVTPSQoQlBGX0RFRklORVMpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpICQoQlBGX09CSlMpICQoQUxMX1NLRUxTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSAkKERFRkFVTFRfUlVOTkVSX0FSR1MpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFCiYjNDM7CSYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1ub19hbHUzMiBURVNUU19ESVI9cHJvZ190ZXN0cyBcCiYjNDM7CQlCUEZfQ0M9JiMzOTskKENMQU5HKSYjMzk7IEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0mIzM5OyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSYjMzk7CVwKJiM0MzsJCUJQRl9DQ19GTEFHUz0mIzM5Oy1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12MiYjMzk7CiYjNDM7CiBpZm5lcSAoJChDTEFOR19DUFVWNCksKQotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsY3B1djQpKQomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLWNwdXY0OiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9Y3B1djQgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5OwlcCiYjNDM7CQlCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djQmIzM5OwkJXAomIzQzOwkJQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUwogZW5kaWYKIAotIyBEZWZpbmUgdGVzdF9wcm9ncyBCUEYtR0NDLWZsYXZvcmVkIHRlc3QgcnVubmVyLgogaWZuZXEgKCQoQlBGX0dDQyksKQotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBHQ0NfQlBGX0JVSUxEX1JVTEUKLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpCi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGJwZl9nY2MpKQomIzQzOyMgU3lzIGluY2x1ZGVzIGNvbWUgZnJvbSB0aGUgKmhvc3QqIGdjYywgbm90ICQoQlBGX0dDQyksIGFzIHRoZSBydWxlCiYjNDM7IyB0aGlzIHJlcGxhY2VzIGhhZCBpdC4KJiM0MztHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChCUEZfR0NDKSYjMzk7IEJQRl9DQ19NU0c9R0NDLUJQRgkJCQlcCiYjNDM7CQlCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChHQ0NfU1lTX0lOQ0xVREVTKSYjMzk7CQkJCVwKJiM0MzsJCUJQRl9DQ19GTEFHUz0mIzM5Oy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJiMzOTsKIGVuZGlmCiAKLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci4KLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMKLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0KLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0KLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9Ci0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKQomIzQzOyMgdGVzdF9tYXBzIGNvbXBpbGVzIG1hcF90ZXN0cy8qLmMgYWdhaW5zdCB0aGUgZGVmYXVsdCBmbGF2b3ImIzM5O3Mgc2tlbGV0b25zCiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgJChCUEZfT0JKUykJXAomIzQzOwkJICAgICAkKEFMTF9TS0VMUykgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHMKJiM0MzsKJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChCUEZfT0JKUykKIAogIyBEZWZpbmUgdGVzdF92ZXJpZmllciB0ZXN0IHJ1bm5lci4KICMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbQogIyB0aGVtIChlLmcuLCB0ZXN0LmggaXMgdXNpbmcgY29tcGxldGVseSBwYXR0ZXJuKSwgdGhhdCBpdCYjMzk7cyB3b3J0aCBqdXN0CiAjIGV4cGxpY2l0bHkgZGVmaW5pbmcgYWxsIHRoZSBydWxlcyBleHBsaWNpdGx5LgogdmVyaWZpZXIvdGVzdHMuaDogdmVyaWZpZXIvKi5jCi0JJChzaGVsbCAoIGNkIHZlcmlmaWVyLzsgXAomIzQzOwkkKFEpKCBjZCB2ZXJpZmllci87IFwKIAkJICBlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OzsgXAogCQkgIGVjaG8gJiMzOTsjaWZkZWYgRklMTF9BUlJBWSYjMzk7OyBcCiAJCSAgbHMgKi5jIDImZ3Q7IC9kZXYvbnVsbCB8IHNlZCAtZSAmIzM5O3NAXCguKlwpQCNpbmNsdWRlIFwmIzM0O1wxXCYjMzQ7QCYjMzk7OyBcCiAJCSAgZWNobyAmIzM5OyNlbmRpZiYjMzk7IFwKLQkJKSAmZ3Q7IHZlcmlmaWVyL3Rlc3RzLmgpCiYjNDM7CQkpICZndDsgdmVyaWZpZXIvdGVzdHMuaAogJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKQogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKIAkkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEAKQEAgLTk2NywxMSAmIzQzOzU2NiwxMSBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopCiAJJChjYWxsIG1zZyxDWFgsLCRAKQogCSQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRACiAKLSMgQmVuY2htYXJrIHJ1bm5lcgomIzQzOyMgQmVuY2htYXJrIHJ1bm5lci4gRXZlcnkgYmVuY2hzL2JlbmNoXyouYyBpcyBjb21waWxlZCBhbmQgbGlua2VkIGluLgomIzQzO0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKQogJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKQogCSQoY2FsbCBtc2csQ0MsLCRAKQotCSQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJFTkNIJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OyAxJmd0OyZhbXA7MikpCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpCiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubzogJChPVVRQVVQpL3RyaWdnZXJfYmVuY2guc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFwKQEAgLTk5OSwzMyAmIzQzOzU5OCwxMSBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFwKIAkJICQoVEVTVElOR19IRUxQRVJTKSBcCiAJCSAkKFRSQUNFX0hFTFBFUlMpIFwKIAkJICQoQ0dST1VQX0hFTFBFUlMpIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfbGliYXJlbmEubyBcCiYjNDM7CQkgJChCRU5DSF9PQkpTKSBcCiAJCSAkKE9VVFBVVCkvdXNkdF8xLm8gXAotCQkgJChPVVRQVVQpL3VzZHRfMi5vIFwKLQkJICMKJiM0MzsJCSAkKE9VVFBVVCkvdXNkdF8yLm8KIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCi0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJEA7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1MSU5LJiMzOTsgJiMzOTskKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJiMzOTsgMSZndDsmYW1wOzIpKQomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKQogCiAjIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5nIGFib3V0IHNucHJpbnRmIHRydW5jYXRpbmcgc3RyaW5ncyBsaWtlOgogIwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNWM2YzE0N2QwM2M3NAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMKQEAgLTAsMCAmIzQzOzEsMTk2IEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIFNoYXJlZCB0b29sY2hhaW4sIHBhdGggYW5kIGZsYWcgZGVmaW5pdGlvbnMgZm9yIHRoZSBCUEYgc2VsZnRlc3RzCiYjNDM7IyBidWlsZCwgaW5jbHVkZWQgYnkgYm90aCBNYWtlZmlsZSBhbmQgTWFrZWZpbGUucnVubmVyLiBEZWZpbml0aW9ucwomIzQzOyMgZm9sbG93IHRoZSBvcmRlciB0aGV5IGhhZCBpbiB0aGUgTWFrZWZpbGUgYmVmb3JlIHRoZSBzcGxpdC4KJiM0MzsKJiM0MztUT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pCiYjNDM7TElCRElSIDo9ICQoVE9PTFNESVIpL2xpYgomIzQzO0JQRkRJUiA6PSAkKExJQkRJUikvYnBmCiYjNDM7VE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZQomIzQzO1RPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZQomIzQzO0FQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpCiYjNDM7aWZuZXEgKCQoTyksKQomIzQzO0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkCiYjNDM7ZWxzZQomIzQzO0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpCiYjNDM7ZW5kaWYKJiM0MztHRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmgKJiM0MztQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnCiYjNDM7CiYjNDM7aWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpCiYjNDM7ICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MztpZmRlZiBBU0FOCiYjNDM7U0FOX0NGTEFHUyAJPz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCiYjNDM7ZWxzZQomIzQzO1NBTl9DRkxBR1MJPz0KJiM0MztlbmRpZgomIzQzO1NBTl9MREZMQUdTCT89ICQoU0FOX0NGTEFHUykKJiM0MztSRUxFQVNFCQk/PQomIzQzO09QVF9GTEFHUwk/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMCkKJiM0MzsKJiM0MztMSUJFTEZfQ0ZMQUdTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMiZndDsvZGV2L251bGwpCiYjNDM7TElCRUxGX0xJQlMJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMiZndDsvZGV2L251bGwgfHwgZWNobyAtbGVsZikKJiM0MzsKJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvcgomIzQzOyMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzCiYjNDM7IyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy4KJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDEKJiM0MztQRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSkKJiM0MzsKJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhCiYjNDM7IyBTS0lQIG1hcmtlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgc28gdGhlIHJlc3Qgb2YgdGhlIGJ1aWxkIGNvbnRpbnVlcy4KJiM0MzsjICQoMSkgLSBTS0lQIHRhZyAoQlBGLCBURVNULCBCRU5DSCwgU0tFTCwgTElOSywgLi4uKQomIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldAomIzQzOyMgJCgzKSAtIG9wdGlvbmFsIG5vdGUgYXBwZW5kZWQgdG8gdGhlIFNLSVAgbWVzc2FnZQomIzQzO3NraXBfb25fZmFpbCA9ICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7ICQoUk0pICRAICQoMik7IFwKJiM0MzsJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxJmd0OyZhbXA7MjsgfSkKJiM0MzsKJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgcHJlZml4OiB3aGVuIGEgcHJlcmVxdWlzaXRlIG9iamVjdCBpcyBtaXNzaW5nCiYjNDM7IyAoaXRzIGNvbXBpbGUgZmFpbGVkIGFuZCB3YXMgc2tpcHBlZCksIHJlbW92ZSB0aGUgdGFyZ2V0IGFuZCAkKDMpLAomIzQzOyMgZW1pdCBhIFNLSVAgbWFya2VyIGFuZCByZXBvcnQgc3VjY2VzcyB3aXRob3V0IHJ1bm5pbmcgdGhlIHJlc3Qgb2YKJiM0MzsjIHRoZSByZWNpcGUuCiYjNDM7IyAkKDEpIC0gU0tJUCB0YWcKJiM0MzsjICQoMikgLSBpbnB1dCBmaWxlcyB0byBjaGVjawomIzQzOyMgJCgzKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldAomIzQzO3NraXBfaWZfbWlzc2luZyA9ICQoaWYgJChQRVJNSVNTSVZFKSxmb3IgZiBpbiAkKDIpOyBkbyBbIC1mICQkZiBdIHx8IHsgXAomIzQzOwkkKFJNKSAkQCAkKDMpOyBcCiYjNDM7CXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC0kKDEpJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OyAxJmd0OyZhbXA7MjsgZXhpdCAwOyB9OyBkb25lOykKJiM0MzsKJiM0MztpZmVxICgkKHNyY3RyZWUpLCkKJiM0MztzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKQomIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQomIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQomIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQomIzQzO2VuZGlmCiYjNDM7CiYjNDM7Q09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMQkJCQlcCiYjNDM7CSAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgkJCQlcCiYjNDM7CSAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZQkJCQkJXAomIzQzOwkgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKQkJCVwKJiM0MzsJICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpCQlcCiYjNDM7CSAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKQlcCiYjNDM7CSAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZQomIzQzO0xETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkCiYjNDM7CiYjNDM7UENBUF9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMiZndDsvZGV2L251bGwgJmFtcDsmYW1wOyBlY2hvICYjMzQ7LURUUkFGRklDX01PTklUT1I9MSYjMzQ7KQomIzQzO1BDQVBfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMiZndDsvZGV2L251bGwpCiYjNDM7TERMSUJTICYjNDM7PSAkKFBDQVBfTElCUykKJiM0MzsKJiM0MztpZm5lcSAoJChMTFZNKSwpCiYjNDM7IyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nCiYjNDM7Q0xBTkdfV0FSTl9DRkxBR1MgOj0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50CiYjNDM7ZW5kaWYKJiM0MzsKJiM0MzsjIEJlZm9yZSB0aGUgc3BsaXQgdGhlc2UgZGVmaW5pdGlvbnMgc2F0IGFib3ZlIHRoZSAuLi9saWIubWsgaW5jbHVkZToKJiM0MzsjIHRoZXkgYXBwZW5kZWQgdG8gdGhlIGZsYWdzIGluaGVyaXRlZCBmcm9tIHRoZSBlbnZpcm9ubWVudCwgYW5kCiYjNDM7IyBsaWIubWsmIzM5O3MgYWRkaXRpb25zIChVU0VSQ0ZMQUdTL1VTRVJMREZMQUdTIGFtb25nIHRoZW0pIGNhbWUgbGFzdC4KJiM0MzsjIFRoaXMgZmlsZSBpcyBwYXJzZWQgYWZ0ZXIgbGliLm1rIGF0IHRoZSB0b3AgbGV2ZWwgYW5kIGluIGl0cyBwbGFjZQomIzQzOyMgaW4gdGhlIHJ1bm5lciBzdWItbWFrZXMsIHNvIHRoZSBzYW1lIG9yZGVyIGlzIHJlYnVpbHQgaGVyZS4gVGhlCiYjNDM7IyBpbmNsdWRlciBzbmFwc2hvdHMgdGhlIGluaGVyaXRlZCBmbGFncyBpbiBJTkhFUklURURfQ0ZMQUdTIGFuZAomIzQzOyMgSU5IRVJJVEVEX0xERkxBR1MgYmVmb3JlIGxpYi5tayBydW5zOyB3aGF0ZXZlciBsaWIubWsgYXBwZW5kZWQgc2luY2UKJiM0MzsjIGlzIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50IHZhbHVlLgomIzQzO2xpYl9ta19hZGRlZCA9ICQod29yZGxpc3QgJCh3b3JkcyB4ICQoSU5IRVJJVEVEXyQoMSkpKSwkKHdvcmRzICQoJCgxKSkpLCQoJCgxKSkpCiYjNDM7TElCX01LX0NGTEFHUyA6PSAkKGNhbGwgbGliX21rX2FkZGVkLENGTEFHUykKJiM0MztMSUJfTUtfTERGTEFHUyA6PSAkKGNhbGwgbGliX21rX2FkZGVkLExERkxBR1MpCiYjNDM7Q0ZMQUdTID0gJChJTkhFUklURURfQ0ZMQUdTKSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpCQlcCiYjNDM7CSAkKENMQU5HX1dBUk5fQ0ZMQUdTKSAkKExJQl9NS19DRkxBR1MpCiYjNDM7TERGTEFHUyA9ICQoSU5IRVJJVEVEX0xERkxBR1MpICQoU0FOX0xERkxBR1MpICQoTElCX01LX0xERkxBR1MpCiYjNDM7CiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KS4KJiM0MzsjIFRoaXMgcnVucyBhZnRlciAuLi9saWIubWsgaGFzIHJlc29sdmVkIENMQU5HIGZyb20gTExWTT0mbHQ7c3VmZml4IG9yIHBhdGgmZ3Q7LAomIzQzOyMgc28gaXQgcHJvYmVzIHRoZSBjb21waWxlciB0aGF0IGJ1aWxkcyB0aGUgQlBGIG9iamVjdHMuCiYjNDM7Q0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICYjMzk7aW50IHg7JiMzOTsgfCBcCiYjNDM7CSQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFwKJiM0MzsJLW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXAomIzQzOwkteCBjIC1jIC0gLW8gL2Rldi9udWxsIDImZ3Q7L2Rldi9udWxsICZhbXA7JmFtcDsgZWNobyAxKQomIzQzOwomIzQzO1NDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29scwomIzQzO0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZAomIzQzO0lOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGUKJiM0MztCUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQomIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLCkKJiM0MztIT1NUX0JVSUxEX0RJUgkJOj0gJChCVUlMRF9ESVIpL2hvc3QKJiM0MztIT1NUX1NDUkFUQ0hfRElSCTo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzCiYjNDM7SE9TVF9JTkNMVURFX0RJUgk6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL2luY2x1ZGUKJiM0MztlbHNlCiYjNDM7SE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKQomIzQzO0hPU1RfU0NSQVRDSF9ESVIJOj0gJChTQ1JBVENIX0RJUikKJiM0MztIT1NUX0lOQ0xVREVfRElSCTo9ICQoSU5DTFVERV9ESVIpCiYjNDM7ZW5kaWYKJiM0MztSRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0ZmlkcwomIzQzOwomIzQzO0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbAomIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLCkKJiM0MztDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbAomIzQzO1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpCiYjNDM7VVNFX0JPT1RTVFJBUCA6PSAmIzM0OyYjMzQ7CiYjNDM7ZWxzZQomIzQzO1RSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTCkKJiM0MztVU0VfQk9PVFNUUkFQIDo9ICYjMzQ7Ym9vdHN0cmFwLyYjMzQ7CiYjNDM7ZW5kaWYKJiM0MzsKJiM0MztCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKQomIzQzOwomIzQzOyMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieQomIzQzOyMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyAmIzM0O21pc3NpbmcmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcywKJiM0MzsjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy4KJiM0MzsjCiYjNDM7IyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlCiYjNDM7IyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLgomIzQzO2RlZmluZSBnZXRfc3lzX2luY2x1ZGVzCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSAmbHQ7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIFwKJiM0MzsJfCBzZWQgLW4gJiMzOTsvJmx0Oy4uLiZndDsgc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcKC8uKlwpfC1pZGlyYWZ0ZXIgXDF8cCB9JiMzOTspIFwKJiM0MzskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fcmlzY3ZfeGxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRF9fcmlzY3ZfeGxlbj0lZCAtRF9fQklUU19QRVJfTE9ORz0lZCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFwKJiM0MzskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EX19CSVRTX1BFUl9MT05HPSVkJiMzNDssICQkMyl9JiMzOTspIFwKJiM0MzskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAtRSAmIzM5O01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EJXM9JXMgJiMzNDssICQkMiwgJCQzKX0mIzM5OykKJiM0MztlbmRlZgomIzQzOwomIzQzOyMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLgomIzQzO0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgXAomIzQzOwkJCWdyZXAgJiMzOTtkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18mIzM5OykKJiM0MztNRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbikKJiM0MzsKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7Q0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MzsjIEltbWVkaWF0ZSBvbiBwdXJwb3NlOiBleHBhbmRpbmcgZ2V0X3N5c19pbmNsdWRlcyBmb3JrcyBzZXZlcmFsIHNoZWxscy4KJiM0MztDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpCiYjNDM7QlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKQlcCiYjNDM7CSAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKQkJCVwKJiM0MzsJICAgICAtSSQoVE9PTFNJTkNESVIpIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUJCVwKJiM0MzsJICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpCQkJXAomIzQzOwkgICAgIC1zdGQ9Z251MTEJCSAJCQkJCVwKJiM0MzsJICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyAJCQkJCVwKJiM0MzsJICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZwkJCQkJXAomIzQzOwkgICAgIC1mbXMtZXh0ZW5zaW9ucwkJCQkJCVwKJiM0MzsJICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlcwkJCVwKJiM0MzsJICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlcwkJCQkJXAomIzQzOwkgICAgICMKJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZQomIzQzOwomIzQzO1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKJiM0MztWRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXIKJiM0MztQUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtCiYjNDM7CiYjNDM7TElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmgKJiM0MzsKJiM0MztpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKQomIzQzO0xJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaAomIzQzO0NGTEFHUyAmIzQzOz0gLURIQVNfQlBGX0FSRU5BX0FTQU4KJiM0MztlbmRpZgomIzQzOwomIzQzO1JVTk5FUl9PQkpTLXRlc3RfcHJvZ3MgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLywJCQlcCiYjNDM7CXRlc3RfcHJvZ3MubyBjZ3JvdXBfaGVscGVycy5vIHRyYWNlX2hlbHBlcnMubwkJCVwKJiM0MzsJbmV0d29ya19oZWxwZXJzLm8gdGVzdGluZ19oZWxwZXJzLm8gYnRmX2hlbHBlcnMubwkJXAomIzQzOwljYXBfaGVscGVycy5vIHVucHJpdl9oZWxwZXJzLm8gc3lzY3RsX2hlbHBlcnMubwkJCVwKJiM0MzsJbmV0bGlua19oZWxwZXJzLm8gaml0X2Rpc2FzbV9oZWxwZXJzLm8gaW9faGVscGVycy5vCQlcCiYjNDM7CXRlc3RfbG9hZGVyLm8geHNrLm8gZGlzYXNtLm8gZGlzYXNtX2hlbHBlcnMubwkJCVwKJiM0MzsJanNvbl93cml0ZXIubyBicGZ0b29sX2hlbHBlcnMubyB1c2R0XzEubyB1c2R0XzIubykKJiM0MztSVU5ORVJfT0JKUy10ZXN0X21hcHMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLywJCQlcCiYjNDM7CXRlc3RfbWFwcy5vIHRlc3RpbmdfaGVscGVycy5vKQomIzQzOwomIzQzO1JVTk5FUl9MSUJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoT1VUUFVUKS9maW5kX2JpdC5vCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi43MzYxZmY3ZGUzMzBjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lcgpAQCAtMCwwICYjNDM7MSwxOTkgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7IwomIzQzOyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzCiYjNDM7IyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLgomIzQzOyMKJiM0MzsjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2UgLSB0aGUgZmxhdm9yZWQgb25lcyB3aXRoIHRoZWlyCiYjNDM7IyBvd24gb3V0cHV0IGRpcmVjdG9yeSwgdGhlIHVuZmxhdm9yZWQgb25lcyBzaGFyaW5nICQoT1VUUFVUKSB3aXRoIHRoZQomIzQzOyMgbWFpbiBNYWtlZmlsZSAtIHNvIGV2ZXJ5dGhpbmcgaGVyZSBpcyB3cml0dGVuIGluIHBsYWluIG1ha2U6IG5vCiYjNDM7IyBkZWZpbmUvZXZhbCBsYXllciwgbm8gcGVyLWZsYXZvciBndWFyZHMuIFRoaXMgZmlsZSBpcyBhbHdheXMKJiM0MzsjIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkCiYjNDM7IyBwcmVyZXF1aXNpdGVzIChsaWJicGYsIGJwZnRvb2wsCiYjNDM7IyByZXNvbHZlX2J0Zmlkcywgdm1saW51eC5oLCB2ZXJpc3RhdCwgdXNlcnNwYWNlIG9iamVjdHMsIHNpZ25pbmcga2V5LAomIzQzOyMgbGliYXJlbmEgc2tlbGV0b25zLCBleHRyYSBiaW5hcmllcyBhbmQgLSBmb3IgdGhlCiYjNDM7IyB1bmZsYXZvcmVkIGluc3RhbmNlcyAtIHRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBCUEYgb2JqZWN0cyBhbmQKJiM0MzsjIHNrZWxldG9ucykgYXJlIGJ1aWx0IGJ5IHRoZSBtYWluIE1ha2VmaWxlICpiZWZvcmUqIHRoaXMgb25lIHJ1bnMgYW5kCiYjNDM7IyBhcmUgcmVmZXJlbmNlZCBiZWxvdyBhcyBwbGFpbiBmaWxlcy4KJiM0MzsjCiYjNDM7IyBQYXJhbWV0ZXJzLCBwYXNzZWQgb24gdGhlIHN1Yi1tYWtlIGNvbW1hbmQgbGluZToKJiM0MzsjICAgT1VUUFVUICAgICAgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5LCBhcyBsaWIubWsgcmVzb2x2ZWQgaXQKJiM0MzsjICAgUlVOTkVSICAgICAgYmFzZSBiaW5hcnkgbmFtZTogdGVzdF9wcm9ncyB8IHRlc3RfbWFwcwomIzQzOyMgICBGTEFWT1IgICAgICBmbGF2b3Igc3VmZml4OiBlbXB0eSB8IG5vX2FsdTMyIHwgY3B1djQgfCBicGZfZ2NjCiYjNDM7IyAgIFRFU1RTX0RJUiAgIGRpcmVjdG9yeSB3aXRoIHRoZSB0ZXN0IHNvdXJjZXM6IHByb2dfdGVzdHMgfCBtYXBfdGVzdHMKJiM0MzsjICAgQlBGX0NDICAgICAgY29tcGlsZXIgZm9yIHByb2dzLyouYyBCUEYgb2JqZWN0cyAoJChDTEFORykgb3IKJiM0MzsjICAgICAgICAgICAgICAgJChCUEZfR0NDKSk7IGVtcHR5IGZvciB0ZXN0X21hcHMsIHdoaWNoIGJ1aWxkcyBub25lCiYjNDM7IyAgIEJQRl9DQ19NU0cgIGJ1aWxkLWxvZyB0YWc6IENMTkctQlBGIHwgR0NDLUJQRgomIzQzOyMgICBCUEZfQ0NfRkxBR1MKJiM0MzsjICAgICAgICAgICAgICAgY29tcGlsZXItc3BlY2lmaWMgZmxhZ3MgKC1PMiwgdGFyZ2V0Ly1tY3B1IG9yIGdjYyBrbm9icykKJiM0MzsjICAgQlBGX1NZU19JTkNMVURFUwomIzQzOyMgICAgICAgICAgICAgICBzeXN0ZW0gaW5jbHVkZSBmbGFncyBtYXRjaGluZyBCUEZfQ0MKJiM0MzsjICAgQlBGX0RFRklORVMgZXh0cmEgZGVmaW5lcyBmb3IgQlBGIG9iamVjdHMgKGUuZy4gLURFTkFCTEVfQVRPTUlDU19URVNUUykKJiM0MzsjICAgQ0MsIENMQU5HICAgQyBjb21waWxlciBhbmQgY2xhbmcgKGFzIHJlc29sdmVkIGJ5IGxpYi5tayBpbiB0aGUgbWFpbgomIzQzOyMgICAgICAgICAgICAgICBNYWtlZmlsZTsgY2xhbmcgYWxzbyBkcml2ZXMgdGhlIGZlYXR1cmUgcHJvYmVzIGluCiYjNDM7IyAgICAgICAgICAgICAgIE1ha2VmaWxlLmJ1aWxkdmFycykKJiM0MzsjCiYjNDM7IyBGcm9tIHRoZSBlbnZpcm9ubWVudCwgZXhwb3J0ZWQgYnkgdGhlIG1haW4gTWFrZWZpbGU6CiYjNDM7IyAgIExMVk1fTERMSUJTL0xMVk1fTERGTEFHUwomIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlCiYjNDM7IyAgIFRFU1RfS01PRFMgIHRoZSBrZXJuZWwgdGVzdCBtb2R1bGVzIHRvIGNvcHkgaW50byBhIGZsYXZvciBkaXJlY3RvcnkKJiM0MzsjICAgSU5IRVJJVEVEX0NGTEFHUy9JTkhFUklURURfTERGTEFHUwomIzQzOyMgICAgICAgICAgICAgICB0aGUgZmxhZ3MgdGhlIG1haW4gTWFrZWZpbGUgaW5oZXJpdGVkIGZyb20gaXRzIG93bgomIzQzOyMgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAoc2VlIE1ha2VmaWxlLmJ1aWxkdmFycykKJiM0MzsKJiM0MztpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGUKJiM0MztpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaAomIzQzO2luY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlCiYjNDM7CiYjNDM7IyBTYW1lIG1lc3NhZ2UgaGVscGVycyBhcyAuLi9saWIubWssIHdoaWNoIG9ubHkgdGhlIHRvcCBsZXZlbCBpbmNsdWRlcy4KJiM0MztpZmVxICgkKFYpLDEpCiYjNDM7USA9CiYjNDM7bXNnID0KJiM0MztlbHNlCiYjNDM7USA9IEAKJiM0Mzttc2cgPSBAcHJpbnRmICYjMzk7ICAlLThzJXMgJXMlc1xuJiMzOTsgJiMzNDskKDEpJiMzNDsgJiMzNDskKGlmICQoMiksIFskKDIpXSkmIzM0OyAmIzM0OyQobm90ZGlyICQoMykpJiMzNDsgJiMzNDskKGlmICQoNCksICQoNCkpJiMzNDs7CiYjNDM7TUFLRUZMQUdTICYjNDM7PSAtLW5vLXByaW50LWRpcmVjdG9yeQomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBUaGUgdG9wIE1ha2VmaWxlIGhhbmRzIGRvd24gdGhlIGZsYWdzIGl0IGluaGVyaXRlZCBmcm9tIHRoZQomIzQzOyMgZW52aXJvbm1lbnQgaW4gSU5IRVJJVEVEX0NGTEFHUy9JTkhFUklURURfTERGTEFHUzsgc3RhcnQgZnJvbSB0aG9zZQomIzQzOyMgcmF0aGVyIHRoYW4gZnJvbSBpdHMgYXNzZW1ibGVkIENGTEFHUy9MREZMQUdTLCB3aGljaCBtYWtlIGV4cG9ydHMKJiM0MzsjIGFsb25nc2lkZSB3aGVuZXZlciB0aGV5IGNhbWUgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiYjNDM7Q0ZMQUdTIDo9ICQoSU5IRVJJVEVEX0NGTEFHUykKJiM0MztMREZMQUdTIDo9ICQoSU5IRVJJVEVEX0xERkxBR1MpCiYjNDM7CiYjNDM7aW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnMKJiM0MzsKJiM0MzsjIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBDRkxBR1MvTERGTEFHUyBhZGRpdGlvbnMgaW4gLi4vbGliLm1rLCBpbiBpdHMKJiM0MzsjIG9yZGVyICh0aGUgc2VsZnRlc3RzIGluY2x1ZGUgcGF0aCBpcyBzcGVsbGVkIGZyb20gc3JjdHJlZSBoZXJlOyBsaWIubWsKJiM0MzsjIHNwZWxscyBpdCBmcm9tIGl0cyBvd24gZGlyZWN0b3J5KS4KJiM0MztpZm5lcSAoJChMTFZNKSwpCiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlcgomIzQzO0NGTEFHUyAmIzQzOz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kCiYjNDM7ZW5kaWYKJiM0MztDRkxBR1MgJiM0Mzs9IC1EX0dOVV9TT1VSQ0U9CiYjNDM7Q0ZMQUdTICYjNDM7PSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMKJiM0MztDRkxBR1MgJiM0Mzs9ICQoVVNFUkNGTEFHUykKJiM0MztMREZMQUdTICYjNDM7PSAkKFVTRVJMREZMQUdTKQomIzQzOwomIzQzO0JJTkFSWSA6PSAkKFJVTk5FUikkKGlmICQoRkxBVk9SKSwtJChGTEFWT1IpKQomIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKQomIzQzOwomIzQzO2FsbDogJChPVVRQVVQpLyQoQklOQVJZKQomIzQzOy5QSE9OWTogYWxsCiYjNDM7CiYjNDM7IyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3IKJiM0MzsuREVMRVRFX09OX0VSUk9SOgomIzQzOwomIzQzOyMgTm8gYnVpbHQtaW4gcnVsZXM6IGV2ZXJ5IGZpbGUgYnVpbHQgaGVyZSBoYXMgYW4gZXhwbGljaXQgcnVsZSwgYW5kIHRoZQomIzQzOyMgb2JqZWN0cyB0aGF0IGNvbWUgZnJvbSB0aGUgbWFpbiBNYWtlZmlsZSBoYXZlIHRvIGJlIGFuIGVycm9yIHdoZW4KJiM0MzsjIG1pc3NpbmcgcmF0aGVyIHRoYW4gYSBzaWxlbnQgcmVidWlsZCBieSB0aGUgYnVpbHQtaW4gJS5vIHJlY2lwZXMuCiYjNDM7TUFLRUZMQUdTICYjNDM7PSAtcgomIzQzOwomIzQzOyMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHkKJiM0MzsjIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnM7IHJ1bm5lcnMgdGhhdCB1c2Ugc3Ryb25nIGNyb3NzLW9iamVjdAomIzQzOyMgcmVmZXJlbmNlcyAoZS5nLiB0ZXN0X21hcHMpIGtlZXAgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gcGVybWlzc2l2ZS4KJiM0MztQRVJNSVNTSVZFX1RFU1RTIDo9ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncywkKFJVTk5FUikpLCQoUEVSTUlTU0lWRSkpCiYjNDM7CiYjNDM7JChSRElSKToKJiM0MzsJJChjYWxsIG1zZyxNS0RJUiwsJEApCiYjNDM7CSQoUSlta2RpciAtcCAkQAomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBQZXItcnVubmVyIHNvdXJjZXMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X3Byb2dzKQomIzQzO0dFTkVSQVRFRF9IRFJTIDo9ICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCiYjNDM7RVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZAkJCQlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCQkJXAomIzQzOwkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eQkJCQlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlCQkJCVwKJiM0MzsJICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkJCQkJXAomIzQzOwkgICAgICAgJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKQkJXAomIzQzOwkgICAgICAgaW1hX3NldHVwLnNoIAkJCQkJXAomIzQzOwkgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKQkJCQlcCiYjNDM7CSAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpCQlcCiYjNDM7CSAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MztURVNUX1NSQ1MgIDo9ICQobm90ZGlyICQod2lsZGNhcmQgJChURVNUU19ESVIpLyouYykpCiYjNDM7VEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSkKJiM0MztURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBCUEYgb2JqZWN0cyBhbmQgc2tlbGV0b25zIC0gcnVsZXMgc2hhcmVkIHdpdGggdGhlIG1haW4gTWFrZWZpbGUKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuc2tlbAomIzQzOwomIzQzOyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdAomIzQzOyMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUubwomIzQzOyMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlcwomIzQzOyMgaW4gJChSRElSKSwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgomIzQzO3ZwYXRoICUuc2tlbC5oICQoUkRJUikKJiM0Mzt2cGF0aCAlLmxza2VsLmggJChSRElSKQomIzQzO3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUikKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYubwomIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMQomIzQzOwomIzQzOyMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMKJiM0MzsjIE5vdGU6IHdlIGNkIGludG8gb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdCBpcyBmb3VuZAomIzQzOyMgVGhlICUudGVzdC5kIGRlcGVuZGVuY3kgZmlsZXMgYXJlIGEgc2lkZSBlZmZlY3Qgb2YgdGhlIC1NTUQgYmVsb3c7IHRoZQomIzQzOyMgc2VwYXJhdGUgbm8tcmVjaXBlIHJ1bGUgZm9yIHRoZW0gb3JkZXJzIHRoZSBmaXJzdCBjb21waWxhdGlvbiBhZnRlcgomIzQzOyMgc2tlbGV0b24gZ2VuZXJhdGlvbiBhbmQgcmUtb3JkZXJzIHRlc3Qgb2JqZWN0IGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycwomIzQzOyMgY2hhbmdlLgomIzQzOyQoVEVTVF9PQkpTKTogJChSRElSKS8lLnRlc3QubzogJChURVNUU19ESVIpLyUuYyB8ICQoUkRJUikvJS50ZXN0LmQKJiM0MzsJJChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkoY2QgJChARCkgJmFtcDsmYW1wOyAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kJmx0OyAkKExETElCUykgLW8gJChARikpIFwKJiM0MzsJCSQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKQomIzQzOwkkKGlmICQoVEVTVF9ORUVEU19CVEZJRFMpLAkJCQkJXAomIzQzOwkJJChRKWlmIFsgLWYgJEAgXTsgdGhlbgkJCQkJXAomIzQzOwkJJChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzQ7QlRGSURTJiMzNDsgJiMzNDsgWyQoQklOQVJZKV0mIzM0OyAmIzM0OyQobm90ZGlyICRAKSYjMzQ7KTsgXAomIzQzOwkJJChSRVNPTFZFX0JURklEUykgLS1idGYgJChSRElSKS9idGZfZGF0YS5icGYubyAkQDsJXAomIzQzOwkJJChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDsJCVwKJiM0MzsJCWZpKQomIzQzOwomIzQzOyQoVEVTVF9ERVBTKTogJChSRElSKS8lLnRlc3QuZDogJChURVNUU19ESVIpLyUuYyAkKEdFTkVSQVRFRF9IRFJTKSAkKEJQRk9CSikgXAomIzQzOwkgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpCiYjNDM7CiYjNDM7aW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSkKJiM0MzsKJiM0MzsjIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZQomIzQzOyMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKQomIzQzOy5QSE9OWTogZXh0cmFzCiYjNDM7ZXh0cmFzOiAkKGlmICQoUEVSTUlTU0lWRSksJCh3aWxkY2FyZCAkKEVYVFJBX0ZJTEVTKSksJChFWFRSQV9GSUxFUykpIHwgJChSRElSKQomIzQzO2lmbmVxICgkKEZMQVZPUik6JChyZWFscGF0aCAkKE9VVFBVVCkpLDokKENVUkRJUikpCiYjNDM7aWZuZXEgKCQoc3RyaXAgJChFWFRSQV9GSUxFUykpLCkKJiM0MzsJJChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChFWFRSQV9GSUxFUykpCiYjNDM7CSQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS8KJiM0MztlbmRpZgomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlcwomIzQzOyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdAomIzQzOyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk6IHRoZSBvYmplY3RzIGV4aXN0aW5nIGF0CiYjNDM7IyBwYXJzZSB0aW1lIGFyZSBub3JtYWwgcHJlcmVxdWlzaXRlcyAtIHNvIGVkaXRpbmcgYSB0ZXN0IHNvdXJjZSBzdGlsbAomIzQzOyMgcmVsaW5rcyB0aGUgcnVubmVyIC0gd2hpbGUgdGhlIGZ1bGwgc2V0IHN0YXlzIG9yZGVyLW9ubHkgdG8gZHJpdmUgdGhlCiYjNDM7IyBidWlsZCBhdHRlbXB0cywgYW5kIHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnMKJiM0MzsjIGF0IGxpbmsgdGltZS4KJiM0MzsjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgcnVubmVyIG9iamVjdHMsCiYjNDM7IyBsaWJicGYsIGxpYiBvYmplY3RzKS4KJiM0MzskKE9VVFBVVCkvJChCSU5BUlkpOiAkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJCh3aWxkY2FyZCAkKFRFU1RfT0JKUykpLCQoVEVTVF9PQkpTKSkgXAomIzQzOwkJICAgICAkKFJVTk5FUl9PQkpTLSQoUlVOTkVSKSkgJChCUEZPQkopCQkJXAomIzQzOwkJICAgICAkKFJVTk5FUl9MSUJfT0JKUy0kKFJVTk5FUikpCQkJXAomIzQzOwkJICAgICAkKFRSVU5ORVJfQlBGVE9PTCkgJChPVVRQVVQpL3ZlcmlzdGF0CQlcCiYjNDM7CQkgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpCQkJCVwKJiM0MzsJCSAgICAgJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoVEVTVF9PQkpTKSkKJiM0MzsJJChjYWxsIG1zZyxCSU5BUlksLCRAKQomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpCQkJCQkJXAomIzQzOwkJJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKQlcCiYjNDM7CQkJJChmaWx0ZXItb3V0ICQoVEVTVF9PQkpTKSwkKGZpbHRlciAlLmEgJS5vLCReKSksXAomIzQzOwkJCSQoZmlsdGVyICUuYSAlLm8sJF4pKQkJCQlcCiYjNDM7CQkkKExETElCUykgJChMTFZNX0xETElCUykgJChMREZMQUdTKSAkKExMVk1fTERGTEFHUykgLW8gJEAKJiM0MzsJJChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFwKJiM0MzsJCSAgICQoUkRJUikvYnBmdG9vbApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWwgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuc2tlbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hODcxZWE3NjgxN2RmCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWwKQEAgLTAsMCAmIzQzOzEsMTQxIEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMgUnVsZXMgdG8gYnVpbGQgdGhlIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgb2Ygb25lIGJ1aWxkIGZsYXZvciwKJiM0MzsjIHNoYXJlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSAod2hpY2ggaW5zdGFudGlhdGVzIHRoZW0gZm9yIHRoZSBkZWZhdWx0CiYjNDM7IyBmbGF2b3IsIHNvIHRoYXQgYmVuY2gsIHhza3hjZWl2ZXIsIHhkcF8qIGFuZCB0ZXN0X2NwcCBjYW4gZGVwZW5kIG9uCiYjNDM7IyB0aGUgZXhhY3Qgc2tlbGV0b25zIHRoZXkgY29uc3VtZSkgYW5kIGJ5IE1ha2VmaWxlLnJ1bm5lciAod2hpY2gKJiM0MzsjIGluc3RhbnRpYXRlcyB0aGVtIGZvciBlYWNoIHJ1bm5lciBpbnN0YW5jZSB0aGF0IGJ1aWxkcyBCUEYgb2JqZWN0czoKJiM0MzsjIHRoZSBmbGF2b3JlZCBvbmVzIGluIHRoZWlyIG93biBvdXRwdXQgZGlyZWN0b3JpZXMsIHRoZSB1bmZsYXZvcmVkCiYjNDM7IyB0ZXN0X3Byb2dzIG9uZSBpbiAkKE9VVFBVVCksIHdoZXJlIGl0IGZpbmRzIHRoZW0gYWxyZWFkeSBidWlsdCkuCiYjNDM7IwomIzQzOyMgUGFyYW1ldGVycyAodmFyaWFibGVzIGRlZmluZWQgYnkgdGhlIGluY2x1ZGVyKToKJiM0MzsjICAgUkRJUiAgICAgICAgICAgICBvdXRwdXQgZGlyZWN0b3J5IG9mIHRoaXMgZmxhdm9yCiYjNDM7IyAgIEZMQVZPUiAgICAgICAgICAgZmxhdm9yIG5hbWUsIGVtcHR5IGZvciB0aGUgZGVmYXVsdAomIzQzOyMgICBCSU5BUlkgICAgICAgICAgIHJ1bm5lciBiaW5hcnkgbmFtZSwgZm9yIGJ1aWxkLWxvZyBtZXNzYWdlcwomIzQzOyMgICBCUEZfQ0MgICAgICAgICAgIEJQRiBjb21waWxlcgomIzQzOyMgICBCUEZfQ0NfTVNHICAgICAgIGJ1aWxkLWxvZyB0YWcgKENMTkctQlBGL0dDQy1CUEYpCiYjNDM7IyAgIEJQRl9DQ19GTEFHUyAgICAgcGVyLWZsYXZvciBjb21waWxlciBmbGFncwomIzQzOyMgICBCUEZfU1lTX0lOQ0xVREVTIHN5c3RlbSBpbmNsdWRlIGZsYWdzIGZvciAkKEJQRl9DQykKJiM0MzsjICAgQlBGX0RFRklORVMgICAgICBleHRyYSBkZWZpbmVzICgtREVOQUJMRV9BVE9NSUNTX1RFU1RTKQomIzQzOyMKJiM0MzsjIFRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBydWxlcyBhcmUgaW5zdGFudGlhdGVkIGlkZW50aWNhbGx5IGJ5IHRoZSBtYWluCiYjNDM7IyBNYWtlZmlsZSBhbmQgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBzdWItbWFrZTsgdGhlIG1haW4gTWFrZWZpbGUKJiM0MzsjIGxpc3RzIGV2ZXJ5IHNrZWxldG9uIGFuZCBCUEYgb2JqZWN0IGFzIGEgcHJlcmVxdWlzaXRlIG9mIHRoZSB1bmZsYXZvcmVkCiYjNDM7IyBydW5uZXJzJiMzOTsgZGVsZWdhdGlvbiBydWxlcywgc28gdGhlIGZpbGVzIGFyZSBhbHdheXMgZnJlc2ggYnkgdGhlIHRpbWUKJiM0MzsjIHRoYXQgc3ViLW1ha2UgcmUtZXZhbHVhdGVzIHRoZW0uCiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2lmbmVxICgkKEJQRl9DQyksKQomIzQzOwomIzQzO0JQRl9TUkNTIDo9ICQobm90ZGlyICQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpCiYjNDM7CiYjNDM7U0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uYwomIzQzOwomIzQzO0xJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmgJCVwKJiM0MzsJCWxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggCQkJXAomIzQzOwkJdGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oCVwKJiM0MzsJCXRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmgJCQlcCiYjNDM7CQl0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgJCQkJXAomIzQzOwkJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oCQkJCVwKJiM0MzsJCXRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgKJiM0MzsKJiM0MztMU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgCVwKJiM0MzsJY29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmMJCQlcCiYjNDM7CXRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcCiYjNDM7CXRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuYwomIzQzOwomIzQzO0xTS0VMU19TSUdORUQgOj0gZmVudHJ5X3Rlc3QuYyBmZXhpdF90ZXN0LmMgYXRvbWljcy5jCiYjNDM7CiYjNDM7IyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlCiYjNDM7TFNLRUxTX0VYVFJBIDo9IHRlc3Rfa3N5bXNfbW9kdWxlLmMgdGVzdF9rc3ltc193ZWFrLmMga2Z1bmNfY2FsbF90ZXN0LmMgXAomIzQzOwlrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKJiM0MztTS0VMX0JMQUNLTElTVCAmIzQzOz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRCkKJiM0MzsKJiM0Mzt0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vCiYjNDM7bGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYubwomIzQzO2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm8KJiM0MztsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vCiYjNDM7IyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGUKJiM0MzsjIGJ1dCB0aGF0JiMzOTtzIGNyZWF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgc2tlbC5oIGdlbmVyYXRpb24uCiYjNDM7dGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYubwomIzQzO3Rlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubwomIzQzO3Rlc3RfdXNkdC5za2VsLmgtZGVwcyA6PSB0ZXN0X3VzZHQuYnBmLm8gdGVzdF91c2R0X211bHRpc3BlYy5icGYubwomIzQzO3RyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwomIzQzO3RyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCiYjNDM7dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KJiM0Mzt0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCiYjNDM7CiYjNDM7TElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpCiYjNDM7TElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKQomIzQzOwomIzQzO1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsCQkJCVwKJiM0MzsJICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpCiYjNDM7TFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTKSAkKExTS0VMU19FWFRSQSkpCiYjNDM7TFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTX1NJR05FRCkpCiYjNDM7TElOS0VEX1NLRUxTX0ggIDo9ICQoYWRkcHJlZml4ICQoUkRJUikvLCQoTElOS0VEX1NLRUxTKSkKJiM0MztBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpCiYjNDM7CiYjNDM7SEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaCkJCVwKJiM0MzsJCQkkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSkJXAomIzQzOwkJCSQoYWRkcHJlZml4ICQoQlBGRElSKS8sCWJwZl9jb3JlX3JlYWQuaAlcCiYjNDM7CQkJICAgICAgICAgICAgICAgICAgICAgICAgYnBmX2VuZGlhbi5oCVwKJiM0MzsJCQkJCQlicGZfaGVscGVycy5oCVwKJiM0MzsJCQkgICAgICAgICAgICAgICAgICAgICAgICBicGZfdHJhY2luZy5oKQomIzQzOwomIzQzOyMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCwKJiM0MzsjIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2YKJiM0MzsjIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLgomIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgomIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgomIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgomIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7CiYjNDM7JChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaAkJCVwKJiM0MzsJICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUykJCVwKJiM0MzsJICAgICB8ICQoUkRJUikgJChCUEZPQkopCiYjNDM7CSQoY2FsbCBtc2csJChCUEZfQ0NfTVNHKSwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKEJQRl9DQykgJChCUEZfQ0ZMQUdTKSAkKEJQRl9TWVNfSU5DTFVERVMpICQoQlBGX0RFRklORVMpCVwKJiM0MzsJCSQoJCZsdDstQ0ZMQUdTKSAkKCQmbHQ7LSQoRkxBVk9SKS1DRkxBR1MpCQkJXAomIzQzOwkJJChCUEZfQ0NfRkxBR1MpIC1jICQmbHQ7IC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQlBGKQomIzQzOwomIzQzO0dFTl9TS0VMIDo9IC4vZ2VuX2JwZl9za2VsLnNoCiYjNDM7CiYjNDM7JChTS0VMUyk6ICQoUkRJUikvJS5za2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKQomIzQzOwkkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCQmbHQ7LCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKQlcCiYjNDM7CXByaW50ZiAmIzM5OyAgJS04cyVzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTsgWyQoQklOQVJZKV0mIzM5OyAmIzM5OyQobm90ZGlyICRAKSYjMzk7OyBcCiYjNDM7CUJQRlRPT0w9JChCUEZUT09MKSAkKEdFTl9TS0VMKSAtLW5hbWUgJCoJCQkJCQlcCiYjNDM7CQktLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQmbHQ7CQlcCiYjNDM7CQkkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpCiYjNDM7CiYjNDM7JChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUikKJiM0MzsJJChRKSQoY2FsbCBza2lwX2lmX21pc3NpbmcsU0tFTCwkJmx0OykJCQkJXAomIzQzOwlwcmludGYgJiMzOTsgICUtOHMlcyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXAomIzQzOwlCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqX2xza2VsIC0tbHNrZWwJCQkJXAomIzQzOwkJLS1za2VsICRAICQmbHQ7ICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCkKJiM0MzsKJiM0MzskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKQlcCiYjNDM7CQkgICAgJChHRU5fU0tFTCkgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVCkgfCAkKFJESVIpCiYjNDM7CSQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJCZsdDspCQkJCVwKJiM0MzsJcHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5OyBbJChCSU5BUlkpIChzaWduZWQpXSYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTs7IFwKJiM0MzsJQlBGVE9PTD0kKEJQRlRPT0wpIFBSSVZBVEVfS0VZPSQoUFJJVkFURV9LRVkpCQkJCVwKJiM0MzsJCVZFUklGSUNBVElPTl9DRVJUPSQoVkVSSUZJQ0FUSU9OX0NFUlQpCQkJXAomIzQzOwkJJChHRU5fU0tFTCkgLS1zaWduIC0tbmFtZSAkKl9sc2tlbAkJCVwKJiM0MzsJCS0tc2tlbCAkQCAkJmx0OyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpCiYjNDM7CiYjNDM7IyAuU0VDT05ERVhQQU5TSU9OIGhlcmUgYWxsb3dzIHRvIGNvcnJlY3RseSBleHBhbmQgJS1kZXBzIHZhcmlhYmxlcyBhcyBwcmVyZXF1aXNpdGVzCiYjNDM7LlNFQ09OREVYUEFOU0lPTjoKJiM0MzskKExJTktFRF9TS0VMU19IKTogJChSRElSKS8lLnNrZWwuaDogJCQoYWRkcHJlZml4ICQoUkRJUikvLCQkKCQkKi5za2VsLmgtZGVwcykpIFwKJiM0MzsJCSAgICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpCiYjNDM7CSQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKSBcCiYjNDM7CXByaW50ZiAmIzM5OyAgJS04cyVzICVzXG4mIzM5OyAmIzM5O0xJTkstQlBGJiMzOTsgJiMzOTsgWyQoQklOQVJZKV0mIzM5OyAmIzM5OyQobm90ZGlyICQoQDouc2tlbC5oPS5icGYubykpJiMzOTs7IFwKJiM0MzsJcHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5OyBbJChCSU5BUlkpXSYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTs7IFwKJiM0MzsJQlBGVE9PTD0kKEJQRlRPT0wpICQoR0VOX1NLRUwpIC0tbmFtZSAkKgkJCQkJCVwKJiM0MzsJCS0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkJCVwKJiM0MzsJCSQoYWRkcHJlZml4ICQoUkRJUikvLCQoJCouc2tlbC5oLWRlcHMpKQkJCVwKJiM0MzsJCSQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSkKJiM0MzsKJiM0MztlbmRpZiAjIEJQRl9DQwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMC4uZTQzY2NmMDk1NTc1NgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2gKQEAgLTAsMCAmIzQzOzEsOTkgQEAKJiM0MzsjIS9iaW4vYmFzaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBMaW5rIEJQRiBvYmplY3QgZmlsZShzKSB3aXRoICYjMzQ7YnBmdG9vbCBnZW4gb2JqZWN0JiMzNDsgYW5kIGdlbmVyYXRlIGEKJiM0MzsjIHNrZWxldG9uIChvciBsaWdodCBza2VsZXRvbikgaGVhZGVyIGZyb20gdGhlIHJlc3VsdC4KJiM0MzsjCiYjNDM7IyBVc2FnZToKJiM0MzsjICAgQlBGVE9PTD0mbHQ7YnBmdG9vbCZndDsgZ2VuX2JwZl9za2VsLnNoIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLgomIzQzOyMKJiM0MzsjICAgLS1uYW1lIE5BTUUgICAgICAgc2tlbGV0b24gb2JqZWN0IG5hbWUgKCYjMzQ7bmFtZSBOQU1FJiMzNDsgZm9yIGJwZnRvb2wpCiYjNDM7IyAgIC0tc2tlbCBPVVQgICAgICAgIG91dHB1dCBoZWFkZXIgKCYjMzQ7Zm9vLnNrZWwuaCYjMzQ7IG9yICYjMzQ7Zm9vLmxza2VsLmgmIzM0OykKJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVAomIzQzOyMgICAtLWxza2VsICAgICAgICAgICBnZW5lcmF0ZSBhIGxpZ2h0IHNrZWxldG9uIChicGZ0b29sIGdlbiBza2VsZXRvbiAtTCkKJiM0MzsjICAgLS1zaWduICAgICAgICAgICAgc2lnbiB0aGUgKGxpZ2h0KSBza2VsZXRvbiwgd2l0aCB0aGUga2V5IGFuZAomIzQzOyMgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSB0YWtlbiBmcm9tICRQUklWQVRFX0tFWSBhbmQKJiM0MzsjICAgICAgICAgICAgICAgICAgICAgJFZFUklGSUNBVElPTl9DRVJUCiYjNDM7IwomIzQzOyMgVGhlIGlucHV0cyBhcmUgbGlua2VkIHRocmVlIHRpbWVzIGFuZCB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0cwomIzQzOyMgY29tcGFyZWQsIGFzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgZGV0ZXJtaW5pc20gb2YgJiMzNDticGZ0b29sIGdlbgomIzQzOyMgb2JqZWN0JiMzNDsuCiYjNDM7IwomIzQzOyMgSW50ZXJtZWRpYXRlIGZpbGVzIGFyZSBuYW1lZCBhZnRlciB0aGUgb3V0cHV0IGhlYWRlciB3aXRoIGEgJiMzNDtsaW5rZWQmIzM0OwomIzQzOyMgaW5maXggLSAmIzM0O2xsaW5rZWQmIzM0OyBmb3IgbGlnaHQgb3Igc2lnbmVkIHNrZWxldG9ucywgc28gZ2VuZXJhdGluZyBhCiYjNDM7IyAuc2tlbC5oIGFuZCBhIC5sc2tlbC5oIGZyb20gdGhlIHNhbWUgLmJwZi5vIGluIHBhcmFsbGVsIG5ldmVyIHJhY2VzCiYjNDM7IyBvbiB0aGUgaW50ZXJtZWRpYXRlcy4KJiM0MzsjCiYjNDM7IyBUaGUgYnBmdG9vbCBiaW5hcnkgaXMgdGFrZW4gZnJvbSAkQlBGVE9PTCAoZGVmYXVsdDogYnBmdG9vbCBmcm9tIFBBVEgpLgomIzQzOyMgT24gZmFpbHVyZSBhbGwgb3V0cHV0cyBhbmQgaW50ZXJtZWRpYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHNjcmlwdAomIzQzOyMgZXhpdHMgbm9uLXplcm87IHBlcm1pc3NpdmUtbW9kZSBza2lwcGluZyBpcyB0aGUgY2FsbGVyJiMzOTtzIGJ1c2luZXNzCiYjNDM7IyAoc2VlIHNraXBfb25fZmFpbCBpbiB0aGUgTWFrZWZpbGUpLgomIzQzOwomIzQzO3NldCAtdQomIzQzOwomIzQzO2JwZnRvb2w9JHtCUEZUT09MOi1icGZ0b29sfQomIzQzO25hbWU9JiMzOTsmIzM5OyBza2VsPSYjMzk7JiMzOTsgc3Vic2tlbD0mIzM5OyYjMzk7CiYjNDM7bHNrZWw9MCBzaWduPTAKJiM0MzsKJiM0Mzt3aGlsZSBbICQjIC1ndCAwIF07IGRvCiYjNDM7CWNhc2UgJiMzNDskMSYjMzQ7IGluCiYjNDM7CS0tbmFtZSkJCW5hbWU9JDI7IHNoaWZ0IDIgOzsKJiM0MzsJLS1za2VsKQkJc2tlbD0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXN1YnNrZWwpCXN1YnNrZWw9JDI7IHNoaWZ0IDIgOzsKJiM0MzsJLS1sc2tlbCkJbHNrZWw9MTsgc2hpZnQgOzsKJiM0MzsJLS1zaWduKQkJc2lnbj0xOyBzaGlmdCA7OwomIzQzOwktLSkJCXNoaWZ0OyBicmVhayA7OwomIzQzOwktKikJCWVjaG8gJiMzNDskMDogdW5rbm93biBvcHRpb246ICQxJiMzNDsgJmd0OyZhbXA7MjsgZXhpdCAxIDs7CiYjNDM7CSopCQlicmVhayA7OwomIzQzOwllc2FjCiYjNDM7ZG9uZQomIzQzOwomIzQzO2lmIFsgLXogJiMzNDskbmFtZSYjMzQ7IF0gfHwgWyAteiAmIzM0OyRza2VsJiMzNDsgXSB8fCBbICQjIC1lcSAwIF07IHRoZW4KJiM0MzsJZWNobyAmIzM0O3VzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi4mIzM0OyAmZ3Q7JmFtcDsyCiYjNDM7CWV4aXQgMQomIzQzO2ZpCiYjNDM7CiYjNDM7aW5maXg9bGlua2VkCiYjNDM7aWYgWyAmIzM0OyRsc2tlbCYjMzQ7IC1lcSAxIF0gfHwgWyAmIzM0OyRzaWduJiMzNDsgLWVxIDEgXTsgdGhlbgomIzQzOwlpbmZpeD1sbGlua2VkCiYjNDM7ZmkKJiM0MzsKJiM0MztpZiBbICYjMzQ7JHNpZ24mIzM0OyAtZXEgMSBdICZhbXA7JmFtcDsgeyBbIC16ICYjMzQ7JHtQUklWQVRFX0tFWS19JiMzNDsgXSB8fCBbIC16ICYjMzQ7JHtWRVJJRklDQVRJT05fQ0VSVC19JiMzNDsgXTsgfTsgdGhlbgomIzQzOwllY2hvICYjMzQ7JDA6IC0tc2lnbiByZXF1aXJlcyBQUklWQVRFX0tFWSBhbmQgVkVSSUZJQ0FUSU9OX0NFUlQgaW4gdGhlIGVudmlyb25tZW50JiMzNDsgJmd0OyZhbXA7MgomIzQzOwlleGl0IDEKJiM0MztmaQomIzQzOwomIzQzO2Jhc2U9JHtza2VsJS5za2VsLmh9CiYjNDM7YmFzZT0ke2Jhc2UlLmxza2VsLmh9CiYjNDM7dDE9JGJhc2UuJHtpbmZpeH0xLm8KJiM0Mzt0Mj0kYmFzZS4ke2luZml4fTIubwomIzQzO3QzPSRiYXNlLiR7aW5maXh9My5vCiYjNDM7CiYjNDM7ZmFpbCgpIHsKJiM0MzsJcm0gLWYgJiMzNDskc2tlbCYjMzQ7ICR7c3Vic2tlbDomIzQzOyYjMzQ7JHN1YnNrZWwmIzM0O30gJiMzNDskdDEmIzM0OyAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQzJiMzNDsKJiM0MzsJZXhpdCAxCiYjNDM7fQomIzQzOwomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gb2JqZWN0ICYjMzQ7JHQxJiMzNDsgJiMzNDskQCYjMzQ7IHx8IGZhaWwKJiM0MzsmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIG9iamVjdCAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQxJiMzNDsgfHwgZmFpbAomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gb2JqZWN0ICYjMzQ7JHQzJiMzNDsgJiMzNDskdDImIzM0OyB8fCBmYWlsCiYjNDM7aWYgISBjbXAgLXMgJiMzNDskdDImIzM0OyAmIzM0OyR0MyYjMzQ7OyB0aGVuCiYjNDM7CWVjaG8gJiMzNDskMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbCYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJZmFpbAomIzQzO2ZpCiYjNDM7CiYjNDM7YXJncz0oKQomIzQzO2lmIFsgJiMzNDskc2lnbiYjMzQ7IC1lcSAxIF07IHRoZW4KJiM0MzsJYXJncyYjNDM7PSgtUyAtayAmIzM0OyRQUklWQVRFX0tFWSYjMzQ7IC1pICYjMzQ7JFZFUklGSUNBVElPTl9DRVJUJiMzNDspCiYjNDM7ZmkKJiM0MztpZiBbICYjMzQ7JGxza2VsJiMzNDsgLWVxIDEgXTsgdGhlbgomIzQzOwlhcmdzJiM0Mzs9KC1MKQomIzQzO2ZpCiYjNDM7JiMzNDskYnBmdG9vbCYjMzQ7IGdlbiBza2VsZXRvbiAke2FyZ3NbQF0mIzQzOyYjMzQ7JHthcmdzW0BdfSYjMzQ7fSAmIzM0OyR0MyYjMzQ7IG5hbWUgJiMzNDskbmFtZSYjMzQ7ICZndDsgJiMzNDskc2tlbCYjMzQ7IHx8IGZhaWwKJiM0MzsKJiM0MztpZiBbIC1uICYjMzQ7JHN1YnNrZWwmIzM0OyBdOyB0aGVuCiYjNDM7CSYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gc3Vic2tlbGV0b24gJiMzNDskdDMmIzM0OyBuYW1lICYjMzQ7JG5hbWUmIzM0OyAmZ3Q7ICYjMzQ7JHN1YnNrZWwmIzM0OyB8fCBmYWlsCiYjNDM7ZmkKJiM0MzsKJiM0MztybSAtZiAmIzM0OyR0MSYjMzQ7ICYjMzQ7JHQyJiMzNDsgJiMzNDskdDMmIzM0OwomIzQzO2V4aXQgMApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmMKaW5kZXggMmJiNTc3M2Q2Zjk5My4uZWEzNDI4NTlkNmNlMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jCkBAIC00NjUsNyAmIzQzOzQ2NSw3IEBAIHN0cnVjdCBleHBvc2VkX2hvb2sgewogCQkuZXhwZWN0ZWRfZXJyID0gRVhQRUNURURfRVJSLCBcCiAJfSwKIAotI2luY2x1ZGUgJiMzNDtjZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3Byb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmgmIzM0OwogCiAjdW5kZWYgQlBGX1JFVFZBTF9IT09LCiB9OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmgKcmVuYW1lIHRvIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDIwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjE1CgkJCQkJCQlvdXRwdXQ6IDY5CgkJCQkJCQl0aG91Z2h0czogNDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGVjaXNpb24gZm9yIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgaWYgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYgdGhhdCAqcmVxdWlyZSogZnV6emluZy4gSSBzZWUgYSBzZXJpZXMgb2YgbW9kaWZpY2F0aW9ucywgYWxsIGNvbnRhaW5lZCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aWNpbmcgYWRkaXRpb25zIG9mIG5ldyBNYWtlZmlsZXM6IGBNYWtlZmlsZS5idWlsZHZhcnNgLCBgTWFrZWZpbGUucnVubmVyYCwgYE1ha2VmaWxlLnNrZWxgLCBhbmQgYGdlbl9icGZfc2tlbC5zaGAuIFRoZXJlJiMzOTtzIGFsc28gYSByZW5hbWUgZnJvbSBgY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaGAgdG8gYHByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhgLCBhbmQgYW4gaW5jbHVkZSB1cGRhdGUgaW4gYGNncm91cF9nZXRzZXRfcmV0dmFsLmNgLgoKSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgYWxsIGlzb2xhdGVkIHRvIHRoZSBzZWxmdGVzdHMgaW5mcmFzdHJ1Y3R1cmUgd2l0aGluIHRoZSBCUEYgc3Vic3lzdGVtLiBJIGRvbiYjMzk7dCBzZWUgYW55dGhpbmcgZGlyZWN0bHkgdG91Y2hpbmcgY29yZSBrZXJuZWwgY29kZSwganVzdCB0aGUgdGVzdGluZyBoYXJuZXNzLgoKVG8gYmUgZXh0cmEgc3VyZSwgbGV0JiMzOTtzIHF1aWNrbHkgcmUtZXhhbWluZSB0aG9zZSBmaWxlczogYE1ha2VmaWxlYCwgYE1ha2VmaWxlLmJ1aWxkdmFyc2AsIGBNYWtlZmlsZS5ydW5uZXJgLCBgTWFrZWZpbGUuc2tlbGAsIGBnZW5fYnBmX3NrZWwuc2hgLCBgcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jYCwgYW5kIGBwcm9ncy9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oYC4gWWVwLCBzdGlsbCBubyBrZXJuZWwgc291cmNlIGNvZGUgYmVpbmcgZGlyZWN0bHkgbW9kaWZpZWQuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBrZXJuZWwtbGV2ZWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBUaGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMjA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDIwOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yM1QyMDoxNDozNi4wOTg5NzIzMTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjI3MDM2NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBzY3JpcHRzKSBhbmQgcmVuYW1lcyBhIHRlc3QgaGVhZGVyIGZpbGUuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMjA6MTQ6MzYuMDk4OTgxNzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTkyMjQ0MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZGFmZTJiOTYxZDEzYmM0MzljYWMxYzQyYjk5NjVjMzQ4YWM0NGQ5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIzIDIwOjE0OjM1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxcbmluZGV4IDVmMWEzYmZjMDU2OWYuLjliOTkwNTYxMDA3MGQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuQEAgLTQsOTMgKzQsMTkgQEAgaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcXG4gaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcXG4gXFxuIENYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXFxuLU9CSkNPUFkgPz0gJChDUk9TU19DT01QSUxFKW9iamNvcHlcXG4tXFxuLUNVUkRJUiA6PSAkKGFic3BhdGggLilcXG4tVE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKVxcbi1MSUJESVIgOj0gJChUT09MU0RJUikvbGliXFxuLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmXFxuLVRPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGVcXG4tVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXFxuLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcXG4tQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcXG4taWZuZXEgKCQoTyksKVxcbi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxcbi1lbHNlXFxuLUdFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXFxuLWVuZGlmXFxuLUdFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxcbi1QS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXFxuLVxcbi1pZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcXG4tICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXFxuLWVuZGlmXFxuIFxcbiBCUEZfR0NDXFx0XFx0Pz0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxcbi1pZmRlZiBBU0FOXFxuLVNBTl9DRkxBR1MgXFx0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFxuLWVsc2VcXG4tU0FOX0NGTEFHU1xcdD89XFxuLWVuZGlmXFxuLVNBTl9MREZMQUdTXFx0Pz0gJChTQU5fQ0ZMQUdTKVxcbi1SRUxFQVNFXFx0XFx0Pz1cXG4tT1BUX0ZMQUdTXFx0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXFxuLVxcbi1MSUJFTEZfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXFx1MDAzZS9kZXYvbnVsbClcXG4tTElCRUxGX0xJQlNcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXFx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxcbiBcXG4gU0tJUF9ET0NTXFx0Pz1cXG4gU0tJUF9MTFZNXFx0Pz1cXG4gU0tJUF9MSUJCRkRcXHQ/PVxcbiBTS0lQX0NSWVBUT1xcdD89XFxuIFxcbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxcbi0jIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xcbi0jIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxcbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcXG4tUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXFxuLVxcbi1pZmVxICgkKHNyY3RyZWUpLClcXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4tZW5kaWZcXG4tXFxuLUNPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKVxcdFxcdFxcdFxcXFxcXG4tXFx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXFx0XFx0XFxcXFxcbi1cXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcXHRcXFxcXFxuLVxcdCAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcbi1MREZMQUdTICs9ICQoU0FOX0xERkxBR1MpXFxuLUxETElCUyArPSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcXG4tXFxuLVBDQVBfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyBcXFwiLURUUkFGRklDX01PTklUT1I9MVxcXCIpXFxuLVBDQVBfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbClcXG4tTERMSUJTICs9ICQoUENBUF9MSUJTKVxcbi1DRkxBR1MgKz0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKVxcbi1cXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xcbi1qaXRfZGlzYXNtX2hlbHBlcnMuYy1DRkxBR1MgPSAkKExMVk1fQ0ZMQUdTKVxcbi1cXG4taWZuZXEgKCQoTExWTSksKVxcbi0jIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcXG4tQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxcbi1lbmRpZlxcbi1cXG4gIyBDaGVjayB3aGV0aGVyIGJwZiBjcHU9djQgaXMgc3VwcG9ydGVkIG9yIG5vdCBieSBjbGFuZ1xcbiBpZm5lcSAoJChzaGVsbCAkKENMQU5HKSAtLXRhcmdldD1icGYgLW1jcHU9aGVscCAyXFx1MDAzZVxcdTAwMjYxIHwgZ3JlcCAndjQnKSwpXFxuIENMQU5HX0NQVVY0IDo9IDFcXG4gZW5kaWZcXG4gXFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjIrKVxcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJ2ludCB4OycgfCBcXFxcXFxuLVxcdCQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFxcXFxcXG4tXFx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcXFxcbi1cXHQteCBjIC1jIC0gLW8gL2Rldi9udWxsIDJcXHUwMDNlL2Rldi9udWxsIFxcdTAwMjZcXHUwMDI2IGVjaG8gMSlcXG4tXFxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAnbWFrZSBydW5fdGVzdHMnIG9yZGVyXFxuIFRFU1RfR0VOX1BST0dTID0gdGVzdF92ZXJpZmllciB0ZXN0X3RhZyB0ZXN0X21hcHMgdGVzdF9scnVfbWFwIHRlc3RfcHJvZ3MgXFxcXFxcbiBcXHR0ZXN0X3NvY2ttYXAgXFxcXFxcbkBAIC0xMDIsMTYgKzI4LDYgQEAgVEVTVF9JTlNUX1NVQkRJUlMgOj0gbm9fYWx1MzJcXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxcbiBURVNUX0dFTl9QUk9HUyArPSB0ZXN0X3Byb2dzLWJwZl9nY2NcXG4gVEVTVF9JTlNUX1NVQkRJUlMgKz0gYnBmX2djY1xcbi1cXG4tIyBUaGUgZm9sbG93aW5nIHRlc3RzIGNvbnRhaW4gQyBjb2RlIHRoYXQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGxlZ2FsLFxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2ZcXG4tIyBhbm9ueW1vdXMgc3RydWN0IHR5cGVzIGluIGZ1bmN0aW9uIHBhcmFtZXRlciBsaXN0cy5cXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLVxcbiBlbmRpZlxcbiBcXG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcXG5AQCAtMTY4LDcgKzg0LDIxIEBAIG92ZXJyaWRlIGRlZmluZSBDTEVBTlxcbiBcXHQkKFEpJChNQUtFKSBkb2NzLWNsZWFuXFxuIGVuZGVmXFxuIFxcbisjIC4uL2xpYi5tayBhcHBlbmRzIHRvIHRoZSBmbGFncyBpbmhlcml0ZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQ7XFxuKyMgTWFrZWZpbGUuYnVpbGR2YXJzIHJlYnVpbGRzIENGTEFHUyBhbmQgTERGTEFHUyBhcm91bmQgdGhlc2Ugc25hcHNob3RzXFxuKyMgc28gdGhhdCBpdHMgb3duIGFkZGl0aW9ucyBwcmVjZWRlIGxpYi5taydzLCBhcyB0aGV5IGRpZCB3aGVuIHRoZXlcXG4rIyB3ZXJlIGRlZmluZWQgYWJvdmUgdGhlIGluY2x1ZGUuXFxuK0lOSEVSSVRFRF9DRkxBR1MgOj0gJChDRkxBR1MpXFxuK0lOSEVSSVRFRF9MREZMQUdTIDo9ICQoTERGTEFHUylcXG4gaW5jbHVkZSAuLi9saWIubWtcXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcXG4rXFxuKyMgRGVmaW5pdGlvbnMgb25seSB0aGlzIE1ha2VmaWxlIGNvbnN1bWVzOyBwbGFjZWQgYWZ0ZXIgdGhlIGluY2x1ZGVcXG4rIyBiZWNhdXNlIHNvbWUgb2YgdGhlbSBkZXJpdmUgZnJvbSBNYWtlZmlsZS5idWlsZHZhcnMgdmFsdWVzLlxcbitCUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sXFxuK0hPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxcbitCUEZfVEFSR0VUX0VORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC0tdGFyZ2V0PWJwZmVsLC0tdGFyZ2V0PWJwZmViKVxcbitDTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUylcXG4gXFxuIE5PTl9DSEVDS19GRUFUX1RBUkdFVFMgOj0gY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzXFxuIENIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksIFxcXCJub25lXFxcIikpXFxuQEAgLTIxMywyMSArMTQzLDkgQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXFxuIGVuZGlmXFxuIGVuZGlmXFxuIFxcbi1TQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcXG4tQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXFxuLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcXG4tQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1IT1NUX0JVSUxEX0RJUlxcdFxcdDo9ICQoQlVJTERfRElSKS9ob3N0XFxuLUhPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xcbi1IT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXFxuLWVsc2VcXG4tSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUilcXG4tSE9TVF9TQ1JBVENIX0RJUlxcdDo9ICQoU0NSQVRDSF9ESVIpXFxuLUhPU1RfSU5DTFVERV9ESVJcXHQ6PSAkKElOQ0xVREVfRElSKVxcbi1lbmRpZlxcbi1IT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4tUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcXG4rIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xcbiskKE9VVFBVVCkvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyArPSAkKExMVk1fQ0ZMQUdTKVxcbitcXG4gVk1MSU5VWF9CVEZfUEFUSFMgPz0gJChpZiAkKE8pLCQoTykvdm1saW51eClcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcXHRcXFxcXFxuIFxcdFxcdCAgICAgLi4vLi4vLi4vLi4vdm1saW51eFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjQ2LDcgKzE2NCw3IEBAICQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdCAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKSk6ICU6ICQoT1VUUFVUKS8lIDtcXG4gXFxuICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nXFxuLU1BS0VfRElSUyA6PSAkKHNvcnQgJChCVUlMRF9ESVIpL2xpYmJwZiAkKEhPU1RfQlVJTERfRElSKS9saWJicGZcXHRcXFxcXFxuK01BS0VfRElSUyA6PSAkKHNvcnQgJChPVVRQVVQpICQoQlVJTERfRElSKS9saWJicGYgJChIT1NUX0JVSUxEX0RJUikvbGliYnBmIFxcXFxcXG4gXFx0ICAgICAgICQoQlVJTERfRElSKS9icGZ0b29sICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcXHRcXHRcXFxcXFxuIFxcdCAgICAgICAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkc1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ICAgICAgICQoSU5DTFVERV9ESVIpKVxcbkBAIC0yNTgsOSArMTc2LDEyIEBAICQoT1VUUFVUKS8lLm86ICUuY1xcbiBcXHQkKGNhbGwgbXNnLENDLCwkQClcXG4gXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4rIyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7XFxuKyMgdGhleSBtdXN0IG5vdCByZWFjaCB0aGUgY2xhbmcvZ2NjIGNvbW1hbmQgbGluZSAoY2xhbmcgdHJlYXRzIGEgYmFyZSAuaFxcbisjIGFyZ3VtZW50IGFzIGEgcHJlY29tcGlsZWQtaGVhZGVyIGpvYiBhbmQgcmVmdXNlcyAtbykuXFxuICQoT1VUUFVUKS8lOiUuY1xcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuLVxcdCQoUSkkKExJTksuYykgJF4gJChMRExJQlMpIC1vICRAXFxuK1xcdCQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRAXFxuIFxcbiAjIExMVk0ncyBsZC5sbGQgZG9lc24ndCBzdXBwb3J0IGFsbCB0aGUgYXJjaGl0ZWN0dXJlcywgc28gdXNlIGl0IG9ubHkgb24geDg2XFxuIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKVxcbkBAIC0zMTMsMTcgKzIzNCw2IEBAICQoVEVTVF9LTU9EX1RBUkdFVFMpOiAkKGFkZHByZWZpeCB0ZXN0X2ttb2RzLywkKFRFU1RfS01PRFMpKVxcbiBcXHQkKGNhbGwgbXNnLE1PRCwsJEApXFxuIFxcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcXG4gXFxuLVxcbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1DUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxcbi1VU0VfQk9PVFNUUkFQIDo9IFxcXCJcXFwiXFxuLWVsc2VcXG4tVFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKVxcbi1VU0VfQk9PVFNUUkFQIDo9IFxcXCJib290c3RyYXAvXFxcIlxcbi1lbmRpZlxcbi1cXG4gJChURVNUX0dFTl9QUk9HUykgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCk6ICQoQlBGT0JKKVxcbiBcXG4gVEVTVElOR19IRUxQRVJTXFx0Oj0gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXFxuQEAgLTMzOSwxMiArMjQ5LDMzIEBAICQoT1VUUFVUKS90ZXN0X3RjcG5vdGlmeV91c2VyOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUykgJChUUkFDRV9IRUxQXFxuICQoT1VUUFVUKS90ZXN0X3NvY2tfZmllbGRzOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUylcXG4gJChPVVRQVVQpL3Rlc3RfdGFnOiAkKFRFU1RJTkdfSEVMUEVSUylcXG4gJChPVVRQVVQpL3Rlc3RfbGlyY19tb2RlMl91c2VyOiAkKFRFU1RJTkdfSEVMUEVSUylcXG4tJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKVxcbi0kKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFRFU1RJTkdfSEVMUEVSUylcXG4rJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcXG4gJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVxcbi0kKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKVxcbiBcXG4tQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcXG4rIyBEZWZpbmVkIGFoZWFkIG9mIHRoZSBmaXJzdCBydWxlIHRoYXQgbGlzdHMgaXQgYXMgYSBwcmVyZXF1aXNpdGUuXFxuK1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4rXFxuKyMgVGhlIHVzZXJzcGFjZSBvYmplY3RzIHRoZSBydW5uZXIgaW5zdGFuY2VzIGxpbmsgKFJVTk5FUl9PQkpTLCBzZWVcXG4rIyBNYWtlZmlsZS5idWlsZHZhcnMpIGFyZSBidWlsdCBoZXJlLCBvbmNlLCBzbyB0aGF0IG5vIHJ1bm5lciBzdWItbWFrZVxcbisjIGV2ZXIgd3JpdGVzIGEgZmlsZSB0aGlzIE1ha2VmaWxlIGFsc28gYnVpbGRzLlxcbisjXFxuKyMgJChUUlVOTkVSX0JQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXRcXG4rIyBpbnN0YWxscyBsaWJicGYncyBpbnRlcm5hbCBoZWFkZXJzIChicGYvaGFzaG1hcC5oLCBicGYvbGliYnBmX2ludGVybmFsLmgpXFxuKyMgaW50byAkKElOQ0xVREVfRElSKSAtIHRoZSBjcm9zcy1jb21waWxlZCBicGZ0b29sJ3Mgd2hlbiBjcm9zcy1jb21waWxpbmc7XFxuKyMgd2l0aG91dCBpdCwgdHJhY2VfaGVscGVycy5jIHJhY2VzIHRoZSBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cFxcbisjIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC5cXG4rUlVOTkVSX09CSlMgOj0gJChzb3J0ICQoUlVOTkVSX09CSlMtdGVzdF9wcm9ncykgJChSVU5ORVJfT0JKUy10ZXN0X21hcHMpXFxcXFxcbitcXHRcXHQgICAgICAkKFJVTk5FUl9MSUJfT0JKUy10ZXN0X3Byb2dzKSlcXG4rJChSVU5ORVJfT0JKUyk6ICQoVkVSSUZZX1NJR19IRFIpICQoQlBGT0JKKSAkKFRSVU5ORVJfQlBGVE9PTClcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MubzogcHJvZ190ZXN0cy90ZXN0cy5oXFxuKyQoT1VUUFVUKS90ZXN0X21hcHMubzogbWFwX3Rlc3RzL3Rlc3RzLmhcXG4rXFxuKyMgZmluZF9iaXQuYyBpcyB0aGUgb25seSBydW5uZXIgc291cmNlIG91dHNpZGUgdGhpcyBkaXJlY3RvcnksXFxuKyMgc28gaXQgbmVlZHMgYSBydWxlIG9mIGl0cyBvd24uXFxuKyQoT1VUUFVUKS9maW5kX2JpdC5vOiAkKFRPT0xTRElSKS9saWIvZmluZF9iaXQuY1xcbitcXHQkKGNhbGwgbXNnLENDLCwkQClcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXFx1MDAzYyAkKExETElCUykgLW8gJEBcXG4rXFxuICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcXFxcXFxuIFxcdFxcdCAgICAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcXG4gXFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcXHRcXHRcXHQgICAgICAgXFxcXFxcbkBAIC00MTIsNyArMzQzLDcgQEAgZW5kaWZcXG4gXFxuICMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXFxuICMgdGhlIHByZXZpb3VzIHZlcnNpb24uIFRoaXMgaGVscHMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmUtYnVpbGRzIG9mXFxuLSMgJChUUlVOTkVSX0JQRl9PQkpTKVxcbisjIEJQRiBvYmplY3RzLlxcbiAkKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxcbiBpZmVxICgkKFZNTElOVVhfSCksKVxcbiBcXHQkKGNhbGwgbXNnLEdFTiwsJEApXFxuQEAgLTQzNywzNzQgKzM2OCwxMiBAQCAkKFJFU09MVkVfQlRGSURTKTogJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkc1xcdFxcXFxcXG4gXFx0XFx0SE9TVFBLR19DT05GSUc9JyQoUEtHX0NPTkZJRyknIFxcXFxcXG4gXFx0XFx0T1VUUFVUPSQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzLyBCUEZPQko9JChIT1NUX0JQRk9CSilcXG4gXFxuLSMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XFxuLSMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXFxcIm1pc3NpbmdcXFwiIGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxcbi0jIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cXG4tI1xcbi0jIFVzZSAnLWlkaXJhZnRlcic6IERvbid0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcXG4tIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxcbi1kZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xcbi0kKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFxcdTAwM2MvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXFxcXFxuLVxcdHwgc2VkIC1uICcvXFx1MDAzYy4uLlxcdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXFxcKC8uKlxcXFwpfC1pZGlyYWZ0ZXIgXFxcXDF8cCB9JykgXFxcXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzLCAkJDMpfScpIFxcXFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fbG9vbmdhcmNoX2dybGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzKX0nKSBcXFxcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFxcXCItRCVzPSVzIFxcXCIsICQkMiwgJCQzKX0nKVxcbi1lbmRlZlxcbi1cXG4tIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXFxuLUlTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgXFxcXFxcbi1cXHRcXHRcXHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxcbi1NRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbilcXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcXG4tXFxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXFxuLWVuZGlmXFxuLVxcbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcXG4tQlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKVxcdFxcXFxcXG4tXFx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1JJChUT09MU0lOQ0RJUikgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcXFxcXG4tXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgI1xcbi0jIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbi1cXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuLVxcbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tXFxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcbi1cXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXFxuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXFxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxcbi0jICQzIC0gQ0ZMQUdTXFxuLSMgJDQgLSBiaW5hcnkgbmFtZVxcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcXG4tXFx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcXHUwMDNlXFx1MDAyNjIpKVxcbi1lbmRlZlxcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXFxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcXG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xcbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tXFxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcXG4tXFxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcXHRcXHRcXFxcXFxuLVxcdFxcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuLVxcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuLVxcbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXFx0XFxcXFxcbi1cXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1xcdFxcdFxcdFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXFxuLVxcbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xcbi1cXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXFxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXFxcXG4tXFx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYyB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXFxuLVNLRUxfQkxBQ0tMSVNUICs9ICQkKExTS0VMUykgJCQoTFNLRUxTX1NJR05FRClcXG4tXFxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cXG4tbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xcbi1saW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vXFxuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cXG4tIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcXG4tIyBidXQgdGhhdCdzIGNyZWF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgc2tlbC5oIGdlbmVyYXRpb24uXFxuLXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm9cXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXFxuLXRlc3RfdXNkdC5za2VsLmgtZGVwcyA6PSB0ZXN0X3VzZHQuYnBmLm8gdGVzdF91c2R0X211bHRpc3BlYy5icGYub1xcbi14c2tfeGRwX3Byb2dzLnNrZWwuaC1kZXBzIDo9IHhza194ZHBfcHJvZ3MuYnBmLm9cXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xcbi14ZHBfZmVhdHVyZXMuc2tlbC5oLWRlcHMgOj0geGRwX2ZlYXR1cmVzLmJwZi5vXFxuLXRyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi10cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi10cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuLVxcbi1MSU5LRURfQlBGX09CSlMgOj0gJChmb3JlYWNoIHNrZWwsJChMSU5LRURfU0tFTFMpLCQoJChza2VsKS1kZXBzKSlcXG4tTElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKVxcbi1cXG4tSEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaClcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVxcdFxcXFxcXG4tXFx0XFx0XFx0JChhZGRwcmVmaXggJChCUEZESVIpLyxcXHRicGZfY29yZV9yZWFkLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0YnBmX2hlbHBlcnMuaFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcXG4tXFxuLSMgU2V0IHVwIGV4dHJhIFRSVU5ORVJfWFhYIFxcXCJ0ZW1wb3JhcnlcXFwiIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxcbi0jICRldmFsKCkpIGFuZCBwYXNzIGNvbnRyb2wgdG8gREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLlxcbi0jIFBhcmFtZXRlcnM6XFxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxcbi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgXFxcImZsYXZvclxcXCIgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSXFxuLVxcbi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpXFxuLVRSVU5ORVJfT1VUUFVUIDo9ICQoT1VUUFVUKSQoaWYgJDIsLykkMlxcbi1UUlVOTkVSX0JJTkFSWSA6PSAkMSQoaWYgJDIsLSkkMlxcbi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMpKSlcXG4tVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSlcXG4tVFJVTk5FUl9MSUJfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9MSUJfU09VUkNFUykpKVxcbi1UUlVOTkVSX0VYVFJBX0hEUlMgOj0gJCQoZmlsdGVyICUuaCwkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpXFxuLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmhcXG4tVFJVTk5FUl9CUEZfU1JDUyA6PSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouYykpXFxuLVRSVU5ORVJfQlBGX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vLCAkJChUUlVOTkVSX0JQRl9TUkNTKSlcXG4tVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCxcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSxcXFxcXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgICAkJChUUlVOTkVSX0JQRl9TUkNTKSkpXFxuLVRSVU5ORVJfQlBGX0xTS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTKSAkJChMU0tFTFNfRVhUUkEpKVxcbi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKVxcbi1UUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFNfU0lHTkVEKSlcXG4tVEVTVF9HRU5fRklMRVMgKz0gJCQoVFJVTk5FUl9CUEZfT0JKUylcXG4tXFxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxcbi0kJChldmFsICQkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLCQxLCQyKSlcXG4tXFxuLWVuZGVmXFxuLVxcbi0jIFVzaW5nIFRSVU5ORVJfWFhYIHZhcmlhYmxlcywgcHJvdmlkZWQgYnkgY2FsbGVycyBvZiBERUZJTkVfVEVTVF9SVU5ORVIgYW5kXFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcXG4tIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhIFxcXCJmbGF2b3JcXFwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YylcXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUl9SVUxFU1xcbi1cXG4tIyBQZXJtaXNzaXZlIGJ1aWxkIGJlaGF2aW91ciAoc2tpcC1vbi1mYWlsdXJlIGNvbXBpbGUsIHBhcnRpYWwtbGluaykgb25seVxcbi0jIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnM7IHJ1bm5lcnMgdGhhdCB1c2Ugc3Ryb25nIGNyb3NzLW9iamVjdFxcbi0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXFxuLSMgVGhlIGNoZWNrIGlzIGlubGluZWQgcGVyLXJ1bm5lciBzbyAkMSBpcyBzdWJzdGl0dXRlZCBhdCAkKGNhbGwpIHRpbWUgYW5kXFxuLSMgdGhlIHJlc3VsdCBpcyBiYWtlZCBpbnRvIGVhY2ggcnVsZSdzIHJlY2lwZS5cXG4tXFxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXFxuLSQoVFJVTk5FUl9PVVRQVVQpLWRpciA6PSB5XFxuLSQoVFJVTk5FUl9PVVRQVVQpOlxcbi1cXHQkJChjYWxsIG1zZyxNS0RJUiwsJCRAKVxcbi1cXHQkKFEpbWtkaXIgLXAgJCRAXFxuLWVuZGlmXFxuLVxcbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxcbi0jIGlucHV0L291dHB1dCBkaXJlY3RvcnkgY29tYmluYXRpb25cXG4taWZlcSAoJCgkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyksKVxcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XFxuLSQoVFJVTk5FUl9CUEZfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm86XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8lLmNcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkJChJTkNMVURFX0RJUikvdm1saW51eC5oXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICQoSEVBREVSU19GT1JfQlBGX09CSlMpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgIHwgJChUUlVOTkVSX09VVFBVVCkgJCQoQlBGT0JKKVxcbi1cXHQkJChjYWxsICQoVFJVTk5FUl9CUEZfQlVJTERfUlVMRSksJCRcXHUwMDNjLCQkQCxcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdFxcdCAgJChUUlVOTkVSX0JQRl9DRkxBR1MpICAgICAgICAgXFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICQkKCQkXFx1MDAzYy1DRkxBR1MpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICQkKCQkXFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxcbi1cXG4tJChUUlVOTkVSX0JQRl9TS0VMUyk6ICUuc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFxcdTAwM2MgXTsgdGhlblxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGZpOylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJFxcdTAwM2MgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQxLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5saW5rZWQzLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRkaWZmICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89KSkgXFx1MDAzZSAkJEAgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcXHUwMDNjOi5icGYubz0pKSBcXHUwMDNlICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0fSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRybSAtZiAkJChcXHUwMDNjOi5vPS5saW5rZWQxLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKVxcbi1cXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFxuLVxcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXFx1MDAzYyBdOyB0aGVuXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHRcXHRleGl0IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRmaTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXFx1MDAzYyBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRkaWZmICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gLUwgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89X2xza2VsKSkgXFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAOyBcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0fSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRybSAtZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxcbi1cXG4tJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFxcdTAwM2MgXTsgdGhlblxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0XFx0ZXhpdCAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0Zmk7KVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKSAoc2lnbmVkKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFxcdTAwM2MgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89X2xza2VsKSkgXFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAOyBcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0fSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRybSAtZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxcbi1cXG4tJChMSU5LRURfQlBGX09CSlMpOiAlOiAkKFRSVU5ORVJfT1VUUFVUKS8lXFxuLVxcbi0jIC5TRUNPTkRFWFBBTlNJT04gaGVyZSBhbGxvd3MgdG8gY29ycmVjdGx5IGV4cGFuZCAlLWRlcHMgdmFyaWFibGVzIGFzIHByZXJlcXVpc2l0ZXNcXG4tLlNFQ09OREVYUEFOU0lPTjpcXG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFxuLVxcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksZm9yIGYgaW4gJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpOyBkbyBcXFxcXFxuLVxcdFxcdGlmIFsgISAtZiAkJCQkZiBdOyB0aGVuXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0XFx0XFx0ZXhpdCAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0Zmk7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRkb25lOylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnTElOSy1CUEYnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJChAOi5za2VsLmg9LmJwZi5vKSknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIFxcdTAwMjZcXHUwMDI2XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MiBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFxcdTAwM2UgJCRAIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChAOi5za2VsLmg9KSkgXFx1MDAzZSAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0fSkgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHJtIC1mICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pXFxuLVxcbi0jIFdoZW4gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhICUuZCBmaWxlLCBvbmx5IHNrZWwgYmFzZW5hbWVzIChub3RcXG4tIyBmdWxsIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIGNvcnJlc3BvbmRpbmcgJS5vXFxuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xcbi0jIGluIFRSVU5ORVJfT1VUUFVULCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXFxuLXZwYXRoICUuc2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXFxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxcbi12cGF0aCAlLnN1YnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXG4tZW5kaWZcXG4tXFxuLSMgZW5zdXJlIHdlIHNldCB1cCB0ZXN0cy5oIGhlYWRlciBnZW5lcmF0aW9uIHJ1bGUganVzdCBvbmNlXFxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXFxuLSQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciA6PSB5XFxuLSQoVFJVTk5FUl9URVNUU19IRFIpOiAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmNcXG4tXFx0JCQoY2FsbCBtc2csVEVTVC1IRFIsJChUUlVOTkVSX0JJTkFSWSksJCRAKVxcbi1cXHQkJChzaGVsbCAoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICBzZWQgLW4gLUUgJ3MvXnZvaWQgKHNlcmlhbF8pP3Rlc3RfKFthLXpBLVowLTlfXSspXFxcXCgodm9pZCk/XFxcXCkuKi9ERUZJTkVfVEVTVChcXFxcMikvcCdcXHRcXFxcXFxuLVxcdFxcdFxcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1xcdFxcXFxcXG4tXFx0XFx0ICkgXFx1MDAzZSAkJEApXFxuLWVuZGlmXFxuLVxcbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vXFxuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcXG4tXFxuLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcXG4tIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcXG4tJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOlxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kXFxuLVxcdCQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKShjZCAkJChARCkgXFx1MDAyNlxcdTAwMjYgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCRcXHUwMDNjICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJCRAOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtVEVTVCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyKSkpXFxuLVxcdCQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQoUSlpZiBbIC1mICQkQCBdOyB0aGVuXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJyAgJS04cyVzICVzXFxcXG4nIFxcXCJCVEZJRFNcXFwiIFxcXCIgWyQoVFJVTk5FUl9CSU5BUlkpXVxcXCIgXFxcIiQkKG5vdGRpciAkJEApXFxcIik7IFxcXFxcXG4tXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1xcdFxcXFxcXG4tXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1xcdFxcdFxcXFxcXG4tXFx0XFx0ZmkpXFxuLVxcbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9TS0VMUylcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAkKFRSVU5ORVJfQlBGX0xTS0VMUylcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAkKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXFxuLVxcbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXFxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcXG4tZW5kaWZcXG4tXFxuLSMgYWRkIHBlciBleHRyYSBvYmogQ0ZHTEFHUyBkZWZpbml0aW9uc1xcbi0kKGZvcmVhY2ggTiwkKHBhdHN1YnN0ICQoVFJVTk5FUl9PVVRQVVQpLyUubywlLCQoVFJVTk5FUl9FWFRSQV9PQkpTKSksXFx0XFxcXFxcbi1cXHQkKGV2YWwgJChUUlVOTkVSX09VVFBVVCkvJChOKS5vOiBDRkxBR1MgKz0gJCgkKE4pLmMtQ0ZMQUdTKSkpXFxuLVxcbi0kKFRSVU5ORVJfRVhUUkFfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzpcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAlLmNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUylcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFZFUklGWV9TSUdfSERSKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoVFJVTk5FUl9URVNUU19IRFIpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFxuLVxcdCQkKGNhbGwgbXNnLEVYVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKVxcbi1cXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcXHUwMDNjICQkKExETElCUykgLW8gJCRAXFxuLVxcbi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuY1xcbi1cXHQkJChjYWxsIG1zZyxMSUItT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkXFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxcbi1cXG4tIyBub24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhciwgd2VcXG4tIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXFxuLSQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhczogJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFxuLWlmbmVxICgkMjokKE9VVFBVVCksOiQoc2hlbGwgcHdkKSlcXG4tXFx0JCQoY2FsbCBtc2csRVhULUNPUFksJChUUlVOTkVSX0JJTkFSWSksJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSlcXG4tXFx0JChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvXFxuLWVuZGlmXFxuLVxcbi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzXFxuLSQoT1VUUFVUKS8kKFRSVU5ORVJfQklOQVJZKTogfCAkKFRSVU5ORVJfQlBGX09CSlMpXFxuLVxcbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKVxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKFRSVU5ORVJfRVhUUkFfT0JKUykgJCQoQlBGT0JKKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKFRSVU5ORVJfTElCX09CSlMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICQoVFJVTk5FUl9CUEZUT09MKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKE9VVFBVVCkvdmVyaXN0YXRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgfCAkKFRSVU5ORVJfQklOQVJZKS1leHRyYXNcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQoVFJVTk5FUl9URVNUX09CSlMpKSlcXG4tXFx0JCQoY2FsbCBtc2csQklOQVJZLCwkJEApXFxuLVxcdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEBcXG4tXFx0JChRKWxuIC1zZiAkKGlmICQyLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcXFxcbi1cXHRcXHQgICAkKE9VVFBVVCkvJChpZiAkMiwkMi8pYnBmdG9vbFxcbi1cXG4tZW5kZWZcXG4tXFxuLVZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2hcXG4tVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxcbi1WRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcXG4tUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxcbi1cXG4tJChWRVJJRklDQVRJT05fQ0VSVCkgJChQUklWQVRFX0tFWSk6ICQoVkVSSUZZX1NJR19TRVRVUClcXG4rIyBPbmUgZ2Vua2V5IHJ1biBwcm9kdWNlcyBib3RoIGZpbGVzLiBBIHBsYWluIHR3by10YXJnZXQgcnVsZSBpcyBub3RcXG4rIyBncm91cGVkIC0gaWYgYm90aCBmaWxlcyBhcmUgc3RhbGUgbWFrZSB3b3VsZCBydW4gZ2Vua2V5IHR3aWNlLCB1bmRlclxcbisjIC1qIGNvbmN1cnJlbnRseSwgYW5kIHRoZSBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm1cXG4rIyBpcyBpbXBsaWNpdGx5IGdyb3VwZWQgZXZlbiB3aXRoIG1ha2UgXFx1MDAzYyA0LjMuIFRoZSBzdGVtIG9ubHkgc3RhbmRzIGluXFxuKyMgZm9yICdzaWduaW5nJyBzbyB0aGF0IG5vIG90aGVyIC5wZW0vLmRlciB1bmRlciAkKEJVSUxEX0RJUikgbWF0Y2hlcy5cXG4rJChCVUlMRF9ESVIpLyVfa2V5LnBlbSAkKEJVSUxEX0RJUikvJV9rZXkuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuIFxcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcXG4gXFx0JChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKVxcbiBcXG5AQCAtODMzLDcgKzQwMiw2IEBAIExJQkFSRU5BX0NPTU1PTl9ERVBTIDo9ICQod2lsZGNhcmQgbGliYXJlbmEvTWFrZWZpbGVcXHRcXHRcXFxcXFxuIExJQkFSRU5BX0JQRl9ERVBTIDo9ICQoTElCQVJFTkFfQ09NTU9OX0RFUFMpICQod2lsZGNhcmQgbGliYXJlbmEvc2VsZnRlc3RzLyopXFxuIExJQkFSRU5BX0JFTkNIX0JQRl9ERVBTIDo9ICQoTElCQVJFTkFfQ09NTU9OX0RFUFMpICQod2lsZGNhcmQgbGliYXJlbmEvYmVuY2hzLyopXFxuIFxcbi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxcbiBMSUJBUkVOQV9CRU5DSF9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2JlbmNoLnNrZWwuaFxcbiBcXG4gJChMSUJBUkVOQV9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxcbkBAIC04NDMsOTUgKzQxMSwxMjYgQEAgJChMSUJBUkVOQV9CRU5DSF9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JFTkNIX0JQRl9cXG4gXFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgYmVuY2htYXJrcyAkKExJQkFSRU5BX01BS0VfQVJHUylcXG4gXFxuIGlmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXFxuLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxcbi1DRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cXG4gXFxuICQoTElCQVJFTkFfQVNBTl9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxcbiBcXHQrJChNQUtFKSAtQyBsaWJhcmVuYSBsaWJhcmVuYV9hc2FuLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUylcXG4gZW5kaWZcXG4gXFxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MgdGVzdCBydW5uZXIuXFxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHNcXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXFxuLVRSVU5ORVJfRVhUUkFfU09VUkNFUyA6PSB0ZXN0X3Byb2dzLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBjZ3JvdXBfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgdHJhY2VfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgbmV0d29ya19oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCB0ZXN0aW5nX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IGJ0Zl9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBjYXBfaGVscGVycy5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgdW5wcml2X2hlbHBlcnMuYyBcXHRcXFxcXFxuLVxcdFxcdFxcdCBzeXNjdGxfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgbmV0bGlua19oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBqaXRfZGlzYXNtX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IGlvX2hlbHBlcnMuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IHRlc3RfbG9hZGVyLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCB4c2suY1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGRpc2FzbS5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgZGlzYXNtX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IGpzb25fd3JpdGVyLmMgXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgJChWRVJJRllfU0lHX0hEUilcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFxcdFxcXFxcXG4tXFx0XFx0XFx0IGJwZnRvb2xfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgdXNkdF8xLmMgdXNkdF8yLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCAkKExJQkFSRU5BX1NLRUwpXFx0XFxcXFxcbi1cXHRcXHRcXHQgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICBpbWFfc2V0dXAuc2ggXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncykpXFxuLVxcbi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLlxcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpXFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKVxcbi1cXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1jcHV2NCB0ZXN0IHJ1bm5lci5cXG4rIyBHZW5lcmF0ZWQgdGVzdCBsaXN0IGhlYWRlcnNcXG4rXFxuK2RlZmluZSBnZW5fdGVzdHNfaGRyXFxuK1xcdCQoY2FsbCBtc2csVEVTVC1IRFIsLCRAKVxcbitcXHQkKFEpKGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJztcXHRcXHRcXFxcXFxuK1xcdFxcdCAgc2VkIC1uIC1FICdzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10rKVxcXFwoKHZvaWQpP1xcXFwpLiovREVGSU5FX1RFU1QoXFxcXDIpL3AnXFx0XFxcXFxcbitcXHRcXHQkKEBEKS8qLmMgfCBzb3J0KSBcXHUwMDNlICRAXFxuK2VuZGVmXFxuK1xcbitwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXFxuK1xcdCQoZ2VuX3Rlc3RzX2hkcilcXG4rXFxuK21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpXFxuK1xcdCQoZ2VuX3Rlc3RzX2hkcilcXG4rXFxuKyMgVGVzdCBydW5uZXIgaW5zdGFuY2VzLCBvbmUgc3ViLW1ha2UgZWFjaCAoc2VlIE1ha2VmaWxlLnJ1bm5lcikuXFxuK1xcbisjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cyBhbmQgVEVTVF9LTU9EUyBhcmUgZXhwb3J0ZWRcXG4rIyB0byB0aGUgcnVubmVyIHN1Yi1tYWtlcy4gQ0MgaXMgcGFzc2VkIGV4cGxpY2l0bHkgaW5zdGVhZDogZXhwb3J0aW5nIGl0XFxuKyMgd291bGQgYWxzbyBsZWFrIGxpYi5taydzIENDIGludG8gdGhlIGxpYmJwZiBzdWItYnVpbGQsIHdoaWNoIGNvbXB1dGVzXFxuKyMgaXRzIG93bi4gKCdleHBvcnQgTkFNRScgb24gYW4gdW5kZWZpbmVkXFxuKyMgdmFyaWFibGUgY3JlYXRlcyBhbiBlbXB0eSBvbmUsIHNvIHRoZXNlIHN0YXkgYmVsb3cgdGhlIGRlZmluaXRpb25zLilcXG4rZXhwb3J0IExMVk1fTERMSUJTIExMVk1fTERGTEFHUyBURVNUX0tNT0RTXFxuK2V4cG9ydCBJTkhFUklURURfQ0ZMQUdTIElOSEVSSVRFRF9MREZMQUdTXFxuK1xcbitSVU5ORVJfTUFLRSA6PSAkKE1BS0UpIC1mIE1ha2VmaWxlLnJ1bm5lciBPVVRQVVQ9JChPVVRQVVQpIENDPSckKENDKSdcXHRcXFxcXFxuK1xcdCAgICAgICBDTEFORz0nJChDTEFORyknXFxuK1xcbisjIEV2ZXJ5dGhpbmcgYSBydW5uZXIgaW5zdGFuY2UgcmVmZXJlbmNlcyBidXQgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQuXFxuK1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKVxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3ZlcmlzdGF0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXFx0XFxcXFxcbitcXHRcXHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFx0XFx0XFxcXFxcbitcXHRcXHQgIHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKFJVTk5FUl9PQkpTKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXFx0XFx0XFxcXFxcbitcXHRcXHQgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUylcXG4rXFxuKyMgVGhlIG1haW4gTWFrZWZpbGUgY2Fubm90IHRlbGwgd2hldGhlciAkKE9VVFBVVCkvdGVzdF9wcm9ncyBpcyBzdGFsZSAtXFxuKyMgb25seSB0aGUgcnVubmVyIHN1Yi1tYWtlIGtub3dzIGl0cyBmdWxsIGRlcGVuZGVuY3kgZ3JhcGguIEZPUkNFIG1ha2VzXFxuKyMgdGhlIGRlbGVnYXRpbmcgcnVsZXMgYmVsb3cgYWx3YXlzIHJ1bjsgdGhlaXIgZGVwZW5kZW50cyBzdGlsbCByZWJ1aWxkXFxuKyMgb24gbXRpbWUgb25seS5cXG4rRk9SQ0U6XFxuK1xcbisjIFRoZSBkZWZhdWx0IGZsYXZvcidzIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgYXJlIGNvbnN1bWVkIGhlcmUgYXNcXG4rIyB3ZWxsIGFzIGluc2lkZSB0aGUgcnVubmVyIHN1Yi1tYWtlczogYmVuY2gsIHhza3hjZWl2ZXIsIHhkcF8qIGFuZFxcbisjIHRlc3RfY3BwIGRlcGVuZCBvbiBpbmRpdmlkdWFsIHNrZWxldG9ucywgYW5kIGxpYi5taydzXFxuKyMgaW5zdGFsbCBydWxlIGNvcGllcyB0aGUgQlBGIG9iamVjdHMuIEluc3RhbnRpYXRlIHRoZSBzaGFyZWQgcnVsZXNcXG4rIyAoTWFrZWZpbGUuc2tlbCkgZm9yIHRoZSBkZWZhdWx0IGZsYXZvciwgc28gdGhvc2UgY29uc3VtZXJzIGRlcGVuZCBvblxcbisjIGV4YWN0bHkgdGhlIGZpbGVzIHRoZXkgdXNlOyB0aGUgdW5mbGF2b3JlZCBydW5uZXJzJyBkZWxlZ2F0aW9uIHJ1bGVzXFxuKyMgYmVsb3cgbGlzdCB0aGUgd2hvbGUgc2V0IGFzIHByZXJlcXVpc2l0ZXMsIHNvIHRob3NlIHN1Yi1tYWtlcyBmaW5kIHRoZVxcbisjIGZpbGVzIHRoaXMgTWFrZWZpbGUgb3ducyB1cCB0byBkYXRlLlxcbitSRElSIDo9ICQoT1VUUFVUKVxcbitGTEFWT1IgOj1cXG4rQklOQVJZIDo9IHRlc3RfcHJvZ3NcXG4rQlBGX0NDIDo9ICQoQ0xBTkcpXFxuK0JQRl9DQ19NU0cgOj0gQ0xORy1CUEZcXG4rQlBGX1NZU19JTkNMVURFUyA6PSAkKENMQU5HX1NZU19JTkNMVURFUylcXG4rQlBGX0NDX0ZMQUdTIDo9IC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12M1xcbitCUEZfREVGSU5FUyA6PSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuK2luY2x1ZGUgTWFrZWZpbGUuc2tlbFxcbitcXG4rREVGQVVMVF9SVU5ORVJfQVJHUyA6PSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzXFx0XFxcXFxcbitcXHRCUEZfQ0M9JyQoQlBGX0NDKScgQlBGX0NDX01TRz0kKEJQRl9DQ19NU0cpXFx0XFx0XFx0XFxcXFxcbitcXHRCUEZfU1lTX0lOQ0xVREVTPSckKEJQRl9TWVNfSU5DTFVERVMpJ1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0QlBGX0NDX0ZMQUdTPSckKEJQRl9DQ19GTEFHUyknIEJQRl9ERUZJTkVTPSQoQlBGX0RFRklORVMpXFxuK1xcbiskKE9VVFBVVCkvdGVzdF9wcm9nczogJChSVU5ORVJfUFJFUkVRUykgJChCUEZfT0JKUykgJChBTExfU0tFTFMpIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgJChERUZBVUxUX1JVTk5FUl9BUkdTKVxcbitcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPW5vX2FsdTMyIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXFxcXG4rXFx0XFx0QlBGX0NDPSckKENMQU5HKScgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSckKENMQU5HX1NZU19JTkNMVURFUyknXFx0XFxcXFxcbitcXHRcXHRCUEZfQ0NfRkxBR1M9Jy1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12MidcXG4rXFxuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxjcHV2NCkpXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLWNwdXY0OiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1jcHV2NCBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9DQz0nJChDTEFORyknIEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0nJChDTEFOR19TWVNfSU5DTFVERVMpJ1xcdFxcXFxcXG4rXFx0XFx0QlBGX0NDX0ZMQUdTPSctTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djQnXFx0XFx0XFxcXFxcbitcXHRcXHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuIGVuZGlmXFxuIFxcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXFxuIGlmbmVxICgkKEJQRl9HQ0MpLClcXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBHQ0NfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSlcXG4rIyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSwgYXMgdGhlIHJ1bGVcXG4rIyB0aGlzIHJlcGxhY2VzIGhhZCBpdC5cXG4rR0NDX1NZU19JTkNMVURFUyA6PSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKVxcbitcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9YnBmX2djYyBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9DQz0nJChCUEZfR0NDKScgQlBGX0NDX01TRz1HQ0MtQlBGXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRCUEZfU1lTX0lOQ0xVREVTPSckKEdDQ19TWVNfSU5DTFVERVMpJ1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0QlBGX0NDX0ZMQUdTPSctREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMidcXG4gZW5kaWZcXG4gXFxuLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci5cXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gbWFwX3Rlc3RzXFxuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xcbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmNcXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PVxcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KVxcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj1cXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcXG4rIyB0ZXN0X21hcHMgY29tcGlsZXMgbWFwX3Rlc3RzLyouYyBhZ2FpbnN0IHRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9uc1xcbiskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSAkKEJQRl9PQkpTKVxcdFxcXFxcXG4rXFx0XFx0ICAgICAkKEFMTF9TS0VMUykgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9tYXBzIEZMQVZPUj0gVEVTVFNfRElSPW1hcF90ZXN0c1xcbitcXG4rVEVTVF9HRU5fRklMRVMgKz0gJChCUEZfT0JKUylcXG4gXFxuICMgRGVmaW5lIHRlc3RfdmVyaWZpZXIgdGVzdCBydW5uZXIuXFxuICMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxcbiAjIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0J3Mgd29ydGgganVzdFxcbiAjIGV4cGxpY2l0bHkgZGVmaW5pbmcgYWxsIHRoZSBydWxlcyBleHBsaWNpdGx5LlxcbiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcXG4tXFx0JChzaGVsbCAoIGNkIHZlcmlmaWVyLzsgXFxcXFxcbitcXHQkKFEpKCBjZCB2ZXJpZmllci87IFxcXFxcXG4gXFx0XFx0ICBlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7IFxcXFxcXG4gXFx0XFx0ICBlY2hvICcjaWZkZWYgRklMTF9BUlJBWSc7IFxcXFxcXG4gXFx0XFx0ICBscyAqLmMgMlxcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICdzQFxcXFwoLipcXFxcKUAjaW5jbHVkZSBcXFxcXFxcIlxcXFwxXFxcXFxcXCJAJzsgXFxcXFxcbiBcXHRcXHQgIGVjaG8gJyNlbmRpZicgXFxcXFxcbi1cXHRcXHQpIFxcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaClcXG4rXFx0XFx0KSBcXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcXG4gJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbkBAIC05NjcsMTEgKzU2NiwxMSBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopXFxuIFxcdCQoY2FsbCBtc2csQ1hYLCwkQClcXG4gXFx0JChRKSQoQ1hYKSAkKENYWEZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuY3BwLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuLSMgQmVuY2htYXJrIHJ1bm5lclxcbisjIEJlbmNobWFyayBydW5uZXIuIEV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi5cXG4rQkVOQ0hfT0JKUyA6PSAkKHNvcnQgJChwYXRzdWJzdCBiZW5jaHMvJS5jLCQoT1VUUFVUKS8lLm8sJCh3aWxkY2FyZCBiZW5jaHMvYmVuY2hfKi5jKSkpXFxuICQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUJFTkNIJyAnJChub3RkaXIgJEApJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCRU5DSClcXG4gJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vOiAkKE9VVFBVVCkvdGVzdF9vdmVyaGVhZC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubzogJChPVVRQVVQpL3RyaWdnZXJfYmVuY2guc2tlbC5oXFxuICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcXFxcbkBAIC05OTksMzMgKzU5OCwxMSBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXFxcXG4gXFx0XFx0ICQoVEVTVElOR19IRUxQRVJTKSBcXFxcXFxuIFxcdFxcdCAkKFRSQUNFX0hFTFBFUlMpIFxcXFxcXG4gXFx0XFx0ICQoQ0dST1VQX0hFTFBFUlMpIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfbGliYXJlbmEubyBcXFxcXFxuK1xcdFxcdCAkKEJFTkNIX09CSlMpIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS91c2R0XzEubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcXFxcbi1cXHRcXHQgI1xcbitcXHRcXHQgJChPVVRQVVQpL3VzZHRfMi5vXFxuIFxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4tXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJEA7IHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1MSU5LJyAnJChub3RkaXIgJEApIChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKScgMVxcdTAwM2VcXHUwMDI2MikpXFxuK1xcdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxMSU5LLCwoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkpXFxuIFxcbiAjIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5nIGFib3V0IHNucHJpbnRmIHRydW5jYXRpbmcgc3RyaW5ncyBsaWtlOlxcbiAjXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi41YzZjMTQ3ZDAzYzc0XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcXG5AQCAtMCwwICsxLDE5NiBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0c1xcbisjIGJ1aWxkLCBpbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlIGFuZCBNYWtlZmlsZS5ydW5uZXIuIERlZmluaXRpb25zXFxuKyMgZm9sbG93IHRoZSBvcmRlciB0aGV5IGhhZCBpbiB0aGUgTWFrZWZpbGUgYmVmb3JlIHRoZSBzcGxpdC5cXG4rXFxuK1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcXG4rTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxcbitCUEZESVIgOj0gJChMSUJESVIpL2JwZlxcbitUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXFxuK1RPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxcbitBUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxcbitpZm5lcSAoJChPKSwpXFxuK0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXFxuK2Vsc2VcXG4rR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcXG4rZW5kaWZcXG4rR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXFxuK1BLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcXG4rXFxuK2lmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxcbisgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcXG4rZW5kaWZcXG4rXFxuK2lmZGVmIEFTQU5cXG4rU0FOX0NGTEFHUyBcXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXG4rZWxzZVxcbitTQU5fQ0ZMQUdTXFx0Pz1cXG4rZW5kaWZcXG4rU0FOX0xERkxBR1NcXHQ/PSAkKFNBTl9DRkxBR1MpXFxuK1JFTEVBU0VcXHRcXHQ/PVxcbitPUFRfRkxBR1NcXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcXG4rXFxuK0xJQkVMRl9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcXHUwMDNlL2Rldi9udWxsKVxcbitMSUJFTEZfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXFxuK1xcbisjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxcbisjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xcbisjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxcbitCUEZfU1RSSUNUX0JVSUxEID89IDFcXG4rUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXFxuK1xcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXFxuKyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXFxuKyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXFxuKyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxcbisjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcXG4rc2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcXFxcbitcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSknIDFcXHUwMDNlXFx1MDAyNjI7IH0pXFxuK1xcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgcHJlZml4OiB3aGVuIGEgcHJlcmVxdWlzaXRlIG9iamVjdCBpcyBtaXNzaW5nXFxuKyMgKGl0cyBjb21waWxlIGZhaWxlZCBhbmQgd2FzIHNraXBwZWQpLCByZW1vdmUgdGhlIHRhcmdldCBhbmQgJCgzKSxcXG4rIyBlbWl0IGEgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHdpdGhvdXQgcnVubmluZyB0aGUgcmVzdCBvZlxcbisjIHRoZSByZWNpcGUuXFxuKyMgJCgxKSAtIFNLSVAgdGFnXFxuKyMgJCgyKSAtIGlucHV0IGZpbGVzIHRvIGNoZWNrXFxuKyMgJCgzKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxcbitza2lwX2lmX21pc3NpbmcgPSAkKGlmICQoUEVSTUlTU0lWRSksZm9yIGYgaW4gJCgyKTsgZG8gWyAtZiAkJGYgXSB8fCB7IFxcXFxcXG4rXFx0JChSTSkgJEAgJCgzKTsgXFxcXFxcbitcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKScgMVxcdTAwM2VcXHUwMDI2MjsgZXhpdCAwOyB9OyBkb25lOylcXG4rXFxuK2lmZXEgKCQoc3JjdHJlZSksKVxcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4rc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbitlbmRpZlxcbitcXG4rQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXFx0XFx0XFx0XFxcXFxcbitcXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcXHRcXHRcXFxcXFxuK1xcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVxcdFxcXFxcXG4rXFx0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXFxuK0xETElCUyArPSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcXG4rXFxuK1BDQVBfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyBcXFwiLURUUkFGRklDX01PTklUT1I9MVxcXCIpXFxuK1BDQVBfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rTERMSUJTICs9ICQoUENBUF9MSUJTKVxcbitcXG4raWZuZXEgKCQoTExWTSksKVxcbisjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcXG4rQ0xBTkdfV0FSTl9DRkxBR1MgOj0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XFxuK2VuZGlmXFxuK1xcbisjIEJlZm9yZSB0aGUgc3BsaXQgdGhlc2UgZGVmaW5pdGlvbnMgc2F0IGFib3ZlIHRoZSAuLi9saWIubWsgaW5jbHVkZTpcXG4rIyB0aGV5IGFwcGVuZGVkIHRvIHRoZSBmbGFncyBpbmhlcml0ZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZFxcbisjIGxpYi5taydzIGFkZGl0aW9ucyAoVVNFUkNGTEFHUy9VU0VSTERGTEFHUyBhbW9uZyB0aGVtKSBjYW1lIGxhc3QuXFxuKyMgVGhpcyBmaWxlIGlzIHBhcnNlZCBhZnRlciBsaWIubWsgYXQgdGhlIHRvcCBsZXZlbCBhbmQgaW4gaXRzIHBsYWNlXFxuKyMgaW4gdGhlIHJ1bm5lciBzdWItbWFrZXMsIHNvIHRoZSBzYW1lIG9yZGVyIGlzIHJlYnVpbHQgaGVyZS4gVGhlXFxuKyMgaW5jbHVkZXIgc25hcHNob3RzIHRoZSBpbmhlcml0ZWQgZmxhZ3MgaW4gSU5IRVJJVEVEX0NGTEFHUyBhbmRcXG4rIyBJTkhFUklURURfTERGTEFHUyBiZWZvcmUgbGliLm1rIHJ1bnM7IHdoYXRldmVyIGxpYi5tayBhcHBlbmRlZCBzaW5jZVxcbisjIGlzIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50IHZhbHVlLlxcbitsaWJfbWtfYWRkZWQgPSAkKHdvcmRsaXN0ICQod29yZHMgeCAkKElOSEVSSVRFRF8kKDEpKSksJCh3b3JkcyAkKCQoMSkpKSwkKCQoMSkpKVxcbitMSUJfTUtfQ0ZMQUdTIDo9ICQoY2FsbCBsaWJfbWtfYWRkZWQsQ0ZMQUdTKVxcbitMSUJfTUtfTERGTEFHUyA6PSAkKGNhbGwgbGliX21rX2FkZGVkLExERkxBR1MpXFxuK0NGTEFHUyA9ICQoSU5IRVJJVEVEX0NGTEFHUykgJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKVxcdFxcdFxcXFxcXG4rXFx0ICQoQ0xBTkdfV0FSTl9DRkxBR1MpICQoTElCX01LX0NGTEFHUylcXG4rTERGTEFHUyA9ICQoSU5IRVJJVEVEX0xERkxBR1MpICQoU0FOX0xERkxBR1MpICQoTElCX01LX0xERkxBR1MpXFxuK1xcbisjIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyKykuXFxuKyMgVGhpcyBydW5zIGFmdGVyIC4uL2xpYi5tayBoYXMgcmVzb2x2ZWQgQ0xBTkcgZnJvbSBMTFZNPVxcdTAwM2NzdWZmaXggb3IgcGF0aFxcdTAwM2UsXFxuKyMgc28gaXQgcHJvYmVzIHRoZSBjb21waWxlciB0aGF0IGJ1aWxkcyB0aGUgQlBGIG9iamVjdHMuXFxuK0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXFxcXG4rXFx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcXFxcbitcXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxcXFxuK1xcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyAxKVxcbitcXG4rU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXFxuK0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxcbitJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXFxuK0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4rSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxcbitIT1NUX1NDUkFUQ0hfRElSXFx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcXG4rSE9TVF9JTkNMVURFX0RJUlxcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxcbitlbHNlXFxuK0hPU1RfQlVJTERfRElSXFx0XFx0Oj0gJChCVUlMRF9ESVIpXFxuK0hPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKFNDUkFUQ0hfRElSKVxcbitIT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChJTkNMVURFX0RJUilcXG4rZW5kaWZcXG4rUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcXG4rXFxuK0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXFxuK0NST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXFxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXFxuK1VTRV9CT09UU1RSQVAgOj0gXFxcIlxcXCJcXG4rZWxzZVxcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXFxuK1VTRV9CT09UU1RSQVAgOj0gXFxcImJvb3RzdHJhcC9cXFwiXFxuK2VuZGlmXFxuK1xcbitCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxcbitcXG4rIyBHZXQgQ2xhbmcncyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnlcXG4rIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcXFwibWlzc2luZ1xcXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXFxuKyMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxcbisjXFxuKyMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxcbisjIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXFxuK2RlZmluZSBnZXRfc3lzX2luY2x1ZGVzXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXFx1MDAzYy9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIFxcXFxcXG4rXFx0fCBzZWQgLW4gJy9cXHUwMDNjLi4uXFx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcXFwoLy4qXFxcXCl8LWlkaXJhZnRlciBcXFxcMXxwIH0nKSBcXFxcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX3Jpc2N2X3hsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMsICQkMyl9JykgXFxcXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMpfScpIFxcXFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXFxcIi1EJXM9JXMgXFxcIiwgJCQyLCAkJDMpfScpXFxuK2VuZGVmXFxuK1xcbisjIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cXG4rSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBcXFxcXFxuK1xcdFxcdFxcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXFxuK01FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxcbitcXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbitDTEFOR19UQVJHRVRfQVJDSCA9IC0tdGFyZ2V0PSQobm90ZGlyICQoQ1JPU1NfQ09NUElMRTolLT0lKSlcXG4rZW5kaWZcXG4rXFxuKyMgSW1tZWRpYXRlIG9uIHB1cnBvc2U6IGV4cGFuZGluZyBnZXRfc3lzX2luY2x1ZGVzIGZvcmtzIHNldmVyYWwgc2hlbGxzLlxcbitDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpXFxuK0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTilcXHRcXFxcXFxuK1xcdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtSSQoVE9PTFNJTkNESVIpIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcXHRcXHRcXFxcXFxuK1xcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtc3RkPWdudTExXFx0XFx0IFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLWZtcy1leHRlbnNpb25zXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1Xbm8taW5pdGlhbGl6ZXItb3ZlcnJpZGVzXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICNcXG4rIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcXG4rXFxuK1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2hcXG4rVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXFxuK1BSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cXG4rXFxuK0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXFxuK1xcbitpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxcbitMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcXG4rQ0ZMQUdTICs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXFxuK2VuZGlmXFxuK1xcbitSVU5ORVJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sXFx0XFx0XFx0XFxcXFxcbitcXHR0ZXN0X3Byb2dzLm8gY2dyb3VwX2hlbHBlcnMubyB0cmFjZV9oZWxwZXJzLm9cXHRcXHRcXHRcXFxcXFxuK1xcdG5ldHdvcmtfaGVscGVycy5vIHRlc3RpbmdfaGVscGVycy5vIGJ0Zl9oZWxwZXJzLm9cXHRcXHRcXFxcXFxuK1xcdGNhcF9oZWxwZXJzLm8gdW5wcml2X2hlbHBlcnMubyBzeXNjdGxfaGVscGVycy5vXFx0XFx0XFx0XFxcXFxcbitcXHRuZXRsaW5rX2hlbHBlcnMubyBqaXRfZGlzYXNtX2hlbHBlcnMubyBpb19oZWxwZXJzLm9cXHRcXHRcXFxcXFxuK1xcdHRlc3RfbG9hZGVyLm8geHNrLm8gZGlzYXNtLm8gZGlzYXNtX2hlbHBlcnMub1xcdFxcdFxcdFxcXFxcXG4rXFx0anNvbl93cml0ZXIubyBicGZ0b29sX2hlbHBlcnMubyB1c2R0XzEubyB1c2R0XzIubylcXG4rUlVOTkVSX09CSlMtdGVzdF9tYXBzIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sXFx0XFx0XFx0XFxcXFxcbitcXHR0ZXN0X21hcHMubyB0ZXN0aW5nX2hlbHBlcnMubylcXG4rXFxuK1JVTk5FUl9MSUJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoT1VUUFVUKS9maW5kX2JpdC5vXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi43MzYxZmY3ZGUzMzBjXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJcXG5AQCAtMCwwICsxLDE5OSBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcXG4rIyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLlxcbisjXFxuKyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSAtIHRoZSBmbGF2b3JlZCBvbmVzIHdpdGggdGhlaXJcXG4rIyBvd24gb3V0cHV0IGRpcmVjdG9yeSwgdGhlIHVuZmxhdm9yZWQgb25lcyBzaGFyaW5nICQoT1VUUFVUKSB3aXRoIHRoZVxcbisjIG1haW4gTWFrZWZpbGUgLSBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlOiBub1xcbisjIGRlZmluZS9ldmFsIGxheWVyLCBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5c1xcbisjIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkXFxuKyMgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLFxcbisjIHJlc29sdmVfYnRmaWRzLCB2bWxpbnV4LmgsIHZlcmlzdGF0LCB1c2Vyc3BhY2Ugb2JqZWN0cywgc2lnbmluZyBrZXksXFxuKyMgbGliYXJlbmEgc2tlbGV0b25zLCBleHRyYSBiaW5hcmllcyBhbmQgLSBmb3IgdGhlXFxuKyMgdW5mbGF2b3JlZCBpbnN0YW5jZXMgLSB0aGUgZGVmYXVsdCBmbGF2b3IncyBCUEYgb2JqZWN0cyBhbmRcXG4rIyBza2VsZXRvbnMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZFxcbisjIGFyZSByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLlxcbisjXFxuKyMgUGFyYW1ldGVycywgcGFzc2VkIG9uIHRoZSBzdWItbWFrZSBjb21tYW5kIGxpbmU6XFxuKyMgICBPVVRQVVQgICAgICB0aGUgc2VsZnRlc3RzIG91dHB1dCBkaXJlY3RvcnksIGFzIGxpYi5tayByZXNvbHZlZCBpdFxcbisjICAgUlVOTkVSICAgICAgYmFzZSBiaW5hcnkgbmFtZTogdGVzdF9wcm9ncyB8IHRlc3RfbWFwc1xcbisjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djY1xcbisjICAgVEVTVFNfRElSICAgZGlyZWN0b3J5IHdpdGggdGhlIHRlc3Qgc291cmNlczogcHJvZ190ZXN0cyB8IG1hcF90ZXN0c1xcbisjICAgQlBGX0NDICAgICAgY29tcGlsZXIgZm9yIHByb2dzLyouYyBCUEYgb2JqZWN0cyAoJChDTEFORykgb3JcXG4rIyAgICAgICAgICAgICAgICQoQlBGX0dDQykpOyBlbXB0eSBmb3IgdGVzdF9tYXBzLCB3aGljaCBidWlsZHMgbm9uZVxcbisjICAgQlBGX0NDX01TRyAgYnVpbGQtbG9nIHRhZzogQ0xORy1CUEYgfCBHQ0MtQlBGXFxuKyMgICBCUEZfQ0NfRkxBR1NcXG4rIyAgICAgICAgICAgICAgIGNvbXBpbGVyLXNwZWNpZmljIGZsYWdzICgtTzIsIHRhcmdldC8tbWNwdSBvciBnY2Mga25vYnMpXFxuKyMgICBCUEZfU1lTX0lOQ0xVREVTXFxuKyMgICAgICAgICAgICAgICBzeXN0ZW0gaW5jbHVkZSBmbGFncyBtYXRjaGluZyBCUEZfQ0NcXG4rIyAgIEJQRl9ERUZJTkVTIGV4dHJhIGRlZmluZXMgZm9yIEJQRiBvYmplY3RzIChlLmcuIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMpXFxuKyMgICBDQywgQ0xBTkcgICBDIGNvbXBpbGVyIGFuZCBjbGFuZyAoYXMgcmVzb2x2ZWQgYnkgbGliLm1rIGluIHRoZSBtYWluXFxuKyMgICAgICAgICAgICAgICBNYWtlZmlsZTsgY2xhbmcgYWxzbyBkcml2ZXMgdGhlIGZlYXR1cmUgcHJvYmVzIGluXFxuKyMgICAgICAgICAgICAgICBNYWtlZmlsZS5idWlsZHZhcnMpXFxuKyNcXG4rIyBGcm9tIHRoZSBlbnZpcm9ubWVudCwgZXhwb3J0ZWQgYnkgdGhlIG1haW4gTWFrZWZpbGU6XFxuKyMgICBMTFZNX0xETElCUy9MTFZNX0xERkxBR1NcXG4rIyAgICAgICAgICAgICAgIHJlc3VsdHMgb2YgdGhlIHRvcC1sZXZlbCBMTFZNIGZlYXR1cmUgcHJvYmVcXG4rIyAgIFRFU1RfS01PRFMgIHRoZSBrZXJuZWwgdGVzdCBtb2R1bGVzIHRvIGNvcHkgaW50byBhIGZsYXZvciBkaXJlY3RvcnlcXG4rIyAgIElOSEVSSVRFRF9DRkxBR1MvSU5IRVJJVEVEX0xERkxBR1NcXG4rIyAgICAgICAgICAgICAgIHRoZSBmbGFncyB0aGUgbWFpbiBNYWtlZmlsZSBpbmhlcml0ZWQgZnJvbSBpdHMgb3duXFxuKyMgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAoc2VlIE1ha2VmaWxlLmJ1aWxkdmFycylcXG4rXFxuK2luY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxcbitcXG4rIyBTYW1lIG1lc3NhZ2UgaGVscGVycyBhcyAuLi9saWIubWssIHdoaWNoIG9ubHkgdGhlIHRvcCBsZXZlbCBpbmNsdWRlcy5cXG4raWZlcSAoJChWKSwxKVxcbitRID1cXG4rbXNnID1cXG4rZWxzZVxcbitRID0gQFxcbittc2cgPSBAcHJpbnRmICcgICUtOHMlcyAlcyVzXFxcXG4nIFxcXCIkKDEpXFxcIiBcXFwiJChpZiAkKDIpLCBbJCgyKV0pXFxcIiBcXFwiJChub3RkaXIgJCgzKSlcXFwiIFxcXCIkKGlmICQoNCksICQoNCkpXFxcIjtcXG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XFxuK2VuZGlmXFxuK1xcbisjIFRoZSB0b3AgTWFrZWZpbGUgaGFuZHMgZG93biB0aGUgZmxhZ3MgaXQgaW5oZXJpdGVkIGZyb20gdGhlXFxuKyMgZW52aXJvbm1lbnQgaW4gSU5IRVJJVEVEX0NGTEFHUy9JTkhFUklURURfTERGTEFHUzsgc3RhcnQgZnJvbSB0aG9zZVxcbisjIHJhdGhlciB0aGFuIGZyb20gaXRzIGFzc2VtYmxlZCBDRkxBR1MvTERGTEFHUywgd2hpY2ggbWFrZSBleHBvcnRzXFxuKyMgYWxvbmdzaWRlIHdoZW5ldmVyIHRoZXkgY2FtZSBmcm9tIHRoZSBlbnZpcm9ubWVudC5cXG4rQ0ZMQUdTIDo9ICQoSU5IRVJJVEVEX0NGTEFHUylcXG4rTERGTEFHUyA6PSAkKElOSEVSSVRFRF9MREZMQUdTKVxcbitcXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcXG4rXFxuKyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWssIGluIGl0c1xcbisjIG9yZGVyICh0aGUgc2VsZnRlc3RzIGluY2x1ZGUgcGF0aCBpcyBzcGVsbGVkIGZyb20gc3JjdHJlZSBoZXJlOyBsaWIubWtcXG4rIyBzcGVsbHMgaXQgZnJvbSBpdHMgb3duIGRpcmVjdG9yeSkuXFxuK2lmbmVxICgkKExMVk0pLClcXG4rQ0ZMQUdTICs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyXFxuK0NGTEFHUyArPSAtV25vLWdudS12YXJpYWJsZS1zaXplZC10eXBlLW5vdC1hdC1lbmRcXG4rZW5kaWZcXG4rQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0U9XFxuK0NGTEFHUyArPSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcXG4rQ0ZMQUdTICs9ICQoVVNFUkNGTEFHUylcXG4rTERGTEFHUyArPSAkKFVTRVJMREZMQUdTKVxcbitcXG4rQklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXFxuK1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKVxcbitcXG4rYWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXFxuKy5QSE9OWTogYWxsXFxuK1xcbisjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxcbisuREVMRVRFX09OX0VSUk9SOlxcbitcXG4rIyBObyBidWlsdC1pbiBydWxlczogZXZlcnkgZmlsZSBidWlsdCBoZXJlIGhhcyBhbiBleHBsaWNpdCBydWxlLCBhbmQgdGhlXFxuKyMgb2JqZWN0cyB0aGF0IGNvbWUgZnJvbSB0aGUgbWFpbiBNYWtlZmlsZSBoYXZlIHRvIGJlIGFuIGVycm9yIHdoZW5cXG4rIyBtaXNzaW5nIHJhdGhlciB0aGFuIGEgc2lsZW50IHJlYnVpbGQgYnkgdGhlIGJ1aWx0LWluICUubyByZWNpcGVzLlxcbitNQUtFRkxBR1MgKz0gLXJcXG4rXFxuKyMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHlcXG4rIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3RcXG4rIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxcbitQRVJNSVNTSVZFX1RFU1RTIDo9ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncywkKFJVTk5FUikpLCQoUEVSTUlTU0lWRSkpXFxuK1xcbiskKFJESVIpOlxcbitcXHQkKGNhbGwgbXNnLE1LRElSLCwkQClcXG4rXFx0JChRKW1rZGlyIC1wICRAXFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFBlci1ydW5uZXIgc291cmNlc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4raWZlcSAoJChSVU5ORVIpLHRlc3RfcHJvZ3MpXFxuK0dFTkVSQVRFRF9IRFJTIDo9ICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuK0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGltYV9zZXR1cC5zaCBcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcXG4rZW5kaWZcXG4rXFxuK1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSlcXG4rVEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSlcXG4rVEVTVF9ERVBTICA6PSAkKFRFU1RfT0JKUzoubz0uZClcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyAtIHJ1bGVzIHNoYXJlZCB3aXRoIHRoZSBtYWluIE1ha2VmaWxlXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitpbmNsdWRlIE1ha2VmaWxlLnNrZWxcXG4rXFxuKyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxcbisjIGZ1bGwgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgY29ycmVzcG9uZGluZyAlLm9cXG4rIyBmaWxlLiB2cGF0aCBkaXJlY3RpdmVzIGJlbG93IGluc3RydWN0IG1ha2UgdG8gc2VhcmNoIGZvciBza2VsIGZpbGVzXFxuKyMgaW4gJChSRElSKSwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Llxcbit2cGF0aCAlLnNrZWwuaCAkKFJESVIpXFxuK3ZwYXRoICUubHNrZWwuaCAkKFJESVIpXFxuK3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcXG4rXFxuKyMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcXG4rIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcXG4rIyBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRCBiZWxvdzsgdGhlXFxuKyMgc2VwYXJhdGUgbm8tcmVjaXBlIHJ1bGUgZm9yIHRoZW0gb3JkZXJzIHRoZSBmaXJzdCBjb21waWxhdGlvbiBhZnRlclxcbisjIHNrZWxldG9uIGdlbmVyYXRpb24gYW5kIHJlLW9yZGVycyB0ZXN0IG9iamVjdCBjb21waWxhdGlvbiB3aGVuIGhlYWRlcnNcXG4rIyBjaGFuZ2UuXFxuKyQoVEVTVF9PQkpTKTogJChSRElSKS8lLnRlc3QubzogJChURVNUU19ESVIpLyUuYyB8ICQoUkRJUikvJS50ZXN0LmRcXG4rXFx0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXFxuK1xcdCQoUSkoY2QgJChARCkgXFx1MDAyNlxcdTAwMjYgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJFxcdTAwM2MgJChMRExJQlMpIC1vICQoQEYpKSBcXFxcXFxuK1xcdFxcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKVxcbitcXHQkKGlmICQoVEVTVF9ORUVEU19CVEZJRFMpLFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0JChRKWlmIFsgLWYgJEAgXTsgdGhlblxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcXFxuJyBcXFwiQlRGSURTXFxcIiBcXFwiIFskKEJJTkFSWSldXFxcIiBcXFwiJChub3RkaXIgJEApXFxcIik7IFxcXFxcXG4rXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChSRElSKS9idGZfZGF0YS5icGYubyAkQDtcXHRcXFxcXFxuK1xcdFxcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICRALkJURl9pZHMgJEA7XFx0XFx0XFxcXFxcbitcXHRcXHRmaSlcXG4rXFxuKyQoVEVTVF9ERVBTKTogJChSRElSKS8lLnRlc3QuZDogJChURVNUU19ESVIpLyUuYyAkKEdFTkVSQVRFRF9IRFJTKSAkKEJQRk9CSikgXFxcXFxcbitcXHQgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpXFxuK1xcbitpbmNsdWRlICQod2lsZGNhcmQgJChURVNUX0RFUFMpKVxcbitcXG4rIyBub24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhciwgd2VcXG4rIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXFxuKy5QSE9OWTogZXh0cmFzXFxuK2V4dHJhczogJChpZiAkKFBFUk1JU1NJVkUpLCQod2lsZGNhcmQgJChFWFRSQV9GSUxFUykpLCQoRVhUUkFfRklMRVMpKSB8ICQoUkRJUilcXG4raWZuZXEgKCQoRkxBVk9SKTokKHJlYWxwYXRoICQoT1VUUFVUKSksOiQoQ1VSRElSKSlcXG4raWZuZXEgKCQoc3RyaXAgJChFWFRSQV9GSUxFUykpLClcXG4rXFx0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChFWFRSQV9GSUxFUykpXFxuK1xcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cXG4rZW5kaWZcXG4rZW5kaWZcXG4rXFxuKyMgc29tZSBYLnRlc3QubyBmaWxlcyBoYXZlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9uIFkuYnBmLm8gZmlsZXNcXG4rIyBJbiBwZXJtaXNzaXZlIG1vZGUsIGxpbmsgd2hhdGV2ZXIgdGVzdCBvYmplY3RzIHdlcmUgc3VjY2Vzc2Z1bGx5IGJ1aWx0XFxuKyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk6IHRoZSBvYmplY3RzIGV4aXN0aW5nIGF0XFxuKyMgcGFyc2UgdGltZSBhcmUgbm9ybWFsIHByZXJlcXVpc2l0ZXMgLSBzbyBlZGl0aW5nIGEgdGVzdCBzb3VyY2Ugc3RpbGxcXG4rIyByZWxpbmtzIHRoZSBydW5uZXIgLSB3aGlsZSB0aGUgZnVsbCBzZXQgc3RheXMgb3JkZXItb25seSB0byBkcml2ZSB0aGVcXG4rIyBidWlsZCBhdHRlbXB0cywgYW5kIHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnNcXG4rIyBhdCBsaW5rIHRpbWUuXFxuKyMgUHJlcmVxdWlzaXRlIG9yZGVyIGlzIGFsc28gbGluayBvcmRlciAodGVzdCBvYmplY3RzLCBydW5uZXIgb2JqZWN0cyxcXG4rIyBsaWJicGYsIGxpYiBvYmplY3RzKS5cXG4rJChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFxcXFxcXG4rXFx0XFx0ICAgICAkKFJVTk5FUl9PQkpTLSQoUlVOTkVSKSkgJChCUEZPQkopXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICQoUlVOTkVSX0xJQl9PQkpTLSQoUlVOTkVSKSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICB8IGV4dHJhcyAkKEJQRl9PQkpTKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICAkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChURVNUX09CSlMpKVxcbitcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuK1xcdCQoUSkkKENDKSAkKENGTEFHUylcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSlcXHRcXFxcXFxuK1xcdFxcdFxcdCQoZmlsdGVyLW91dCAkKFRFU1RfT0JKUyksJChmaWx0ZXIgJS5hICUubywkXikpLFxcXFxcXG4rXFx0XFx0XFx0JChmaWx0ZXIgJS5hICUubywkXikpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKExETElCUykgJChMTFZNX0xETElCUykgJChMREZMQUdTKSAkKExMVk1fTERGTEFHUykgLW8gJEBcXG4rXFx0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXFxcXG4rXFx0XFx0ICAgJChSRElSKS9icGZ0b29sXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5za2VsIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmE4NzFlYTc2ODE3ZGZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWxcXG5AQCAtMCwwICsxLDE0MSBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyMgUnVsZXMgdG8gYnVpbGQgdGhlIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgb2Ygb25lIGJ1aWxkIGZsYXZvcixcXG4rIyBzaGFyZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKHdoaWNoIGluc3RhbnRpYXRlcyB0aGVtIGZvciB0aGUgZGVmYXVsdFxcbisjIGZsYXZvciwgc28gdGhhdCBiZW5jaCwgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwIGNhbiBkZXBlbmQgb25cXG4rIyB0aGUgZXhhY3Qgc2tlbGV0b25zIHRoZXkgY29uc3VtZSkgYW5kIGJ5IE1ha2VmaWxlLnJ1bm5lciAod2hpY2hcXG4rIyBpbnN0YW50aWF0ZXMgdGhlbSBmb3IgZWFjaCBydW5uZXIgaW5zdGFuY2UgdGhhdCBidWlsZHMgQlBGIG9iamVjdHM6XFxuKyMgdGhlIGZsYXZvcmVkIG9uZXMgaW4gdGhlaXIgb3duIG91dHB1dCBkaXJlY3RvcmllcywgdGhlIHVuZmxhdm9yZWRcXG4rIyB0ZXN0X3Byb2dzIG9uZSBpbiAkKE9VVFBVVCksIHdoZXJlIGl0IGZpbmRzIHRoZW0gYWxyZWFkeSBidWlsdCkuXFxuKyNcXG4rIyBQYXJhbWV0ZXJzICh2YXJpYWJsZXMgZGVmaW5lZCBieSB0aGUgaW5jbHVkZXIpOlxcbisjICAgUkRJUiAgICAgICAgICAgICBvdXRwdXQgZGlyZWN0b3J5IG9mIHRoaXMgZmxhdm9yXFxuKyMgICBGTEFWT1IgICAgICAgICAgIGZsYXZvciBuYW1lLCBlbXB0eSBmb3IgdGhlIGRlZmF1bHRcXG4rIyAgIEJJTkFSWSAgICAgICAgICAgcnVubmVyIGJpbmFyeSBuYW1lLCBmb3IgYnVpbGQtbG9nIG1lc3NhZ2VzXFxuKyMgICBCUEZfQ0MgICAgICAgICAgIEJQRiBjb21waWxlclxcbisjICAgQlBGX0NDX01TRyAgICAgICBidWlsZC1sb2cgdGFnIChDTE5HLUJQRi9HQ0MtQlBGKVxcbisjICAgQlBGX0NDX0ZMQUdTICAgICBwZXItZmxhdm9yIGNvbXBpbGVyIGZsYWdzXFxuKyMgICBCUEZfU1lTX0lOQ0xVREVTIHN5c3RlbSBpbmNsdWRlIGZsYWdzIGZvciAkKEJQRl9DQylcXG4rIyAgIEJQRl9ERUZJTkVTICAgICAgZXh0cmEgZGVmaW5lcyAoLURFTkFCTEVfQVRPTUlDU19URVNUUylcXG4rI1xcbisjIFRoZSBkZWZhdWx0IGZsYXZvcidzIHJ1bGVzIGFyZSBpbnN0YW50aWF0ZWQgaWRlbnRpY2FsbHkgYnkgdGhlIG1haW5cXG4rIyBNYWtlZmlsZSBhbmQgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBzdWItbWFrZTsgdGhlIG1haW4gTWFrZWZpbGVcXG4rIyBsaXN0cyBldmVyeSBza2VsZXRvbiBhbmQgQlBGIG9iamVjdCBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgdW5mbGF2b3JlZFxcbisjIHJ1bm5lcnMnIGRlbGVnYXRpb24gcnVsZXMsIHNvIHRoZSBmaWxlcyBhcmUgYWx3YXlzIGZyZXNoIGJ5IHRoZSB0aW1lXFxuKyMgdGhhdCBzdWItbWFrZSByZS1ldmFsdWF0ZXMgdGhlbS5cXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4raWZuZXEgKCQoQlBGX0NDKSwpXFxuK1xcbitCUEZfU1JDUyA6PSAkKG5vdGRpciAkKHdpbGRjYXJkIHByb2dzLyouYykpXFxuK0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5icGYubywkKEJQRl9TUkNTKSlcXG4rXFxuK1NLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcXG4rXFxuK0xJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdFxcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuK1xcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuK1xcbitMU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXFx0XFxcXFxcbitcXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1xcdFxcdFxcdFxcXFxcXG4rXFx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXFxcXG4rXFx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXFxuK1xcbitMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xcbitcXG4rIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXFxuK0xTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXFxcXG4rXFx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYyB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXFxuK1NLRUxfQkxBQ0tMSVNUICs9ICQoTFNLRUxTKSAkKExTS0VMU19TSUdORUQpXFxuK1xcbit0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXFxuK2xpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cXG4rbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xcbitsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXFxuKyMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXFxuKyMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxcbit0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXFxuK3Rlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYub1xcbit0ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cXG4rdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuK3RyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuK3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuK3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4rXFxuK0xJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxcbitMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKExJTktFRF9CUEZfT0JKUykpXFxuK1xcbitTS0VMUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuc2tlbC5oLFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpXFxuK0xTS0VMU19IICAgICAgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMUykgJChMU0tFTFNfRVhUUkEpKVxcbitMU0tFTFNfU0lHTkVEX0ggOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmxza2VsLmgsJChMU0tFTFNfU0lHTkVEKSlcXG4rTElOS0VEX1NLRUxTX0ggIDo9ICQoYWRkcHJlZml4ICQoUkRJUikvLCQoTElOS0VEX1NLRUxTKSlcXG4rQUxMX1NLRUxTIDo9ICQoU0tFTFMpICQoTFNLRUxTX0gpICQoTFNLRUxTX1NJR05FRF9IKSAkKExJTktFRF9TS0VMU19IKVxcbitcXG4rSEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaClcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVxcdFxcXFxcXG4rXFx0XFx0XFx0JChhZGRwcmVmaXggJChCUEZESVIpLyxcXHRicGZfY29yZV9yZWFkLmhcXHRcXFxcXFxuK1xcdFxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0YnBmX2hlbHBlcnMuaFxcdFxcXFxcXG4rXFx0XFx0XFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcXG4rXFxuKyMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcXG4rIyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mXFxuKyMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitcXG4rJChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcXHRcXHRcXFxcXFxuK1xcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxcbitcXHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChCUEZfQ0MpICQoQlBGX0NGTEFHUykgJChCUEZfU1lTX0lOQ0xVREVTKSAkKEJQRl9ERUZJTkVTKVxcdFxcXFxcXG4rXFx0XFx0JCgkXFx1MDAzYy1DRkxBR1MpICQoJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoQlBGX0NDX0ZMQUdTKSAtYyAkXFx1MDAzYyAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJQRilcXG4rXFxuK0dFTl9TS0VMIDo9IC4vZ2VuX2JwZl9za2VsLnNoXFxuK1xcbiskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXFxuK1xcdCQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJFxcdTAwM2MsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXFx0XFxcXFxcbitcXHRwcmludGYgJyAgJS04cyVzICVzXFxcXG4nICdHRU4tU0tFTCcgJyBbJChCSU5BUlkpXScgJyQobm90ZGlyICRAKSc7IFxcXFxcXG4rXFx0QlBGVE9PTD0kKEJQRlRPT0wpICQoR0VOX1NLRUwpIC0tbmFtZSAkKlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkXFx1MDAzY1xcdFxcdFxcXFxcXG4rXFx0XFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxcbitcXG4rJChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcXG4rXFx0JChRKSQoY2FsbCBza2lwX2lmX21pc3NpbmcsU0tFTCwkXFx1MDAzYylcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHByaW50ZiAnICAlLThzJXMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJEApJzsgXFxcXFxcbitcXHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqX2xza2VsIC0tbHNrZWxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAkXFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXFxuK1xcbiskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVxcdFxcXFxcXG4rXFx0XFx0ICAgICQoR0VOX1NLRUwpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpIHwgJChSRElSKVxcbitcXHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcXHUwMDNjKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cHJpbnRmICcgICUtOHMlcyAlc1xcXFxuJyAnR0VOLVNLRUwnICcgWyQoQklOQVJZKSAoc2lnbmVkKV0nICckKG5vdGRpciAkQCknOyBcXFxcXFxuK1xcdEJQRlRPT0w9JChCUEZUT09MKSBQUklWQVRFX0tFWT0kKFBSSVZBVEVfS0VZKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0VkVSSUZJQ0FUSU9OX0NFUlQ9JChWRVJJRklDQVRJT05fQ0VSVClcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoR0VOX1NLRUwpIC0tc2lnbiAtLW5hbWUgJCpfbHNrZWxcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAkXFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXFxuK1xcbisjIC5TRUNPTkRFWFBBTlNJT04gaGVyZSBhbGxvd3MgdG8gY29ycmVjdGx5IGV4cGFuZCAlLWRlcHMgdmFyaWFibGVzIGFzIHByZXJlcXVpc2l0ZXNcXG4rLlNFQ09OREVYUEFOU0lPTjpcXG4rJChMSU5LRURfU0tFTFNfSCk6ICQoUkRJUikvJS5za2VsLmg6ICQkKGFkZHByZWZpeCAkKFJESVIpLywkJCgkJCouc2tlbC5oLWRlcHMpKSBcXFxcXFxuK1xcdFxcdCAgICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXFxuK1xcdCQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKSBcXFxcXFxuK1xcdHByaW50ZiAnICAlLThzJXMgJXNcXFxcbicgJ0xJTkstQlBGJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJChAOi5za2VsLmg9LmJwZi5vKSknOyBcXFxcXFxuK1xcdHByaW50ZiAnICAlLThzJXMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJEApJzsgXFxcXFxcbitcXHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpXFx0XFx0XFxcXFxcbitcXHRcXHQkKGFkZHByZWZpeCAkKFJESVIpLywkKCQqLnNrZWwuaC1kZXBzKSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcXG4rXFxuK2VuZGlmICMgQlBGX0NDXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5lNDNjY2YwOTU1NzU2XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcXG5AQCAtMCwwICsxLDk5IEBAXFxuKyMhL2Jpbi9iYXNoXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI1xcbisjIExpbmsgQlBGIG9iamVjdCBmaWxlKHMpIHdpdGggXFxcImJwZnRvb2wgZ2VuIG9iamVjdFxcXCIgYW5kIGdlbmVyYXRlIGFcXG4rIyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXFxuKyNcXG4rIyBVc2FnZTpcXG4rIyAgIEJQRlRPT0w9XFx1MDAzY2JwZnRvb2xcXHUwMDNlIGdlbl9icGZfc2tlbC5zaCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cXG4rI1xcbisjICAgLS1uYW1lIE5BTUUgICAgICAgc2tlbGV0b24gb2JqZWN0IG5hbWUgKFxcXCJuYW1lIE5BTUVcXFwiIGZvciBicGZ0b29sKVxcbisjICAgLS1za2VsIE9VVCAgICAgICAgb3V0cHV0IGhlYWRlciAoXFxcImZvby5za2VsLmhcXFwiIG9yIFxcXCJmb28ubHNrZWwuaFxcXCIpXFxuKyMgICAtLXN1YnNrZWwgT1VUICAgICBhbHNvIGdlbmVyYXRlIGEgc3Vic2tlbGV0b24gaGVhZGVyIGludG8gT1VUXFxuKyMgICAtLWxza2VsICAgICAgICAgICBnZW5lcmF0ZSBhIGxpZ2h0IHNrZWxldG9uIChicGZ0b29sIGdlbiBza2VsZXRvbiAtTClcXG4rIyAgIC0tc2lnbiAgICAgICAgICAgIHNpZ24gdGhlIChsaWdodCkgc2tlbGV0b24sIHdpdGggdGhlIGtleSBhbmRcXG4rIyAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlIHRha2VuIGZyb20gJFBSSVZBVEVfS0VZIGFuZFxcbisjICAgICAgICAgICAgICAgICAgICAgJFZFUklGSUNBVElPTl9DRVJUXFxuKyNcXG4rIyBUaGUgaW5wdXRzIGFyZSBsaW5rZWQgdGhyZWUgdGltZXMgYW5kIHRoZSAybmQgYW5kIDNyZCByZXN1bHRzXFxuKyMgY29tcGFyZWQsIGFzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgZGV0ZXJtaW5pc20gb2YgXFxcImJwZnRvb2wgZ2VuXFxuKyMgb2JqZWN0XFxcIi5cXG4rI1xcbisjIEludGVybWVkaWF0ZSBmaWxlcyBhcmUgbmFtZWQgYWZ0ZXIgdGhlIG91dHB1dCBoZWFkZXIgd2l0aCBhIFxcXCJsaW5rZWRcXFwiXFxuKyMgaW5maXggLSBcXFwibGxpbmtlZFxcXCIgZm9yIGxpZ2h0IG9yIHNpZ25lZCBza2VsZXRvbnMsIHNvIGdlbmVyYXRpbmcgYVxcbisjIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGUgc2FtZSAuYnBmLm8gaW4gcGFyYWxsZWwgbmV2ZXIgcmFjZXNcXG4rIyBvbiB0aGUgaW50ZXJtZWRpYXRlcy5cXG4rI1xcbisjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuXFxuKyMgT24gZmFpbHVyZSBhbGwgb3V0cHV0cyBhbmQgaW50ZXJtZWRpYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHNjcmlwdFxcbisjIGV4aXRzIG5vbi16ZXJvOyBwZXJtaXNzaXZlLW1vZGUgc2tpcHBpbmcgaXMgdGhlIGNhbGxlcidzIGJ1c2luZXNzXFxuKyMgKHNlZSBza2lwX29uX2ZhaWwgaW4gdGhlIE1ha2VmaWxlKS5cXG4rXFxuK3NldCAtdVxcbitcXG4rYnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9XFxuK25hbWU9Jycgc2tlbD0nJyBzdWJza2VsPScnXFxuK2xza2VsPTAgc2lnbj0wXFxuK1xcbit3aGlsZSBbICQjIC1ndCAwIF07IGRvXFxuK1xcdGNhc2UgXFxcIiQxXFxcIiBpblxcbitcXHQtLW5hbWUpXFx0XFx0bmFtZT0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLXNrZWwpXFx0XFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLXN1YnNrZWwpXFx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLWxza2VsKVxcdGxza2VsPTE7IHNoaWZ0IDs7XFxuK1xcdC0tc2lnbilcXHRcXHRzaWduPTE7IHNoaWZ0IDs7XFxuK1xcdC0tKVxcdFxcdHNoaWZ0OyBicmVhayA7O1xcbitcXHQtKilcXHRcXHRlY2hvIFxcXCIkMDogdW5rbm93biBvcHRpb246ICQxXFxcIiBcXHUwMDNlXFx1MDAyNjI7IGV4aXQgMSA7O1xcbitcXHQqKVxcdFxcdGJyZWFrIDs7XFxuK1xcdGVzYWNcXG4rZG9uZVxcbitcXG4raWYgWyAteiBcXFwiJG5hbWVcXFwiIF0gfHwgWyAteiBcXFwiJHNrZWxcXFwiIF0gfHwgWyAkIyAtZXEgMCBdOyB0aGVuXFxuK1xcdGVjaG8gXFxcInVzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRleGl0IDFcXG4rZmlcXG4rXFxuK2luZml4PWxpbmtlZFxcbitpZiBbIFxcXCIkbHNrZWxcXFwiIC1lcSAxIF0gfHwgWyBcXFwiJHNpZ25cXFwiIC1lcSAxIF07IHRoZW5cXG4rXFx0aW5maXg9bGxpbmtlZFxcbitmaVxcbitcXG4raWYgWyBcXFwiJHNpZ25cXFwiIC1lcSAxIF0gXFx1MDAyNlxcdTAwMjYgeyBbIC16IFxcXCIke1BSSVZBVEVfS0VZLX1cXFwiIF0gfHwgWyAteiBcXFwiJHtWRVJJRklDQVRJT05fQ0VSVC19XFxcIiBdOyB9OyB0aGVuXFxuK1xcdGVjaG8gXFxcIiQwOiAtLXNpZ24gcmVxdWlyZXMgUFJJVkFURV9LRVkgYW5kIFZFUklGSUNBVElPTl9DRVJUIGluIHRoZSBlbnZpcm9ubWVudFxcXCIgXFx1MDAzZVxcdTAwMjYyXFxuK1xcdGV4aXQgMVxcbitmaVxcbitcXG4rYmFzZT0ke3NrZWwlLnNrZWwuaH1cXG4rYmFzZT0ke2Jhc2UlLmxza2VsLmh9XFxuK3QxPSRiYXNlLiR7aW5maXh9MS5vXFxuK3QyPSRiYXNlLiR7aW5maXh9Mi5vXFxuK3QzPSRiYXNlLiR7aW5maXh9My5vXFxuK1xcbitmYWlsKCkge1xcbitcXHRybSAtZiBcXFwiJHNrZWxcXFwiICR7c3Vic2tlbDorXFxcIiRzdWJza2VsXFxcIn0gXFxcIiR0MVxcXCIgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCJcXG4rXFx0ZXhpdCAxXFxuK31cXG4rXFxuK1xcXCIkYnBmdG9vbFxcXCIgZ2VuIG9iamVjdCBcXFwiJHQxXFxcIiBcXFwiJEBcXFwiIHx8IGZhaWxcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDJcXFwiIFxcXCIkdDFcXFwiIHx8IGZhaWxcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDNcXFwiIFxcXCIkdDJcXFwiIHx8IGZhaWxcXG4raWYgISBjbXAgLXMgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCI7IHRoZW5cXG4rXFx0ZWNobyBcXFwiJDA6IGJwZnRvb2wgZ2VuIG9iamVjdCBpcyBub3QgZGV0ZXJtaW5pc3RpYyBmb3IgJHNrZWxcXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRmYWlsXFxuK2ZpXFxuK1xcbithcmdzPSgpXFxuK2lmIFsgXFxcIiRzaWduXFxcIiAtZXEgMSBdOyB0aGVuXFxuK1xcdGFyZ3MrPSgtUyAtayBcXFwiJFBSSVZBVEVfS0VZXFxcIiAtaSBcXFwiJFZFUklGSUNBVElPTl9DRVJUXFxcIilcXG4rZmlcXG4raWYgWyBcXFwiJGxza2VsXFxcIiAtZXEgMSBdOyB0aGVuXFxuK1xcdGFyZ3MrPSgtTClcXG4rZmlcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gc2tlbGV0b24gJHthcmdzW0BdK1xcXCIke2FyZ3NbQF19XFxcIn0gXFxcIiR0M1xcXCIgbmFtZSBcXFwiJG5hbWVcXFwiIFxcdTAwM2UgXFxcIiRza2VsXFxcIiB8fCBmYWlsXFxuK1xcbitpZiBbIC1uIFxcXCIkc3Vic2tlbFxcXCIgXTsgdGhlblxcbitcXHRcXFwiJGJwZnRvb2xcXFwiIGdlbiBzdWJza2VsZXRvbiBcXFwiJHQzXFxcIiBuYW1lIFxcXCIkbmFtZVxcXCIgXFx1MDAzZSBcXFwiJHN1YnNrZWxcXFwiIHx8IGZhaWxcXG4rZmlcXG4rXFxuK3JtIC1mIFxcXCIkdDFcXFwiIFxcXCIkdDJcXFwiIFxcXCIkdDNcXFwiXFxuK2V4aXQgMFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xcbmluZGV4IDJiYjU3NzNkNmY5OTMuLmVhMzQyODU5ZDZjZTEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmNcXG5AQCAtNDY1LDcgKzQ2NSw3IEBAIHN0cnVjdCBleHBvc2VkX2hvb2sge1xcbiBcXHRcXHQuZXhwZWN0ZWRfZXJyID0gRVhQRUNURURfRVJSLCBcXFxcXFxuIFxcdH0sXFxuIFxcbi0jaW5jbHVkZSBcXFwiY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcXFwiXFxuIFxcbiAjdW5kZWYgQlBGX1JFVFZBTF9IT09LXFxuIH07XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcXG5zaW1pbGFyaXR5IGluZGV4IDEwMCVcXG5yZW5hbWUgZnJvbSB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcbnJlbmFtZSB0byB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QyMDoxNDozNi43MDA5NzU3MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MDI1MDE5NjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZGFmZTJiOTYxZDEzYmM0MzljYWMxYzQyYjk5NjVjMzQ4YWM0NGQ5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMjMgMjA6MTQ6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbmluZGV4IDVmMWEzYmZjMDU2OWYuLjliOTkwNTYxMDA3MGQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuQEAgLTQsOTMgKzQsMTkgQEAgaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuIFxuIENYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXG4tT0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxuLVxuLUNVUkRJUiA6PSAkKGFic3BhdGggLilcbi1UT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4tTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxuLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmXG4tVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxuLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcbi1BUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxuLWlmbmVxICgkKE8pLClcbi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuLWVsc2Vcbi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKVxuLWVuZGlmXG4tR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXG4tUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xuLVxuLWlmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxuLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxuLWVuZGlmXG4gXG4gQlBGX0dDQ1x0XHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4taWZkZWYgQVNBTlxuLVNBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbi1lbHNlXG4tU0FOX0NGTEFHU1x0Pz1cbi1lbmRpZlxuLVNBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4tUkVMRUFTRVx0XHQ/PVxuLU9QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4tXG4tTElCRUxGX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXHUwMDNlL2Rldi9udWxsKVxuLUxJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4gXG4gU0tJUF9ET0NTXHQ/PVxuIFNLSVBfTExWTVx0Pz1cbiBTS0lQX0xJQkJGRFx0Pz1cbiBTS0lQX0NSWVBUT1x0Pz1cbiBcbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbi1cbi1pZmVxICgkKHNyY3RyZWUpLClcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLWVuZGlmXG4tXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbi1cdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbi1cdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuLVx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuLVx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4tXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4tXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbi1MREZMQUdTICs9ICQoU0FOX0xERkxBR1MpXG4tTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxuLVxuLVBDQVBfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIFwiLURUUkFGRklDX01PTklUT1I9MVwiKVxuLVBDQVBfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwpXG4tTERMSUJTICs9ICQoUENBUF9MSUJTKVxuLUNGTEFHUyArPSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXG4tXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXG4tXG4taWZuZXEgKCQoTExWTSksKVxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuLUNGTEFHUyArPSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnRcbi1lbmRpZlxuLVxuICMgQ2hlY2sgd2hldGhlciBicGYgY3B1PXY0IGlzIHN1cHBvcnRlZCBvciBub3QgYnkgY2xhbmdcbiBpZm5lcSAoJChzaGVsbCAkKENMQU5HKSAtLXRhcmdldD1icGYgLW1jcHU9aGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgJ3Y0JyksKVxuIENMQU5HX0NQVVY0IDo9IDFcbiBlbmRpZlxuIFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjIrKVxuLUNMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXG4tXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxuLVx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcbi1cdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuLVxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAnbWFrZSBydW5fdGVzdHMnIG9yZGVyXG4gVEVTVF9HRU5fUFJPR1MgPSB0ZXN0X3ZlcmlmaWVyIHRlc3RfdGFnIHRlc3RfbWFwcyB0ZXN0X2xydV9tYXAgdGVzdF9wcm9ncyBcXFxuIFx0dGVzdF9zb2NrbWFwIFxcXG5AQCAtMTAyLDE2ICsyOCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuIFRFU1RfR0VOX1BST0dTICs9IHRlc3RfcHJvZ3MtYnBmX2djY1xuIFRFU1RfSU5TVF9TVUJESVJTICs9IGJwZl9nY2Ncbi1cbi0jIFRoZSBmb2xsb3dpbmcgdGVzdHMgY29udGFpbiBDIGNvZGUgdGhhdCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgbGVnYWwsXG4tIyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mXG4tIyBhbm9ueW1vdXMgc3RydWN0IHR5cGVzIGluIGZ1bmN0aW9uIHBhcmFtZXRlciBsaXN0cy5cbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLVxuIGVuZGlmXG4gXG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcbkBAIC0xNjgsNyArODQsMjEgQEAgb3ZlcnJpZGUgZGVmaW5lIENMRUFOXG4gXHQkKFEpJChNQUtFKSBkb2NzLWNsZWFuXG4gZW5kZWZcbiBcbisjIC4uL2xpYi5tayBhcHBlbmRzIHRvIHRoZSBmbGFncyBpbmhlcml0ZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQ7XG4rIyBNYWtlZmlsZS5idWlsZHZhcnMgcmVidWlsZHMgQ0ZMQUdTIGFuZCBMREZMQUdTIGFyb3VuZCB0aGVzZSBzbmFwc2hvdHNcbisjIHNvIHRoYXQgaXRzIG93biBhZGRpdGlvbnMgcHJlY2VkZSBsaWIubWsncywgYXMgdGhleSBkaWQgd2hlbiB0aGV5XG4rIyB3ZXJlIGRlZmluZWQgYWJvdmUgdGhlIGluY2x1ZGUuXG4rSU5IRVJJVEVEX0NGTEFHUyA6PSAkKENGTEFHUylcbitJTkhFUklURURfTERGTEFHUyA6PSAkKExERkxBR1MpXG4gaW5jbHVkZSAuLi9saWIubWtcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuK1xuKyMgRGVmaW5pdGlvbnMgb25seSB0aGlzIE1ha2VmaWxlIGNvbnN1bWVzOyBwbGFjZWQgYWZ0ZXIgdGhlIGluY2x1ZGVcbisjIGJlY2F1c2Ugc29tZSBvZiB0aGVtIGRlcml2ZSBmcm9tIE1ha2VmaWxlLmJ1aWxkdmFycyB2YWx1ZXMuXG4rQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuK0hPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuK0JQRl9UQVJHRVRfRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXG4rQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4gXG4gTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHNcbiBDSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLCBcIm5vbmVcIikpXG5AQCAtMjEzLDIxICsxNDMsOSBAQCBpZmVxICgkKGZlYXR1cmUtbGx2bSksMSlcbiBlbmRpZlxuIGVuZGlmXG4gXG4tU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4tQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXG4tSU5DTFVERV9ESVIgOj0gJChTQ1JBVENIX0RJUikvaW5jbHVkZVxuLUJQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuLUhPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKS9ob3N0XG4tSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbi1IT1NUX0lOQ0xVREVfRElSXHQ6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL2luY2x1ZGVcbi1lbHNlXG4tSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4tSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChTQ1JBVENIX0RJUilcbi1IT1NUX0lOQ0xVREVfRElSXHQ6PSAkKElOQ0xVREVfRElSKVxuLWVuZGlmXG4tSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4tUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcbisjIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzXG4rJChPVVRQVVQpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgKz0gJChMTFZNX0NGTEFHUylcbitcbiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVx0XHRcdFx0XFxcbiBcdFx0ICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KVx0XFxcbiBcdFx0ICAgICAuLi8uLi8uLi8uLi92bWxpbnV4XHRcdFx0XHRcXFxuQEAgLTI0Niw3ICsxNjQsNyBAQCAkKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpXHRcdFx0XHRcXFxuIFx0ICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpKTogJTogJChPVVRQVVQpLyUgO1xuIFxuICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nXG4tTUFLRV9ESVJTIDo9ICQoc29ydCAkKEJVSUxEX0RJUikvbGliYnBmICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZlx0XFxcbitNQUtFX0RJUlMgOj0gJChzb3J0ICQoT1VUUFVUKSAkKEJVSUxEX0RJUikvbGliYnBmICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZiBcXFxuIFx0ICAgICAgICQoQlVJTERfRElSKS9icGZ0b29sICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcdFx0XFxcbiBcdCAgICAgICAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkc1x0XHRcdFx0XFxcbiBcdCAgICAgICAkKElOQ0xVREVfRElSKSlcbkBAIC0yNTgsOSArMTc2LDEyIEBAICQoT1VUUFVUKS8lLm86ICUuY1xuIFx0JChjYWxsIG1zZyxDQywsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4rIyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7XG4rIyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXG4rIyBhcmd1bWVudCBhcyBhIHByZWNvbXBpbGVkLWhlYWRlciBqb2IgYW5kIHJlZnVzZXMgLW8pLlxuICQoT1VUUFVUKS8lOiUuY1xuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoTElOSy5jKSAkXiAkKExETElCUykgLW8gJEBcbitcdCQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRAXG4gXG4gIyBMTFZNJ3MgbGQubGxkIGRvZXNuJ3Qgc3VwcG9ydCBhbGwgdGhlIGFyY2hpdGVjdHVyZXMsIHNvIHVzZSBpdCBvbmx5IG9uIHg4NlxuIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKVxuQEAgLTMxMywxNyArMjM0LDYgQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpXG4gXHQkKGNhbGwgbXNnLE1PRCwsJEApXG4gXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgLWYgdGVzdF9rbW9kcy8kKEBGKSBdOyB0aGVuICljcCB0ZXN0X2ttb2RzLyQoQEYpICRAJChpZiAkKFBFUk1JU1NJVkUpLDsgZmkpXG4gXG4tXG4tREVGQVVMVF9CUEZUT09MIDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuLUNST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXG4tVFJVTk5FUl9CUEZUT09MIDo9ICQoQ1JPU1NfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwiXCJcbi1lbHNlXG4tVFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCJib290c3RyYXAvXCJcbi1lbmRpZlxuLVxuICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSilcbiBcbiBURVNUSU5HX0hFTFBFUlNcdDo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuQEAgLTMzOSwxMiArMjQ5LDMzIEBAICQoT1VUUFVUKS90ZXN0X3RjcG5vdGlmeV91c2VyOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUykgJChUUkFDRV9IRUxQXG4gJChPVVRQVVQpL3Rlc3Rfc29ja19maWVsZHM6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKVxuICQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpXG4gJChPVVRQVVQpL3Rlc3RfbGlyY19tb2RlMl91c2VyOiAkKFRFU1RJTkdfSEVMUEVSUylcbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXG4rJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcbiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXG4tJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcbiBcbi1CUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuKyMgRGVmaW5lZCBhaGVhZCBvZiB0aGUgZmlyc3QgcnVsZSB0aGF0IGxpc3RzIGl0IGFzIGEgcHJlcmVxdWlzaXRlLlxuK1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcbitcbisjIFRoZSB1c2Vyc3BhY2Ugb2JqZWN0cyB0aGUgcnVubmVyIGluc3RhbmNlcyBsaW5rIChSVU5ORVJfT0JKUywgc2VlXG4rIyBNYWtlZmlsZS5idWlsZHZhcnMpIGFyZSBidWlsdCBoZXJlLCBvbmNlLCBzbyB0aGF0IG5vIHJ1bm5lciBzdWItbWFrZVxuKyMgZXZlciB3cml0ZXMgYSBmaWxlIHRoaXMgTWFrZWZpbGUgYWxzbyBidWlsZHMuXG4rI1xuKyMgJChUUlVOTkVSX0JQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXRcbisjIGluc3RhbGxzIGxpYmJwZidzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaClcbisjIGludG8gJChJTkNMVURFX0RJUikgLSB0aGUgY3Jvc3MtY29tcGlsZWQgYnBmdG9vbCdzIHdoZW4gY3Jvc3MtY29tcGlsaW5nO1xuKyMgd2l0aG91dCBpdCwgdHJhY2VfaGVscGVycy5jIHJhY2VzIHRoZSBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cFxuKyMgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLlxuK1JVTk5FUl9PQkpTIDo9ICQoc29ydCAkKFJVTk5FUl9PQkpTLXRlc3RfcHJvZ3MpICQoUlVOTkVSX09CSlMtdGVzdF9tYXBzKVxcXG4rXHRcdCAgICAgICQoUlVOTkVSX0xJQl9PQkpTLXRlc3RfcHJvZ3MpKVxuKyQoUlVOTkVSX09CSlMpOiAkKFZFUklGWV9TSUdfSERSKSAkKEJQRk9CSikgJChUUlVOTkVSX0JQRlRPT0wpXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MubzogcHJvZ190ZXN0cy90ZXN0cy5oXG4rJChPVVRQVVQpL3Rlc3RfbWFwcy5vOiBtYXBfdGVzdHMvdGVzdHMuaFxuK1xuKyMgZmluZF9iaXQuYyBpcyB0aGUgb25seSBydW5uZXIgc291cmNlIG91dHNpZGUgdGhpcyBkaXJlY3RvcnksXG4rIyBzbyBpdCBuZWVkcyBhIHJ1bGUgb2YgaXRzIG93bi5cbiskKE9VVFBVVCkvZmluZF9iaXQubzogJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmNcbitcdCQoY2FsbCBtc2csQ0MsLCRAKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjICQoTERMSUJTKSAtbyAkQFxuK1xuICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcXFxuIFx0XHQgICAgJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9icGZ0b29sXG4gXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKSAgLUMgJChCUEZUT09MRElSKVx0XHRcdCAgICAgICBcXFxuQEAgLTQxMiw3ICszNDMsNyBAQCBlbmRpZlxuIFxuICMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXG4gIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2Zcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcbisjIEJQRiBvYmplY3RzLlxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXG4gaWZlcSAoJChWTUxJTlVYX0gpLClcbiBcdCQoY2FsbCBtc2csR0VOLCwkQClcbkBAIC00MzcsMzc0ICszNjgsMTIgQEAgJChSRVNPTFZFX0JURklEUyk6ICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHNcdFxcXG4gXHRcdEhPU1RQS0dfQ09ORklHPSckKFBLR19DT05GSUcpJyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XG4tIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcIm1pc3NpbmdcIiBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbi0jIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cbi0jXG4tIyBVc2UgJy1pZGlyYWZ0ZXInOiBEb24ndCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4tIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxuLWRlZmluZSBnZXRfc3lzX2luY2x1ZGVzXG4tJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbi1cdHwgc2VkIC1uICcvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfScpIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXCItRF9fcmlzY3ZfeGxlbj0lZCAtRF9fQklUU19QRVJfTE9ORz0lZFwiLCAkJDMsICQkMyl9JykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX2xvb25nYXJjaF9ncmxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzKX0nKSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXCItRCVzPSVzIFwiLCAkJDIsICQkMyl9Jylcbi1lbmRlZlxuLVxuLSMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuLUlTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBcXFxuLVx0XHRcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKFRPT0xTSU5DRElSKSAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFxcXG4tXHQgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSlcdFx0XHRcXFxuLVx0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXHRcdFx0XFxcbi1cdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcdFx0XHRcdFx0XFxcbi1cdCAgICAgI1xuLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlXG4tXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4tXG4tJChPVVRQVVQpL3Rlc3RfbDRsYl9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICs9IC1mbm8taW5saW5lXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcbi1cbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZC5vOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxuLVxuLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBDbGFuZ1xuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXG4tIyAkMiAtIG91dHB1dCAubyBmaWxlXG4tIyAkMyAtIENGTEFHU1xuLSMgJDQgLSBiaW5hcnkgbmFtZVxuLWRlZmluZSBDTEFOR19CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djMgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggZGlzYWJsZWQgYWx1MzJcbi1kZWZpbmUgQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggY3B1LXY0XG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12NCAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJQRicgJyQobm90ZGlyICQyKScgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xuLWRlZmluZSBHQ0NfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcbi1cdCQoUSkkKEJQRl9HQ0MpICQzIC1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yIC1jICQxIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi1cbi1TS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jXG4tXG4tTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaFx0XHRcXFxuLVx0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIFx0XHRcdFxcXG4tXHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbi1cdFx0dGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFx0XHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXG4tXG4tTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIFx0XFxcbi1cdGNvcmVfa2Vybi5jIGNvcmVfa2Vybl9vdmVyZmxvdy5jIHRlc3RfcmluZ2J1Zi5jXHRcdFx0XFxcbi1cdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuLVx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXG4tXG4tTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbi1cbi0jIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2Vcbi1MU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuLVx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYyB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXG4tU0tFTF9CTEFDS0xJU1QgKz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxuLXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm9cbi10ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cbi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cbi14c2tfeGRwX3Byb2dzLnNrZWwuaC1kZXBzIDo9IHhza194ZHBfcHJvZ3MuYnBmLm9cbi14ZHBfaHdfbWV0YWRhdGEuc2tlbC5oLWRlcHMgOj0geGRwX2h3X21ldGFkYXRhLmJwZi5vXG4teGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYub1xuLXRyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tXG4tTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpXG4tTElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKVxuLVxuLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXHRcdFxcXG4tXHRcdFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXHRcXFxuLVx0XHRcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXHRicGZfY29yZV9yZWFkLmhcdFxcXG4tXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX2VuZGlhbi5oXHRcXFxuLVx0XHRcdFx0XHRcdGJwZl9oZWxwZXJzLmhcdFxcXG4tXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcbi1cbi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCBcInRlbXBvcmFyeVwiIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcImZsYXZvclwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0Yylcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSXG4tXG4tTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKVxuLVRSVU5ORVJfT1VUUFVUIDo9ICQoT1VUUFVUKSQoaWYgJDIsLykkMlxuLVRSVU5ORVJfQklOQVJZIDo9ICQxJChpZiAkMiwtKSQyXG4tVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubyxcdFxcXG4tXHRcdFx0XHQgJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUU19ESVIpLyouYykpKVxuLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcdFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9MSUJfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcdFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9MSUJfU09VUkNFUykpKVxuLVRSVU5ORVJfRVhUUkFfSERSUyA6PSAkJChmaWx0ZXIgJS5oLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSlcbi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oXG4tVFJVTk5FUl9CUEZfU1JDUyA6PSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouYykpXG4tVFJVTk5FUl9CUEZfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm8sICQkKFRSVU5ORVJfQlBGX1NSQ1MpKVxuLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsXHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLFxcXG4tXHRcdFx0XHRcdCAgICAgICAkJChUUlVOTkVSX0JQRl9TUkNTKSkpXG4tVFJVTk5FUl9CUEZfTFNLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFMpICQkKExTS0VMU19FWFRSQSkpXG4tVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFNfU0lHTkVEKSlcbi1URVNUX0dFTl9GSUxFUyArPSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcImZsYXZvclwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0Yylcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTXG4tXG4tIyBQZXJtaXNzaXZlIGJ1aWxkIGJlaGF2aW91ciAoc2tpcC1vbi1mYWlsdXJlIGNvbXBpbGUsIHBhcnRpYWwtbGluaykgb25seVxuLSMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZCBpdHMgZmxhdm9yczsgcnVubmVycyB0aGF0IHVzZSBzdHJvbmcgY3Jvc3Mtb2JqZWN0XG4tIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxuLSMgVGhlIGNoZWNrIGlzIGlubGluZWQgcGVyLXJ1bm5lciBzbyAkMSBpcyBzdWJzdGl0dXRlZCBhdCAkKGNhbGwpIHRpbWUgYW5kXG4tIyB0aGUgcmVzdWx0IGlzIGJha2VkIGludG8gZWFjaCBydWxlJ3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKSAoc2lnbmVkKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdMSU5LLUJQRicgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkKEA6LnNrZWwuaD0uYnBmLm8pKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1x0XHRcdFx0XHRcXFxuLVx0XHQgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJ1x0XFxcbi1cdFx0XHQkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMgfCBzb3J0IDtcdFxcXG4tXHRcdCApIFx1MDAzZSAkJEApXG4tZW5kaWZcbi1cbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuLVxuLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcbi0jIE5vdGU6IHdlIGNkIGludG8gb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdCBpcyBmb3VuZFxuLSQoVFJVTk5FUl9URVNUX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubzpcdFx0XHRcXFxuLVx0XHQgICAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmNcdFx0XHRcdFxcXG4tXHRcdCAgICAgIHwgJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmRcbi1cdCQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkoY2QgJCQoQEQpIFx1MDAyNlx1MDAyNiAkJChDQykgLUkuICQkKENGTEFHUykgLU1NRCAtTVQgJCRAIC1jICQoQ1VSRElSKS8kJFx1MDAzYyAkJChMRExJQlMpIC1vICQkKEBGKSkgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkJEA7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtVEVTVCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MikpKVxuLVx0JCQoaWYgJCQoVEVTVF9ORUVEU19CVEZJRFMpLFx0XHRcdFx0XHRcdFxcXG4tXHRcdCQoUSlpZiBbIC1mICQkQCBdOyB0aGVuXHRcdFx0XHRcdFx0XFxcbi1cdFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcbicgXCJCVEZJRFNcIiBcIiBbJChUUlVOTkVSX0JJTkFSWSldXCIgXCIkJChub3RkaXIgJCRAKVwiKTsgXFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1x0XFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1x0XHRcXFxuLVx0XHRmaSlcbi1cbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRClcbi1cbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXG4taW5jbHVkZSAkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlM6Lm89LmQpKVxuLWVuZGlmXG4tXG4tIyBhZGQgcGVyIGV4dHJhIG9iaiBDRkdMQUdTIGRlZmluaXRpb25zXG4tJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLFx0XFxcbi1cdCQoZXZhbCAkKFRSVU5ORVJfT1VUUFVUKS8kKE4pLm86IENGTEFHUyArPSAkKCQoTikuYy1DRkxBR1MpKSlcbi1cbi0kKFRSVU5ORVJfRVhUUkFfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAlLmNcdFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuY1xuLVx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0jIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZVxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxuLSQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhczogJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4taWZuZXEgKCQyOiQoT1VUUFVUKSw6JChzaGVsbCBwd2QpKVxuLVx0JCQoY2FsbCBtc2csRVhULUNPUFksJChUUlVOTkVSX0JJTkFSWSksJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSlcbi1cdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xuLWVuZGlmXG4tXG4tIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlc1xuLSQoT1VUUFVUKS8kKFRSVU5ORVJfQklOQVJZKTogfCAkKFRSVU5ORVJfQlBGX09CSlMpXG4tXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSlcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfRVhUUkFfT0JKUykgJCQoQlBGT0JKKVx0XHRcXFxuLVx0XHRcdCAgICAgJChUUlVOTkVSX0xJQl9PQkpTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfQlBGVE9PTClcdFx0XHRcdFxcXG4tXHRcdFx0ICAgICAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XHRcdFxcXG4tXHRcdFx0ICAgICB8ICQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhc1x0XHRcdFxcXG4tXHRcdFx0ICAgICAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJChUUlVOTkVSX1RFU1RfT0JKUykpKVxuLVx0JCQoY2FsbCBtc2csQklOQVJZLCwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRAXG4tXHQkKFEpbG4gLXNmICQoaWYgJDIsLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcXFxuLVx0XHQgICAkKE9VVFBVVCkvJChpZiAkMiwkMi8pYnBmdG9vbFxuLVxuLWVuZGVmXG4tXG4tVkVSSUZZX1NJR19TRVRVUCA6PSAkKENVUkRJUikvdmVyaWZ5X3NpZ19zZXR1cC5zaFxuLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0Lmhcbi1WRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcbi1QUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXG4tXG4tJChWRVJJRklDQVRJT05fQ0VSVCkgJChQUklWQVRFX0tFWSk6ICQoVkVSSUZZX1NJR19TRVRVUClcbisjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdFxuKyMgZ3JvdXBlZCAtIGlmIGJvdGggZmlsZXMgYXJlIHN0YWxlIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSwgdW5kZXJcbisjIC1qIGNvbmN1cnJlbnRseSwgYW5kIHRoZSBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm1cbisjIGlzIGltcGxpY2l0bHkgZ3JvdXBlZCBldmVuIHdpdGggbWFrZSBcdTAwM2MgNC4zLiBUaGUgc3RlbSBvbmx5IHN0YW5kcyBpblxuKyMgZm9yICdzaWduaW5nJyBzbyB0aGF0IG5vIG90aGVyIC5wZW0vLmRlciB1bmRlciAkKEJVSUxEX0RJUikgbWF0Y2hlcy5cbiskKEJVSUxEX0RJUikvJV9rZXkucGVtICQoQlVJTERfRElSKS8lX2tleS5kZXI6ICQoVkVSSUZZX1NJR19TRVRVUClcbiBcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcbiBcdCQoUSkkKFZFUklGWV9TSUdfU0VUVVApIGdlbmtleSAkKEJVSUxEX0RJUilcbiBcbkBAIC04MzMsNyArNDAyLDYgQEAgTElCQVJFTkFfQ09NTU9OX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZVx0XHRcXFxuIExJQkFSRU5BX0JQRl9ERVBTIDo9ICQoTElCQVJFTkFfQ09NTU9OX0RFUFMpICQod2lsZGNhcmQgbGliYXJlbmEvc2VsZnRlc3RzLyopXG4gTElCQVJFTkFfQkVOQ0hfQlBGX0RFUFMgOj0gJChMSUJBUkVOQV9DT01NT05fREVQUykgJCh3aWxkY2FyZCBsaWJhcmVuYS9iZW5jaHMvKilcbiBcbi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxuIExJQkFSRU5BX0JFTkNIX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYmVuY2guc2tlbC5oXG4gXG4gJChMSUJBUkVOQV9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxuQEAgLTg0Myw5NSArNDExLDEyNiBAQCAkKExJQkFSRU5BX0JFTkNIX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQkVOQ0hfQlBGX1xuIFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgYmVuY2htYXJrcyAkKExJQkFSRU5BX01BS0VfQVJHUylcbiBcbiBpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxuLUNGTEFHUyArPSAtREhBU19CUEZfQVJFTkFfQVNBTlxuIFxuICQoTElCQVJFTkFfQVNBTl9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxuIFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHNcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3Ncbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jXHRcdFxcXG4tXHRcdFx0IGNncm91cF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRyYWNlX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgbmV0d29ya19oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRlc3RpbmdfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBidGZfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IGNhcF9oZWxwZXJzLmNcdFx0XFxcbi1cdFx0XHQgdW5wcml2X2hlbHBlcnMuYyBcdFxcXG4tXHRcdFx0IHN5c2N0bF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldGxpbmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBqaXRfZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaW9faGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHRlc3RfbG9hZGVyLmNcdFx0XFxcbi1cdFx0XHQgeHNrLmNcdFx0XHRcXFxuLVx0XHRcdCBkaXNhc20uY1x0XHRcXFxuLVx0XHRcdCBkaXNhc21faGVscGVycy5jXHRcXFxuLVx0XHRcdCBqc29uX3dyaXRlci5jIFx0XHRcXFxuLVx0XHRcdCAkKFZFUklGWV9TSUdfSERSKVx0XHRcXFxuLVx0XHRcdCBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcdFxcXG4tXHRcdFx0IGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcXFxuLVx0XHRcdCBicGZ0b29sX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgdXNkdF8xLmMgdXNkdF8yLmNcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfU0tFTClcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICBpbWFfc2V0dXAuc2ggXHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpXG4tXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1jcHV2NCB0ZXN0IHJ1bm5lci5cbisjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVyc1xuK1xuK2RlZmluZSBnZW5fdGVzdHNfaGRyXG4rXHQkKGNhbGwgbXNnLFRFU1QtSERSLCwkQClcbitcdCQoUSkoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1x0XHRcXFxuK1x0XHQgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJ1x0XFxcbitcdFx0JChARCkvKi5jIHwgc29ydCkgXHUwMDNlICRAXG4rZW5kZWZcbitcbitwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXG4rXHQkKGdlbl90ZXN0c19oZHIpXG4rXG4rbWFwX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgbWFwX3Rlc3RzLyouYylcbitcdCQoZ2VuX3Rlc3RzX2hkcilcbitcbisjIFRlc3QgcnVubmVyIGluc3RhbmNlcywgb25lIHN1Yi1tYWtlIGVhY2ggKHNlZSBNYWtlZmlsZS5ydW5uZXIpLlxuK1xuKyMgVGhlIExMVk0gZmVhdHVyZS1wcm9iZSByZXN1bHRzIGFuZCBURVNUX0tNT0RTIGFyZSBleHBvcnRlZFxuKyMgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuIENDIGlzIHBhc3NlZCBleHBsaWNpdGx5IGluc3RlYWQ6IGV4cG9ydGluZyBpdFxuKyMgd291bGQgYWxzbyBsZWFrIGxpYi5taydzIENDIGludG8gdGhlIGxpYmJwZiBzdWItYnVpbGQsIHdoaWNoIGNvbXB1dGVzXG4rIyBpdHMgb3duLiAoJ2V4cG9ydCBOQU1FJyBvbiBhbiB1bmRlZmluZWRcbisjIHZhcmlhYmxlIGNyZWF0ZXMgYW4gZW1wdHkgb25lLCBzbyB0aGVzZSBzdGF5IGJlbG93IHRoZSBkZWZpbml0aW9ucy4pXG4rZXhwb3J0IExMVk1fTERMSUJTIExMVk1fTERGTEFHUyBURVNUX0tNT0RTXG4rZXhwb3J0IElOSEVSSVRFRF9DRkxBR1MgSU5IRVJJVEVEX0xERkxBR1NcbitcbitSVU5ORVJfTUFLRSA6PSAkKE1BS0UpIC1mIE1ha2VmaWxlLnJ1bm5lciBPVVRQVVQ9JChPVVRQVVQpIENDPSckKENDKSdcdFxcXG4rXHQgICAgICAgQ0xBTkc9JyQoQ0xBTkcpJ1xuK1xuKyMgRXZlcnl0aGluZyBhIHJ1bm5lciBpbnN0YW5jZSByZWZlcmVuY2VzIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZC5cbitSVU5ORVJfUFJFUkVRUyA6PSAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoQlBGVE9PTClcdFx0XFxcbitcdFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcdFx0XHRcXFxuK1x0XHQgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XHRcXFxuK1x0XHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXHRcXFxuK1x0XHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXHRcdFxcXG4rXHRcdCAgcHJvZ190ZXN0cy90ZXN0cy5oIG1hcF90ZXN0cy90ZXN0cy5oXHRcdFx0XFxcbitcdFx0ICAkKFJVTk5FUl9PQkpTKVx0XHRcdFx0XHRcXFxuK1x0XHQgICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1x0XFxcbitcdFx0ICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XFxcbitcdFx0ICAkKE9VVFBVVCkvdXByb2JlX211bHRpICQoVEVTVF9LTU9EX1RBUkdFVFMpXG4rXG4rIyBUaGUgbWFpbiBNYWtlZmlsZSBjYW5ub3QgdGVsbCB3aGV0aGVyICQoT1VUUFVUKS90ZXN0X3Byb2dzIGlzIHN0YWxlIC1cbisjIG9ubHkgdGhlIHJ1bm5lciBzdWItbWFrZSBrbm93cyBpdHMgZnVsbCBkZXBlbmRlbmN5IGdyYXBoLiBGT1JDRSBtYWtlc1xuKyMgdGhlIGRlbGVnYXRpbmcgcnVsZXMgYmVsb3cgYWx3YXlzIHJ1bjsgdGhlaXIgZGVwZW5kZW50cyBzdGlsbCByZWJ1aWxkXG4rIyBvbiBtdGltZSBvbmx5LlxuK0ZPUkNFOlxuK1xuKyMgVGhlIGRlZmF1bHQgZmxhdm9yJ3MgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBhcmUgY29uc3VtZWQgaGVyZSBhc1xuKyMgd2VsbCBhcyBpbnNpZGUgdGhlIHJ1bm5lciBzdWItbWFrZXM6IGJlbmNoLCB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmRcbisjIHRlc3RfY3BwIGRlcGVuZCBvbiBpbmRpdmlkdWFsIHNrZWxldG9ucywgYW5kIGxpYi5taydzXG4rIyBpbnN0YWxsIHJ1bGUgY29waWVzIHRoZSBCUEYgb2JqZWN0cy4gSW5zdGFudGlhdGUgdGhlIHNoYXJlZCBydWxlc1xuKyMgKE1ha2VmaWxlLnNrZWwpIGZvciB0aGUgZGVmYXVsdCBmbGF2b3IsIHNvIHRob3NlIGNvbnN1bWVycyBkZXBlbmQgb25cbisjIGV4YWN0bHkgdGhlIGZpbGVzIHRoZXkgdXNlOyB0aGUgdW5mbGF2b3JlZCBydW5uZXJzJyBkZWxlZ2F0aW9uIHJ1bGVzXG4rIyBiZWxvdyBsaXN0IHRoZSB3aG9sZSBzZXQgYXMgcHJlcmVxdWlzaXRlcywgc28gdGhvc2Ugc3ViLW1ha2VzIGZpbmQgdGhlXG4rIyBmaWxlcyB0aGlzIE1ha2VmaWxlIG93bnMgdXAgdG8gZGF0ZS5cbitSRElSIDo9ICQoT1VUUFVUKVxuK0ZMQVZPUiA6PVxuK0JJTkFSWSA6PSB0ZXN0X3Byb2dzXG4rQlBGX0NDIDo9ICQoQ0xBTkcpXG4rQlBGX0NDX01TRyA6PSBDTE5HLUJQRlxuK0JQRl9TWVNfSU5DTFVERVMgOj0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4rQlBGX0NDX0ZMQUdTIDo9IC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12M1xuK0JQRl9ERUZJTkVTIDo9IC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbitpbmNsdWRlIE1ha2VmaWxlLnNrZWxcbitcbitERUZBVUxUX1JVTk5FUl9BUkdTIDo9IFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHNcdFxcXG4rXHRCUEZfQ0M9JyQoQlBGX0NDKScgQlBGX0NDX01TRz0kKEJQRl9DQ19NU0cpXHRcdFx0XFxcbitcdEJQRl9TWVNfSU5DTFVERVM9JyQoQlBGX1NZU19JTkNMVURFUyknXHRcdFx0XHRcXFxuK1x0QlBGX0NDX0ZMQUdTPSckKEJQRl9DQ19GTEFHUyknIEJQRl9ERUZJTkVTPSQoQlBGX0RFRklORVMpXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpICQoQlBGX09CSlMpICQoQUxMX1NLRUxTKSBGT1JDRVxuK1x0KyQoUSkkKFJVTk5FUl9NQUtFKSAkKERFRkFVTFRfUlVOTkVSX0FSR1MpXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1ub19hbHUzMiBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYyJ1xuK1xuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxjcHV2NCkpXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtY3B1djQ6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1jcHV2NCBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0J1x0XHRcXFxuK1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGJwZl9nY2MpKVxuKyMgU3lzIGluY2x1ZGVzIGNvbWUgZnJvbSB0aGUgKmhvc3QqIGdjYywgbm90ICQoQlBGX0dDQyksIGFzIHRoZSBydWxlXG4rIyB0aGlzIHJlcGxhY2VzIGhhZCBpdC5cbitHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbitcdFx0QlBGX0NDPSckKEJQRl9HQ0MpJyBCUEZfQ0NfTVNHPUdDQy1CUEZcdFx0XHRcdFxcXG4rXHRcdEJQRl9TWVNfSU5DTFVERVM9JyQoR0NDX1NZU19JTkNMVURFUyknXHRcdFx0XHRcXFxuK1x0XHRCUEZfQ0NfRkxBR1M9Jy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJ1xuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9tYXBzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0c1xuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xuLVRSVU5ORVJfRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuY1xuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj1cbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSAkJChlcnJvciBubyBCUEYgb2JqZWN0cyBzaG91bGQgYmUgYnVpbHQpXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9XG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcbisjIHRlc3RfbWFwcyBjb21waWxlcyBtYXBfdGVzdHMvKi5jIGFnYWluc3QgdGhlIGRlZmF1bHQgZmxhdm9yJ3Mgc2tlbGV0b25zXG4rJChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgJChCUEZfT0JKUylcdFxcXG4rXHRcdCAgICAgJChBTExfU0tFTFMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X21hcHMgRkxBVk9SPSBURVNUU19ESVI9bWFwX3Rlc3RzXG4rXG4rVEVTVF9HRU5fRklMRVMgKz0gJChCUEZfT0JKUylcbiBcbiAjIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLlxuICMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxuICMgdGhlbSAoZS5nLiwgdGVzdC5oIGlzIHVzaW5nIGNvbXBsZXRlbHkgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0XG4gIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcbi1cdCQoc2hlbGwgKCBjZCB2ZXJpZmllci87IFxcXG4rXHQkKFEpKCBjZCB2ZXJpZmllci87IFxcXG4gXHRcdCAgZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nOyBcXFxuIFx0XHQgIGVjaG8gJyNpZmRlZiBGSUxMX0FSUkFZJzsgXFxcbiBcdFx0ICBscyAqLmMgMlx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJ3NAXFwoLipcXClAI2luY2x1ZGUgXFxcIlxcMVxcXCJAJzsgXFxcbiBcdFx0ICBlY2hvICcjZW5kaWYnIFxcXG4tXHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmgpXG4rXHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcbiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopIHwgJChPVVRQVVQpXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbkBAIC05NjcsMTEgKzU2NiwxMSBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLENYWCwsJEApXG4gXHQkKFEpJChDWFgpICQoQ1hYRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jcHAsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSMgQmVuY2htYXJrIHJ1bm5lclxuKyMgQmVuY2htYXJrIHJ1bm5lci4gRXZlcnkgYmVuY2hzL2JlbmNoXyouYyBpcyBjb21waWxlZCBhbmQgbGlua2VkIGluLlxuK0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxuICQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CRU5DSCcgJyQobm90ZGlyICRAKScgMVx1MDAzZVx1MDAyNjIpKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCRU5DSClcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm86ICQoT1VUUFVUKS90cmlnZ2VyX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcbkBAIC05OTksMzMgKzU5OCwxMSBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXG4gXHRcdCAkKFRFU1RJTkdfSEVMUEVSUykgXFxcbiBcdFx0ICQoVFJBQ0VfSEVMUEVSUykgXFxcbiBcdFx0ICQoQ0dST1VQX0hFTFBFUlMpIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfY291bnQubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfZm9yLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9zdHJuY21wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2UubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9jcmVhdGUubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2h0YWJfbWVtLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9ub3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbGliYXJlbmEubyBcXFxuK1x0XHQgJChCRU5DSF9PQkpTKSBcXFxuIFx0XHQgJChPVVRQVVQpL3VzZHRfMS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcbi1cdFx0ICNcbitcdFx0ICQoT1VUUFVUKS91c2R0XzIub1xuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICRAOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUxJTksnICckKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJyAxXHUwMDNlXHUwMDI2MikpXG4rXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKVxuIFxuICMgVGhpcyB3b3JrcyBhcm91bmQgR0NDIHdhcm5pbmcgYWJvdXQgc25wcmludGYgdHJ1bmNhdGluZyBzdHJpbmdzIGxpa2U6XG4gI1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNWM2YzE0N2QwM2M3NFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc1xuQEAgLTAsMCArMSwxOTYgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgU2hhcmVkIHRvb2xjaGFpbiwgcGF0aCBhbmQgZmxhZyBkZWZpbml0aW9ucyBmb3IgdGhlIEJQRiBzZWxmdGVzdHNcbisjIGJ1aWxkLCBpbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlIGFuZCBNYWtlZmlsZS5ydW5uZXIuIERlZmluaXRpb25zXG4rIyBmb2xsb3cgdGhlIG9yZGVyIHRoZXkgaGFkIGluIHRoZSBNYWtlZmlsZSBiZWZvcmUgdGhlIHNwbGl0LlxuK1xuK1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbitMSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4rQlBGRElSIDo9ICQoTElCRElSKS9icGZcbitUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4rVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4rQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcbitpZm5lcSAoJChPKSwpXG4rR0VORElSIDo9ICQoTykvaW5jbHVkZS9nZW5lcmF0ZWRcbitlbHNlXG4rR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcbitlbmRpZlxuK0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxuK1BLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcbitcbitpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbisgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcbitlbmRpZlxuK1xuK2lmZGVmIEFTQU5cbitTQU5fQ0ZMQUdTIFx0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXG4rZWxzZVxuK1NBTl9DRkxBR1NcdD89XG4rZW5kaWZcbitTQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuK1JFTEVBU0VcdFx0Pz1cbitPUFRfRkxBR1NcdD89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKVxuK1xuK0xJQkVMRl9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlx1MDAzZS9kZXYvbnVsbClcbitMSUJFTEZfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMlx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxuK1xuKyMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yXG4rIyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXNcbisjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuK0JQRl9TVFJJQ1RfQlVJTEQgPz0gMVxuK1BFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKVxuK1xuKyMgUGVybWlzc2l2ZS1tb2RlIHJlY2lwZSBzdWZmaXg6IG9uIGZhaWx1cmUsIHJlbW92ZSB0aGUgdGFyZ2V0LCBlbWl0IGFcbisjIFNLSVAgbWFya2VyIGFuZCByZXBvcnQgc3VjY2VzcyBzbyB0aGUgcmVzdCBvZiB0aGUgYnVpbGQgY29udGludWVzLlxuKyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXG4rIyAkKDIpIC0gb3B0aW9uYWwgZXh0cmEgZmlsZXMgdG8gcmVtb3ZlIGFsb25nc2lkZSB0aGUgdGFyZ2V0XG4rIyAkKDMpIC0gb3B0aW9uYWwgbm90ZSBhcHBlbmRlZCB0byB0aGUgU0tJUCBtZXNzYWdlXG4rc2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcbitcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSknIDFcdTAwM2VcdTAwMjYyOyB9KVxuK1xuKyMgUGVybWlzc2l2ZS1tb2RlIHJlY2lwZSBwcmVmaXg6IHdoZW4gYSBwcmVyZXF1aXNpdGUgb2JqZWN0IGlzIG1pc3NpbmdcbisjIChpdHMgY29tcGlsZSBmYWlsZWQgYW5kIHdhcyBza2lwcGVkKSwgcmVtb3ZlIHRoZSB0YXJnZXQgYW5kICQoMyksXG4rIyBlbWl0IGEgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHdpdGhvdXQgcnVubmluZyB0aGUgcmVzdCBvZlxuKyMgdGhlIHJlY2lwZS5cbisjICQoMSkgLSBTS0lQIHRhZ1xuKyMgJCgyKSAtIGlucHV0IGZpbGVzIHRvIGNoZWNrXG4rIyAkKDMpIC0gb3B0aW9uYWwgZXh0cmEgZmlsZXMgdG8gcmVtb3ZlIGFsb25nc2lkZSB0aGUgdGFyZ2V0XG4rc2tpcF9pZl9taXNzaW5nID0gJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQoMik7IGRvIFsgLWYgJCRmIF0gfHwgeyBcXFxuK1x0JChSTSkgJEAgJCgzKTsgXFxcbitcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKScgMVx1MDAzZVx1MDAyNjI7IGV4aXQgMDsgfTsgZG9uZTspXG4rXG4raWZlcSAoJChzcmN0cmVlKSwpXG4rc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbitlbmRpZlxuK1xuK0NPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcdFx0XHRcdFxcXG4rXHQgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcdFx0XHRcdFxcXG4rXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcdFx0XHRcdFx0XFxcbitcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXHRcdFx0XFxcbitcdCAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKVx0XHRcXFxuK1x0ICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpXHRcXFxuK1x0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXG4rTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxuK1xuK1BDQVBfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIFwiLURUUkFGRklDX01PTklUT1I9MVwiKVxuK1BDQVBfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwpXG4rTERMSUJTICs9ICQoUENBUF9MSUJTKVxuK1xuK2lmbmVxICgkKExMVk0pLClcbisjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcbitDTEFOR19XQVJOX0NGTEFHUyA6PSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnRcbitlbmRpZlxuK1xuKyMgQmVmb3JlIHRoZSBzcGxpdCB0aGVzZSBkZWZpbml0aW9ucyBzYXQgYWJvdmUgdGhlIC4uL2xpYi5tayBpbmNsdWRlOlxuKyMgdGhleSBhcHBlbmRlZCB0byB0aGUgZmxhZ3MgaW5oZXJpdGVkIGZyb20gdGhlIGVudmlyb25tZW50LCBhbmRcbisjIGxpYi5taydzIGFkZGl0aW9ucyAoVVNFUkNGTEFHUy9VU0VSTERGTEFHUyBhbW9uZyB0aGVtKSBjYW1lIGxhc3QuXG4rIyBUaGlzIGZpbGUgaXMgcGFyc2VkIGFmdGVyIGxpYi5tayBhdCB0aGUgdG9wIGxldmVsIGFuZCBpbiBpdHMgcGxhY2VcbisjIGluIHRoZSBydW5uZXIgc3ViLW1ha2VzLCBzbyB0aGUgc2FtZSBvcmRlciBpcyByZWJ1aWx0IGhlcmUuIFRoZVxuKyMgaW5jbHVkZXIgc25hcHNob3RzIHRoZSBpbmhlcml0ZWQgZmxhZ3MgaW4gSU5IRVJJVEVEX0NGTEFHUyBhbmRcbisjIElOSEVSSVRFRF9MREZMQUdTIGJlZm9yZSBsaWIubWsgcnVuczsgd2hhdGV2ZXIgbGliLm1rIGFwcGVuZGVkIHNpbmNlXG4rIyBpcyB0aGUgdGFpbCBvZiB0aGUgY3VycmVudCB2YWx1ZS5cbitsaWJfbWtfYWRkZWQgPSAkKHdvcmRsaXN0ICQod29yZHMgeCAkKElOSEVSSVRFRF8kKDEpKSksJCh3b3JkcyAkKCQoMSkpKSwkKCQoMSkpKVxuK0xJQl9NS19DRkxBR1MgOj0gJChjYWxsIGxpYl9ta19hZGRlZCxDRkxBR1MpXG4rTElCX01LX0xERkxBR1MgOj0gJChjYWxsIGxpYl9ta19hZGRlZCxMREZMQUdTKVxuK0NGTEFHUyA9ICQoSU5IRVJJVEVEX0NGTEFHUykgJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKVx0XHRcXFxuK1x0ICQoQ0xBTkdfV0FSTl9DRkxBR1MpICQoTElCX01LX0NGTEFHUylcbitMREZMQUdTID0gJChJTkhFUklURURfTERGTEFHUykgJChTQU5fTERGTEFHUykgJChMSUJfTUtfTERGTEFHUylcbitcbisjIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyKykuXG4rIyBUaGlzIHJ1bnMgYWZ0ZXIgLi4vbGliLm1rIGhhcyByZXNvbHZlZCBDTEFORyBmcm9tIExMVk09XHUwMDNjc3VmZml4IG9yIHBhdGhcdTAwM2UsXG4rIyBzbyBpdCBwcm9iZXMgdGhlIGNvbXBpbGVyIHRoYXQgYnVpbGRzIHRoZSBCUEYgb2JqZWN0cy5cbitDTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJ2ludCB4OycgfCBcXFxuK1x0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbitcdC1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFxcXG4rXHQteCBjIC1jIC0gLW8gL2Rldi9udWxsIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gMSlcbitcbitTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcbitCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbitJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4rQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4rSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3RcbitIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xuK0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuK2Vsc2VcbitIT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUilcbitIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuK0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4rZW5kaWZcbitSRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuK1xuK0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbitDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXG4rVVNFX0JPT1RTVFJBUCA6PSBcIlwiXG4rZWxzZVxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbitVU0VfQk9PVFNUUkFQIDo9IFwiYm9vdHN0cmFwL1wiXG4rZW5kaWZcbitcbitCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuK1xuKyMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XG4rIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcIm1pc3NpbmdcIiBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbisjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cbisjXG4rIyBVc2UgJy1pZGlyYWZ0ZXInOiBEb24ndCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4rIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxuK2RlZmluZSBnZXRfc3lzX2luY2x1ZGVzXG4rJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbitcdHwgc2VkIC1uICcvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfScpIFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXCItRF9fcmlzY3ZfeGxlbj0lZCAtRF9fQklUU19QRVJfTE9ORz0lZFwiLCAkJDMsICQkMyl9JykgXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX2xvb25nYXJjaF9ncmxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzKX0nKSBcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXCItRCVzPSVzIFwiLCAkJDIsICQkMyl9JylcbitlbmRlZlxuK1xuKyMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuK0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBcXFxuK1x0XHRcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXG4rTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4rXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuK0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxuK2VuZGlmXG4rXG4rIyBJbW1lZGlhdGUgb24gcHVycG9zZTogZXhwYW5kaW5nIGdldF9zeXNfaW5jbHVkZXMgZm9ya3Mgc2V2ZXJhbCBzaGVsbHMuXG4rQ0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxuK0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTilcdFxcXG4rXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcdFx0XHRcXFxuK1x0ICAgICAtSSQoVE9PTFNJTkNESVIpIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcdFx0XFxcbitcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4rXHQgICAgIC1zdGQ9Z251MTFcdFx0IFx0XHRcdFx0XHRcXFxuK1x0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcdFx0XHRcdFx0XFxcbitcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbitcdCAgICAgLWZtcy1leHRlbnNpb25zXHRcdFx0XHRcdFx0XFxcbitcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcdFx0XHRcXFxuK1x0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuK1x0ICAgICAjXG4rIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcbitcbitWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4rVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXG4rUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxuK1xuK0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4rXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbitMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbitDRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbitlbmRpZlxuK1xuK1JVTk5FUl9PQkpTLXRlc3RfcHJvZ3MgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcXFxuK1x0dGVzdF9wcm9ncy5vIGNncm91cF9oZWxwZXJzLm8gdHJhY2VfaGVscGVycy5vXHRcdFx0XFxcbitcdG5ldHdvcmtfaGVscGVycy5vIHRlc3RpbmdfaGVscGVycy5vIGJ0Zl9oZWxwZXJzLm9cdFx0XFxcbitcdGNhcF9oZWxwZXJzLm8gdW5wcml2X2hlbHBlcnMubyBzeXNjdGxfaGVscGVycy5vXHRcdFx0XFxcbitcdG5ldGxpbmtfaGVscGVycy5vIGppdF9kaXNhc21faGVscGVycy5vIGlvX2hlbHBlcnMub1x0XHRcXFxuK1x0dGVzdF9sb2FkZXIubyB4c2subyBkaXNhc20ubyBkaXNhc21faGVscGVycy5vXHRcdFx0XFxcbitcdGpzb25fd3JpdGVyLm8gYnBmdG9vbF9oZWxwZXJzLm8gdXNkdF8xLm8gdXNkdF8yLm8pXG4rUlVOTkVSX09CSlMtdGVzdF9tYXBzIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sXHRcdFx0XFxcbitcdHRlc3RfbWFwcy5vIHRlc3RpbmdfaGVscGVycy5vKVxuK1xuK1JVTk5FUl9MSUJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoT1VUUFVUKS9maW5kX2JpdC5vXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lciBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi43MzYxZmY3ZGUzMzBjXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5AQCAtMCwwICsxLDE5OSBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcbisjIChub19hbHUzMiwgY3B1djQsIGJwZl9nY2MpLCBvciB0ZXN0X21hcHMuXG4rI1xuKyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSAtIHRoZSBmbGF2b3JlZCBvbmVzIHdpdGggdGhlaXJcbisjIG93biBvdXRwdXQgZGlyZWN0b3J5LCB0aGUgdW5mbGF2b3JlZCBvbmVzIHNoYXJpbmcgJChPVVRQVVQpIHdpdGggdGhlXG4rIyBtYWluIE1ha2VmaWxlIC0gc28gZXZlcnl0aGluZyBoZXJlIGlzIHdyaXR0ZW4gaW4gcGxhaW4gbWFrZTogbm9cbisjIGRlZmluZS9ldmFsIGxheWVyLCBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5c1xuKyMgaW52b2tlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSwgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWRcbisjIHByZXJlcXVpc2l0ZXMgKGxpYmJwZiwgYnBmdG9vbCxcbisjIHJlc29sdmVfYnRmaWRzLCB2bWxpbnV4LmgsIHZlcmlzdGF0LCB1c2Vyc3BhY2Ugb2JqZWN0cywgc2lnbmluZyBrZXksXG4rIyBsaWJhcmVuYSBza2VsZXRvbnMsIGV4dHJhIGJpbmFyaWVzIGFuZCAtIGZvciB0aGVcbisjIHVuZmxhdm9yZWQgaW5zdGFuY2VzIC0gdGhlIGRlZmF1bHQgZmxhdm9yJ3MgQlBGIG9iamVjdHMgYW5kXG4rIyBza2VsZXRvbnMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZFxuKyMgYXJlIHJlZmVyZW5jZWQgYmVsb3cgYXMgcGxhaW4gZmlsZXMuXG4rI1xuKyMgUGFyYW1ldGVycywgcGFzc2VkIG9uIHRoZSBzdWItbWFrZSBjb21tYW5kIGxpbmU6XG4rIyAgIE9VVFBVVCAgICAgIHRoZSBzZWxmdGVzdHMgb3V0cHV0IGRpcmVjdG9yeSwgYXMgbGliLm1rIHJlc29sdmVkIGl0XG4rIyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHNcbisjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djY1xuKyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzXG4rIyAgIEJQRl9DQyAgICAgIGNvbXBpbGVyIGZvciBwcm9ncy8qLmMgQlBGIG9iamVjdHMgKCQoQ0xBTkcpIG9yXG4rIyAgICAgICAgICAgICAgICQoQlBGX0dDQykpOyBlbXB0eSBmb3IgdGVzdF9tYXBzLCB3aGljaCBidWlsZHMgbm9uZVxuKyMgICBCUEZfQ0NfTVNHICBidWlsZC1sb2cgdGFnOiBDTE5HLUJQRiB8IEdDQy1CUEZcbisjICAgQlBGX0NDX0ZMQUdTXG4rIyAgICAgICAgICAgICAgIGNvbXBpbGVyLXNwZWNpZmljIGZsYWdzICgtTzIsIHRhcmdldC8tbWNwdSBvciBnY2Mga25vYnMpXG4rIyAgIEJQRl9TWVNfSU5DTFVERVNcbisjICAgICAgICAgICAgICAgc3lzdGVtIGluY2x1ZGUgZmxhZ3MgbWF0Y2hpbmcgQlBGX0NDXG4rIyAgIEJQRl9ERUZJTkVTIGV4dHJhIGRlZmluZXMgZm9yIEJQRiBvYmplY3RzIChlLmcuIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMpXG4rIyAgIENDLCBDTEFORyAgIEMgY29tcGlsZXIgYW5kIGNsYW5nIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW5cbisjICAgICAgICAgICAgICAgTWFrZWZpbGU7IGNsYW5nIGFsc28gZHJpdmVzIHRoZSBmZWF0dXJlIHByb2JlcyBpblxuKyMgICAgICAgICAgICAgICBNYWtlZmlsZS5idWlsZHZhcnMpXG4rI1xuKyMgRnJvbSB0aGUgZW52aXJvbm1lbnQsIGV4cG9ydGVkIGJ5IHRoZSBtYWluIE1ha2VmaWxlOlxuKyMgICBMTFZNX0xETElCUy9MTFZNX0xERkxBR1NcbisjICAgICAgICAgICAgICAgcmVzdWx0cyBvZiB0aGUgdG9wLWxldmVsIExMVk0gZmVhdHVyZSBwcm9iZVxuKyMgICBURVNUX0tNT0RTICB0aGUga2VybmVsIHRlc3QgbW9kdWxlcyB0byBjb3B5IGludG8gYSBmbGF2b3IgZGlyZWN0b3J5XG4rIyAgIElOSEVSSVRFRF9DRkxBR1MvSU5IRVJJVEVEX0xERkxBR1NcbisjICAgICAgICAgICAgICAgdGhlIGZsYWdzIHRoZSBtYWluIE1ha2VmaWxlIGluaGVyaXRlZCBmcm9tIGl0cyBvd25cbisjICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHNlZSBNYWtlZmlsZS5idWlsZHZhcnMpXG4rXG4raW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4raW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuK1xuKyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuXG4raWZlcSAoJChWKSwxKVxuK1EgPVxuK21zZyA9XG4rZWxzZVxuK1EgPSBAXG4rbXNnID0gQHByaW50ZiAnICAlLThzJXMgJXMlc1xcbicgXCIkKDEpXCIgXCIkKGlmICQoMiksIFskKDIpXSlcIiBcIiQobm90ZGlyICQoMykpXCIgXCIkKGlmICQoNCksICQoNCkpXCI7XG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XG4rZW5kaWZcbitcbisjIFRoZSB0b3AgTWFrZWZpbGUgaGFuZHMgZG93biB0aGUgZmxhZ3MgaXQgaW5oZXJpdGVkIGZyb20gdGhlXG4rIyBlbnZpcm9ubWVudCBpbiBJTkhFUklURURfQ0ZMQUdTL0lOSEVSSVRFRF9MREZMQUdTOyBzdGFydCBmcm9tIHRob3NlXG4rIyByYXRoZXIgdGhhbiBmcm9tIGl0cyBhc3NlbWJsZWQgQ0ZMQUdTL0xERkxBR1MsIHdoaWNoIG1ha2UgZXhwb3J0c1xuKyMgYWxvbmdzaWRlIHdoZW5ldmVyIHRoZXkgY2FtZSBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbitDRkxBR1MgOj0gJChJTkhFUklURURfQ0ZMQUdTKVxuK0xERkxBR1MgOj0gJChJTkhFUklURURfTERGTEFHUylcbitcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuK1xuKyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWssIGluIGl0c1xuKyMgb3JkZXIgKHRoZSBzZWxmdGVzdHMgaW5jbHVkZSBwYXRoIGlzIHNwZWxsZWQgZnJvbSBzcmN0cmVlIGhlcmU7IGxpYi5ta1xuKyMgc3BlbGxzIGl0IGZyb20gaXRzIG93biBkaXJlY3RvcnkpLlxuK2lmbmVxICgkKExMVk0pLClcbitDRkxBR1MgKz0gLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXJcbitDRkxBR1MgKz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXG4rZW5kaWZcbitDRkxBR1MgKz0gLURfR05VX1NPVVJDRT1cbitDRkxBR1MgKz0gLUkkKHNyY3RyZWUpL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzXG4rQ0ZMQUdTICs9ICQoVVNFUkNGTEFHUylcbitMREZMQUdTICs9ICQoVVNFUkxERkxBR1MpXG4rXG4rQklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXG4rUkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXG4rXG4rYWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXG4rLlBIT05ZOiBhbGxcbitcbisjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuKy5ERUxFVEVfT05fRVJST1I6XG4rXG4rIyBObyBidWlsdC1pbiBydWxlczogZXZlcnkgZmlsZSBidWlsdCBoZXJlIGhhcyBhbiBleHBsaWNpdCBydWxlLCBhbmQgdGhlXG4rIyBvYmplY3RzIHRoYXQgY29tZSBmcm9tIHRoZSBtYWluIE1ha2VmaWxlIGhhdmUgdG8gYmUgYW4gZXJyb3Igd2hlblxuKyMgbWlzc2luZyByYXRoZXIgdGhhbiBhIHNpbGVudCByZWJ1aWxkIGJ5IHRoZSBidWlsdC1pbiAlLm8gcmVjaXBlcy5cbitNQUtFRkxBR1MgKz0gLXJcbitcbisjIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4rIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3RcbisjIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXG4rUEVSTUlTU0lWRV9URVNUUyA6PSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MsJChSVU5ORVIpKSwkKFBFUk1JU1NJVkUpKVxuK1xuKyQoUkRJUik6XG4rXHQkKGNhbGwgbXNnLE1LRElSLCwkQClcbitcdCQoUSlta2RpciAtcCAkQFxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBQZXItcnVubmVyIHNvdXJjZXNcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuK2lmZXEgKCQoUlVOTkVSKSx0ZXN0X3Byb2dzKVxuK0dFTkVSQVRFRF9IRFJTIDo9ICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXG4rRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbitcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcdFx0XFxcbitcdCAgICAgICAkKE9VVFBVVCkveGRwX3N5bnByb3h5XHRcdFx0XHRcXFxuK1x0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4rXHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XFxcbitcdCAgICAgICAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpXHRcdFxcXG4rXHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuK1x0ICAgICAgICQoVkVSSUZZX1NJR19TRVRVUClcdFx0XHRcdFxcXG4rXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcXFxuK1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbitlbmRpZlxuK1xuK1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSlcbitURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxuK1RFU1RfREVQUyAgOj0gJChURVNUX09CSlM6Lm89LmQpXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgLSBydWxlcyBzaGFyZWQgd2l0aCB0aGUgbWFpbiBNYWtlZmlsZVxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4raW5jbHVkZSBNYWtlZmlsZS5za2VsXG4rXG4rIyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90XG4rIyBmdWxsIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIGNvcnJlc3BvbmRpbmcgJS5vXG4rIyBmaWxlLiB2cGF0aCBkaXJlY3RpdmVzIGJlbG93IGluc3RydWN0IG1ha2UgdG8gc2VhcmNoIGZvciBza2VsIGZpbGVzXG4rIyBpbiAkKFJESVIpLCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4rdnBhdGggJS5za2VsLmggJChSRElSKVxuK3ZwYXRoICUubHNrZWwuaCAkKFJESVIpXG4rdnBhdGggJS5zdWJza2VsLmggJChSRElSKVxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBUZXN0IG9iamVjdHMgYW5kIHJ1bm5lciBiaW5hcnlcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuKyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vXG4rJChSRElSKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXG4rXG4rIyBjb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlc1xuKyMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kXG4rIyBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRCBiZWxvdzsgdGhlXG4rIyBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0IGNvbXBpbGF0aW9uIGFmdGVyXG4rIyBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3QgY29tcGlsYXRpb24gd2hlbiBoZWFkZXJzXG4rIyBjaGFuZ2UuXG4rJChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZFxuK1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpKGNkICQoQEQpIFx1MDAyNlx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXHUwMDNjICQoTERMSUJTKSAtbyAkKEBGKSkgXFxcbitcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoY2FsbCBza2lwX29uX2ZhaWwsVEVTVCkpXG4rXHQkKGlmICQoVEVTVF9ORUVEU19CVEZJRFMpLFx0XHRcdFx0XHRcXFxuK1x0XHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXHRcdFx0XHRcdFxcXG4rXHRcdCQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAnICAlLThzJXMgJXNcXG4nIFwiQlRGSURTXCIgXCIgWyQoQklOQVJZKV1cIiBcIiQobm90ZGlyICRAKVwiKTsgXFxcbitcdFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChSRElSKS9idGZfZGF0YS5icGYubyAkQDtcdFxcXG4rXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICRALkJURl9pZHMgJEA7XHRcdFxcXG4rXHRcdGZpKVxuK1xuKyQoVEVTVF9ERVBTKTogJChSRElSKS8lLnRlc3QuZDogJChURVNUU19ESVIpLyUuYyAkKEdFTkVSQVRFRF9IRFJTKSAkKEJQRk9CSikgXFxcbitcdCAgICAgIHwgJChSRElSKSAkKEFMTF9TS0VMUylcbitcbitpbmNsdWRlICQod2lsZGNhcmQgJChURVNUX0RFUFMpKVxuK1xuKyMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXG4rIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXG4rLlBIT05ZOiBleHRyYXNcbitleHRyYXM6ICQoaWYgJChQRVJNSVNTSVZFKSwkKHdpbGRjYXJkICQoRVhUUkFfRklMRVMpKSwkKEVYVFJBX0ZJTEVTKSkgfCAkKFJESVIpXG4raWZuZXEgKCQoRkxBVk9SKTokKHJlYWxwYXRoICQoT1VUUFVUKSksOiQoQ1VSRElSKSlcbitpZm5lcSAoJChzdHJpcCAkKEVYVFJBX0ZJTEVTKSksKVxuK1x0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChFWFRSQV9GSUxFUykpXG4rXHQkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvXG4rZW5kaWZcbitlbmRpZlxuK1xuKyMgc29tZSBYLnRlc3QubyBmaWxlcyBoYXZlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9uIFkuYnBmLm8gZmlsZXNcbisjIEluIHBlcm1pc3NpdmUgbW9kZSwgbGluayB3aGF0ZXZlciB0ZXN0IG9iamVjdHMgd2VyZSBzdWNjZXNzZnVsbHkgYnVpbHRcbisjICh0aGVpciBjb21waWxhdGlvbiBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpOiB0aGUgb2JqZWN0cyBleGlzdGluZyBhdFxuKyMgcGFyc2UgdGltZSBhcmUgbm9ybWFsIHByZXJlcXVpc2l0ZXMgLSBzbyBlZGl0aW5nIGEgdGVzdCBzb3VyY2Ugc3RpbGxcbisjIHJlbGlua3MgdGhlIHJ1bm5lciAtIHdoaWxlIHRoZSBmdWxsIHNldCBzdGF5cyBvcmRlci1vbmx5IHRvIGRyaXZlIHRoZVxuKyMgYnVpbGQgYXR0ZW1wdHMsIGFuZCB0aGUgd2lsZGNhcmQgaW4gdGhlIHJlY2lwZSBwaWNrcyB1cCB0aGUgc3Vydml2b3JzXG4rIyBhdCBsaW5rIHRpbWUuXG4rIyBQcmVyZXF1aXNpdGUgb3JkZXIgaXMgYWxzbyBsaW5rIG9yZGVyICh0ZXN0IG9iamVjdHMsIHJ1bm5lciBvYmplY3RzLFxuKyMgbGliYnBmLCBsaWIgb2JqZWN0cykuXG4rJChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFxcXG4rXHRcdCAgICAgJChSVU5ORVJfT0JKUy0kKFJVTk5FUikpICQoQlBGT0JKKVx0XHRcdFxcXG4rXHRcdCAgICAgJChSVU5ORVJfTElCX09CSlMtJChSVU5ORVIpKVx0XHRcdFxcXG4rXHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcXFxuK1x0XHQgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpXHRcdFx0XHRcXFxuK1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4rXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpXHRcdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKVx0XFxcbitcdFx0XHQkKGZpbHRlci1vdXQgJChURVNUX09CSlMpLCQoZmlsdGVyICUuYSAlLm8sJF4pKSxcXFxuK1x0XHRcdCQoZmlsdGVyICUuYSAlLm8sJF4pKVx0XHRcdFx0XFxcbitcdFx0JChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRAXG4rXHQkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcbitcdFx0ICAgJChSRElSKS9icGZ0b29sXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWwgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuc2tlbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmE4NzFlYTc2ODE3ZGZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5za2VsXG5AQCAtMCwwICsxLDE0MSBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjIFJ1bGVzIHRvIGJ1aWxkIHRoZSBCUEYgb2JqZWN0cyBhbmQgc2tlbGV0b25zIG9mIG9uZSBidWlsZCBmbGF2b3IsXG4rIyBzaGFyZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKHdoaWNoIGluc3RhbnRpYXRlcyB0aGVtIGZvciB0aGUgZGVmYXVsdFxuKyMgZmxhdm9yLCBzbyB0aGF0IGJlbmNoLCB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHAgY2FuIGRlcGVuZCBvblxuKyMgdGhlIGV4YWN0IHNrZWxldG9ucyB0aGV5IGNvbnN1bWUpIGFuZCBieSBNYWtlZmlsZS5ydW5uZXIgKHdoaWNoXG4rIyBpbnN0YW50aWF0ZXMgdGhlbSBmb3IgZWFjaCBydW5uZXIgaW5zdGFuY2UgdGhhdCBidWlsZHMgQlBGIG9iamVjdHM6XG4rIyB0aGUgZmxhdm9yZWQgb25lcyBpbiB0aGVpciBvd24gb3V0cHV0IGRpcmVjdG9yaWVzLCB0aGUgdW5mbGF2b3JlZFxuKyMgdGVzdF9wcm9ncyBvbmUgaW4gJChPVVRQVVQpLCB3aGVyZSBpdCBmaW5kcyB0aGVtIGFscmVhZHkgYnVpbHQpLlxuKyNcbisjIFBhcmFtZXRlcnMgKHZhcmlhYmxlcyBkZWZpbmVkIGJ5IHRoZSBpbmNsdWRlcik6XG4rIyAgIFJESVIgICAgICAgICAgICAgb3V0cHV0IGRpcmVjdG9yeSBvZiB0aGlzIGZsYXZvclxuKyMgICBGTEFWT1IgICAgICAgICAgIGZsYXZvciBuYW1lLCBlbXB0eSBmb3IgdGhlIGRlZmF1bHRcbisjICAgQklOQVJZICAgICAgICAgICBydW5uZXIgYmluYXJ5IG5hbWUsIGZvciBidWlsZC1sb2cgbWVzc2FnZXNcbisjICAgQlBGX0NDICAgICAgICAgICBCUEYgY29tcGlsZXJcbisjICAgQlBGX0NDX01TRyAgICAgICBidWlsZC1sb2cgdGFnIChDTE5HLUJQRi9HQ0MtQlBGKVxuKyMgICBCUEZfQ0NfRkxBR1MgICAgIHBlci1mbGF2b3IgY29tcGlsZXIgZmxhZ3NcbisjICAgQlBGX1NZU19JTkNMVURFUyBzeXN0ZW0gaW5jbHVkZSBmbGFncyBmb3IgJChCUEZfQ0MpXG4rIyAgIEJQRl9ERUZJTkVTICAgICAgZXh0cmEgZGVmaW5lcyAoLURFTkFCTEVfQVRPTUlDU19URVNUUylcbisjXG4rIyBUaGUgZGVmYXVsdCBmbGF2b3IncyBydWxlcyBhcmUgaW5zdGFudGlhdGVkIGlkZW50aWNhbGx5IGJ5IHRoZSBtYWluXG4rIyBNYWtlZmlsZSBhbmQgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBzdWItbWFrZTsgdGhlIG1haW4gTWFrZWZpbGVcbisjIGxpc3RzIGV2ZXJ5IHNrZWxldG9uIGFuZCBCUEYgb2JqZWN0IGFzIGEgcHJlcmVxdWlzaXRlIG9mIHRoZSB1bmZsYXZvcmVkXG4rIyBydW5uZXJzJyBkZWxlZ2F0aW9uIHJ1bGVzLCBzbyB0aGUgZmlsZXMgYXJlIGFsd2F5cyBmcmVzaCBieSB0aGUgdGltZVxuKyMgdGhhdCBzdWItbWFrZSByZS1ldmFsdWF0ZXMgdGhlbS5cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4raWZuZXEgKCQoQlBGX0NDKSwpXG4rXG4rQlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuK0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5icGYubywkKEJQRl9TUkNTKSlcbitcbitTS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jXG4rXG4rTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaFx0XHRcXFxuK1x0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIFx0XHRcdFxcXG4rXHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbitcdFx0dGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaFx0XHRcdFxcXG4rXHRcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFx0XHRcdFx0XFxcbitcdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuK1x0XHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXG4rXG4rTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIFx0XFxcbitcdGNvcmVfa2Vybi5jIGNvcmVfa2Vybl9vdmVyZmxvdy5jIHRlc3RfcmluZ2J1Zi5jXHRcdFx0XFxcbitcdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuK1x0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXG4rXG4rTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbitcbisjIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2VcbitMU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuK1x0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYyB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXG4rU0tFTF9CTEFDS0xJU1QgKz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRClcbitcbit0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4rbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuK2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cbitsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4rIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbisjIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbit0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4rdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4rdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4rdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4rdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbit0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuK3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbitcbitMSU5LRURfQlBGX09CSlMgOj0gJChmb3JlYWNoIHNrZWwsJChMSU5LRURfU0tFTFMpLCQoJChza2VsKS1kZXBzKSlcbitMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKExJTktFRF9CUEZfT0JKUykpXG4rXG4rU0tFTFMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLnNrZWwuaCxcdFx0XHRcdFxcXG4rXHQgICAkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLCQoQlBGX1NSQ1MpKSlcbitMU0tFTFNfSCAgICAgICAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmxza2VsLmgsJChMU0tFTFMpICQoTFNLRUxTX0VYVFJBKSlcbitMU0tFTFNfU0lHTkVEX0ggOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmxza2VsLmgsJChMU0tFTFNfU0lHTkVEKSlcbitMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxuK0FMTF9TS0VMUyA6PSAkKFNLRUxTKSAkKExTS0VMU19IKSAkKExTS0VMU19TSUdORURfSCkgJChMSU5LRURfU0tFTFNfSClcbitcbitIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuK1x0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbitcdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuK1x0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbitcdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuK1x0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4rXG4rIyBUaGUgZm9sbG93aW5nIHRlc3RzIGNvbnRhaW4gQyBjb2RlIHRoYXQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGxlZ2FsLFxuKyMgdHJpZ2dlcnMgR0NDIHdhcm5pbmdzIHRoYXQgY2Fubm90IGJlIGRpc2FibGVkOiBkZWNsYXJhdGlvbiBvZlxuKyMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbitcbiskKEJQRl9PQkpTKTogJChSRElSKS8lLmJwZi5vOiBwcm9ncy8lLmMgcHJvZ3MvKi5oXHRcdFx0XFxcbitcdCAgICAgJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoSEVBREVSU19GT1JfQlBGX09CSlMpXHRcdFxcXG4rXHQgICAgIHwgJChSRElSKSAkKEJQRk9CSilcbitcdCQoY2FsbCBtc2csJChCUEZfQ0NfTVNHKSwkKEJJTkFSWSksJEApXG4rXHQkKFEpJChCUEZfQ0MpICQoQlBGX0NGTEFHUykgJChCUEZfU1lTX0lOQ0xVREVTKSAkKEJQRl9ERUZJTkVTKVx0XFxcbitcdFx0JCgkXHUwMDNjLUNGTEFHUykgJCgkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpXHRcdFx0XFxcbitcdFx0JChCUEZfQ0NfRkxBR1MpIC1jICRcdTAwM2MgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCUEYpXG4rXG4rR0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbitcbiskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXG4rXHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXHRcXFxuK1x0cHJpbnRmICcgICUtOHMlcyAlc1xcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJEApJzsgXFxcbitcdEJQRlRPT0w9JChCUEZUT09MKSAkKEdFTl9TS0VMKSAtLW5hbWUgJCpcdFx0XHRcdFx0XHRcXFxuK1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcdTAwM2NcdFx0XFxcbitcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuK1xuKyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXG4rXHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MpXHRcdFx0XHRcXFxuK1x0cHJpbnRmICcgICUtOHMlcyAlc1xcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJEApJzsgXFxcbitcdEJQRlRPT0w9JChCUEZUT09MKSAkKEdFTl9TS0VMKSAtLW5hbWUgJCpfbHNrZWwgLS1sc2tlbFx0XHRcdFx0XFxcbitcdFx0LS1za2VsICRAICRcdTAwM2MgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKVxuK1xuKyQoTFNLRUxTX1NJR05FRF9IKTogJChSRElSKS8lLmxza2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpXHRcXFxuK1x0XHQgICAgJChHRU5fU0tFTCkgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVCkgfCAkKFJESVIpXG4rXHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MpXHRcdFx0XHRcXFxuK1x0cHJpbnRmICcgICUtOHMlcyAlc1xcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSkgKHNpZ25lZCldJyAnJChub3RkaXIgJEApJzsgXFxcbitcdEJQRlRPT0w9JChCUEZUT09MKSBQUklWQVRFX0tFWT0kKFBSSVZBVEVfS0VZKVx0XHRcdFx0XFxcbitcdFx0VkVSSUZJQ0FUSU9OX0NFUlQ9JChWRVJJRklDQVRJT05fQ0VSVClcdFx0XHRcXFxuK1x0XHQkKEdFTl9TS0VMKSAtLXNpZ24gLS1uYW1lICQqX2xza2VsXHRcdFx0XFxcbitcdFx0LS1za2VsICRAICRcdTAwM2MgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKVxuK1xuKyMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuKy5TRUNPTkRFWFBBTlNJT046XG4rJChMSU5LRURfU0tFTFNfSCk6ICQoUkRJUikvJS5za2VsLmg6ICQkKGFkZHByZWZpeCAkKFJESVIpLywkJCgkJCouc2tlbC5oLWRlcHMpKSBcXFxuK1x0XHQgICAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKVxuK1x0JChRKSQoY2FsbCBza2lwX2lmX21pc3NpbmcsU0tFTCwkKGFkZHByZWZpeCAkKFJESVIpLywkKCQqLnNrZWwuaC1kZXBzKSksJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpIFxcXG4rXHRwcmludGYgJyAgJS04cyVzICVzXFxuJyAnTElOSy1CUEYnICcgWyQoQklOQVJZKV0nICckKG5vdGRpciAkKEA6LnNrZWwuaD0uYnBmLm8pKSc7IFxcXG4rXHRwcmludGYgJyAgJS04cyVzICVzXFxuJyAnR0VOLVNLRUwnICcgWyQoQklOQVJZKV0nICckKG5vdGRpciAkQCknOyBcXFxuK1x0QlBGVE9PTD0kKEJQRlRPT0wpICQoR0VOX1NLRUwpIC0tbmFtZSAkKlx0XHRcdFx0XHRcdFxcXG4rXHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaClcdFx0XFxcbitcdFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXHRcdFx0XFxcbitcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuK1xuK2VuZGlmICMgQlBGX0NDXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5lNDNjY2YwOTU1NzU2XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXG5AQCAtMCwwICsxLDk5IEBAXG4rIyEvYmluL2Jhc2hcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcImJwZnRvb2wgZ2VuIG9iamVjdFwiIGFuZCBnZW5lcmF0ZSBhXG4rIyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4rI1xuKyMgVXNhZ2U6XG4rIyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4rI1xuKyMgICAtLW5hbWUgTkFNRSAgICAgICBza2VsZXRvbiBvYmplY3QgbmFtZSAoXCJuYW1lIE5BTUVcIiBmb3IgYnBmdG9vbClcbisjICAgLS1za2VsIE9VVCAgICAgICAgb3V0cHV0IGhlYWRlciAoXCJmb28uc2tlbC5oXCIgb3IgXCJmb28ubHNrZWwuaFwiKVxuKyMgICAtLXN1YnNrZWwgT1VUICAgICBhbHNvIGdlbmVyYXRlIGEgc3Vic2tlbGV0b24gaGVhZGVyIGludG8gT1VUXG4rIyAgIC0tbHNrZWwgICAgICAgICAgIGdlbmVyYXRlIGEgbGlnaHQgc2tlbGV0b24gKGJwZnRvb2wgZ2VuIHNrZWxldG9uIC1MKVxuKyMgICAtLXNpZ24gICAgICAgICAgICBzaWduIHRoZSAobGlnaHQpIHNrZWxldG9uLCB3aXRoIHRoZSBrZXkgYW5kXG4rIyAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlIHRha2VuIGZyb20gJFBSSVZBVEVfS0VZIGFuZFxuKyMgICAgICAgICAgICAgICAgICAgICAkVkVSSUZJQ0FUSU9OX0NFUlRcbisjXG4rIyBUaGUgaW5wdXRzIGFyZSBsaW5rZWQgdGhyZWUgdGltZXMgYW5kIHRoZSAybmQgYW5kIDNyZCByZXN1bHRzXG4rIyBjb21wYXJlZCwgYXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBkZXRlcm1pbmlzbSBvZiBcImJwZnRvb2wgZ2VuXG4rIyBvYmplY3RcIi5cbisjXG4rIyBJbnRlcm1lZGlhdGUgZmlsZXMgYXJlIG5hbWVkIGFmdGVyIHRoZSBvdXRwdXQgaGVhZGVyIHdpdGggYSBcImxpbmtlZFwiXG4rIyBpbmZpeCAtIFwibGxpbmtlZFwiIGZvciBsaWdodCBvciBzaWduZWQgc2tlbGV0b25zLCBzbyBnZW5lcmF0aW5nIGFcbisjIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGUgc2FtZSAuYnBmLm8gaW4gcGFyYWxsZWwgbmV2ZXIgcmFjZXNcbisjIG9uIHRoZSBpbnRlcm1lZGlhdGVzLlxuKyNcbisjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuXG4rIyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0XG4rIyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXIncyBidXNpbmVzc1xuKyMgKHNlZSBza2lwX29uX2ZhaWwgaW4gdGhlIE1ha2VmaWxlKS5cbitcbitzZXQgLXVcbitcbiticGZ0b29sPSR7QlBGVE9PTDotYnBmdG9vbH1cbituYW1lPScnIHNrZWw9Jycgc3Vic2tlbD0nJ1xuK2xza2VsPTAgc2lnbj0wXG4rXG4rd2hpbGUgWyAkIyAtZ3QgMCBdOyBkb1xuK1x0Y2FzZSBcIiQxXCIgaW5cbitcdC0tbmFtZSlcdFx0bmFtZT0kMjsgc2hpZnQgMiA7O1xuK1x0LS1za2VsKVx0XHRza2VsPSQyOyBzaGlmdCAyIDs7XG4rXHQtLXN1YnNrZWwpXHRzdWJza2VsPSQyOyBzaGlmdCAyIDs7XG4rXHQtLWxza2VsKVx0bHNrZWw9MTsgc2hpZnQgOztcbitcdC0tc2lnbilcdFx0c2lnbj0xOyBzaGlmdCA7O1xuK1x0LS0pXHRcdHNoaWZ0OyBicmVhayA7O1xuK1x0LSopXHRcdGVjaG8gXCIkMDogdW5rbm93biBvcHRpb246ICQxXCIgXHUwMDNlXHUwMDI2MjsgZXhpdCAxIDs7XG4rXHQqKVx0XHRicmVhayA7O1xuK1x0ZXNhY1xuK2RvbmVcbitcbitpZiBbIC16IFwiJG5hbWVcIiBdIHx8IFsgLXogXCIkc2tlbFwiIF0gfHwgWyAkIyAtZXEgMCBdOyB0aGVuXG4rXHRlY2hvIFwidXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLlwiIFx1MDAzZVx1MDAyNjJcbitcdGV4aXQgMVxuK2ZpXG4rXG4raW5maXg9bGlua2VkXG4raWYgWyBcIiRsc2tlbFwiIC1lcSAxIF0gfHwgWyBcIiRzaWduXCIgLWVxIDEgXTsgdGhlblxuK1x0aW5maXg9bGxpbmtlZFxuK2ZpXG4rXG4raWYgWyBcIiRzaWduXCIgLWVxIDEgXSBcdTAwMjZcdTAwMjYgeyBbIC16IFwiJHtQUklWQVRFX0tFWS19XCIgXSB8fCBbIC16IFwiJHtWRVJJRklDQVRJT05fQ0VSVC19XCIgXTsgfTsgdGhlblxuK1x0ZWNobyBcIiQwOiAtLXNpZ24gcmVxdWlyZXMgUFJJVkFURV9LRVkgYW5kIFZFUklGSUNBVElPTl9DRVJUIGluIHRoZSBlbnZpcm9ubWVudFwiIFx1MDAzZVx1MDAyNjJcbitcdGV4aXQgMVxuK2ZpXG4rXG4rYmFzZT0ke3NrZWwlLnNrZWwuaH1cbitiYXNlPSR7YmFzZSUubHNrZWwuaH1cbit0MT0kYmFzZS4ke2luZml4fTEub1xuK3QyPSRiYXNlLiR7aW5maXh9Mi5vXG4rdDM9JGJhc2UuJHtpbmZpeH0zLm9cbitcbitmYWlsKCkge1xuK1x0cm0gLWYgXCIkc2tlbFwiICR7c3Vic2tlbDorXCIkc3Vic2tlbFwifSBcIiR0MVwiIFwiJHQyXCIgXCIkdDNcIlxuK1x0ZXhpdCAxXG4rfVxuK1xuK1wiJGJwZnRvb2xcIiBnZW4gb2JqZWN0IFwiJHQxXCIgXCIkQFwiIHx8IGZhaWxcbitcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0MlwiIFwiJHQxXCIgfHwgZmFpbFxuK1wiJGJwZnRvb2xcIiBnZW4gb2JqZWN0IFwiJHQzXCIgXCIkdDJcIiB8fCBmYWlsXG4raWYgISBjbXAgLXMgXCIkdDJcIiBcIiR0M1wiOyB0aGVuXG4rXHRlY2hvIFwiJDA6IGJwZnRvb2wgZ2VuIG9iamVjdCBpcyBub3QgZGV0ZXJtaW5pc3RpYyBmb3IgJHNrZWxcIiBcdTAwM2VcdTAwMjYyXG4rXHRmYWlsXG4rZmlcbitcbithcmdzPSgpXG4raWYgWyBcIiRzaWduXCIgLWVxIDEgXTsgdGhlblxuK1x0YXJncys9KC1TIC1rIFwiJFBSSVZBVEVfS0VZXCIgLWkgXCIkVkVSSUZJQ0FUSU9OX0NFUlRcIilcbitmaVxuK2lmIFsgXCIkbHNrZWxcIiAtZXEgMSBdOyB0aGVuXG4rXHRhcmdzKz0oLUwpXG4rZmlcbitcIiRicGZ0b29sXCIgZ2VuIHNrZWxldG9uICR7YXJnc1tAXStcIiR7YXJnc1tAXX1cIn0gXCIkdDNcIiBuYW1lIFwiJG5hbWVcIiBcdTAwM2UgXCIkc2tlbFwiIHx8IGZhaWxcbitcbitpZiBbIC1uIFwiJHN1YnNrZWxcIiBdOyB0aGVuXG4rXHRcIiRicGZ0b29sXCIgZ2VuIHN1YnNrZWxldG9uIFwiJHQzXCIgbmFtZSBcIiRuYW1lXCIgXHUwMDNlIFwiJHN1YnNrZWxcIiB8fCBmYWlsXG4rZmlcbitcbitybSAtZiBcIiR0MVwiIFwiJHQyXCIgXCIkdDNcIlxuK2V4aXQgMFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jXG5pbmRleCAyYmI1NzczZDZmOTkzLi5lYTM0Mjg1OWQ2Y2UxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xuQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdHJ1Y3QgZXhwb3NlZF9ob29rIHtcbiBcdFx0LmV4cGVjdGVkX2VyciA9IEVYUEVDVEVEX0VSUiwgXFxcbiBcdH0sXG4gXG4tI2luY2x1ZGUgXCJjZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oXCJcbisjaW5jbHVkZSBcInByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcIlxuIFxuICN1bmRlZiBCUEZfUkVUVkFMX0hPT0tcbiB9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbnNpbWlsYXJpdHkgaW5kZXggMTAwJVxucmVuYW1lIGZyb20gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbnJlbmFtZSB0byB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMjA6MTQ6MzYuNzAwOTc4Njc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAyNDk5NDY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBUaGlzIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIHBhdGNoIGludHJvZHVjZXMgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZiB0aGF0ICpyZXF1aXJlKiBmdXp6aW5nLiBJIHNlZSBhIHNlcmllcyBvZiBtb2RpZmljYXRpb25zLCBhbGwgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFNwZWNpZmljYWxseSwgSSdtIG5vdGljaW5nIGFkZGl0aW9ucyBvZiBuZXcgTWFrZWZpbGVzOiBgTWFrZWZpbGUuYnVpbGR2YXJzYCwgYE1ha2VmaWxlLnJ1bm5lcmAsIGBNYWtlZmlsZS5za2VsYCwgYW5kIGBnZW5fYnBmX3NrZWwuc2hgLiBUaGVyZSdzIGFsc28gYSByZW5hbWUgZnJvbSBgY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaGAgdG8gYHByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhgLCBhbmQgYW4gaW5jbHVkZSB1cGRhdGUgaW4gYGNncm91cF9nZXRzZXRfcmV0dmFsLmNgLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2VzIGFyZSBhbGwgaXNvbGF0ZWQgdG8gdGhlIHNlbGZ0ZXN0cyBpbmZyYXN0cnVjdHVyZSB3aXRoaW4gdGhlIEJQRiBzdWJzeXN0ZW0uIEkgZG9uJ3Qgc2VlIGFueXRoaW5nIGRpcmVjdGx5IHRvdWNoaW5nIGNvcmUga2VybmVsIGNvZGUsIGp1c3QgdGhlIHRlc3RpbmcgaGFybmVzcy5cblxuVG8gYmUgZXh0cmEgc3VyZSwgbGV0J3MgcXVpY2tseSByZS1leGFtaW5lIHRob3NlIGZpbGVzOiBgTWFrZWZpbGVgLCBgTWFrZWZpbGUuYnVpbGR2YXJzYCwgYE1ha2VmaWxlLnJ1bm5lcmAsIGBNYWtlZmlsZS5za2VsYCwgYGdlbl9icGZfc2tlbC5zaGAsIGBwcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmNgLCBhbmQgYHByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhgLiBZZXAsIHN0aWxsIG5vIGtlcm5lbCBzb3VyY2UgY29kZSBiZWluZyBkaXJlY3RseSBtb2RpZmllZC5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBrZXJuZWwtbGV2ZWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBUaGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjE1LCJPdXRwdXRUb2tlbnMiOjY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMjA6MTQ6NDMuNzI1OTc2MzcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzcyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QyMDoxNDo0My43MjU5OTc0ODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowlx7jh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-23 19:45:46 +0000 UTC FinishedAt: 2026-08-23 20:14:44 +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+CgkJCTx0ZD4yMDI2LzA4LzIzIDIwOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBzY3JpcHRzKSBhbmQgcmVuYW1lcyBhIHRlc3QgaGVhZGVyIGZpbGUuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAyMDoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJkYWZlMmI5NjFkMTNiYzQzOWNhYzFjNDJiOTk2NWMzNDhhYzQ0ZDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAyMDoxNDozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbmluZGV4IDVmMWEzYmZjMDU2OWYuLjliOTkwNTYxMDA3MGQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuQEAgLTQsOTMgJiM0Mzs0LDE5IEBAIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoXG4gaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcbiBcbiBDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7XG4tT0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxuLVxuLUNVUkRJUiA6PSAkKGFic3BhdGggLilcbi1UT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4tTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxuLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmXG4tVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxuLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcbi1BUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxuLWlmbmVxICgkKE8pLClcbi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuLWVsc2Vcbi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKVxuLWVuZGlmXG4tR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXG4tUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xuLVxuLWlmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxuLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxuLWVuZGlmXG4gXG4gQlBGX0dDQ1x0XHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4taWZkZWYgQVNBTlxuLVNBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbi1lbHNlXG4tU0FOX0NGTEFHU1x0Pz1cbi1lbmRpZlxuLVNBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4tUkVMRUFTRVx0XHQ/PVxuLU9QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4tXG4tTElCRUxGX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXHUwMDNlL2Rldi9udWxsKVxuLUxJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4gXG4gU0tJUF9ET0NTXHQ/PVxuIFNLSVBfTExWTVx0Pz1cbiBTS0lQX0xJQkJGRFx0Pz1cbiBTS0lQX0NSWVBUT1x0Pz1cbiBcbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbi1cbi1pZmVxICgkKHNyY3RyZWUpLClcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLWVuZGlmXG4tXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbi1cdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbi1cdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuLVx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuLVx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4tXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4tXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbi1MREZMQUdTICYjNDM7PSAkKFNBTl9MREZMQUdTKVxuLUxETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4tXG4tUENBUF9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gXCYjMzQ7LURUUkFGRklDX01PTklUT1I9MVwmIzM0Oylcbi1QQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuLUxETElCUyAmIzQzOz0gJChQQ0FQX0xJQlMpXG4tQ0ZMQUdTICYjNDM7PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXG4tXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXG4tXG4taWZuZXEgKCQoTExWTSksKVxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuLUNGTEFHUyAmIzQzOz0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4tZW5kaWZcbi1cbiAjIENoZWNrIHdoZXRoZXIgYnBmIGNwdT12NCBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IGNsYW5nXG4gaWZuZXEgKCQoc2hlbGwgJChDTEFORykgLS10YXJnZXQ9YnBmIC1tY3B1PWhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwICYjMzk7djQmIzM5OyksKVxuIENMQU5HX0NQVVY0IDo9IDFcbiBlbmRpZlxuIFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOylcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4tXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxuLVx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcbi1cdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuLVxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAmIzM5O21ha2UgcnVuX3Rlc3RzJiMzOTsgb3JkZXJcbiBURVNUX0dFTl9QUk9HUyA9IHRlc3RfdmVyaWZpZXIgdGVzdF90YWcgdGVzdF9tYXBzIHRlc3RfbHJ1X21hcCB0ZXN0X3Byb2dzIFxcXG4gXHR0ZXN0X3NvY2ttYXAgXFxcbkBAIC0xMDIsMTYgJiM0MzsyOCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuIFRFU1RfR0VOX1BST0dTICYjNDM7PSB0ZXN0X3Byb2dzLWJwZl9nY2NcbiBURVNUX0lOU1RfU1VCRElSUyAmIzQzOz0gYnBmX2djY1xuLVxuLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2Zcbi0jIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLlxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4tXG4gZW5kaWZcbiBcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuQEAgLTE2OCw3ICYjNDM7ODQsMjEgQEAgb3ZlcnJpZGUgZGVmaW5lIENMRUFOXG4gXHQkKFEpJChNQUtFKSBkb2NzLWNsZWFuXG4gZW5kZWZcbiBcbiYjNDM7IyAuLi9saWIubWsgYXBwZW5kcyB0byB0aGUgZmxhZ3MgaW5oZXJpdGVkIGZyb20gdGhlIGVudmlyb25tZW50O1xuJiM0MzsjIE1ha2VmaWxlLmJ1aWxkdmFycyByZWJ1aWxkcyBDRkxBR1MgYW5kIExERkxBR1MgYXJvdW5kIHRoZXNlIHNuYXBzaG90c1xuJiM0MzsjIHNvIHRoYXQgaXRzIG93biBhZGRpdGlvbnMgcHJlY2VkZSBsaWIubWsmIzM5O3MsIGFzIHRoZXkgZGlkIHdoZW4gdGhleVxuJiM0MzsjIHdlcmUgZGVmaW5lZCBhYm92ZSB0aGUgaW5jbHVkZS5cbiYjNDM7SU5IRVJJVEVEX0NGTEFHUyA6PSAkKENGTEFHUylcbiYjNDM7SU5IRVJJVEVEX0xERkxBR1MgOj0gJChMREZMQUdTKVxuIGluY2x1ZGUgLi4vbGliLm1rXG4mIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzXG4mIzQzO1xuJiM0MzsjIERlZmluaXRpb25zIG9ubHkgdGhpcyBNYWtlZmlsZSBjb25zdW1lczsgcGxhY2VkIGFmdGVyIHRoZSBpbmNsdWRlXG4mIzQzOyMgYmVjYXVzZSBzb21lIG9mIHRoZW0gZGVyaXZlIGZyb20gTWFrZWZpbGUuYnVpbGR2YXJzIHZhbHVlcy5cbiYjNDM7QlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuJiM0MztIT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbiYjNDM7QlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbiYjNDM7Q0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4gXG4gTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHNcbiBDSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLCBcJiMzNDtub25lXCYjMzQ7KSlcbkBAIC0yMTMsMjEgJiM0MzsxNDMsOSBAQCBpZmVxICgkKGZlYXR1cmUtbGx2bSksMSlcbiBlbmRpZlxuIGVuZGlmXG4gXG4tU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4tQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXG4tSU5DTFVERV9ESVIgOj0gJChTQ1JBVENIX0RJUikvaW5jbHVkZVxuLUJQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuLUhPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKS9ob3N0XG4tSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbi1IT1NUX0lOQ0xVREVfRElSXHQ6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL2luY2x1ZGVcbi1lbHNlXG4tSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4tSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChTQ1JBVENIX0RJUilcbi1IT1NUX0lOQ0xVREVfRElSXHQ6PSAkKElOQ0xVREVfRElSKVxuLWVuZGlmXG4tSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4tUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcbiYjNDM7IyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuJiM0MzskKE9VVFBVVCkvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyAmIzQzOz0gJChMTFZNX0NGTEFHUylcbiYjNDM7XG4gVk1MSU5VWF9CVEZfUEFUSFMgPz0gJChpZiAkKE8pLCQoTykvdm1saW51eClcdFx0XHRcdFxcXG4gXHRcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcdFxcXG4gXHRcdCAgICAgLi4vLi4vLi4vLi4vdm1saW51eFx0XHRcdFx0XFxcbkBAIC0yNDYsNyAmIzQzOzE2NCw3IEBAICQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcdFx0XHRcdFxcXG4gXHQgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7XG4gXG4gIyBzb3J0IHJlbW92ZXMgbGliYnBmIGR1cGxpY2F0ZXMgd2hlbiBub3QgY3Jvc3MtYnVpbGRpbmdcbi1NQUtFX0RJUlMgOj0gJChzb3J0ICQoQlVJTERfRElSKS9saWJicGYgJChIT1NUX0JVSUxEX0RJUikvbGliYnBmXHRcXFxuJiM0MztNQUtFX0RJUlMgOj0gJChzb3J0ICQoT1VUUFVUKSAkKEJVSUxEX0RJUikvbGliYnBmICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZiBcXFxuIFx0ICAgICAgICQoQlVJTERfRElSKS9icGZ0b29sICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcdFx0XFxcbiBcdCAgICAgICAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkc1x0XHRcdFx0XFxcbiBcdCAgICAgICAkKElOQ0xVREVfRElSKSlcbkBAIC0yNTgsOSAmIzQzOzE3NiwxMiBAQCAkKE9VVFBVVCkvJS5vOiAlLmNcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuIFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuJiM0MzsjIEhlYWRlcnMgbWF5IGFwcGVhciBhbW9uZyB0aGUgcHJlcmVxdWlzaXRlcyBmb3IgZGVwZW5kZW5jeSB0cmFja2luZztcbiYjNDM7IyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXG4mIzQzOyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS5cbiAkKE9VVFBVVCkvJTolLmNcbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKExJTksuYykgJF4gJChMRExJQlMpIC1vICRAXG4mIzQzO1x0JChRKSQoTElOSy5jKSAkKGZpbHRlci1vdXQgJS5oLCReKSAkKExETElCUykgLW8gJEBcbiBcbiAjIExMVk0mIzM5O3MgbGQubGxkIGRvZXNuJiMzOTt0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODZcbiBpZmVxICgkKFNSQ0FSQ0gpLCQoZmlsdGVyICQoU1JDQVJDSCkseDg2IHJpc2N2KSlcbkBAIC0zMTMsMTcgJiM0MzsyMzQsNiBAQCAkKFRFU1RfS01PRF9UQVJHRVRTKTogJChhZGRwcmVmaXggdGVzdF9rbW9kcy8sJChURVNUX0tNT0RTKSlcbiBcdCQoY2FsbCBtc2csTU9ELCwkQClcbiBcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcbiBcbi1cbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ1JPU1NfQlBGVE9PTCA6PSAkKFNDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCYjMzQ7XCYjMzQ7XG4tZWxzZVxuLVRSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwmIzM0O2Jvb3RzdHJhcC9cJiMzNDtcbi1lbmRpZlxuLVxuICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSilcbiBcbiBURVNUSU5HX0hFTFBFUlNcdDo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuQEAgLTMzOSwxMiAmIzQzOzI0OSwzMyBAQCAkKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpICQoVFJBQ0VfSEVMUFxuICQoT1VUUFVUKS90ZXN0X3NvY2tfZmllbGRzOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUylcbiAkKE9VVFBVVCkvdGVzdF90YWc6ICQoVEVTVElOR19IRUxQRVJTKVxuICQoT1VUUFVUKS90ZXN0X2xpcmNfbW9kZTJfdXNlcjogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKVxuLSQoT1VUUFVUKS90ZXN0X21hcHM6ICQoVEVTVElOR19IRUxQRVJTKVxuJiM0MzskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpIGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxuICQoT1VUUFVUKS90ZXN0X3ZlcmlmaWVyOiAkKFRFU1RJTkdfSEVMUEVSUykgJChDQVBfSEVMUEVSUykgJChVTlBSSVZfSEVMUEVSUylcbi0kKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKVxuIFxuLUJQRlRPT0wgPz0gJChERUZBVUxUX0JQRlRPT0wpXG4mIzQzOyMgRGVmaW5lZCBhaGVhZCBvZiB0aGUgZmlyc3QgcnVsZSB0aGF0IGxpc3RzIGl0IGFzIGEgcHJlcmVxdWlzaXRlLlxuJiM0MztWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oXG4mIzQzO1xuJiM0MzsjIFRoZSB1c2Vyc3BhY2Ugb2JqZWN0cyB0aGUgcnVubmVyIGluc3RhbmNlcyBsaW5rIChSVU5ORVJfT0JKUywgc2VlXG4mIzQzOyMgTWFrZWZpbGUuYnVpbGR2YXJzKSBhcmUgYnVpbHQgaGVyZSwgb25jZSwgc28gdGhhdCBubyBydW5uZXIgc3ViLW1ha2VcbiYjNDM7IyBldmVyIHdyaXRlcyBhIGZpbGUgdGhpcyBNYWtlZmlsZSBhbHNvIGJ1aWxkcy5cbiYjNDM7I1xuJiM0MzsjICQoVFJVTk5FUl9CUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0XG4mIzQzOyMgaW5zdGFsbHMgbGliYnBmJiMzOTtzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaClcbiYjNDM7IyBpbnRvICQoSU5DTFVERV9ESVIpIC0gdGhlIGNyb3NzLWNvbXBpbGVkIGJwZnRvb2wmIzM5O3Mgd2hlbiBjcm9zcy1jb21waWxpbmc7XG4mIzQzOyMgd2l0aG91dCBpdCwgdHJhY2VfaGVscGVycy5jIHJhY2VzIHRoZSBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cFxuJiM0MzsjIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC5cbiYjNDM7UlVOTkVSX09CSlMgOj0gJChzb3J0ICQoUlVOTkVSX09CSlMtdGVzdF9wcm9ncykgJChSVU5ORVJfT0JKUy10ZXN0X21hcHMpXFxcbiYjNDM7XHRcdCAgICAgICQoUlVOTkVSX0xJQl9PQkpTLXRlc3RfcHJvZ3MpKVxuJiM0MzskKFJVTk5FUl9PQkpTKTogJChWRVJJRllfU0lHX0hEUikgJChCUEZPQkopICQoVFJVTk5FUl9CUEZUT09MKVxuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy5vOiBwcm9nX3Rlc3RzL3Rlc3RzLmhcbiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwcy5vOiBtYXBfdGVzdHMvdGVzdHMuaFxuJiM0MztcbiYjNDM7IyBmaW5kX2JpdC5jIGlzIHRoZSBvbmx5IHJ1bm5lciBzb3VyY2Ugb3V0c2lkZSB0aGlzIGRpcmVjdG9yeSxcbiYjNDM7IyBzbyBpdCBuZWVkcyBhIHJ1bGUgb2YgaXRzIG93bi5cbiYjNDM7JChPVVRQVVQpL2ZpbmRfYml0Lm86ICQoVE9PTFNESVIpL2xpYi9maW5kX2JpdC5jXG4mIzQzO1x0JChjYWxsIG1zZyxDQywsJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjICQoTERMSUJTKSAtbyAkQFxuJiM0MztcbiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXFxcbiBcdFx0ICAgICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvYnBmdG9vbFxuIFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcdFx0XHQgICAgICAgXFxcbkBAIC00MTIsNyAmIzQzOzM0Myw3IEBAIGVuZGlmXG4gXG4gIyB2bWxpbnV4LmggaXMgZmlyc3QgZHVtcGVkIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHRoZW4gY29tcGFyZWQgdG9cbiAjIHRoZSBwcmV2aW91cyB2ZXJzaW9uLiBUaGlzIGhlbHBzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHJlLWJ1aWxkcyBvZlxuLSMgJChUUlVOTkVSX0JQRl9PQkpTKVxuJiM0MzsjIEJQRiBvYmplY3RzLlxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXG4gaWZlcSAoJChWTUxJTlVYX0gpLClcbiBcdCQoY2FsbCBtc2csR0VOLCwkQClcbkBAIC00MzcsMzc0ICYjNDM7MzY4LDEyIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzXHRcXFxuIFx0XHRIT1NUUEtHX0NPTkZJRz0mIzM5OyQoUEtHX0NPTkZJRykmIzM5OyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieVxuLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyBcJiMzNDttaXNzaW5nXCYjMzQ7IGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxuLSNcbi0jIFVzZSAmIzM5Oy1pZGlyYWZ0ZXImIzM5OzogRG9uJiMzOTt0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXG4tZGVmaW5lIGdldF9zeXNfaW5jbHVkZXNcbi0kKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuLVx0fCBzZWQgLW4gJiMzOTsvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfSYjMzk7KSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZFwmIzM0OywgJCQzKX0mIzM5OykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKFwmIzM0Oy1EJXM9JXMgXCYjMzQ7LCAkJDIsICQkMyl9JiMzOTspXG4tZW5kZWZcbi1cbi0jIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cbi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgXFxcbi1cdFx0XHRncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKFRPT0xTSU5DRElSKSAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFxcXG4tXHQgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSlcdFx0XHRcXFxuLVx0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXHRcdFx0XFxcbi1cdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcdFx0XHRcdFx0XFxcbi1cdCAgICAgI1xuLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlXG4tXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4tXG4tJChPVVRQVVQpL3Rlc3RfbDRsYl9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICYjNDM7PSAtZm5vLWlubGluZVxuLSQoT1VUUFVUKS90ZXN0X3hkcF9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICYjNDM7PSAtZm5vLWlubGluZVxuLVxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxuLSQoT1VUUFVUKS9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5vOiBjZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oXG4tXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXG4tIyAkMSAtIGlucHV0IC5jIGZpbGVcbi0jICQyIC0gb3V0cHV0IC5vIGZpbGVcbi0jICQzIC0gQ0ZMQUdTXG4tIyAkNCAtIGJpbmFyeSBuYW1lXG4tZGVmaW5lIENMQU5HX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBkaXNhYmxlZCBhbHUzMlxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MiAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcbi1kZWZpbmUgQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXG4tXHQkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXY0IC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgR0NDXG4tZGVmaW5lIEdDQ19CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxHQ0MtQlBGLCQ0LCQyKVxuLVx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLVxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcbi1cbi1MSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4tXHRcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXHRcdFx0XFxcbi1cdFx0dGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oXHRcXFxuLVx0XHR0ZXN0X3VzZHQuc2tlbC5oIHRyYWNpbmdfbXVsdGkuc2tlbC5oXHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oXHRcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmhcdFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmhcbi1cbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXHRcXFxuLVx0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuLVx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXG4tXHR0ZXN0X3JpbmdidWZfb3ZlcndyaXRlLmNcbi1cbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xuLVxuLSMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXG4tXHRrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmNcbi1TS0VMX0JMQUNLTElTVCAmIzQzOz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQmIzM5O3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4tdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4teHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xuLXhkcF9mZWF0dXJlcy5za2VsLmgtZGVwcyA6PSB4ZHBfZmVhdHVyZXMuYnBmLm9cbi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLVxuLUxJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSlcbi1cbi1IRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuLVx0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbi1cdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbi1cdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuLVx0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4tXG4tIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggXCYjMzQ7dGVtcG9yYXJ5XCYjMzQ7IHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJcbi1cbi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpXG4tVFJVTk5FUl9PVVRQVVQgOj0gJChPVVRQVVQpJChpZiAkMiwvKSQyXG4tVFJVTk5FUl9CSU5BUlkgOj0gJDEkKGlmICQyLC0pJDJcbi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLFx0XFxcbi1cdFx0XHRcdCAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpXG4tVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSlcbi1UUlVOTkVSX0xJQl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFx0XHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0xJQl9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9FWFRSQV9IRFJTIDo9ICQkKGZpbHRlciAlLmgsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKVxuLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmhcbi1UUlVOTkVSX0JQRl9TUkNTIDo9ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5jKSlcbi1UUlVOTkVSX0JQRl9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5icGYubywgJCQoVFJVTk5FUl9CUEZfU1JDUykpXG4tVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCxcdFxcXG4tXHRcdFx0XHQgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXFxcbi1cdFx0XHRcdFx0ICAgICAgICQkKFRSVU5ORVJfQlBGX1NSQ1MpKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMUykgJCQoTFNLRUxTX0VYVFJBKSlcbi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKVxuLVRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmxza2VsLmgsICQkKExTS0VMU19TSUdORUQpKVxuLVRFU1RfR0VOX0ZJTEVTICYjNDM7PSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcJiMzNDtmbGF2b3JcJiMzNDsgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxuLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVNcbi1cbi0jIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4tIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3Rcbi0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXG4tIyBUaGUgY2hlY2sgaXMgaW5saW5lZCBwZXItcnVubmVyIHNvICQxIGlzIHN1YnN0aXR1dGVkIGF0ICQoY2FsbCkgdGltZSBhbmRcbi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUmIzM5O3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpIChzaWduZWQpXSAkJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCQoQDouc2tlbC5oPS5icGYubykpJiMzOTsgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7XHRcdFx0XHRcdFxcXG4tXHRcdCAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXFwoKHZvaWQpP1xcKS4qL0RFRklORV9URVNUKFxcMikvcCYjMzk7XHRcXFxuLVx0XHRcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1x0XFxcbi1cdFx0ICkgXHUwMDNlICQkQClcbi1lbmRpZlxuLVxuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm9cbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXG4tXG4tIyBjb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlc1xuLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kXG4tJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOlx0XHRcdFxcXG4tXHRcdCAgICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFx0XFxcbi1cdFx0ICAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QuZFxuLVx0JCQoY2FsbCBtc2csVEVTVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKVxuLVx0JChRKShjZCAkJChARCkgXHUwMDI2XHUwMDI2ICQkKENDKSAtSS4gJCQoQ0ZMQUdTKSAtTU1EIC1NVCAkJEAgLWMgJChDVVJESVIpLyQkXHUwMDNjICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1URVNUJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDFcdTAwM2VcdTAwMjYyKSkpXG4tXHQkJChpZiAkJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFx0XFxcbi1cdFx0JChRKWlmIFsgLWYgJCRAIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoVFJVTk5FUl9CSU5BUlkpXVwmIzM0OyBcJiMzNDskJChub3RkaXIgJCRAKVwmIzM0Oyk7IFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vICQkQDtcdFxcXG4tXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICQkQC5CVEZfaWRzICQkQDtcdFx0XFxcbi1cdFx0ZmkpXG4tXG4tJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOlx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9URVNUU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRClcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXG4tXG4taWZlcSAoJChmaWx0ZXIgY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzLCQoTUFLRUNNREdPQUxTKSksKVxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcbi1lbmRpZlxuLVxuLSMgYWRkIHBlciBleHRyYSBvYmogQ0ZHTEFHUyBkZWZpbml0aW9uc1xuLSQoZm9yZWFjaCBOLCQocGF0c3Vic3QgJChUUlVOTkVSX09VVFBVVCkvJS5vLCUsJChUUlVOTkVSX0VYVFJBX09CSlMpKSxcdFxcXG4tXHQkKGV2YWwgJChUUlVOTkVSX09VVFBVVCkvJChOKS5vOiBDRkxBR1MgJiM0Mzs9ICQoJChOKS5jLUNGTEFHUykpKVxuLVxuLSQoVFJVTk5FUl9FWFRSQV9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5vOlx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICUuY1x0XHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoVFJVTk5FUl9URVNUU19IRFIpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSQoVFJVTk5FUl9MSUJfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzokKFRPT0xTRElSKS9saWIvJS5jXG4tXHQkJChjYWxsIG1zZyxMSUItT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAtYyAkJFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxuLVxuLSMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXG4tIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXG4tJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzOiAkKFRSVU5ORVJfRVhUUkFfRklMRVMpIHwgJChUUlVOTkVSX09VVFBVVClcbi1pZm5lcSAoJDI6JChPVVRQVVQpLDokKHNoZWxsIHB3ZCkpXG4tXHQkJChjYWxsIG1zZyxFWFQtQ09QWSwkKFRSVU5ORVJfQklOQVJZKSwkKFRSVU5ORVJfRVhUUkFfRklMRVMpKVxuLVx0JChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvXG4tZW5kaWZcbi1cbi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiB8ICQoVFJVTk5FUl9CUEZfT0JKUylcbi1cbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKVx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopXHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfTElCX09CSlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoVFJVTk5FUl9CUEZUT09MKVx0XHRcdFx0XFxcbi1cdFx0XHQgICAgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XFxcbi1cdFx0XHQgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzXHRcdFx0XFxcbi1cdFx0XHQgICAgICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSkpXG4tXHQkJChjYWxsIG1zZyxCSU5BUlksLCQkQClcbi1cdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEBcbi1cdCQoUSlsbiAtc2YgJChpZiAkMiwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXG4tXHRcdCAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sXG4tXG4tZW5kZWZcbi1cbi1WRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4tVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxuLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlclxuLVBSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cbi1cbi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKVxuJiM0MzsjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdFxuJiM0MzsjIGdyb3VwZWQgLSBpZiBib3RoIGZpbGVzIGFyZSBzdGFsZSBtYWtlIHdvdWxkIHJ1biBnZW5rZXkgdHdpY2UsIHVuZGVyXG4mIzQzOyMgLWogY29uY3VycmVudGx5LCBhbmQgdGhlIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybVxuJiM0MzsjIGlzIGltcGxpY2l0bHkgZ3JvdXBlZCBldmVuIHdpdGggbWFrZSBcdTAwM2MgNC4zLiBUaGUgc3RlbSBvbmx5IHN0YW5kcyBpblxuJiM0MzsjIGZvciAmIzM5O3NpZ25pbmcmIzM5OyBzbyB0aGF0IG5vIG90aGVyIC5wZW0vLmRlciB1bmRlciAkKEJVSUxEX0RJUikgbWF0Y2hlcy5cbiYjNDM7JChCVUlMRF9ESVIpLyVfa2V5LnBlbSAkKEJVSUxEX0RJUikvJV9rZXkuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXG4gXHQkKFEpbWtkaXIgLXAgJChCVUlMRF9ESVIpXG4gXHQkKFEpJChWRVJJRllfU0lHX1NFVFVQKSBnZW5rZXkgJChCVUlMRF9ESVIpXG4gXG5AQCAtODMzLDcgJiM0Mzs0MDIsNiBAQCBMSUJBUkVOQV9DT01NT05fREVQUyA6PSAkKHdpbGRjYXJkIGxpYmFyZW5hL01ha2VmaWxlXHRcdFxcXG4gTElCQVJFTkFfQlBGX0RFUFMgOj0gJChMSUJBUkVOQV9DT01NT05fREVQUykgJCh3aWxkY2FyZCBsaWJhcmVuYS9zZWxmdGVzdHMvKilcbiBMSUJBUkVOQV9CRU5DSF9CUEZfREVQUyA6PSAkKExJQkFSRU5BX0NPTU1PTl9ERVBTKSAkKHdpbGRjYXJkIGxpYmFyZW5hL2JlbmNocy8qKVxuIFxuLUxJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4gTElCQVJFTkFfQkVOQ0hfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9iZW5jaC5za2VsLmhcbiBcbiAkKExJQkFSRU5BX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXG5AQCAtODQzLDk1ICYjNDM7NDExLDEyNiBAQCAkKExJQkFSRU5BX0JFTkNIX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQkVOQ0hfQlBGX1xuIFx0JiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGJlbmNobWFya3MgJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gXG4gaWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbi1MSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbi1DRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXG4gXG4gJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpXG4gXHQmIzQzOyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHNcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3Ncbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jXHRcdFxcXG4tXHRcdFx0IGNncm91cF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRyYWNlX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgbmV0d29ya19oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRlc3RpbmdfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBidGZfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IGNhcF9oZWxwZXJzLmNcdFx0XFxcbi1cdFx0XHQgdW5wcml2X2hlbHBlcnMuYyBcdFxcXG4tXHRcdFx0IHN5c2N0bF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldGxpbmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBqaXRfZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaW9faGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHRlc3RfbG9hZGVyLmNcdFx0XFxcbi1cdFx0XHQgeHNrLmNcdFx0XHRcXFxuLVx0XHRcdCBkaXNhc20uY1x0XHRcXFxuLVx0XHRcdCBkaXNhc21faGVscGVycy5jXHRcXFxuLVx0XHRcdCBqc29uX3dyaXRlci5jIFx0XHRcXFxuLVx0XHRcdCAkKFZFUklGWV9TSUdfSERSKVx0XHRcXFxuLVx0XHRcdCBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcdFxcXG4tXHRcdFx0IGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcXFxuLVx0XHRcdCBicGZ0b29sX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgdXNkdF8xLmMgdXNkdF8yLmNcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfU0tFTClcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICBpbWFfc2V0dXAuc2ggXHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpXG4tXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1jcHV2NCB0ZXN0IHJ1bm5lci5cbiYjNDM7IyBHZW5lcmF0ZWQgdGVzdCBsaXN0IGhlYWRlcnNcbiYjNDM7XG4mIzQzO2RlZmluZSBnZW5fdGVzdHNfaGRyXG4mIzQzO1x0JChjYWxsIG1zZyxURVNULUhEUiwsJEApXG4mIzQzO1x0JChRKShlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OztcdFx0XFxcbiYjNDM7XHRcdCAgc2VkIC1uIC1FICYjMzk7cy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dJiM0MzspXFwoKHZvaWQpP1xcKS4qL0RFRklORV9URVNUKFxcMikvcCYjMzk7XHRcXFxuJiM0MztcdFx0JChARCkvKi5jIHwgc29ydCkgXHUwMDNlICRAXG4mIzQzO2VuZGVmXG4mIzQzO1xuJiM0Mztwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXG4mIzQzO1x0JChnZW5fdGVzdHNfaGRyKVxuJiM0MztcbiYjNDM7bWFwX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgbWFwX3Rlc3RzLyouYylcbiYjNDM7XHQkKGdlbl90ZXN0c19oZHIpXG4mIzQzO1xuJiM0MzsjIFRlc3QgcnVubmVyIGluc3RhbmNlcywgb25lIHN1Yi1tYWtlIGVhY2ggKHNlZSBNYWtlZmlsZS5ydW5uZXIpLlxuJiM0MztcbiYjNDM7IyBUaGUgTExWTSBmZWF0dXJlLXByb2JlIHJlc3VsdHMgYW5kIFRFU1RfS01PRFMgYXJlIGV4cG9ydGVkXG4mIzQzOyMgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuIENDIGlzIHBhc3NlZCBleHBsaWNpdGx5IGluc3RlYWQ6IGV4cG9ydGluZyBpdFxuJiM0MzsjIHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MgQ0MgaW50byB0aGUgbGliYnBmIHN1Yi1idWlsZCwgd2hpY2ggY29tcHV0ZXNcbiYjNDM7IyBpdHMgb3duLiAoJiMzOTtleHBvcnQgTkFNRSYjMzk7IG9uIGFuIHVuZGVmaW5lZFxuJiM0MzsjIHZhcmlhYmxlIGNyZWF0ZXMgYW4gZW1wdHkgb25lLCBzbyB0aGVzZSBzdGF5IGJlbG93IHRoZSBkZWZpbml0aW9ucy4pXG4mIzQzO2V4cG9ydCBMTFZNX0xETElCUyBMTFZNX0xERkxBR1MgVEVTVF9LTU9EU1xuJiM0MztleHBvcnQgSU5IRVJJVEVEX0NGTEFHUyBJTkhFUklURURfTERGTEFHU1xuJiM0MztcbiYjNDM7UlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0mIzM5OyQoQ0MpJiMzOTtcdFxcXG4mIzQzO1x0ICAgICAgIENMQU5HPSYjMzk7JChDTEFORykmIzM5O1xuJiM0MztcbiYjNDM7IyBFdmVyeXRoaW5nIGEgcnVubmVyIGluc3RhbmNlIHJlZmVyZW5jZXMgYnV0IGRvZXMgbm90IGtub3cgaG93IHRvIGJ1aWxkLlxuJiM0MztSVU5ORVJfUFJFUkVRUyA6PSAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoQlBGVE9PTClcdFx0XFxcbiYjNDM7XHRcdCAgJChUUlVOTkVSX0JQRlRPT0wpICQoUkVTT0xWRV9CVEZJRFMpXHRcdFx0XFxcbiYjNDM7XHRcdCAgJChPVVRQVVQpL3ZlcmlzdGF0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXHRcXFxuJiM0MztcdFx0ICAkKExJQkFSRU5BX1NLRUwpICQoTElCQVJFTkFfQVNBTl9TS0VMKVx0XHRcXFxuJiM0MztcdFx0ICBwcm9nX3Rlc3RzL3Rlc3RzLmggbWFwX3Rlc3RzL3Rlc3RzLmhcdFx0XHRcXFxuJiM0MztcdFx0ICAkKFJVTk5FUl9PQkpTKVx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFxcXG4mIzQzO1x0XHQgICQoT1VUUFVUKS94ZHBfc3lucHJveHkgJChPVVRQVVQpL3NpZ24tZmlsZVx0XHRcXFxuJiM0MztcdFx0ICAkKE9VVFBVVCkvdXByb2JlX211bHRpICQoVEVTVF9LTU9EX1RBUkdFVFMpXG4mIzQzO1xuJiM0MzsjIFRoZSBtYWluIE1ha2VmaWxlIGNhbm5vdCB0ZWxsIHdoZXRoZXIgJChPVVRQVVQpL3Rlc3RfcHJvZ3MgaXMgc3RhbGUgLVxuJiM0MzsjIG9ubHkgdGhlIHJ1bm5lciBzdWItbWFrZSBrbm93cyBpdHMgZnVsbCBkZXBlbmRlbmN5IGdyYXBoLiBGT1JDRSBtYWtlc1xuJiM0MzsjIHRoZSBkZWxlZ2F0aW5nIHJ1bGVzIGJlbG93IGFsd2F5cyBydW47IHRoZWlyIGRlcGVuZGVudHMgc3RpbGwgcmVidWlsZFxuJiM0MzsjIG9uIG10aW1lIG9ubHkuXG4mIzQzO0ZPUkNFOlxuJiM0MztcbiYjNDM7IyBUaGUgZGVmYXVsdCBmbGF2b3ImIzM5O3MgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBhcmUgY29uc3VtZWQgaGVyZSBhc1xuJiM0MzsjIHdlbGwgYXMgaW5zaWRlIHRoZSBydW5uZXIgc3ViLW1ha2VzOiBiZW5jaCwgeHNreGNlaXZlciwgeGRwXyogYW5kXG4mIzQzOyMgdGVzdF9jcHAgZGVwZW5kIG9uIGluZGl2aWR1YWwgc2tlbGV0b25zLCBhbmQgbGliLm1rJiMzOTtzXG4mIzQzOyMgaW5zdGFsbCBydWxlIGNvcGllcyB0aGUgQlBGIG9iamVjdHMuIEluc3RhbnRpYXRlIHRoZSBzaGFyZWQgcnVsZXNcbiYjNDM7IyAoTWFrZWZpbGUuc2tlbCkgZm9yIHRoZSBkZWZhdWx0IGZsYXZvciwgc28gdGhvc2UgY29uc3VtZXJzIGRlcGVuZCBvblxuJiM0MzsjIGV4YWN0bHkgdGhlIGZpbGVzIHRoZXkgdXNlOyB0aGUgdW5mbGF2b3JlZCBydW5uZXJzJiMzOTsgZGVsZWdhdGlvbiBydWxlc1xuJiM0MzsjIGJlbG93IGxpc3QgdGhlIHdob2xlIHNldCBhcyBwcmVyZXF1aXNpdGVzLCBzbyB0aG9zZSBzdWItbWFrZXMgZmluZCB0aGVcbiYjNDM7IyBmaWxlcyB0aGlzIE1ha2VmaWxlIG93bnMgdXAgdG8gZGF0ZS5cbiYjNDM7UkRJUiA6PSAkKE9VVFBVVClcbiYjNDM7RkxBVk9SIDo9XG4mIzQzO0JJTkFSWSA6PSB0ZXN0X3Byb2dzXG4mIzQzO0JQRl9DQyA6PSAkKENMQU5HKVxuJiM0MztCUEZfQ0NfTVNHIDo9IENMTkctQlBGXG4mIzQzO0JQRl9TWVNfSU5DTFVERVMgOj0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4mIzQzO0JQRl9DQ19GTEFHUyA6PSAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djNcbiYjNDM7QlBGX0RFRklORVMgOj0gLURFTkFCTEVfQVRPTUlDU19URVNUU1xuJiM0MztpbmNsdWRlIE1ha2VmaWxlLnNrZWxcbiYjNDM7XG4mIzQzO0RFRkFVTFRfUlVOTkVSX0FSR1MgOj0gUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0c1x0XFxcbiYjNDM7XHRCUEZfQ0M9JiMzOTskKEJQRl9DQykmIzM5OyBCUEZfQ0NfTVNHPSQoQlBGX0NDX01TRylcdFx0XHRcXFxuJiM0MztcdEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKEJQRl9TWVNfSU5DTFVERVMpJiMzOTtcdFx0XHRcdFxcXG4mIzQzO1x0QlBGX0NDX0ZMQUdTPSYjMzk7JChCUEZfQ0NfRkxBR1MpJiMzOTsgQlBGX0RFRklORVM9JChCUEZfREVGSU5FUylcbiYjNDM7XG4mIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzOiAkKFJVTk5FUl9QUkVSRVFTKSAkKEJQRl9PQkpTKSAkKEFMTF9TS0VMUykgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSAkKERFRkFVTFRfUlVOTkVSX0FSR1MpXG4mIzQzO1xuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy1ub19hbHUzMjogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9bm9fYWx1MzIgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9DQz0mIzM5OyQoQ0xBTkcpJiMzOTsgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChDTEFOR19TWVNfSU5DTFVERVMpJiMzOTtcdFxcXG4mIzQzO1x0XHRCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djImIzM5O1xuJiM0MztcbiBpZm5lcSAoJChDTEFOR19DUFVWNCksKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsY3B1djQpKVxuJiM0MzskKE9VVFBVVCkvdGVzdF9wcm9ncy1jcHV2NDogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9Y3B1djQgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbiYjNDM7XHRcdEJQRl9DQz0mIzM5OyQoQ0xBTkcpJiMzOTsgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChDTEFOR19TWVNfSU5DTFVERVMpJiMzOTtcdFxcXG4mIzQzO1x0XHRCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djQmIzM5O1x0XHRcXFxuJiM0MztcdFx0QlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUU1xuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9wcm9ncyBCUEYtR0NDLWZsYXZvcmVkIHRlc3QgcnVubmVyLlxuIGlmbmVxICgkKEJQRl9HQ0MpLClcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IEdDQ19CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSlcbiYjNDM7IyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSwgYXMgdGhlIHJ1bGVcbiYjNDM7IyB0aGlzIHJlcGxhY2VzIGhhZCBpdC5cbiYjNDM7R0NDX1NZU19JTkNMVURFUyA6PSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKVxuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbiYjNDM7XHQmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9YnBmX2djYyBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuJiM0MztcdFx0QlBGX0NDPSYjMzk7JChCUEZfR0NDKSYjMzk7IEJQRl9DQ19NU0c9R0NDLUJQRlx0XHRcdFx0XFxcbiYjNDM7XHRcdEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKEdDQ19TWVNfSU5DTFVERVMpJiMzOTtcdFx0XHRcdFxcXG4mIzQzO1x0XHRCUEZfQ0NfRkxBR1M9JiMzOTstREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiYjMzk7XG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X21hcHMgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gbWFwX3Rlc3RzXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXG4tVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfbWFwcy5jXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PVxuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj1cbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9ICQkKGVycm9yIG5vIEJQRiBvYmplY3RzIHNob3VsZCBiZSBidWlsdClcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj1cbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKVxuJiM0MzsjIHRlc3RfbWFwcyBjb21waWxlcyBtYXBfdGVzdHMvKi5jIGFnYWluc3QgdGhlIGRlZmF1bHQgZmxhdm9yJiMzOTtzIHNrZWxldG9uc1xuJiM0MzskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSAkKEJQRl9PQkpTKVx0XFxcbiYjNDM7XHRcdCAgICAgJChBTExfU0tFTFMpIEZPUkNFXG4mIzQzO1x0JiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHNcbiYjNDM7XG4mIzQzO1RFU1RfR0VOX0ZJTEVTICYjNDM7PSAkKEJQRl9PQkpTKVxuIFxuICMgRGVmaW5lIHRlc3RfdmVyaWZpZXIgdGVzdCBydW5uZXIuXG4gIyBJdCBpcyBtdWNoIHNpbXBsZXIgdGhhbiB0ZXN0X21hcHMvdGVzdF9wcm9ncyBhbmQgc3VmZmljaWVudGx5IGRpZmZlcmVudCBmcm9tXG4gIyB0aGVtIChlLmcuLCB0ZXN0LmggaXMgdXNpbmcgY29tcGxldGVseSBwYXR0ZXJuKSwgdGhhdCBpdCYjMzk7cyB3b3J0aCBqdXN0XG4gIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcbi1cdCQoc2hlbGwgKCBjZCB2ZXJpZmllci87IFxcXG4mIzQzO1x0JChRKSggY2QgdmVyaWZpZXIvOyBcXFxuIFx0XHQgIGVjaG8gJiMzOTsvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyYjMzk7OyBcXFxuIFx0XHQgIGVjaG8gJiMzOTsjaWZkZWYgRklMTF9BUlJBWSYjMzk7OyBcXFxuIFx0XHQgIGxzICouYyAyXHUwMDNlIC9kZXYvbnVsbCB8IHNlZCAtZSAmIzM5O3NAXFwoLipcXClAI2luY2x1ZGUgXFxcJiMzNDtcXDFcXFwmIzM0O0AmIzM5OzsgXFxcbiBcdFx0ICBlY2hvICYjMzk7I2VuZGlmJiMzOTsgXFxcbi1cdFx0KSBcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaClcbiYjNDM7XHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcbiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopIHwgJChPVVRQVVQpXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbkBAIC05NjcsMTEgJiM0Mzs1NjYsMTEgQEAgJChPVVRQVVQpL3Rlc3RfY3BwOiB0ZXN0X2NwcC5jcHAgJChPVVRQVVQpL3Rlc3RfY29yZV9leHRlcm4uc2tlbC5oICQoQlBGT0JKKVxuIFx0JChjYWxsIG1zZyxDWFgsLCRAKVxuIFx0JChRKSQoQ1hYKSAkKENYWEZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuY3BwLCReKSAkKExETElCUykgLW8gJEBcbiBcbi0jIEJlbmNobWFyayBydW5uZXJcbiYjNDM7IyBCZW5jaG1hcmsgcnVubmVyLiBFdmVyeSBiZW5jaHMvYmVuY2hfKi5jIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW4uXG4mIzQzO0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxuICQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1CRU5DSCYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpXG4gJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vOiAkKE9VVFBVVCkvdGVzdF9vdmVyaGVhZC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vOiAkKE9VVFBVVCkvdHJpZ2dlcl9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFxcXG5AQCAtOTk5LDMzICYjNDM7NTk4LDExIEBAICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbiBcdFx0ICQoVEVTVElOR19IRUxQRVJTKSBcXFxuIFx0XHQgJChUUkFDRV9IRUxQRVJTKSBcXFxuIFx0XHQgJChDR1JPVVBfSEVMUEVSUykgXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYmxvb21fZmlsdGVyX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2xvb3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3N0cm5jbXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2Z1bGxfdXBkYXRlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX3JjdV90YXNrc190cmFjZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2hhc2htYXBfbG9va3VwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfaHRhYl9tZW0ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX3RpbWluZy5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfeGRwX2xiLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9saWJhcmVuYS5vIFxcXG4mIzQzO1x0XHQgJChCRU5DSF9PQkpTKSBcXFxuIFx0XHQgJChPVVRQVVQpL3VzZHRfMS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcbi1cdFx0ICNcbiYjNDM7XHRcdCAkKE9VVFBVVCkvdXNkdF8yLm9cbiBcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcbi1cdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xcbiYjMzk7ICYjMzk7U0tJUC1MSU5LJiMzOTsgJiMzOTskKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJiMzOTsgMVx1MDAzZVx1MDAyNjIpKVxuJiM0MztcdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxMSU5LLCwoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkpXG4gXG4gIyBUaGlzIHdvcmtzIGFyb3VuZCBHQ0Mgd2FybmluZyBhYm91dCBzbnByaW50ZiB0cnVuY2F0aW5nIHN0cmluZ3MgbGlrZTpcbiAjXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi41YzZjMTQ3ZDAzYzc0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXG5AQCAtMCwwICYjNDM7MSwxOTYgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgU2hhcmVkIHRvb2xjaGFpbiwgcGF0aCBhbmQgZmxhZyBkZWZpbml0aW9ucyBmb3IgdGhlIEJQRiBzZWxmdGVzdHNcbiYjNDM7IyBidWlsZCwgaW5jbHVkZWQgYnkgYm90aCBNYWtlZmlsZSBhbmQgTWFrZWZpbGUucnVubmVyLiBEZWZpbml0aW9uc1xuJiM0MzsjIGZvbGxvdyB0aGUgb3JkZXIgdGhleSBoYWQgaW4gdGhlIE1ha2VmaWxlIGJlZm9yZSB0aGUgc3BsaXQuXG4mIzQzO1xuJiM0MztUT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4mIzQzO0xJQkRJUiA6PSAkKFRPT0xTRElSKS9saWJcbiYjNDM7QlBGRElSIDo9ICQoTElCRElSKS9icGZcbiYjNDM7VE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuJiM0MztUT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGVcbiYjNDM7QVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcbiYjNDM7aWZuZXEgKCQoTyksKVxuJiM0MztHRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuJiM0MztlbHNlXG4mIzQzO0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXG4mIzQzO2VuZGlmXG4mIzQzO0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxuJiM0MztQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXG4mIzQzO1xuJiM0MztpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbiYjNDM7ICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztpZmRlZiBBU0FOXG4mIzQzO1NBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbiYjNDM7ZWxzZVxuJiM0MztTQU5fQ0ZMQUdTXHQ/PVxuJiM0MztlbmRpZlxuJiM0MztTQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuJiM0MztSRUxFQVNFXHRcdD89XG4mIzQzO09QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4mIzQzO1xuJiM0MztMSUJFTEZfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcdTAwM2UvZGV2L251bGwpXG4mIzQzO0xJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4mIzQzO1xuJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuJiM0MzsjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xuJiM0MzsjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDFcbiYjNDM7UEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXG4mIzQzOyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXG4mIzQzOyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXG4mIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxuJiM0MzsjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcbiYjNDM7c2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcbiYjNDM7XHRwcmludGYgJiMzOTsgICUtMTJzICVzXFxuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxXHUwMDNlXHUwMDI2MjsgfSlcbiYjNDM7XG4mIzQzOyMgUGVybWlzc2l2ZS1tb2RlIHJlY2lwZSBwcmVmaXg6IHdoZW4gYSBwcmVyZXF1aXNpdGUgb2JqZWN0IGlzIG1pc3NpbmdcbiYjNDM7IyAoaXRzIGNvbXBpbGUgZmFpbGVkIGFuZCB3YXMgc2tpcHBlZCksIHJlbW92ZSB0aGUgdGFyZ2V0IGFuZCAkKDMpLFxuJiM0MzsjIGVtaXQgYSBTS0lQIG1hcmtlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgd2l0aG91dCBydW5uaW5nIHRoZSByZXN0IG9mXG4mIzQzOyMgdGhlIHJlY2lwZS5cbiYjNDM7IyAkKDEpIC0gU0tJUCB0YWdcbiYjNDM7IyAkKDIpIC0gaW5wdXQgZmlsZXMgdG8gY2hlY2tcbiYjNDM7IyAkKDMpIC0gb3B0aW9uYWwgZXh0cmEgZmlsZXMgdG8gcmVtb3ZlIGFsb25nc2lkZSB0aGUgdGFyZ2V0XG4mIzQzO3NraXBfaWZfbWlzc2luZyA9ICQoaWYgJChQRVJNSVNTSVZFKSxmb3IgZiBpbiAkKDIpOyBkbyBbIC1mICQkZiBdIHx8IHsgXFxcbiYjNDM7XHQkKFJNKSAkQCAkKDMpOyBcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcXG4mIzM5OyAmIzM5O1NLSVAtJCgxKSYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTsgMVx1MDAzZVx1MDAyNjI7IGV4aXQgMDsgfTsgZG9uZTspXG4mIzQzO1xuJiM0MztpZmVxICgkKHNyY3RyZWUpLClcbiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcbiYjNDM7c3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXG4mIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuJiM0MztzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzO0NPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcdFx0XHRcdFxcXG4mIzQzO1x0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXHRcdFx0XHRcXFxuJiM0MztcdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuJiM0MztcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXHRcdFx0XFxcbiYjNDM7XHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcdFx0XFxcbiYjNDM7XHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4mIzQzO1x0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXG4mIzQzO0xETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkXG4mIzQzO1xuJiM0MztQQ0FQX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyBcJiMzNDstRFRSQUZGSUNfTU9OSVRPUj0xXCYjMzQ7KVxuJiM0MztQQ0FQX0xJQlNcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MztMRExJQlMgJiM0Mzs9ICQoUENBUF9MSUJTKVxuJiM0MztcbiYjNDM7aWZuZXEgKCQoTExWTSksKVxuJiM0MzsjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcbiYjNDM7Q0xBTkdfV0FSTl9DRkxBR1MgOj0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIEJlZm9yZSB0aGUgc3BsaXQgdGhlc2UgZGVmaW5pdGlvbnMgc2F0IGFib3ZlIHRoZSAuLi9saWIubWsgaW5jbHVkZTpcbiYjNDM7IyB0aGV5IGFwcGVuZGVkIHRvIHRoZSBmbGFncyBpbmhlcml0ZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZFxuJiM0MzsjIGxpYi5tayYjMzk7cyBhZGRpdGlvbnMgKFVTRVJDRkxBR1MvVVNFUkxERkxBR1MgYW1vbmcgdGhlbSkgY2FtZSBsYXN0LlxuJiM0MzsjIFRoaXMgZmlsZSBpcyBwYXJzZWQgYWZ0ZXIgbGliLm1rIGF0IHRoZSB0b3AgbGV2ZWwgYW5kIGluIGl0cyBwbGFjZVxuJiM0MzsjIGluIHRoZSBydW5uZXIgc3ViLW1ha2VzLCBzbyB0aGUgc2FtZSBvcmRlciBpcyByZWJ1aWx0IGhlcmUuIFRoZVxuJiM0MzsjIGluY2x1ZGVyIHNuYXBzaG90cyB0aGUgaW5oZXJpdGVkIGZsYWdzIGluIElOSEVSSVRFRF9DRkxBR1MgYW5kXG4mIzQzOyMgSU5IRVJJVEVEX0xERkxBR1MgYmVmb3JlIGxpYi5tayBydW5zOyB3aGF0ZXZlciBsaWIubWsgYXBwZW5kZWQgc2luY2VcbiYjNDM7IyBpcyB0aGUgdGFpbCBvZiB0aGUgY3VycmVudCB2YWx1ZS5cbiYjNDM7bGliX21rX2FkZGVkID0gJCh3b3JkbGlzdCAkKHdvcmRzIHggJChJTkhFUklURURfJCgxKSkpLCQod29yZHMgJCgkKDEpKSksJCgkKDEpKSlcbiYjNDM7TElCX01LX0NGTEFHUyA6PSAkKGNhbGwgbGliX21rX2FkZGVkLENGTEFHUylcbiYjNDM7TElCX01LX0xERkxBR1MgOj0gJChjYWxsIGxpYl9ta19hZGRlZCxMREZMQUdTKVxuJiM0MztDRkxBR1MgPSAkKElOSEVSSVRFRF9DRkxBR1MpICQoQ09NTU9OX0NGTEFHUykgJChQQ0FQX0NGTEFHUylcdFx0XFxcbiYjNDM7XHQgJChDTEFOR19XQVJOX0NGTEFHUykgJChMSUJfTUtfQ0ZMQUdTKVxuJiM0MztMREZMQUdTID0gJChJTkhFUklURURfTERGTEFHUykgJChTQU5fTERGTEFHUykgJChMSUJfTUtfTERGTEFHUylcbiYjNDM7XG4mIzQzOyMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOykuXG4mIzQzOyMgVGhpcyBydW5zIGFmdGVyIC4uL2xpYi5tayBoYXMgcmVzb2x2ZWQgQ0xBTkcgZnJvbSBMTFZNPVx1MDAzY3N1ZmZpeCBvciBwYXRoXHUwMDNlLFxuJiM0MzsjIHNvIGl0IHByb2JlcyB0aGUgY29tcGlsZXIgdGhhdCBidWlsZHMgdGhlIEJQRiBvYmplY3RzLlxuJiM0MztDTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJiMzOTtpbnQgeDsmIzM5OyB8IFxcXG4mIzQzO1x0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbiYjNDM7XHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxuJiM0MztcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuJiM0MztcbiYjNDM7U0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4mIzQzO0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxuJiM0MztJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4mIzQzO0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4mIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbiYjNDM7SE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3RcbiYjNDM7SE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbiYjNDM7SE9TVF9JTkNMVURFX0RJUlx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXG4mIzQzO2Vsc2VcbiYjNDM7SE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4mIzQzO0hPU1RfU0NSQVRDSF9ESVJcdDo9ICQoU0NSQVRDSF9ESVIpXG4mIzQzO0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4mIzQzO2VuZGlmXG4mIzQzO1JFU09MVkVfQlRGSURTIDo9ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzL3Jlc29sdmVfYnRmaWRzXG4mIzQzO1xuJiM0MztERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcbiYjNDM7aWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuJiM0MztDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuJiM0MztUUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxuJiM0MztVU0VfQk9PVFNUUkFQIDo9IFwmIzM0O1wmIzM0O1xuJiM0MztlbHNlXG4mIzQzO1RSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbiYjNDM7VVNFX0JPT1RTVFJBUCA6PSBcJiMzNDtib290c3RyYXAvXCYjMzQ7XG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuJiM0MztcbiYjNDM7IyBHZXQgQ2xhbmcmIzM5O3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XG4mIzQzOyMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyBcJiMzNDttaXNzaW5nXCYjMzQ7IGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxuJiM0MzsjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cbiYjNDM7I1xuJiM0MzsjIFVzZSAmIzM5Oy1pZGlyYWZ0ZXImIzM5OzogRG9uJiMzOTt0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcbiYjNDM7IyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxuJiM0MztkZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xuJiM0MzskKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFx1MDAzYy9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuJiM0MztcdHwgc2VkIC1uICYjMzk7L1x1MDAzYy4uLlx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcKC8uKlxcKXwtaWRpcmFmdGVyIFxcMXxwIH0mIzM5OykgXFxcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fcmlzY3ZfeGxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoXCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcJiMzNDssICQkMywgJCQzKX0mIzM5OykgXFxcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRF9fQklUU19QRVJfTE9ORz0lZFwmIzM0OywgJCQzKX0mIzM5OykgXFxcbiYjNDM7JChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAtRSAmIzM5O01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZihcJiMzNDstRCVzPSVzIFwmIzM0OywgJCQyLCAkJDMpfSYjMzk7KVxuJiM0MztlbmRlZlxuJiM0MztcbiYjNDM7IyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXG4mIzQzO0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBcXFxuJiM0MztcdFx0XHRncmVwICYjMzk7ZGVmaW5lIF9fQllURV9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fJiMzOTspXG4mIzQzO01FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxuJiM0MztcbiYjNDM7aWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuJiM0MztDTEFOR19UQVJHRVRfQVJDSCA9IC0tdGFyZ2V0PSQobm90ZGlyICQoQ1JPU1NfQ09NUElMRTolLT0lKSlcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgSW1tZWRpYXRlIG9uIHB1cnBvc2U6IGV4cGFuZGluZyBnZXRfc3lzX2luY2x1ZGVzIGZvcmtzIHNldmVyYWwgc2hlbGxzLlxuJiM0MztDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpXG4mIzQzO0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTilcdFxcXG4mIzQzO1x0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbiYjNDM7XHQgICAgIC1JJChUT09MU0lOQ0RJUikgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVx0XHRcXFxuJiM0MztcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4mIzQzO1x0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlc1x0XHRcdFxcXG4mIzQzO1x0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgI1xuJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxuJiM0MztcbiYjNDM7VkVSSUZZX1NJR19TRVRVUCA6PSAkKENVUkRJUikvdmVyaWZ5X3NpZ19zZXR1cC5zaFxuJiM0MztWRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcbiYjNDM7UFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxuJiM0MztcbiYjNDM7TElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmhcbiYjNDM7XG4mIzQzO2lmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXG4mIzQzO0xJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxuJiM0MztDRkxBR1MgJiM0Mzs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MztSVU5ORVJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sXHRcdFx0XFxcbiYjNDM7XHR0ZXN0X3Byb2dzLm8gY2dyb3VwX2hlbHBlcnMubyB0cmFjZV9oZWxwZXJzLm9cdFx0XHRcXFxuJiM0MztcdG5ldHdvcmtfaGVscGVycy5vIHRlc3RpbmdfaGVscGVycy5vIGJ0Zl9oZWxwZXJzLm9cdFx0XFxcbiYjNDM7XHRjYXBfaGVscGVycy5vIHVucHJpdl9oZWxwZXJzLm8gc3lzY3RsX2hlbHBlcnMub1x0XHRcdFxcXG4mIzQzO1x0bmV0bGlua19oZWxwZXJzLm8gaml0X2Rpc2FzbV9oZWxwZXJzLm8gaW9faGVscGVycy5vXHRcdFxcXG4mIzQzO1x0dGVzdF9sb2FkZXIubyB4c2subyBkaXNhc20ubyBkaXNhc21faGVscGVycy5vXHRcdFx0XFxcbiYjNDM7XHRqc29uX3dyaXRlci5vIGJwZnRvb2xfaGVscGVycy5vIHVzZHRfMS5vIHVzZHRfMi5vKVxuJiM0MztSVU5ORVJfT0JKUy10ZXN0X21hcHMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcXFxuJiM0MztcdHRlc3RfbWFwcy5vIHRlc3RpbmdfaGVscGVycy5vKVxuJiM0MztcbiYjNDM7UlVOTkVSX0xJQl9PQkpTLXRlc3RfcHJvZ3MgOj0gJChPVVRQVVQpL2ZpbmRfYml0Lm9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lclxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjczNjFmZjdkZTMzMGNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJcbkBAIC0wLDAgJiM0MzsxLDE5OSBAQFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcbiYjNDM7IyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLlxuJiM0MzsjXG4mIzQzOyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSAtIHRoZSBmbGF2b3JlZCBvbmVzIHdpdGggdGhlaXJcbiYjNDM7IyBvd24gb3V0cHV0IGRpcmVjdG9yeSwgdGhlIHVuZmxhdm9yZWQgb25lcyBzaGFyaW5nICQoT1VUUFVUKSB3aXRoIHRoZVxuJiM0MzsjIG1haW4gTWFrZWZpbGUgLSBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlOiBub1xuJiM0MzsjIGRlZmluZS9ldmFsIGxheWVyLCBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5c1xuJiM0MzsjIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkXG4mIzQzOyMgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLFxuJiM0MzsjIHJlc29sdmVfYnRmaWRzLCB2bWxpbnV4LmgsIHZlcmlzdGF0LCB1c2Vyc3BhY2Ugb2JqZWN0cywgc2lnbmluZyBrZXksXG4mIzQzOyMgbGliYXJlbmEgc2tlbGV0b25zLCBleHRyYSBiaW5hcmllcyBhbmQgLSBmb3IgdGhlXG4mIzQzOyMgdW5mbGF2b3JlZCBpbnN0YW5jZXMgLSB0aGUgZGVmYXVsdCBmbGF2b3ImIzM5O3MgQlBGIG9iamVjdHMgYW5kXG4mIzQzOyMgc2tlbGV0b25zKSBhcmUgYnVpbHQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKmJlZm9yZSogdGhpcyBvbmUgcnVucyBhbmRcbiYjNDM7IyBhcmUgcmVmZXJlbmNlZCBiZWxvdyBhcyBwbGFpbiBmaWxlcy5cbiYjNDM7I1xuJiM0MzsjIFBhcmFtZXRlcnMsIHBhc3NlZCBvbiB0aGUgc3ViLW1ha2UgY29tbWFuZCBsaW5lOlxuJiM0MzsjICAgT1VUUFVUICAgICAgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5LCBhcyBsaWIubWsgcmVzb2x2ZWQgaXRcbiYjNDM7IyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHNcbiYjNDM7IyAgIEZMQVZPUiAgICAgIGZsYXZvciBzdWZmaXg6IGVtcHR5IHwgbm9fYWx1MzIgfCBjcHV2NCB8IGJwZl9nY2NcbiYjNDM7IyAgIFRFU1RTX0RJUiAgIGRpcmVjdG9yeSB3aXRoIHRoZSB0ZXN0IHNvdXJjZXM6IHByb2dfdGVzdHMgfCBtYXBfdGVzdHNcbiYjNDM7IyAgIEJQRl9DQyAgICAgIGNvbXBpbGVyIGZvciBwcm9ncy8qLmMgQlBGIG9iamVjdHMgKCQoQ0xBTkcpIG9yXG4mIzQzOyMgICAgICAgICAgICAgICAkKEJQRl9HQ0MpKTsgZW1wdHkgZm9yIHRlc3RfbWFwcywgd2hpY2ggYnVpbGRzIG5vbmVcbiYjNDM7IyAgIEJQRl9DQ19NU0cgIGJ1aWxkLWxvZyB0YWc6IENMTkctQlBGIHwgR0NDLUJQRlxuJiM0MzsjICAgQlBGX0NDX0ZMQUdTXG4mIzQzOyMgICAgICAgICAgICAgICBjb21waWxlci1zcGVjaWZpYyBmbGFncyAoLU8yLCB0YXJnZXQvLW1jcHUgb3IgZ2NjIGtub2JzKVxuJiM0MzsjICAgQlBGX1NZU19JTkNMVURFU1xuJiM0MzsjICAgICAgICAgICAgICAgc3lzdGVtIGluY2x1ZGUgZmxhZ3MgbWF0Y2hpbmcgQlBGX0NDXG4mIzQzOyMgICBCUEZfREVGSU5FUyBleHRyYSBkZWZpbmVzIGZvciBCUEYgb2JqZWN0cyAoZS5nLiAtREVOQUJMRV9BVE9NSUNTX1RFU1RTKVxuJiM0MzsjICAgQ0MsIENMQU5HICAgQyBjb21waWxlciBhbmQgY2xhbmcgKGFzIHJlc29sdmVkIGJ5IGxpYi5tayBpbiB0aGUgbWFpblxuJiM0MzsjICAgICAgICAgICAgICAgTWFrZWZpbGU7IGNsYW5nIGFsc28gZHJpdmVzIHRoZSBmZWF0dXJlIHByb2JlcyBpblxuJiM0MzsjICAgICAgICAgICAgICAgTWFrZWZpbGUuYnVpbGR2YXJzKVxuJiM0MzsjXG4mIzQzOyMgRnJvbSB0aGUgZW52aXJvbm1lbnQsIGV4cG9ydGVkIGJ5IHRoZSBtYWluIE1ha2VmaWxlOlxuJiM0MzsjICAgTExWTV9MRExJQlMvTExWTV9MREZMQUdTXG4mIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlXG4mIzQzOyMgICBURVNUX0tNT0RTICB0aGUga2VybmVsIHRlc3QgbW9kdWxlcyB0byBjb3B5IGludG8gYSBmbGF2b3IgZGlyZWN0b3J5XG4mIzQzOyMgICBJTkhFUklURURfQ0ZMQUdTL0lOSEVSSVRFRF9MREZMQUdTXG4mIzQzOyMgICAgICAgICAgICAgICB0aGUgZmxhZ3MgdGhlIG1haW4gTWFrZWZpbGUgaW5oZXJpdGVkIGZyb20gaXRzIG93blxuJiM0MzsjICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHNlZSBNYWtlZmlsZS5idWlsZHZhcnMpXG4mIzQzO1xuJiM0MztpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGVcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiYjNDM7aW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcbiYjNDM7XG4mIzQzOyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuXG4mIzQzO2lmZXEgKCQoViksMSlcbiYjNDM7USA9XG4mIzQzO21zZyA9XG4mIzQzO2Vsc2VcbiYjNDM7USA9IEBcbiYjNDM7bXNnID0gQHByaW50ZiAmIzM5OyAgJS04cyVzICVzJXNcXG4mIzM5OyBcJiMzNDskKDEpXCYjMzQ7IFwmIzM0OyQoaWYgJCgyKSwgWyQoMildKVwmIzM0OyBcJiMzNDskKG5vdGRpciAkKDMpKVwmIzM0OyBcJiMzNDskKGlmICQoNCksICQoNCkpXCYjMzQ7O1xuJiM0MztNQUtFRkxBR1MgJiM0Mzs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XG4mIzQzO2VuZGlmXG4mIzQzO1xuJiM0MzsjIFRoZSB0b3AgTWFrZWZpbGUgaGFuZHMgZG93biB0aGUgZmxhZ3MgaXQgaW5oZXJpdGVkIGZyb20gdGhlXG4mIzQzOyMgZW52aXJvbm1lbnQgaW4gSU5IRVJJVEVEX0NGTEFHUy9JTkhFUklURURfTERGTEFHUzsgc3RhcnQgZnJvbSB0aG9zZVxuJiM0MzsjIHJhdGhlciB0aGFuIGZyb20gaXRzIGFzc2VtYmxlZCBDRkxBR1MvTERGTEFHUywgd2hpY2ggbWFrZSBleHBvcnRzXG4mIzQzOyMgYWxvbmdzaWRlIHdoZW5ldmVyIHRoZXkgY2FtZSBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbiYjNDM7Q0ZMQUdTIDo9ICQoSU5IRVJJVEVEX0NGTEFHUylcbiYjNDM7TERGTEFHUyA6PSAkKElOSEVSSVRFRF9MREZMQUdTKVxuJiM0MztcbiYjNDM7aW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcbiYjNDM7XG4mIzQzOyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWssIGluIGl0c1xuJiM0MzsjIG9yZGVyICh0aGUgc2VsZnRlc3RzIGluY2x1ZGUgcGF0aCBpcyBzcGVsbGVkIGZyb20gc3JjdHJlZSBoZXJlOyBsaWIubWtcbiYjNDM7IyBzcGVsbHMgaXQgZnJvbSBpdHMgb3duIGRpcmVjdG9yeSkuXG4mIzQzO2lmbmVxICgkKExMVk0pLClcbiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlclxuJiM0MztDRkxBR1MgJiM0Mzs9IC1Xbm8tZ251LXZhcmlhYmxlLXNpemVkLXR5cGUtbm90LWF0LWVuZFxuJiM0MztlbmRpZlxuJiM0MztDRkxBR1MgJiM0Mzs9IC1EX0dOVV9TT1VSQ0U9XG4mIzQzO0NGTEFHUyAmIzQzOz0gLUkkKHNyY3RyZWUpL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzXG4mIzQzO0NGTEFHUyAmIzQzOz0gJChVU0VSQ0ZMQUdTKVxuJiM0MztMREZMQUdTICYjNDM7PSAkKFVTRVJMREZMQUdTKVxuJiM0MztcbiYjNDM7QklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXG4mIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKVxuJiM0MztcbiYjNDM7YWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXG4mIzQzOy5QSE9OWTogYWxsXG4mIzQzO1xuJiM0MzsjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuJiM0MzsuREVMRVRFX09OX0VSUk9SOlxuJiM0MztcbiYjNDM7IyBObyBidWlsdC1pbiBydWxlczogZXZlcnkgZmlsZSBidWlsdCBoZXJlIGhhcyBhbiBleHBsaWNpdCBydWxlLCBhbmQgdGhlXG4mIzQzOyMgb2JqZWN0cyB0aGF0IGNvbWUgZnJvbSB0aGUgbWFpbiBNYWtlZmlsZSBoYXZlIHRvIGJlIGFuIGVycm9yIHdoZW5cbiYjNDM7IyBtaXNzaW5nIHJhdGhlciB0aGFuIGEgc2lsZW50IHJlYnVpbGQgYnkgdGhlIGJ1aWx0LWluICUubyByZWNpcGVzLlxuJiM0MztNQUtFRkxBR1MgJiM0Mzs9IC1yXG4mIzQzO1xuJiM0MzsjIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4mIzQzOyMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZCBpdHMgZmxhdm9yczsgcnVubmVycyB0aGF0IHVzZSBzdHJvbmcgY3Jvc3Mtb2JqZWN0XG4mIzQzOyMgcmVmZXJlbmNlcyAoZS5nLiB0ZXN0X21hcHMpIGtlZXAgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gcGVybWlzc2l2ZS5cbiYjNDM7UEVSTUlTU0lWRV9URVNUUyA6PSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MsJChSVU5ORVIpKSwkKFBFUk1JU1NJVkUpKVxuJiM0MztcbiYjNDM7JChSRElSKTpcbiYjNDM7XHQkKGNhbGwgbXNnLE1LRElSLCwkQClcbiYjNDM7XHQkKFEpbWtkaXIgLXAgJEBcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgUGVyLXJ1bm5lciBzb3VyY2VzXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztpZmVxICgkKFJVTk5FUiksdGVzdF9wcm9ncylcbiYjNDM7R0VORVJBVEVEX0hEUlMgOj0gJChMSUJBUkVOQV9TS0VMKSAkKExJQkFSRU5BX0FTQU5fU0tFTClcbiYjNDM7RVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbiYjNDM7XHQgICAgICAgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1x0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHlcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGlcdFx0XHRcdFxcXG4mIzQzO1x0ICAgICAgICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sJChURVNUX0tNT0RTKSlcdFx0XFxcbiYjNDM7XHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuJiM0MztcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpXHRcdFxcXG4mIzQzO1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzO1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSlcbiYjNDM7VEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSlcbiYjNDM7VEVTVF9ERVBTICA6PSAkKFRFU1RfT0JKUzoubz0uZClcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyAtIHJ1bGVzIHNoYXJlZCB3aXRoIHRoZSBtYWluIE1ha2VmaWxlXG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MztpbmNsdWRlIE1ha2VmaWxlLnNrZWxcbiYjNDM7XG4mIzQzOyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuJiM0MzsjIGZ1bGwgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgY29ycmVzcG9uZGluZyAlLm9cbiYjNDM7IyBmaWxlLiB2cGF0aCBkaXJlY3RpdmVzIGJlbG93IGluc3RydWN0IG1ha2UgdG8gc2VhcmNoIGZvciBza2VsIGZpbGVzXG4mIzQzOyMgaW4gJChSRElSKSwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LlxuJiM0Mzt2cGF0aCAlLnNrZWwuaCAkKFJESVIpXG4mIzQzO3ZwYXRoICUubHNrZWwuaCAkKFJESVIpXG4mIzQzO3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcbiYjNDM7XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzOyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XG4mIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4mIzQzO1xuJiM0MzskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xuJiM0MzskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcbiYjNDM7XG4mIzQzOyMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcbiYjNDM7IyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcbiYjNDM7IyBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRCBiZWxvdzsgdGhlXG4mIzQzOyMgc2VwYXJhdGUgbm8tcmVjaXBlIHJ1bGUgZm9yIHRoZW0gb3JkZXJzIHRoZSBmaXJzdCBjb21waWxhdGlvbiBhZnRlclxuJiM0MzsjIHNrZWxldG9uIGdlbmVyYXRpb24gYW5kIHJlLW9yZGVycyB0ZXN0IG9iamVjdCBjb21waWxhdGlvbiB3aGVuIGhlYWRlcnNcbiYjNDM7IyBjaGFuZ2UuXG4mIzQzOyQoVEVTVF9PQkpTKTogJChSRElSKS8lLnRlc3QubzogJChURVNUU19ESVIpLyUuYyB8ICQoUkRJUikvJS50ZXN0LmRcbiYjNDM7XHQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoQklOQVJZKSwkQClcbiYjNDM7XHQkKFEpKGNkICQoQEQpIFx1MDAyNlx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXHUwMDNjICQoTERMSUJTKSAtbyAkKEBGKSkgXFxcbiYjNDM7XHRcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKVxuJiM0MztcdCQoaWYgJChURVNUX05FRURTX0JURklEUyksXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xcbiYjMzk7IFwmIzM0O0JURklEU1wmIzM0OyBcJiMzNDsgWyQoQklOQVJZKV1cJiMzNDsgXCYjMzQ7JChub3RkaXIgJEApXCYjMzQ7KTsgXFxcbiYjNDM7XHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tYnRmICQoUkRJUikvYnRmX2RhdGEuYnBmLm8gJEA7XHRcXFxuJiM0MztcdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDtcdFx0XFxcbiYjNDM7XHRcdGZpKVxuJiM0MztcbiYjNDM7JChURVNUX0RFUFMpOiAkKFJESVIpLyUudGVzdC5kOiAkKFRFU1RTX0RJUikvJS5jICQoR0VORVJBVEVEX0hEUlMpICQoQlBGT0JKKSBcXFxuJiM0MztcdCAgICAgIHwgJChSRElSKSAkKEFMTF9TS0VMUylcbiYjNDM7XG4mIzQzO2luY2x1ZGUgJCh3aWxkY2FyZCAkKFRFU1RfREVQUykpXG4mIzQzO1xuJiM0MzsjIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZVxuJiM0MzsjIGRvIG5vdCBuZWVkIHRvIGNvcHkgZXh0cmEgcmVzb3VyY2VzIChzZWUgZS5nLiB0ZXN0X2J0Zl9kdW1wX2Nhc2UoKSlcbiYjNDM7LlBIT05ZOiBleHRyYXNcbiYjNDM7ZXh0cmFzOiAkKGlmICQoUEVSTUlTU0lWRSksJCh3aWxkY2FyZCAkKEVYVFJBX0ZJTEVTKSksJChFWFRSQV9GSUxFUykpIHwgJChSRElSKVxuJiM0MztpZm5lcSAoJChGTEFWT1IpOiQocmVhbHBhdGggJChPVVRQVVQpKSw6JChDVVJESVIpKVxuJiM0MztpZm5lcSAoJChzdHJpcCAkKEVYVFJBX0ZJTEVTKSksKVxuJiM0MztcdCQoY2FsbCBtc2csRVhULUNPUFksJChCSU5BUlkpLCQoRVhUUkFfRklMRVMpKVxuJiM0MztcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cbiYjNDM7ZW5kaWZcbiYjNDM7ZW5kaWZcbiYjNDM7XG4mIzQzOyMgc29tZSBYLnRlc3QubyBmaWxlcyBoYXZlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9uIFkuYnBmLm8gZmlsZXNcbiYjNDM7IyBJbiBwZXJtaXNzaXZlIG1vZGUsIGxpbmsgd2hhdGV2ZXIgdGVzdCBvYmplY3RzIHdlcmUgc3VjY2Vzc2Z1bGx5IGJ1aWx0XG4mIzQzOyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk6IHRoZSBvYmplY3RzIGV4aXN0aW5nIGF0XG4mIzQzOyMgcGFyc2UgdGltZSBhcmUgbm9ybWFsIHByZXJlcXVpc2l0ZXMgLSBzbyBlZGl0aW5nIGEgdGVzdCBzb3VyY2Ugc3RpbGxcbiYjNDM7IyByZWxpbmtzIHRoZSBydW5uZXIgLSB3aGlsZSB0aGUgZnVsbCBzZXQgc3RheXMgb3JkZXItb25seSB0byBkcml2ZSB0aGVcbiYjNDM7IyBidWlsZCBhdHRlbXB0cywgYW5kIHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnNcbiYjNDM7IyBhdCBsaW5rIHRpbWUuXG4mIzQzOyMgUHJlcmVxdWlzaXRlIG9yZGVyIGlzIGFsc28gbGluayBvcmRlciAodGVzdCBvYmplY3RzLCBydW5uZXIgb2JqZWN0cyxcbiYjNDM7IyBsaWJicGYsIGxpYiBvYmplY3RzKS5cbiYjNDM7JChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFxcXG4mIzQzO1x0XHQgICAgICQoUlVOTkVSX09CSlMtJChSVU5ORVIpKSAkKEJQRk9CSilcdFx0XHRcXFxuJiM0MztcdFx0ICAgICAkKFJVTk5FUl9MSUJfT0JKUy0kKFJVTk5FUikpXHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcXFxuJiM0MztcdFx0ICAgICB8IGV4dHJhcyAkKEJQRl9PQkpTKVx0XHRcdFx0XFxcbiYjNDM7XHRcdCAgICAgJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoVEVTVF9PQkpTKSlcbiYjNDM7XHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4mIzQzO1x0JChRKSQoQ0MpICQoQ0ZMQUdTKVx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJCh3aWxkY2FyZCAkKFRFU1RfT0JKUykpXHRcXFxuJiM0MztcdFx0XHQkKGZpbHRlci1vdXQgJChURVNUX09CSlMpLCQoZmlsdGVyICUuYSAlLm8sJF4pKSxcXFxuJiM0MztcdFx0XHQkKGZpbHRlciAlLmEgJS5vLCReKSlcdFx0XHRcdFxcXG4mIzQzO1x0XHQkKExETElCUykgJChMTFZNX0xETElCUykgJChMREZMQUdTKSAkKExMVk1fTERGTEFHUykgLW8gJEBcbiYjNDM7XHQkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcbiYjNDM7XHRcdCAgICQoUkRJUikvYnBmdG9vbFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5za2VsIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5hODcxZWE3NjgxN2RmXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuc2tlbFxuQEAgLTAsMCAmIzQzOzEsMTQxIEBAXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7IyBSdWxlcyB0byBidWlsZCB0aGUgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBvZiBvbmUgYnVpbGQgZmxhdm9yLFxuJiM0MzsjIHNoYXJlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSAod2hpY2ggaW5zdGFudGlhdGVzIHRoZW0gZm9yIHRoZSBkZWZhdWx0XG4mIzQzOyMgZmxhdm9yLCBzbyB0aGF0IGJlbmNoLCB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHAgY2FuIGRlcGVuZCBvblxuJiM0MzsjIHRoZSBleGFjdCBza2VsZXRvbnMgdGhleSBjb25zdW1lKSBhbmQgYnkgTWFrZWZpbGUucnVubmVyICh3aGljaFxuJiM0MzsjIGluc3RhbnRpYXRlcyB0aGVtIGZvciBlYWNoIHJ1bm5lciBpbnN0YW5jZSB0aGF0IGJ1aWxkcyBCUEYgb2JqZWN0czpcbiYjNDM7IyB0aGUgZmxhdm9yZWQgb25lcyBpbiB0aGVpciBvd24gb3V0cHV0IGRpcmVjdG9yaWVzLCB0aGUgdW5mbGF2b3JlZFxuJiM0MzsjIHRlc3RfcHJvZ3Mgb25lIGluICQoT1VUUFVUKSwgd2hlcmUgaXQgZmluZHMgdGhlbSBhbHJlYWR5IGJ1aWx0KS5cbiYjNDM7I1xuJiM0MzsjIFBhcmFtZXRlcnMgKHZhcmlhYmxlcyBkZWZpbmVkIGJ5IHRoZSBpbmNsdWRlcik6XG4mIzQzOyMgICBSRElSICAgICAgICAgICAgIG91dHB1dCBkaXJlY3Rvcnkgb2YgdGhpcyBmbGF2b3JcbiYjNDM7IyAgIEZMQVZPUiAgICAgICAgICAgZmxhdm9yIG5hbWUsIGVtcHR5IGZvciB0aGUgZGVmYXVsdFxuJiM0MzsjICAgQklOQVJZICAgICAgICAgICBydW5uZXIgYmluYXJ5IG5hbWUsIGZvciBidWlsZC1sb2cgbWVzc2FnZXNcbiYjNDM7IyAgIEJQRl9DQyAgICAgICAgICAgQlBGIGNvbXBpbGVyXG4mIzQzOyMgICBCUEZfQ0NfTVNHICAgICAgIGJ1aWxkLWxvZyB0YWcgKENMTkctQlBGL0dDQy1CUEYpXG4mIzQzOyMgICBCUEZfQ0NfRkxBR1MgICAgIHBlci1mbGF2b3IgY29tcGlsZXIgZmxhZ3NcbiYjNDM7IyAgIEJQRl9TWVNfSU5DTFVERVMgc3lzdGVtIGluY2x1ZGUgZmxhZ3MgZm9yICQoQlBGX0NDKVxuJiM0MzsjICAgQlBGX0RFRklORVMgICAgICBleHRyYSBkZWZpbmVzICgtREVOQUJMRV9BVE9NSUNTX1RFU1RTKVxuJiM0MzsjXG4mIzQzOyMgVGhlIGRlZmF1bHQgZmxhdm9yJiMzOTtzIHJ1bGVzIGFyZSBpbnN0YW50aWF0ZWQgaWRlbnRpY2FsbHkgYnkgdGhlIG1haW5cbiYjNDM7IyBNYWtlZmlsZSBhbmQgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBzdWItbWFrZTsgdGhlIG1haW4gTWFrZWZpbGVcbiYjNDM7IyBsaXN0cyBldmVyeSBza2VsZXRvbiBhbmQgQlBGIG9iamVjdCBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgdW5mbGF2b3JlZFxuJiM0MzsjIHJ1bm5lcnMmIzM5OyBkZWxlZ2F0aW9uIHJ1bGVzLCBzbyB0aGUgZmlsZXMgYXJlIGFsd2F5cyBmcmVzaCBieSB0aGUgdGltZVxuJiM0MzsjIHRoYXQgc3ViLW1ha2UgcmUtZXZhbHVhdGVzIHRoZW0uXG4mIzQzO1xuJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJiM0MzsjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnNcbiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiYjNDM7XG4mIzQzO2lmbmVxICgkKEJQRl9DQyksKVxuJiM0MztcbiYjNDM7QlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpXG4mIzQzO1xuJiM0MztTS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jXG4mIzQzO1xuJiM0MztMSU5LRURfU0tFTFMgOj0gdGVzdF9zdGF0aWNfbGlua2VkLnNrZWwuaCBsaW5rZWRfZnVuY3Muc2tlbC5oXHRcdFxcXG4mIzQzO1x0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIFx0XHRcdFxcXG4mIzQzO1x0XHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcdFxcXG4mIzQzO1x0XHR0ZXN0X3VzZHQuc2tlbC5oIHRyYWNpbmdfbXVsdGkuc2tlbC5oXHRcdFx0XFxcbiYjNDM7XHRcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFx0XHRcdFx0XFxcbiYjNDM7XHRcdHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaFx0XHRcdFx0XFxcbiYjNDM7XHRcdHRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmhcbiYjNDM7XG4mIzQzO0xTS0VMUyA6PSBmZXhpdF9zbGVlcC5jIHRyYWNlX3ByaW50ay5jIHRyYWNlX3ZwcmludGsuYyBtYXBfcHRyX2tlcm4uYyBcdFxcXG4mIzQzO1x0Y29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmNcdFx0XHRcXFxuJiM0MztcdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuJiM0MztcdHRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuY1xuJiM0MztcbiYjNDM7TFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbiYjNDM7XG4mIzQzOyMgR2VuZXJhdGUgYm90aCBsaWdodCBza2VsZXRvbiBhbmQgbGliYnBmIHNrZWxldG9uIGZvciB0aGVzZVxuJiM0MztMU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuJiM0MztcdGtmdW5jX2NhbGxfdGVzdF9zdWJwcm9nLmMgdGVzdF9nbG9iYWxfcGVyY3B1X2RhdGEuY1xuJiM0MztTS0VMX0JMQUNLTElTVCAmIzQzOz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRClcbiYjNDM7XG4mIzQzO3Rlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbiYjNDM7bGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuJiM0MztsaW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vXG4mIzQzO2xpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbiYjNDM7IyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbiYjNDM7IyBidXQgdGhhdCYjMzk7cyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxuJiM0Mzt0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4mIzQzO3Rlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYub1xuJiM0Mzt0ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cbiYjNDM7dHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4mIzQzO3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbiYjNDM7XG4mIzQzO0xJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxuJiM0MztMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKExJTktFRF9CUEZfT0JKUykpXG4mIzQzO1xuJiM0MztTS0VMUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuc2tlbC5oLFx0XHRcdFx0XFxcbiYjNDM7XHQgICAkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLCQoQlBGX1NSQ1MpKSlcbiYjNDM7TFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTKSAkKExTS0VMU19FWFRSQSkpXG4mIzQzO0xTS0VMU19TSUdORURfSCA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMU19TSUdORUQpKVxuJiM0MztMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxuJiM0MztBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpXG4mIzQzO1xuJiM0MztIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuJiM0MztcdFx0XHQkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSlcdFxcXG4mIzQzO1x0XHRcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXHRicGZfY29yZV9yZWFkLmhcdFxcXG4mIzQzO1x0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0YnBmX2hlbHBlcnMuaFx0XFxcbiYjNDM7XHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcbiYjNDM7XG4mIzQzOyMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcbiYjNDM7IyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mXG4mIzQzOyMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4mIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0Mztwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuJiM0MztcbiYjNDM7JChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFx0XHRcdFxcXG4mIzQzO1x0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcdFx0XFxcbiYjNDM7XHQgICAgIHwgJChSRElSKSAkKEJQRk9CSilcbiYjNDM7XHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxuJiM0MztcdCQoUSkkKEJQRl9DQykgJChCUEZfQ0ZMQUdTKSAkKEJQRl9TWVNfSU5DTFVERVMpICQoQlBGX0RFRklORVMpXHRcXFxuJiM0MztcdFx0JCgkXHUwMDNjLUNGTEFHUykgJCgkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpXHRcdFx0XFxcbiYjNDM7XHRcdCQoQlBGX0NDX0ZMQUdTKSAtYyAkXHUwMDNjIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQlBGKVxuJiM0MztcbiYjNDM7R0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbiYjNDM7XG4mIzQzOyQoU0tFTFMpOiAkKFJESVIpLyUuc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXHRcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXFxcbiYjNDM7XHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJFx1MDAzY1x0XHRcXFxuJiM0MztcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuJiM0MztcbiYjNDM7JChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MpXHRcdFx0XHRcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXFxcbiYjNDM7XHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqX2xza2VsIC0tbHNrZWxcdFx0XHRcdFxcXG4mIzQzO1x0XHQtLXNrZWwgJEAgJFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXG4mIzQzO1xuJiM0MzskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVx0XFxcbiYjNDM7XHRcdCAgICAkKEdFTl9TS0VMKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKSB8ICQoUkRJUilcbiYjNDM7XHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MpXHRcdFx0XHRcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSkgKHNpZ25lZCldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXFxcbiYjNDM7XHRCUEZUT09MPSQoQlBGVE9PTCkgUFJJVkFURV9LRVk9JChQUklWQVRFX0tFWSlcdFx0XHRcdFxcXG4mIzQzO1x0XHRWRVJJRklDQVRJT05fQ0VSVD0kKFZFUklGSUNBVElPTl9DRVJUKVx0XHRcdFxcXG4mIzQzO1x0XHQkKEdFTl9TS0VMKSAtLXNpZ24gLS1uYW1lICQqX2xza2VsXHRcdFx0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAkXHUwMDNjICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTClcbiYjNDM7XG4mIzQzOyMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuJiM0MzsuU0VDT05ERVhQQU5TSU9OOlxuJiM0MzskKExJTktFRF9TS0VMU19IKTogJChSRElSKS8lLnNrZWwuaDogJCQoYWRkcHJlZml4ICQoUkRJUikvLCQkKCQkKi5za2VsLmgtZGVwcykpIFxcXG4mIzQzO1x0XHQgICAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKVxuJiM0MztcdCQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKSBcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtMSU5LLUJQRiYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkKEA6LnNrZWwuaD0uYnBmLm8pKSYjMzk7OyBcXFxuJiM0MztcdHByaW50ZiAmIzM5OyAgJS04cyVzICVzXFxuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXFxcbiYjNDM7XHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqXHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaClcdFx0XFxcbiYjNDM7XHRcdCQoYWRkcHJlZml4ICQoUkRJUikvLCQoJCouc2tlbC5oLWRlcHMpKVx0XHRcdFxcXG4mIzQzO1x0XHQkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXG4mIzQzO1xuJiM0MztlbmRpZiAjIEJQRl9DQ1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZTQzY2NmMDk1NTc1NlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaFxuQEAgLTAsMCAmIzQzOzEsOTkgQEBcbiYjNDM7IyEvYmluL2Jhc2hcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjXG4mIzQzOyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcJiMzNDticGZ0b29sIGdlbiBvYmplY3RcJiMzNDsgYW5kIGdlbmVyYXRlIGFcbiYjNDM7IyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4mIzQzOyNcbiYjNDM7IyBVc2FnZTpcbiYjNDM7IyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4mIzQzOyNcbiYjNDM7IyAgIC0tbmFtZSBOQU1FICAgICAgIHNrZWxldG9uIG9iamVjdCBuYW1lIChcJiMzNDtuYW1lIE5BTUVcJiMzNDsgZm9yIGJwZnRvb2wpXG4mIzQzOyMgICAtLXNrZWwgT1VUICAgICAgICBvdXRwdXQgaGVhZGVyIChcJiMzNDtmb28uc2tlbC5oXCYjMzQ7IG9yIFwmIzM0O2Zvby5sc2tlbC5oXCYjMzQ7KVxuJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVFxuJiM0MzsjICAgLS1sc2tlbCAgICAgICAgICAgZ2VuZXJhdGUgYSBsaWdodCBza2VsZXRvbiAoYnBmdG9vbCBnZW4gc2tlbGV0b24gLUwpXG4mIzQzOyMgICAtLXNpZ24gICAgICAgICAgICBzaWduIHRoZSAobGlnaHQpIHNrZWxldG9uLCB3aXRoIHRoZSBrZXkgYW5kXG4mIzQzOyMgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSB0YWtlbiBmcm9tICRQUklWQVRFX0tFWSBhbmRcbiYjNDM7IyAgICAgICAgICAgICAgICAgICAgICRWRVJJRklDQVRJT05fQ0VSVFxuJiM0MzsjXG4mIzQzOyMgVGhlIGlucHV0cyBhcmUgbGlua2VkIHRocmVlIHRpbWVzIGFuZCB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0c1xuJiM0MzsjIGNvbXBhcmVkLCBhcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGRldGVybWluaXNtIG9mIFwmIzM0O2JwZnRvb2wgZ2VuXG4mIzQzOyMgb2JqZWN0XCYjMzQ7LlxuJiM0MzsjXG4mIzQzOyMgSW50ZXJtZWRpYXRlIGZpbGVzIGFyZSBuYW1lZCBhZnRlciB0aGUgb3V0cHV0IGhlYWRlciB3aXRoIGEgXCYjMzQ7bGlua2VkXCYjMzQ7XG4mIzQzOyMgaW5maXggLSBcJiMzNDtsbGlua2VkXCYjMzQ7IGZvciBsaWdodCBvciBzaWduZWQgc2tlbGV0b25zLCBzbyBnZW5lcmF0aW5nIGFcbiYjNDM7IyAuc2tlbC5oIGFuZCBhIC5sc2tlbC5oIGZyb20gdGhlIHNhbWUgLmJwZi5vIGluIHBhcmFsbGVsIG5ldmVyIHJhY2VzXG4mIzQzOyMgb24gdGhlIGludGVybWVkaWF0ZXMuXG4mIzQzOyNcbiYjNDM7IyBUaGUgYnBmdG9vbCBiaW5hcnkgaXMgdGFrZW4gZnJvbSAkQlBGVE9PTCAoZGVmYXVsdDogYnBmdG9vbCBmcm9tIFBBVEgpLlxuJiM0MzsjIE9uIGZhaWx1cmUgYWxsIG91dHB1dHMgYW5kIGludGVybWVkaWF0ZXMgYXJlIHJlbW92ZWQgYW5kIHRoZSBzY3JpcHRcbiYjNDM7IyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXImIzM5O3MgYnVzaW5lc3NcbiYjNDM7IyAoc2VlIHNraXBfb25fZmFpbCBpbiB0aGUgTWFrZWZpbGUpLlxuJiM0MztcbiYjNDM7c2V0IC11XG4mIzQzO1xuJiM0MzticGZ0b29sPSR7QlBGVE9PTDotYnBmdG9vbH1cbiYjNDM7bmFtZT0mIzM5OyYjMzk7IHNrZWw9JiMzOTsmIzM5OyBzdWJza2VsPSYjMzk7JiMzOTtcbiYjNDM7bHNrZWw9MCBzaWduPTBcbiYjNDM7XG4mIzQzO3doaWxlIFsgJCMgLWd0IDAgXTsgZG9cbiYjNDM7XHRjYXNlIFwmIzM0OyQxXCYjMzQ7IGluXG4mIzQzO1x0LS1uYW1lKVx0XHRuYW1lPSQyOyBzaGlmdCAyIDs7XG4mIzQzO1x0LS1za2VsKVx0XHRza2VsPSQyOyBzaGlmdCAyIDs7XG4mIzQzO1x0LS1zdWJza2VsKVx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xuJiM0MztcdC0tbHNrZWwpXHRsc2tlbD0xOyBzaGlmdCA7O1xuJiM0MztcdC0tc2lnbilcdFx0c2lnbj0xOyBzaGlmdCA7O1xuJiM0MztcdC0tKVx0XHRzaGlmdDsgYnJlYWsgOztcbiYjNDM7XHQtKilcdFx0ZWNobyBcJiMzNDskMDogdW5rbm93biBvcHRpb246ICQxXCYjMzQ7IFx1MDAzZVx1MDAyNjI7IGV4aXQgMSA7O1xuJiM0MztcdCopXHRcdGJyZWFrIDs7XG4mIzQzO1x0ZXNhY1xuJiM0Mztkb25lXG4mIzQzO1xuJiM0MztpZiBbIC16IFwmIzM0OyRuYW1lXCYjMzQ7IF0gfHwgWyAteiBcJiMzNDskc2tlbFwmIzM0OyBdIHx8IFsgJCMgLWVxIDAgXTsgdGhlblxuJiM0MztcdGVjaG8gXCYjMzQ7dXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLlwmIzM0OyBcdTAwM2VcdTAwMjYyXG4mIzQzO1x0ZXhpdCAxXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MztpbmZpeD1saW5rZWRcbiYjNDM7aWYgWyBcJiMzNDskbHNrZWxcJiMzNDsgLWVxIDEgXSB8fCBbIFwmIzM0OyRzaWduXCYjMzQ7IC1lcSAxIF07IHRoZW5cbiYjNDM7XHRpbmZpeD1sbGlua2VkXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MztpZiBbIFwmIzM0OyRzaWduXCYjMzQ7IC1lcSAxIF0gXHUwMDI2XHUwMDI2IHsgWyAteiBcJiMzNDske1BSSVZBVEVfS0VZLX1cJiMzNDsgXSB8fCBbIC16IFwmIzM0OyR7VkVSSUZJQ0FUSU9OX0NFUlQtfVwmIzM0OyBdOyB9OyB0aGVuXG4mIzQzO1x0ZWNobyBcJiMzNDskMDogLS1zaWduIHJlcXVpcmVzIFBSSVZBVEVfS0VZIGFuZCBWRVJJRklDQVRJT05fQ0VSVCBpbiB0aGUgZW52aXJvbm1lbnRcJiMzNDsgXHUwMDNlXHUwMDI2MlxuJiM0MztcdGV4aXQgMVxuJiM0MztmaVxuJiM0MztcbiYjNDM7YmFzZT0ke3NrZWwlLnNrZWwuaH1cbiYjNDM7YmFzZT0ke2Jhc2UlLmxza2VsLmh9XG4mIzQzO3QxPSRiYXNlLiR7aW5maXh9MS5vXG4mIzQzO3QyPSRiYXNlLiR7aW5maXh9Mi5vXG4mIzQzO3QzPSRiYXNlLiR7aW5maXh9My5vXG4mIzQzO1xuJiM0MztmYWlsKCkge1xuJiM0MztcdHJtIC1mIFwmIzM0OyRza2VsXCYjMzQ7ICR7c3Vic2tlbDomIzQzO1wmIzM0OyRzdWJza2VsXCYjMzQ7fSBcJiMzNDskdDFcJiMzNDsgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0M1wmIzM0O1xuJiM0MztcdGV4aXQgMVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gb2JqZWN0IFwmIzM0OyR0MVwmIzM0OyBcJiMzNDskQFwmIzM0OyB8fCBmYWlsXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQyXCYjMzQ7IFwmIzM0OyR0MVwmIzM0OyB8fCBmYWlsXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBvYmplY3QgXCYjMzQ7JHQzXCYjMzQ7IFwmIzM0OyR0MlwmIzM0OyB8fCBmYWlsXG4mIzQzO2lmICEgY21wIC1zIFwmIzM0OyR0MlwmIzM0OyBcJiMzNDskdDNcJiMzNDs7IHRoZW5cbiYjNDM7XHRlY2hvIFwmIzM0OyQwOiBicGZ0b29sIGdlbiBvYmplY3QgaXMgbm90IGRldGVybWluaXN0aWMgZm9yICRza2VsXCYjMzQ7IFx1MDAzZVx1MDAyNjJcbiYjNDM7XHRmYWlsXG4mIzQzO2ZpXG4mIzQzO1xuJiM0MzthcmdzPSgpXG4mIzQzO2lmIFsgXCYjMzQ7JHNpZ25cJiMzNDsgLWVxIDEgXTsgdGhlblxuJiM0MztcdGFyZ3MmIzQzOz0oLVMgLWsgXCYjMzQ7JFBSSVZBVEVfS0VZXCYjMzQ7IC1pIFwmIzM0OyRWRVJJRklDQVRJT05fQ0VSVFwmIzM0OylcbiYjNDM7ZmlcbiYjNDM7aWYgWyBcJiMzNDskbHNrZWxcJiMzNDsgLWVxIDEgXTsgdGhlblxuJiM0MztcdGFyZ3MmIzQzOz0oLUwpXG4mIzQzO2ZpXG4mIzQzO1wmIzM0OyRicGZ0b29sXCYjMzQ7IGdlbiBza2VsZXRvbiAke2FyZ3NbQF0mIzQzO1wmIzM0OyR7YXJnc1tAXX1cJiMzNDt9IFwmIzM0OyR0M1wmIzM0OyBuYW1lIFwmIzM0OyRuYW1lXCYjMzQ7IFx1MDAzZSBcJiMzNDskc2tlbFwmIzM0OyB8fCBmYWlsXG4mIzQzO1xuJiM0MztpZiBbIC1uIFwmIzM0OyRzdWJza2VsXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcJiMzNDskYnBmdG9vbFwmIzM0OyBnZW4gc3Vic2tlbGV0b24gXCYjMzQ7JHQzXCYjMzQ7IG5hbWUgXCYjMzQ7JG5hbWVcJiMzNDsgXHUwMDNlIFwmIzM0OyRzdWJza2VsXCYjMzQ7IHx8IGZhaWxcbiYjNDM7ZmlcbiYjNDM7XG4mIzQzO3JtIC1mIFwmIzM0OyR0MVwmIzM0OyBcJiMzNDskdDJcJiMzNDsgXCYjMzQ7JHQzXCYjMzQ7XG4mIzQzO2V4aXQgMFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jXG5pbmRleCAyYmI1NzczZDZmOTkzLi5lYTM0Mjg1OWQ2Y2UxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xuQEAgLTQ2NSw3ICYjNDM7NDY1LDcgQEAgc3RydWN0IGV4cG9zZWRfaG9vayB7XG4gXHRcdC5leHBlY3RlZF9lcnIgPSBFWFBFQ1RFRF9FUlIsIFxcXG4gXHR9LFxuIFxuLSNpbmNsdWRlIFwmIzM0O2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7cHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFwmIzM0O1xuIFxuICN1bmRlZiBCUEZfUkVUVkFMX0hPT0tcbiB9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbnNpbWlsYXJpdHkgaW5kZXggMTAwJVxucmVuYW1lIGZyb20gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbnJlbmFtZSB0byB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDIwOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmRhZmUyYjk2MWQxM2JjNDM5Y2FjMWM0MmI5OTY1YzM0OGFjNDRkOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIzIDIwOjE0OjM1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCmluZGV4IDVmMWEzYmZjMDU2OWYuLjliOTkwNTYxMDA3MGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKQEAgLTQsOTMgJiM0Mzs0LDE5IEBAIGluY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5hcmNoCiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZQogCiBDWFggPz0gJChDUk9TU19DT01QSUxFKWcmIzQzOyYjNDM7Ci1PQkpDT1BZID89ICQoQ1JPU1NfQ09NUElMRSlvYmpjb3B5Ci0KLUNVUkRJUiA6PSAkKGFic3BhdGggLikKLVRPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLikKLUxJQkRJUiA6PSAkKFRPT0xTRElSKS9saWIKLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmCi1UT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlCi1UT09MU0FSQ0hJTkNESVIgOj0gJChUT09MU0RJUikvYXJjaC8kKFNSQ0FSQ0gpL2luY2x1ZGUKLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2wKLUFQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpCi1pZm5lcSAoJChPKSwpCi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZAotZWxzZQotR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZCkKLWVuZGlmCi1HRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmgKLVBLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWcKLQotaWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpCi0gIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFIKLWVuZGlmCiAKIEJQRl9HQ0MJCT89ICQoc2hlbGwgY29tbWFuZCAtdiBicGYtZ2NjOykKLWlmZGVmIEFTQU4KLVNBTl9DRkxBR1MgCT89IC1mc2FuaXRpemU9YWRkcmVzcyAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgotZWxzZQotU0FOX0NGTEFHUwk/PQotZW5kaWYKLVNBTl9MREZMQUdTCT89ICQoU0FOX0NGTEFHUykKLVJFTEVBU0UJCT89Ci1PUFRfRkxBR1MJPz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApCi0KLUxJQkVMRl9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyJmd0Oy9kZXYvbnVsbCkKLUxJQkVMRl9MSUJTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDImZ3Q7L2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpCiAKIFNLSVBfRE9DUwk/PQogU0tJUF9MTFZNCT89CiBTS0lQX0xJQkJGRAk/PQogU0tJUF9DUllQVE8JPz0KIAotIyBXaGVuIEJQRl9TVFJJQ1RfQlVJTEQgaXMgMSwgYW55IEJQRiBvYmplY3QsIHNrZWxldG9uLCB0ZXN0IG9iamVjdCwgb3IKLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzCi0jIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLgotQlBGX1NUUklDVF9CVUlMRCA/PSAxCi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSkKLQotaWZlcSAoJChzcmN0cmVlKSwpCi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKQotc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpCi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSkKLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQotZW5kaWYKLQotQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMQkJCQlcCi0JICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCQkJCVwKLQkgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUJCQkJCVwKLQkgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKQkJCVwKLQkgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUikJCVwKLQkgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVCkJXAotCSAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZQotTERGTEFHUyAmIzQzOz0gJChTQU5fTERGTEFHUykKLUxETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkCi0KLVBDQVBfQ0ZMQUdTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJwY2FwIDImZ3Q7L2Rldi9udWxsICZhbXA7JmFtcDsgZWNobyAmIzM0Oy1EVFJBRkZJQ19NT05JVE9SPTEmIzM0OykKLVBDQVBfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMiZndDsvZGV2L251bGwpCi1MRExJQlMgJiM0Mzs9ICQoUENBUF9MSUJTKQotQ0ZMQUdTICYjNDM7PSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpCi0KLSMgU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyB1c2UgTExWTSBsaWJyYXJpZXMKLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpCi0KLWlmbmVxICgkKExMVk0pLCkKLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZwotQ0ZMQUdTICYjNDM7PSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQKLWVuZGlmCi0KICMgQ2hlY2sgd2hldGhlciBicGYgY3B1PXY0IGlzIHN1cHBvcnRlZCBvciBub3QgYnkgY2xhbmcKIGlmbmVxICgkKHNoZWxsICQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtbWNwdT1oZWxwIDImZ3Q7JmFtcDsxIHwgZ3JlcCAmIzM5O3Y0JiMzOTspLCkKIENMQU5HX0NQVVY0IDo9IDEKIGVuZGlmCiAKLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjImIzQzOykKLUNMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAmIzM5O2ludCB4OyYjMzk7IHwgXAotCSQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFwKLQktbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcCi0JLXggYyAtYyAtIC1vIC9kZXYvbnVsbCAyJmd0Oy9kZXYvbnVsbCAmYW1wOyZhbXA7IGVjaG8gMSkKLQogIyBPcmRlciBjb3JyZXNwb25kIHRvICYjMzk7bWFrZSBydW5fdGVzdHMmIzM5OyBvcmRlcgogVEVTVF9HRU5fUFJPR1MgPSB0ZXN0X3ZlcmlmaWVyIHRlc3RfdGFnIHRlc3RfbWFwcyB0ZXN0X2xydV9tYXAgdGVzdF9wcm9ncyBcCiAJdGVzdF9zb2NrbWFwIFwKQEAgLTEwMiwxNiAmIzQzOzI4LDYgQEAgVEVTVF9JTlNUX1NVQkRJUlMgOj0gbm9fYWx1MzIKIGlmbmVxICgkKEJQRl9HQ0MpLCkKIFRFU1RfR0VOX1BST0dTICYjNDM7PSB0ZXN0X3Byb2dzLWJwZl9nY2MKIFRFU1RfSU5TVF9TVUJESVJTICYjNDM7PSBicGZfZ2NjCi0KLSMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCwKLSMgdHJpZ2dlcnMgR0NDIHdhcm5pbmdzIHRoYXQgY2Fubm90IGJlIGRpc2FibGVkOiBkZWNsYXJhdGlvbiBvZgotIyBhbm9ueW1vdXMgc3RydWN0IHR5cGVzIGluIGZ1bmN0aW9uIHBhcmFtZXRlciBsaXN0cy4KLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgotcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3IKLQogZW5kaWYKIAogaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLCkKQEAgLTE2OCw3ICYjNDM7ODQsMjEgQEAgb3ZlcnJpZGUgZGVmaW5lIENMRUFOCiAJJChRKSQoTUFLRSkgZG9jcy1jbGVhbgogZW5kZWYKIAomIzQzOyMgLi4vbGliLm1rIGFwcGVuZHMgdG8gdGhlIGZsYWdzIGluaGVyaXRlZCBmcm9tIHRoZSBlbnZpcm9ubWVudDsKJiM0MzsjIE1ha2VmaWxlLmJ1aWxkdmFycyByZWJ1aWxkcyBDRkxBR1MgYW5kIExERkxBR1MgYXJvdW5kIHRoZXNlIHNuYXBzaG90cwomIzQzOyMgc28gdGhhdCBpdHMgb3duIGFkZGl0aW9ucyBwcmVjZWRlIGxpYi5tayYjMzk7cywgYXMgdGhleSBkaWQgd2hlbiB0aGV5CiYjNDM7IyB3ZXJlIGRlZmluZWQgYWJvdmUgdGhlIGluY2x1ZGUuCiYjNDM7SU5IRVJJVEVEX0NGTEFHUyA6PSAkKENGTEFHUykKJiM0MztJTkhFUklURURfTERGTEFHUyA6PSAkKExERkxBR1MpCiBpbmNsdWRlIC4uL2xpYi5tawomIzQzO2luY2x1ZGUgTWFrZWZpbGUuYnVpbGR2YXJzCiYjNDM7CiYjNDM7IyBEZWZpbml0aW9ucyBvbmx5IHRoaXMgTWFrZWZpbGUgY29uc3VtZXM7IHBsYWNlZCBhZnRlciB0aGUgaW5jbHVkZQomIzQzOyMgYmVjYXVzZSBzb21lIG9mIHRoZW0gZGVyaXZlIGZyb20gTWFrZWZpbGUuYnVpbGR2YXJzIHZhbHVlcy4KJiM0MztCUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sCiYjNDM7SE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hCiYjNDM7QlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYikKJiM0MztDTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUykKIAogTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMKIENIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksICYjMzQ7bm9uZSYjMzQ7KSkKQEAgLTIxMywyMSAmIzQzOzE0Myw5IEBAIGlmZXEgKCQoZmVhdHVyZS1sbHZtKSwxKQogZW5kaWYKIGVuZGlmCiAKLVNDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29scwotQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkCi1JTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlCi1CUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotSE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKS9ob3N0Ci1IT1NUX1NDUkFUQ0hfRElSCTo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzCi1IT1NUX0lOQ0xVREVfRElSCTo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZQotZWxzZQotSE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKQotSE9TVF9TQ1JBVENIX0RJUgk6PSAkKFNDUkFUQ0hfRElSKQotSE9TVF9JTkNMVURFX0RJUgk6PSAkKElOQ0xVREVfRElSKQotZW5kaWYKLUhPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQotUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHMKJiM0MzsjIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzCiYjNDM7JChPVVRQVVQpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgJiM0Mzs9ICQoTExWTV9DRkxBR1MpCiYjNDM7CiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KQkJCQlcCiAJCSAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eCkJXAogCQkgICAgIC4uLy4uLy4uLy4uL3ZtbGludXgJCQkJXApAQCAtMjQ2LDcgJiM0MzsxNjQsNyBAQCAkKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpCQkJCVwKIAkgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCkpOiAlOiAkKE9VVFBVVCkvJSA7CiAKICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nCi1NQUtFX0RJUlMgOj0gJChzb3J0ICQoQlVJTERfRElSKS9saWJicGYgJChIT1NUX0JVSUxEX0RJUikvbGliYnBmCVwKJiM0MztNQUtFX0RJUlMgOj0gJChzb3J0ICQoT1VUUFVUKSAkKEJVSUxEX0RJUikvbGliYnBmICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZiBcCiAJICAgICAgICQoQlVJTERfRElSKS9icGZ0b29sICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2wJCVwKIAkgICAgICAgJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMJCQkJXAogCSAgICAgICAkKElOQ0xVREVfRElSKSkKQEAgLTI1OCw5ICYjNDM7MTc2LDEyIEBAICQoT1VUUFVUKS8lLm86ICUuYwogCSQoY2FsbCBtc2csQ0MsLCRAKQogCSQoUSkkKENDKSAkKENGTEFHUykgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAKIAomIzQzOyMgSGVhZGVycyBtYXkgYXBwZWFyIGFtb25nIHRoZSBwcmVyZXF1aXNpdGVzIGZvciBkZXBlbmRlbmN5IHRyYWNraW5nOwomIzQzOyMgdGhleSBtdXN0IG5vdCByZWFjaCB0aGUgY2xhbmcvZ2NjIGNvbW1hbmQgbGluZSAoY2xhbmcgdHJlYXRzIGEgYmFyZSAuaAomIzQzOyMgYXJndW1lbnQgYXMgYSBwcmVjb21waWxlZC1oZWFkZXIgam9iIGFuZCByZWZ1c2VzIC1vKS4KICQoT1VUUFVUKS8lOiUuYwogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKLQkkKFEpJChMSU5LLmMpICReICQoTERMSUJTKSAtbyAkQAomIzQzOwkkKFEpJChMSU5LLmMpICQoZmlsdGVyLW91dCAlLmgsJF4pICQoTERMSUJTKSAtbyAkQAogCiAjIExMVk0mIzM5O3MgbGQubGxkIGRvZXNuJiMzOTt0IHN1cHBvcnQgYWxsIHRoZSBhcmNoaXRlY3R1cmVzLCBzbyB1c2UgaXQgb25seSBvbiB4ODYKIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKQpAQCAtMzEzLDE3ICYjNDM7MjM0LDYgQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpCiAJJChjYWxsIG1zZyxNT0QsLCRAKQogCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSkKIAotCi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2wKLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLCkKLUNST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sCi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKQotVVNFX0JPT1RTVFJBUCA6PSAmIzM0OyYjMzQ7Ci1lbHNlCi1UUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpCi1VU0VfQk9PVFNUUkFQIDo9ICYjMzQ7Ym9vdHN0cmFwLyYjMzQ7Ci1lbmRpZgotCiAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKTogJChCUEZPQkopCiAKIFRFU1RJTkdfSEVMUEVSUwk6PSAkKE9VVFBVVCkvdGVzdGluZ19oZWxwZXJzLm8KQEAgLTMzOSwxMiAmIzQzOzI0OSwzMyBAQCAkKE9VVFBVVCkvdGVzdF90Y3Bub3RpZnlfdXNlcjogJChDR1JPVVBfSEVMUEVSUykgJChURVNUSU5HX0hFTFBFUlMpICQoVFJBQ0VfSEVMUAogJChPVVRQVVQpL3Rlc3Rfc29ja19maWVsZHM6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKQogJChPVVRQVVQpL3Rlc3RfdGFnOiAkKFRFU1RJTkdfSEVMUEVSUykKICQoT1VUUFVUKS90ZXN0X2xpcmNfbW9kZTJfdXNlcjogJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpCi0kKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFRFU1RJTkdfSEVMUEVSUykKJiM0MzskKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpIGZsb3dfZGlzc2VjdG9yX2xvYWQuaAogJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKQotJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSikKIAotQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTCkKJiM0MzsjIERlZmluZWQgYWhlYWQgb2YgdGhlIGZpcnN0IHJ1bGUgdGhhdCBsaXN0cyBpdCBhcyBhIHByZXJlcXVpc2l0ZS4KJiM0MztWRVJJRllfU0lHX0hEUiA6PSB2ZXJpZmljYXRpb25fY2VydC5oCiYjNDM7CiYjNDM7IyBUaGUgdXNlcnNwYWNlIG9iamVjdHMgdGhlIHJ1bm5lciBpbnN0YW5jZXMgbGluayAoUlVOTkVSX09CSlMsIHNlZQomIzQzOyMgTWFrZWZpbGUuYnVpbGR2YXJzKSBhcmUgYnVpbHQgaGVyZSwgb25jZSwgc28gdGhhdCBubyBydW5uZXIgc3ViLW1ha2UKJiM0MzsjIGV2ZXIgd3JpdGVzIGEgZmlsZSB0aGlzIE1ha2VmaWxlIGFsc28gYnVpbGRzLgomIzQzOyMKJiM0MzsjICQoVFJVTk5FUl9CUEZUT09MKSBpcyBhIHByZXJlcXVpc2l0ZSBiZWNhdXNlIGl0cyBzdWItbWFrZSBpcyB3aGF0CiYjNDM7IyBpbnN0YWxscyBsaWJicGYmIzM5O3MgaW50ZXJuYWwgaGVhZGVycyAoYnBmL2hhc2htYXAuaCwgYnBmL2xpYmJwZl9pbnRlcm5hbC5oKQomIzQzOyMgaW50byAkKElOQ0xVREVfRElSKSAtIHRoZSBjcm9zcy1jb21waWxlZCBicGZ0b29sJiMzOTtzIHdoZW4gY3Jvc3MtY29tcGlsaW5nOwomIzQzOyMgd2l0aG91dCBpdCwgdHJhY2VfaGVscGVycy5jIHJhY2VzIHRoZSBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cAomIzQzOyMgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLgomIzQzO1JVTk5FUl9PQkpTIDo9ICQoc29ydCAkKFJVTk5FUl9PQkpTLXRlc3RfcHJvZ3MpICQoUlVOTkVSX09CSlMtdGVzdF9tYXBzKVwKJiM0MzsJCSAgICAgICQoUlVOTkVSX0xJQl9PQkpTLXRlc3RfcHJvZ3MpKQomIzQzOyQoUlVOTkVSX09CSlMpOiAkKFZFUklGWV9TSUdfSERSKSAkKEJQRk9CSikgJChUUlVOTkVSX0JQRlRPT0wpCiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MubzogcHJvZ190ZXN0cy90ZXN0cy5oCiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwcy5vOiBtYXBfdGVzdHMvdGVzdHMuaAomIzQzOwomIzQzOyMgZmluZF9iaXQuYyBpcyB0aGUgb25seSBydW5uZXIgc291cmNlIG91dHNpZGUgdGhpcyBkaXJlY3RvcnksCiYjNDM7IyBzbyBpdCBuZWVkcyBhIHJ1bGUgb2YgaXRzIG93bi4KJiM0MzskKE9VVFBVVCkvZmluZF9iaXQubzogJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmMKJiM0MzsJJChjYWxsIG1zZyxDQywsJEApCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLWMgJCZsdDsgJChMRExJQlMpIC1vICRACiYjNDM7CiAkKERFRkFVTFRfQlBGVE9PTCk6ICQod2lsZGNhcmQgJChCUEZUT09MRElSKS8qLltjaF0gJChCUEZUT09MRElSKS9NYWtlZmlsZSkgICAgXAogCQkgICAgJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9icGZ0b29sCiAJJChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUikJCQkgICAgICAgXApAQCAtNDEyLDcgJiM0MzszNDMsNyBAQCBlbmRpZgogCiAjIHZtbGludXguaCBpcyBmaXJzdCBkdW1wZWQgdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlbiBjb21wYXJlZCB0bwogIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2YKLSMgJChUUlVOTkVSX0JQRl9PQkpTKQomIzQzOyMgQlBGIG9iamVjdHMuCiAkKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKQogaWZlcSAoJChWTUxJTlVYX0gpLCkKIAkkKGNhbGwgbXNnLEdFTiwsJEApCkBAIC00MzcsMzc0ICYjNDM7MzY4LDEyIEBAICQoUkVTT0xWRV9CVEZJRFMpOiAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzCVwKIAkJSE9TVFBLR19DT05GSUc9JiMzOTskKFBLR19DT05GSUcpJiMzOTsgXAogCQlPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKQogCi0jIEdldCBDbGFuZyYjMzk7cyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnkKLSMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyAmIzM0O21pc3NpbmcmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcywKLSMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLgotIwotIyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlCi0jIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuCi1kZWZpbmUgZ2V0X3N5c19pbmNsdWRlcwotJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSAmbHQ7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIFwKLQl8IHNlZCAtbiAmIzM5Oy8mbHQ7Li4uJmd0OyBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFwoLy4qXCl8LWlkaXJhZnRlciBcMXxwIH0mIzM5OykgXAotJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IGdyZXAgJiMzOTtfX3Jpc2N2X3hsZW4gJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWQmIzM0OywgJCQzLCAkJDMpfSYjMzk7KSBcCi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EX19CSVRTX1BFUl9MT05HPSVkJiMzNDssICQkMyl9JiMzOTspIFwKLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtICZsdDsvZGV2L251bGwgfCBncmVwIC1FICYjMzk7TUlQUyhFTHxFQil8X01JUFNfU1ooUFRSfExPTkcpIHxfTUlQU19TSU0gfF9BQkkoTzMyfE4zMnw2NCkgJiMzOTsgfCBhd2sgJiMzOTt7cHJpbnRmKCYjMzQ7LUQlcz0lcyAmIzM0OywgJCQyLCAkJDMpfSYjMzk7KQotZW5kZWYKLQotIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuCi1JU19MSVRUTEVfRU5ESUFOIDo9ICQoc2hlbGwgJChDQykgLWRNIC1FIC0gJmx0Oy9kZXYvbnVsbCB8IFwKLQkJCWdyZXAgJiMzOTtkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18mIzM5OykKLU1FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKQotQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYikKLQotaWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKQotQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpCi1lbmRpZgotCi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSkKLUJQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTikJXAotCSAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKQkJCVwKLQkgICAgIC1JJChUT09MU0lOQ0RJUikgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZQkJXAotCSAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKQkJCVwKLQkgICAgIC1zdGQ9Z251MTEJCSAJCQkJCVwKLQkgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIAkJCQkJXAotCSAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWcJCQkJCVwKLQkgICAgIC1mbXMtZXh0ZW5zaW9ucwkJCQkJCVwKLQkgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzCQkJXAotCSAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXMJCQkJCVwKLQkgICAgICMKLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlCi0KLUNMQU5HX0NGTEFHUyA9ICQoQ0xBTkdfU1lTX0lOQ0xVREVTKQotCi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgJiM0Mzs9IC1mbm8taW5saW5lCi0kKE9VVFBVVCkvdGVzdF94ZHBfbm9pbmxpbmUubzogQlBGX0NGTEFHUyAmIzQzOz0gLWZuby1pbmxpbmUKLQotJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQubzogZmxvd19kaXNzZWN0b3JfbG9hZC5oCi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaAotCi0jIEJ1aWxkIEJQRiBvYmplY3QgdXNpbmcgQ2xhbmcKLSMgJDEgLSBpbnB1dCAuYyBmaWxlCi0jICQyIC0gb3V0cHV0IC5vIGZpbGUKLSMgJDMgLSBDRkxBR1MKLSMgJDQgLSBiaW5hcnkgbmFtZQotZGVmaW5lIENMQU5HX0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYzIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggZGlzYWJsZWQgYWx1MzIKLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFCi0JJChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMikKLQkkKFEpJChDTEFORykgJDMgLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1jICQxIC1tY3B1PXYyIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkMjsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJQRiYjMzk7ICYjMzk7JChub3RkaXIgJDIpJiMzOTsgMSZndDsmYW1wOzIpKQotZW5kZWYKLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggY3B1LXY0Ci1kZWZpbmUgQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEUKLQkkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKQotCSQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFwKLQkJKCQoUk0pICQyOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtQlBGJiMzOTsgJiMzOTskKG5vdGRpciAkMikmIzM5OyAxJmd0OyZhbXA7MikpCi1lbmRlZgotIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQwotZGVmaW5lIEdDQ19CUEZfQlVJTERfUlVMRQotCSQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMikKLQkkKFEpJChCUEZfR0NDKSAkMyAtREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMiAtYyAkMSAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJDI7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1CUEYmIzM5OyAmIzM5OyQobm90ZGlyICQyKSYjMzk7IDEmZ3Q7JmFtcDsyKSkKLWVuZGVmCi0KLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmMKLQotTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaAkJXAotCQlsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIAkJCVwKLQkJdGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oCVwKLQkJdGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaAkJCVwKLQkJdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oCQkJCVwKLQkJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oCQkJCVwKLQkJdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaAotCi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgCVwKLQljb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuYwkJCVwKLQl0ZXN0X3JpbmdidWZfbi5jIHRlc3RfcmluZ2J1Zl9tYXBfa2V5LmMgdGVzdF9yaW5nYnVmX3dyaXRlLmMgICAgXAotCXRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuYwotCi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuYwotCi0jIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2UKLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFwKLQlrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKLVNLRUxfQkxBQ0tMSVNUICYjNDM7PSAkJChMU0tFTFMpICQkKExTS0VMU19TSUdORUQpCi0KLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm8KLWxpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm8KLWxpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm8KLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm8KLSMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlCi0jIGJ1dCB0aGF0JiMzOTtzIGNyZWF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgc2tlbC5oIGdlbmVyYXRpb24uCi10ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vCi10ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8KLXRlc3RfdXNkdC5za2VsLmgtZGVwcyA6PSB0ZXN0X3VzZHQuYnBmLm8gdGVzdF91c2R0X211bHRpc3BlYy5icGYubwoteHNrX3hkcF9wcm9ncy5za2VsLmgtZGVwcyA6PSB4c2tfeGRwX3Byb2dzLmJwZi5vCi14ZHBfaHdfbWV0YWRhdGEuc2tlbC5oLWRlcHMgOj0geGRwX2h3X21ldGFkYXRhLmJwZi5vCi14ZHBfZmVhdHVyZXMuc2tlbC5oLWRlcHMgOj0geGRwX2ZlYXR1cmVzLmJwZi5vCi10cmFjaW5nX211bHRpLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KLXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCi10cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwotdHJhY2luZ19tdWx0aV9zZXNzaW9uLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfc2Vzc2lvbl9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwotCi1MSU5LRURfQlBGX09CSlMgOj0gJChmb3JlYWNoIHNrZWwsJChMSU5LRURfU0tFTFMpLCQoJChza2VsKS1kZXBzKSkKLUxJTktFRF9CUEZfU1JDUyA6PSAkKHBhdHN1YnN0ICUuYnBmLm8sJS5jLCQoTElOS0VEX0JQRl9PQkpTKSkKLQotSEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaCkJCVwKLQkJCSQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKQlcCi0JCQkkKGFkZHByZWZpeCAkKEJQRkRJUikvLAlicGZfY29yZV9yZWFkLmgJXAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgYnBmX2VuZGlhbi5oCVwKLQkJCQkJCWJwZl9oZWxwZXJzLmgJXAotCQkJICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaCkKLQotIyBTZXQgdXAgZXh0cmEgVFJVTk5FUl9YWFggJiMzNDt0ZW1wb3JhcnkmIzM0OyB2YXJpYWJsZXMgaW4gdGhlIGVudmlyb25tZW50IChyZWxpZXMgb24KLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuCi0jIFBhcmFtZXRlcnM6Ci0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncykKLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSAmIzM0O2ZsYXZvciYjMzQ7IChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YykKLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVIKLQotTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKQotVFJVTk5FUl9PVVRQVVQgOj0gJChPVVRQVVQpJChpZiAkMiwvKSQyCi1UUlVOTkVSX0JJTkFSWSA6PSAkMSQoaWYgJDIsLSkkMgotVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubywJXAotCQkJCSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jKSkpCi1UUlVOTkVSX0VYVFJBX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sCQlcCi0JCQkJICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSkKLVRSVU5ORVJfTElCX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLm8sCQlcCi0JCQkJICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0xJQl9TT1VSQ0VTKSkpCi1UUlVOTkVSX0VYVFJBX0hEUlMgOj0gJCQoZmlsdGVyICUuaCwkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpCi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oCi1UUlVOTkVSX0JQRl9TUkNTIDo9ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikvKi5jKSkKLVRSVU5ORVJfQlBGX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vLCAkJChUUlVOTkVSX0JQRl9TUkNTKSkKLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsCVwKLQkJCQkgJCQoZmlsdGVyLW91dCAkKFNLRUxfQkxBQ0tMSVNUKSAkKExJTktFRF9CUEZfU1JDUyksXAotCQkJCQkgICAgICAgJCQoVFJVTk5FUl9CUEZfU1JDUykpKQotVFJVTk5FUl9CUEZfTFNLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFMpICQkKExTS0VMU19FWFRSQSkpCi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKQotVFJVTk5FUl9CUEZfTFNLRUxTX1NJR05FRCA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTX1NJR05FRCkpCi1URVNUX0dFTl9GSUxFUyAmIzQzOz0gJCQoVFJVTk5FUl9CUEZfT0JKUykKLQotIyBFdmFsdWF0ZSBydWxlcyBub3cgd2l0aCBleHRyYSBUUlVOTkVSX1hYWCB2YXJpYWJsZXMgYWJvdmUgYWxyZWFkeSBkZWZpbmVkCi0kJChldmFsICQkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLCQxLCQyKSkKLQotZW5kZWYKLQotIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZAotIyBzZXQgdXAgYnkgREVGSU5FX1RFU1RfUlVOTkVSIGl0c2VsZiwgY3JlYXRlIHRlc3QgcnVubmVyIGJ1aWxkIHJ1bGVzIHdpdGg6Ci0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncykKLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSAmIzM0O2ZsYXZvciYjMzQ7IChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YykKLWRlZmluZSBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMKLQotIyBQZXJtaXNzaXZlIGJ1aWxkIGJlaGF2aW91ciAoc2tpcC1vbi1mYWlsdXJlIGNvbXBpbGUsIHBhcnRpYWwtbGluaykgb25seQotIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3QKLSMgcmVmZXJlbmNlcyAoZS5nLiB0ZXN0X21hcHMpIGtlZXAgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gcGVybWlzc2l2ZS4KLSMgVGhlIGNoZWNrIGlzIGlubGluZWQgcGVyLXJ1bm5lciBzbyAkMSBpcyBzdWJzdGl0dXRlZCBhdCAkKGNhbGwpIHRpbWUgYW5kCi0jIHRoZSByZXN1bHQgaXMgYmFrZWQgaW50byBlYWNoIHJ1bGUmIzM5O3MgcmVjaXBlLgotCi1pZmVxICgkKCQoVFJVTk5FUl9PVVRQVVQpLWRpciksKQotJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHkKLSQoVFJVTk5FUl9PVVRQVVQpOgotCSQkKGNhbGwgbXNnLE1LRElSLCwkJEApCi0JJChRKW1rZGlyIC1wICQkQAotZW5kaWYKLQotIyBlbnN1cmUgd2Ugc2V0IHVwIEJQRiBvYmplY3RzIGdlbmVyYXRpb24gcnVsZSBqdXN0IG9uY2UgZm9yIGEgZ2l2ZW4KLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvbgotaWZlcSAoJCgkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyksKQotJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMgOj0geQotJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzoJCQkJXAotCQkgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8lLmMJCQlcCi0JCSAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaAkJCVwKLQkJICAgICAkJChJTkNMVURFX0RJUikvdm1saW51eC5oCQkJCVwKLQkJICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKQkJCQlcCi0JCSAgICAgfCAkKFRSVU5ORVJfT1VUUFVUKSAkJChCUEZPQkopCi0JJCQoY2FsbCAkKFRSVU5ORVJfQlBGX0JVSUxEX1JVTEUpLCQkJmx0OywkJEAsCQkJXAotCQkJCQkgICQoVFJVTk5FUl9CUEZfQ0ZMQUdTKSAgICAgICAgIFwKLQkJCQkJICAkJCgkJCZsdDstQ0ZMQUdTKQkJXAotCQkJCQkgICQkKCQkJmx0Oy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKQotCi0kKFRSVU5ORVJfQlBGX1NLRUxTKTogJS5za2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCQmbHQ7IF07IHRoZW4JCQlcCi0JCSQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOwkJCVwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkJZXhpdCAwOwkJCQkJCQlcCi0JZmk7KQkJCQkJCQkJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGlua2VkMS5vKSAkJCZsdDsgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQxLm8pICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGlua2VkMy5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQyLm8pICZhbXA7JmFtcDsgXAotCWRpZmYgJCQoJmx0Ozoubz0ubGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQzLm8pICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoJmx0Ozoubz0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJCgmbHQ7Oi5icGYubz0pKSAmZ3Q7ICQkQCAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoJmx0Ozoubz0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJCgmbHQ7Oi5icGYubz0pKSAmZ3Q7ICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcCi0JCSQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JfSkgJmFtcDsmYW1wOyBcCi0Jcm0gLWYgJCQoJmx0Ozoubz0ubGlua2VkMS5vKSAkJCgmbHQ7Oi5vPS5saW5rZWQyLm8pICQkKCZsdDs6Lm89LmxpbmtlZDMubykKLQotJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpCi0JJChRKSQoaWYgJChQRVJNSVNTSVZFKSxpZiBbICEgLWYgJCQmbHQ7IF07IHRoZW4JCQlcCi0JCSQkKFJNKSAkJEA7CQkJCQkJXAotCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCQlleGl0IDA7CQkJCQkJCVwKLQlmaTspCQkJCQkJCQlcCi0JcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7WyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMS5vKSAkJCZsdDsgJmFtcDsmYW1wOwkJXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAmYW1wOyZhbXA7IFwKLQlkaWZmICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQzLm8pICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gLUwgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoJmx0OzouYnBmLm89X2xza2VsKSkgJmd0OyAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXAotCQkkJChSTSkgJCRAOyBcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JfSkgJmFtcDsmYW1wOyBcCi0Jcm0gLWYgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykKLQotJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKQotCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkJmx0OyBdOyB0aGVuCQkJXAotCQkkJChSTSkgJCRAOwkJCQkJCVwKLQkJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLVNLRUwmIzM5OyAmIzM5OyQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzI7IFwKLQkJZXhpdCAwOwkJCQkJCQlcCi0JZmk7KQkJCQkJCQkJXAotCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5O1skKFRSVU5ORVJfQklOQVJZKSAoc2lnbmVkKV0gJCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJCQmbHQ7ICZhbXA7JmFtcDsJCVwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKCZsdDs6Lm89LmxsaW5rZWQyLm8pICQkKCZsdDs6Lm89LmxsaW5rZWQxLm8pICZhbXA7JmFtcDsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJmFtcDsmYW1wOyBcCi0JZGlmZiAkJCgmbHQ7Oi5vPS5sbGlua2VkMi5vKSAkJCgmbHQ7Oi5vPS5sbGlua2VkMy5vKSAmYW1wOyZhbXA7CQlcCi0JJCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoJmx0OzouYnBmLm89X2xza2VsKSkgJmd0OyAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXAotCQkkJChSTSkgJCRAOyBcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JfSkgJmFtcDsmYW1wOyBcCi0Jcm0gLWYgJCQoJmx0Ozoubz0ubGxpbmtlZDEubykgJCQoJmx0Ozoubz0ubGxpbmtlZDIubykgJCQoJmx0Ozoubz0ubGxpbmtlZDMubykKLQotJChMSU5LRURfQlBGX09CSlMpOiAlOiAkKFRSVU5ORVJfT1VUUFVUKS8lCi0KLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlcwotLlNFQ09OREVYUEFOU0lPTjoKLSQoVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEKTogJChUUlVOTkVSX09VVFBVVCkvJTogJCQkJCglLWRlcHMpICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKQotCSQoUSkkKGlmICQoUEVSTUlTU0lWRSksZm9yIGYgaW4gJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpOyBkbyBcCi0JCWlmIFsgISAtZiAkJCQkZiBdOyB0aGVuCQkJCQkJXAotCQkJJCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7CQlcCi0JCQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtU0tFTCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCQkJZXhpdCAwOwkJCQkJCQlcCi0JCWZpOwkJCQkJCQkJXAotCWRvbmU7KQkJCQkJCQkJCVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0xJTkstQlBGJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJChAOi5za2VsLmg9LmJwZi5vKSkmIzM5OyAxJmd0OyZhbXA7MjsgXAotCSQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKSAmYW1wOyZhbXA7IFwKLQkkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICZhbXA7JmFtcDsgXAotCWRpZmYgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAmYW1wOyZhbXA7CVwKLQlwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTtbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJiMzOTsgMSZndDsmYW1wOzIgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChAOi5za2VsLmg9KSkgJmd0OyAkJEAgJmFtcDsmYW1wOyBcCi0JJCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChAOi5za2VsLmg9KSkgJmd0OyAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXAotCQkkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTsJCQlcCi0JCXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1TS0VMJiMzOTsgJiMzOTskJChub3RkaXIgJCRAKSYjMzk7IDEmZ3Q7JmFtcDsyOyBcCi0JfSkgJmFtcDsmYW1wOwkJCQkJCQkJCVwKLQlybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKQotCi0jIFdoZW4gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhICUuZCBmaWxlLCBvbmx5IHNrZWwgYmFzZW5hbWVzIChub3QKLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUubwotIyBmaWxlLiB2cGF0aCBkaXJlY3RpdmVzIGJlbG93IGluc3RydWN0IG1ha2UgdG8gc2VhcmNoIGZvciBza2VsIGZpbGVzCi0jIGluIFRSVU5ORVJfT1VUUFVULCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuCi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKQotdnBhdGggJS5sc2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpCi12cGF0aCAlLnN1YnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKQotCi1lbmRpZgotCi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZQotaWZlcSAoJCgkKFRSVU5ORVJfVEVTVFNfRElSKS10ZXN0cy1oZHIpLCkKLSQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciA6PSB5Ci0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jCi0JJCQoY2FsbCBtc2csVEVTVC1IRFIsJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQkKHNoZWxsIChlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OzsJCQkJCVwKLQkJICBzZWQgLW4gLUUgJiMzOTtzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10mIzQzOylcKCh2b2lkKT9cKS4qL0RFRklORV9URVNUKFwyKS9wJiMzOTsJXAotCQkJJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jIHwgc29ydCA7CVwKLQkJICkgJmd0OyAkJEApCi1lbmRpZgotCi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vCi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxCi0KLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMKLSMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kCi0kKFRSVU5ORVJfVEVTVF9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0Lm86CQkJXAotCQkgICAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmMJCQkJXAotCQkgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kCi0JJCQoY2FsbCBtc2csVEVTVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKQotCSQoUSkoY2QgJCQoQEQpICZhbXA7JmFtcDsgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCQmbHQ7ICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJCRAOyBwcmludGYgJiMzOTsgICUtMTJzICVzXG4mIzM5OyAmIzM5O1NLSVAtVEVTVCYjMzk7ICYjMzk7JCQobm90ZGlyICQkQCkmIzM5OyAxJmd0OyZhbXA7MikpKQotCSQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSwJCQkJCQlcCi0JCSQoUSlpZiBbIC1mICQkQCBdOyB0aGVuCQkJCQkJXAotCQkkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJiMzOTsgICUtOHMlcyAlc1xuJiMzOTsgJiMzNDtCVEZJRFMmIzM0OyAmIzM0OyBbJChUUlVOTkVSX0JJTkFSWSldJiMzNDsgJiMzNDskJChub3RkaXIgJCRAKSYjMzQ7KTsgXAotCQkkKFJFU09MVkVfQlRGSURTKSAtLWJ0ZiAkKFRSVU5ORVJfT1VUUFVUKS9idGZfZGF0YS5icGYubyAkJEA7CVwKLQkJJChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAOwkJXAotCQlmaSkKLQotJChUUlVOTkVSX1RFU1RfT0JKUzoubz0uZCk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kOgkJCVwKLQkJCSAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmMJCQlcCi0JCQkgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpCQkJXAotCQkJICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpCQkJXAotCQkJICAgICQoVFJVTk5FUl9CUEZfTFNLRUxTKQkJCVwKLQkJCSAgICAkKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpCQlcCi0JCQkgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpCi0KLWlmZXEgKCQoZmlsdGVyIGNsZWFuIGRvY3MtY2xlYW4gZW1pdF90ZXN0cywkKE1BS0VDTURHT0FMUykpLCkKLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSkKLWVuZGlmCi0KLSMgYWRkIHBlciBleHRyYSBvYmogQ0ZHTEFHUyBkZWZpbml0aW9ucwotJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLAlcCi0JJChldmFsICQoVFJVTk5FUl9PVVRQVVQpLyQoTikubzogQ0ZMQUdTICYjNDM7PSAkKCQoTikuYy1DRkxBR1MpKSkKLQotJChUUlVOTkVSX0VYVFJBX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86CQkJCVwKLQkJICAgICAgICUuYwkJCQkJCVwKLQkJICAgICAgICQoVFJVTk5FUl9FWFRSQV9IRFJTKQkJCQlcCi0JCSAgICAgICAkKFZFUklGWV9TSUdfSERSKQkJCQlcCi0JCSAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKQkJCQlcCi0JCSAgICAgICAkJChCUEZPQkopIHwgJChUUlVOTkVSX09VVFBVVCkKLQkkJChjYWxsIG1zZyxFWFQtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQCkKLQkkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCQmbHQ7ICQkKExETElCUykgLW8gJCRACi0KLSQoVFJVTk5FUl9MSUJfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzokKFRPT0xTRElSKS9saWIvJS5jCi0JJCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApCi0JJChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkJmx0OyAkJChMRExJQlMpIC1vICQkQAotCi0jIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZQotIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpCi0kKFRSVU5ORVJfQklOQVJZKS1leHRyYXM6ICQoVFJVTk5FUl9FWFRSQV9GSUxFUykgfCAkKFRSVU5ORVJfT1VUUFVUKQotaWZuZXEgKCQyOiQoT1VUUFVUKSw6JChzaGVsbCBwd2QpKQotCSQkKGNhbGwgbXNnLEVYVC1DT1BZLCQoVFJVTk5FUl9CSU5BUlkpLCQoVFJVTk5FUl9FWFRSQV9GSUxFUykpCi0JJChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvCi1lbmRpZgotCi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzCi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6IHwgJChUUlVOTkVSX0JQRl9PQkpTKQotCi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKQlcCi0JCQkgICAgICQoVFJVTk5FUl9FWFRSQV9PQkpTKSAkJChCUEZPQkopCQlcCi0JCQkgICAgICQoVFJVTk5FUl9MSUJfT0JKUykJCQlcCi0JCQkgICAgICQoVFJVTk5FUl9CUEZUT09MKQkJCQlcCi0JCQkgICAgICQoT1VUUFVUKS92ZXJpc3RhdAkJCQlcCi0JCQkgICAgIHwgJChUUlVOTkVSX0JJTkFSWSktZXh0cmFzCQkJXAotCQkJICAgICAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJChUUlVOTkVSX1RFU1RfT0JKUykpKQotCSQkKGNhbGwgbXNnLEJJTkFSWSwsJCRAKQotCSQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEAKLQkkKFEpbG4gLXNmICQoaWYgJDIsLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcCi0JCSAgICQoT1VUUFVUKS8kKGlmICQyLCQyLylicGZ0b29sCi0KLWVuZGVmCi0KLVZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmgKLVZFUklGSUNBVElPTl9DRVJUICAgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LmRlcgotUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbQotCi0kKFZFUklGSUNBVElPTl9DRVJUKSAkKFBSSVZBVEVfS0VZKTogJChWRVJJRllfU0lHX1NFVFVQKQomIzQzOyMgT25lIGdlbmtleSBydW4gcHJvZHVjZXMgYm90aCBmaWxlcy4gQSBwbGFpbiB0d28tdGFyZ2V0IHJ1bGUgaXMgbm90CiYjNDM7IyBncm91cGVkIC0gaWYgYm90aCBmaWxlcyBhcmUgc3RhbGUgbWFrZSB3b3VsZCBydW4gZ2Vua2V5IHR3aWNlLCB1bmRlcgomIzQzOyMgLWogY29uY3VycmVudGx5LCBhbmQgdGhlIG9wZW5zc2wgaW52b2NhdGlvbnMgcmFjZTsgdGhlIHBhdHRlcm4gZm9ybQomIzQzOyMgaXMgaW1wbGljaXRseSBncm91cGVkIGV2ZW4gd2l0aCBtYWtlICZsdDsgNC4zLiBUaGUgc3RlbSBvbmx5IHN0YW5kcyBpbgomIzQzOyMgZm9yICYjMzk7c2lnbmluZyYjMzk7IHNvIHRoYXQgbm8gb3RoZXIgLnBlbS8uZGVyIHVuZGVyICQoQlVJTERfRElSKSBtYXRjaGVzLgomIzQzOyQoQlVJTERfRElSKS8lX2tleS5wZW0gJChCVUlMRF9ESVIpLyVfa2V5LmRlcjogJChWRVJJRllfU0lHX1NFVFVQKQogCSQoUSlta2RpciAtcCAkKEJVSUxEX0RJUikKIAkkKFEpJChWRVJJRllfU0lHX1NFVFVQKSBnZW5rZXkgJChCVUlMRF9ESVIpCiAKQEAgLTgzMyw3ICYjNDM7NDAyLDYgQEAgTElCQVJFTkFfQ09NTU9OX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZQkJXAogTElCQVJFTkFfQlBGX0RFUFMgOj0gJChMSUJBUkVOQV9DT01NT05fREVQUykgJCh3aWxkY2FyZCBsaWJhcmVuYS9zZWxmdGVzdHMvKikKIExJQkFSRU5BX0JFTkNIX0JQRl9ERVBTIDo9ICQoTElCQVJFTkFfQ09NTU9OX0RFUFMpICQod2lsZGNhcmQgbGliYXJlbmEvYmVuY2hzLyopCiAKLUxJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oCiBMSUJBUkVOQV9CRU5DSF9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2JlbmNoLnNrZWwuaAogCiAkKExJQkFSRU5BX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpCkBAIC04NDMsOTUgJiM0Mzs0MTEsMTI2IEBAICQoTElCQVJFTkFfQkVOQ0hfU0tFTCk6ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChMSUJBUkVOQV9CRU5DSF9CUEZfCiAJJiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGJlbmNobWFya3MgJChMSUJBUkVOQV9NQUtFX0FSR1MpCiAKIGlmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpCi1MSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmgKLUNGTEFHUyAmIzQzOz0gLURIQVNfQlBGX0FSRU5BX0FTQU4KIAogJChMSUJBUkVOQV9BU0FOX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQlBGX0RFUFMpCiAJJiM0MzskKE1BS0UpIC1DIGxpYmFyZW5hIGxpYmFyZW5hX2FzYW4uc2tlbC5oICQoTElCQVJFTkFfTUFLRV9BUkdTKQogZW5kaWYKIAotIyBEZWZpbmUgdGVzdF9wcm9ncyB0ZXN0IHJ1bm5lci4KLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHMKLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9ncwotVFJVTk5FUl9FWFRSQV9TT1VSQ0VTIDo9IHRlc3RfcHJvZ3MuYwkJXAotCQkJIGNncm91cF9oZWxwZXJzLmMJXAotCQkJIHRyYWNlX2hlbHBlcnMuYwlcCi0JCQkgbmV0d29ya19oZWxwZXJzLmMJXAotCQkJIHRlc3RpbmdfaGVscGVycy5jCVwKLQkJCSBidGZfaGVscGVycy5jCQlcCi0JCQkgY2FwX2hlbHBlcnMuYwkJXAotCQkJIHVucHJpdl9oZWxwZXJzLmMgCVwKLQkJCSBzeXNjdGxfaGVscGVycy5jCVwKLQkJCSBuZXRsaW5rX2hlbHBlcnMuYwlcCi0JCQkgaml0X2Rpc2FzbV9oZWxwZXJzLmMJXAotCQkJIGlvX2hlbHBlcnMuYwkJXAotCQkJIHRlc3RfbG9hZGVyLmMJCVwKLQkJCSB4c2suYwkJCVwKLQkJCSBkaXNhc20uYwkJXAotCQkJIGRpc2FzbV9oZWxwZXJzLmMJXAotCQkJIGpzb25fd3JpdGVyLmMgCQlcCi0JCQkgJChWRVJJRllfU0lHX0hEUikJCVwKLQkJCSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmgJXAotCQkJIGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oCVwKLQkJCSBicGZ0b29sX2hlbHBlcnMuYwlcCi0JCQkgdXNkdF8xLmMgdXNkdF8yLmMJXAotCQkJICQoTElCQVJFTkFfU0tFTCkJXAotCQkJICQoTElCQVJFTkFfQVNBTl9TS0VMKQotVFJVTk5FUl9MSUJfU09VUkNFUyA6PSBmaW5kX2JpdC5jCi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWQJCQkJXAotCQkgICAgICAgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zbwkJCVwKLQkJICAgICAgICQoT1VUUFVUKS94ZHBfc3lucHJveHkJCQkJXAotCQkgICAgICAgJChPVVRQVVQpL3NpZ24tZmlsZQkJCQlcCi0JCSAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpCQkJCVwKLQkJICAgICAgICQoVEVTVF9LTU9EX1RBUkdFVFMpCQkJCVwKLQkJICAgICAgIGltYV9zZXR1cC5zaCAJCQkJCVwKLQkJICAgICAgICQoVkVSSUZZX1NJR19TRVRVUCkJCQkJXAotCQkgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKQkJXAotCQkgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKQotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19CUEZfQlVJTERfUlVMRQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKQotCi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLgotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFCi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykKLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKQotCi0jIERlZmluZSB0ZXN0X3Byb2dzLWNwdXY0IHRlc3QgcnVubmVyLgomIzQzOyMgR2VuZXJhdGVkIHRlc3QgbGlzdCBoZWFkZXJzCiYjNDM7CiYjNDM7ZGVmaW5lIGdlbl90ZXN0c19oZHIKJiM0MzsJJChjYWxsIG1zZyxURVNULUhEUiwsJEApCiYjNDM7CSQoUSkoZWNobyAmIzM5Oy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJiMzOTs7CQlcCiYjNDM7CQkgIHNlZCAtbiAtRSAmIzM5O3MvXnZvaWQgKHNlcmlhbF8pP3Rlc3RfKFthLXpBLVowLTlfXSYjNDM7KVwoKHZvaWQpP1wpLiovREVGSU5FX1RFU1QoXDIpL3AmIzM5OwlcCiYjNDM7CQkkKEBEKS8qLmMgfCBzb3J0KSAmZ3Q7ICRACiYjNDM7ZW5kZWYKJiM0MzsKJiM0Mztwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpCiYjNDM7CSQoZ2VuX3Rlc3RzX2hkcikKJiM0MzsKJiM0MzttYXBfdGVzdHMvdGVzdHMuaDogJCh3aWxkY2FyZCBtYXBfdGVzdHMvKi5jKQomIzQzOwkkKGdlbl90ZXN0c19oZHIpCiYjNDM7CiYjNDM7IyBUZXN0IHJ1bm5lciBpbnN0YW5jZXMsIG9uZSBzdWItbWFrZSBlYWNoIChzZWUgTWFrZWZpbGUucnVubmVyKS4KJiM0MzsKJiM0MzsjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cyBhbmQgVEVTVF9LTU9EUyBhcmUgZXhwb3J0ZWQKJiM0MzsjIHRvIHRoZSBydW5uZXIgc3ViLW1ha2VzLiBDQyBpcyBwYXNzZWQgZXhwbGljaXRseSBpbnN0ZWFkOiBleHBvcnRpbmcgaXQKJiM0MzsjIHdvdWxkIGFsc28gbGVhayBsaWIubWsmIzM5O3MgQ0MgaW50byB0aGUgbGliYnBmIHN1Yi1idWlsZCwgd2hpY2ggY29tcHV0ZXMKJiM0MzsjIGl0cyBvd24uICgmIzM5O2V4cG9ydCBOQU1FJiMzOTsgb24gYW4gdW5kZWZpbmVkCiYjNDM7IyB2YXJpYWJsZSBjcmVhdGVzIGFuIGVtcHR5IG9uZSwgc28gdGhlc2Ugc3RheSBiZWxvdyB0aGUgZGVmaW5pdGlvbnMuKQomIzQzO2V4cG9ydCBMTFZNX0xETElCUyBMTFZNX0xERkxBR1MgVEVTVF9LTU9EUwomIzQzO2V4cG9ydCBJTkhFUklURURfQ0ZMQUdTIElOSEVSSVRFRF9MREZMQUdTCiYjNDM7CiYjNDM7UlVOTkVSX01BS0UgOj0gJChNQUtFKSAtZiBNYWtlZmlsZS5ydW5uZXIgT1VUUFVUPSQoT1VUUFVUKSBDQz0mIzM5OyQoQ0MpJiMzOTsJXAomIzQzOwkgICAgICAgQ0xBTkc9JiMzOTskKENMQU5HKSYjMzk7CiYjNDM7CiYjNDM7IyBFdmVyeXRoaW5nIGEgcnVubmVyIGluc3RhbmNlIHJlZmVyZW5jZXMgYnV0IGRvZXMgbm90IGtub3cgaG93IHRvIGJ1aWxkLgomIzQzO1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKQkJXAomIzQzOwkJICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUykJCQlcCiYjNDM7CQkgICQoT1VUUFVUKS92ZXJpc3RhdAkJCQkJXAomIzQzOwkJICAkKFZFUklGWV9TSUdfSERSKSAkKFBSSVZBVEVfS0VZKSAkKFZFUklGSUNBVElPTl9DRVJUKQlcCiYjNDM7CQkgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCQlcCiYjNDM7CQkgIHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaAkJCVwKJiM0MzsJCSAgJChSVU5ORVJfT0JKUykJCQkJCVwKJiM0MzsJCSAgJChPVVRQVVQpL3VyYW5kb21fcmVhZCAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCVwKJiM0MzsJCSAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlCQlcCiYjNDM7CQkgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUykKJiM0MzsKJiM0MzsjIFRoZSBtYWluIE1ha2VmaWxlIGNhbm5vdCB0ZWxsIHdoZXRoZXIgJChPVVRQVVQpL3Rlc3RfcHJvZ3MgaXMgc3RhbGUgLQomIzQzOyMgb25seSB0aGUgcnVubmVyIHN1Yi1tYWtlIGtub3dzIGl0cyBmdWxsIGRlcGVuZGVuY3kgZ3JhcGguIEZPUkNFIG1ha2VzCiYjNDM7IyB0aGUgZGVsZWdhdGluZyBydWxlcyBiZWxvdyBhbHdheXMgcnVuOyB0aGVpciBkZXBlbmRlbnRzIHN0aWxsIHJlYnVpbGQKJiM0MzsjIG9uIG10aW1lIG9ubHkuCiYjNDM7Rk9SQ0U6CiYjNDM7CiYjNDM7IyBUaGUgZGVmYXVsdCBmbGF2b3ImIzM5O3MgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBhcmUgY29uc3VtZWQgaGVyZSBhcwomIzQzOyMgd2VsbCBhcyBpbnNpZGUgdGhlIHJ1bm5lciBzdWItbWFrZXM6IGJlbmNoLCB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQKJiM0MzsjIHRlc3RfY3BwIGRlcGVuZCBvbiBpbmRpdmlkdWFsIHNrZWxldG9ucywgYW5kIGxpYi5tayYjMzk7cwomIzQzOyMgaW5zdGFsbCBydWxlIGNvcGllcyB0aGUgQlBGIG9iamVjdHMuIEluc3RhbnRpYXRlIHRoZSBzaGFyZWQgcnVsZXMKJiM0MzsjIChNYWtlZmlsZS5za2VsKSBmb3IgdGhlIGRlZmF1bHQgZmxhdm9yLCBzbyB0aG9zZSBjb25zdW1lcnMgZGVwZW5kIG9uCiYjNDM7IyBleGFjdGx5IHRoZSBmaWxlcyB0aGV5IHVzZTsgdGhlIHVuZmxhdm9yZWQgcnVubmVycyYjMzk7IGRlbGVnYXRpb24gcnVsZXMKJiM0MzsjIGJlbG93IGxpc3QgdGhlIHdob2xlIHNldCBhcyBwcmVyZXF1aXNpdGVzLCBzbyB0aG9zZSBzdWItbWFrZXMgZmluZCB0aGUKJiM0MzsjIGZpbGVzIHRoaXMgTWFrZWZpbGUgb3ducyB1cCB0byBkYXRlLgomIzQzO1JESVIgOj0gJChPVVRQVVQpCiYjNDM7RkxBVk9SIDo9CiYjNDM7QklOQVJZIDo9IHRlc3RfcHJvZ3MKJiM0MztCUEZfQ0MgOj0gJChDTEFORykKJiM0MztCUEZfQ0NfTVNHIDo9IENMTkctQlBGCiYjNDM7QlBGX1NZU19JTkNMVURFUyA6PSAkKENMQU5HX1NZU19JTkNMVURFUykKJiM0MztCUEZfQ0NfRkxBR1MgOj0gLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYzCiYjNDM7QlBGX0RFRklORVMgOj0gLURFTkFCTEVfQVRPTUlDU19URVNUUwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuc2tlbAomIzQzOwomIzQzO0RFRkFVTFRfUlVOTkVSX0FSR1MgOj0gUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPSBURVNUU19ESVI9cHJvZ190ZXN0cwlcCiYjNDM7CUJQRl9DQz0mIzM5OyQoQlBGX0NDKSYjMzk7IEJQRl9DQ19NU0c9JChCUEZfQ0NfTVNHKQkJCVwKJiM0MzsJQlBGX1NZU19JTkNMVURFUz0mIzM5OyQoQlBGX1NZU19JTkNMVURFUykmIzM5OwkJCQlcCiYjNDM7CUJQRl9DQ19GTEFHUz0mIzM5OyQoQlBGX0NDX0ZMQUdTKSYjMzk7IEJQRl9ERUZJTkVTPSQoQlBGX0RFRklORVMpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpICQoQlBGX09CSlMpICQoQUxMX1NLRUxTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSAkKERFRkFVTFRfUlVOTkVSX0FSR1MpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFCiYjNDM7CSYjNDM7JChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1ub19hbHUzMiBURVNUU19ESVI9cHJvZ190ZXN0cyBcCiYjNDM7CQlCUEZfQ0M9JiMzOTskKENMQU5HKSYjMzk7IEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0mIzM5OyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSYjMzk7CVwKJiM0MzsJCUJQRl9DQ19GTEFHUz0mIzM5Oy1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12MiYjMzk7CiYjNDM7CiBpZm5lcSAoJChDTEFOR19DUFVWNCksKQotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMKLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MsY3B1djQpKQomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2dzLWNwdXY0OiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRQomIzQzOwkmIzQzOyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9Y3B1djQgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChDTEFORykmIzM5OyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JiMzOTskKENMQU5HX1NZU19JTkNMVURFUykmIzM5OwlcCiYjNDM7CQlCUEZfQ0NfRkxBR1M9JiMzOTstTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djQmIzM5OwkJXAomIzQzOwkJQlBGX0RFRklORVM9LURFTkFCTEVfQVRPTUlDU19URVNUUwogZW5kaWYKIAotIyBEZWZpbmUgdGVzdF9wcm9ncyBCUEYtR0NDLWZsYXZvcmVkIHRlc3QgcnVubmVyLgogaWZuZXEgKCQoQlBGX0dDQyksKQotVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBHQ0NfQlBGX0JVSUxEX1JVTEUKLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpCi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGJwZl9nY2MpKQomIzQzOyMgU3lzIGluY2x1ZGVzIGNvbWUgZnJvbSB0aGUgKmhvc3QqIGdjYywgbm90ICQoQlBGX0dDQyksIGFzIHRoZSBydWxlCiYjNDM7IyB0aGlzIHJlcGxhY2VzIGhhZCBpdC4KJiM0MztHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpCiYjNDM7CiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXAomIzQzOwkJQlBGX0NDPSYjMzk7JChCUEZfR0NDKSYjMzk7IEJQRl9DQ19NU0c9R0NDLUJQRgkJCQlcCiYjNDM7CQlCUEZfU1lTX0lOQ0xVREVTPSYjMzk7JChHQ0NfU1lTX0lOQ0xVREVTKSYjMzk7CQkJCVwKJiM0MzsJCUJQRl9DQ19GTEFHUz0mIzM5Oy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJiMzOTsKIGVuZGlmCiAKLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci4KLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0cwotVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzCi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmMKLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0KLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0KLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KQotVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9Ci0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X21hcHMpKQomIzQzOyMgdGVzdF9tYXBzIGNvbXBpbGVzIG1hcF90ZXN0cy8qLmMgYWdhaW5zdCB0aGUgZGVmYXVsdCBmbGF2b3ImIzM5O3Mgc2tlbGV0b25zCiYjNDM7JChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgJChCUEZfT0JKUykJXAomIzQzOwkJICAgICAkKEFMTF9TS0VMUykgRk9SQ0UKJiM0MzsJJiM0MzskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfbWFwcyBGTEFWT1I9IFRFU1RTX0RJUj1tYXBfdGVzdHMKJiM0MzsKJiM0MztURVNUX0dFTl9GSUxFUyAmIzQzOz0gJChCUEZfT0JKUykKIAogIyBEZWZpbmUgdGVzdF92ZXJpZmllciB0ZXN0IHJ1bm5lci4KICMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbQogIyB0aGVtIChlLmcuLCB0ZXN0LmggaXMgdXNpbmcgY29tcGxldGVseSBwYXR0ZXJuKSwgdGhhdCBpdCYjMzk7cyB3b3J0aCBqdXN0CiAjIGV4cGxpY2l0bHkgZGVmaW5pbmcgYWxsIHRoZSBydWxlcyBleHBsaWNpdGx5LgogdmVyaWZpZXIvdGVzdHMuaDogdmVyaWZpZXIvKi5jCi0JJChzaGVsbCAoIGNkIHZlcmlmaWVyLzsgXAomIzQzOwkkKFEpKCBjZCB2ZXJpZmllci87IFwKIAkJICBlY2hvICYjMzk7LyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8mIzM5OzsgXAogCQkgIGVjaG8gJiMzOTsjaWZkZWYgRklMTF9BUlJBWSYjMzk7OyBcCiAJCSAgbHMgKi5jIDImZ3Q7IC9kZXYvbnVsbCB8IHNlZCAtZSAmIzM5O3NAXCguKlwpQCNpbmNsdWRlIFwmIzM0O1wxXCYjMzQ7QCYjMzk7OyBcCiAJCSAgZWNobyAmIzM5OyNlbmRpZiYjMzk7IFwKLQkJKSAmZ3Q7IHZlcmlmaWVyL3Rlc3RzLmgpCiYjNDM7CQkpICZndDsgdmVyaWZpZXIvdGVzdHMuaAogJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKQogCSQoY2FsbCBtc2csQklOQVJZLCwkQCkKIAkkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEAKQEAgLTk2NywxMSAmIzQzOzU2NiwxMSBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopCiAJJChjYWxsIG1zZyxDWFgsLCRAKQogCSQoUSkkKENYWCkgJChDWFhGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmNwcCwkXikgJChMRExJQlMpIC1vICRACiAKLSMgQmVuY2htYXJrIHJ1bm5lcgomIzQzOyMgQmVuY2htYXJrIHJ1bm5lci4gRXZlcnkgYmVuY2hzL2JlbmNoXyouYyBpcyBjb21waWxlZCBhbmQgbGlua2VkIGluLgomIzQzO0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKQogJChPVVRQVVQpL2JlbmNoXyUubzogYmVuY2hzL2JlbmNoXyUuYyBiZW5jaC5oICQoQlBGT0JKKQogCSQoY2FsbCBtc2csQ0MsLCRAKQotCSQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcCi0JCSgkKFJNKSAkQDsgcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLUJFTkNIJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OyAxJmd0OyZhbXA7MikpCiYjNDM7CSQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQkVOQ0gpCiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubzogJChPVVRQVVQpL3RyaWdnZXJfYmVuY2guc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubzogJChPVVRQVVQpL3JpbmdidWZfYmVuY2guc2tlbC5oIFwKQEAgLTk5OSwzMyAmIzQzOzU5OCwxMSBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFwKIAkJICQoVEVTVElOR19IRUxQRVJTKSBcCiAJCSAkKFRSQUNFX0hFTFBFUlMpIFwKIAkJICQoQ0dST1VQX0hFTFBFUlMpIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXAotCQkgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFwKLQkJICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcCi0JCSAkKE9VVFBVVCkvYmVuY2hfbGliYXJlbmEubyBcCiYjNDM7CQkgJChCRU5DSF9PQkpTKSBcCiAJCSAkKE9VVFBVVCkvdXNkdF8xLm8gXAotCQkgJChPVVRQVVQpL3VzZHRfMi5vIFwKLQkJICMKJiM0MzsJCSAkKE9VVFBVVCkvdXNkdF8yLm8KIAkkKGNhbGwgbXNnLEJJTkFSWSwsJEApCi0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXAotCQkoJChSTSkgJEA7IHByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC1MSU5LJiMzOTsgJiMzOTskKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJiMzOTsgMSZndDsmYW1wOzIpKQomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKQogCiAjIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5nIGFib3V0IHNucHJpbnRmIHRydW5jYXRpbmcgc3RyaW5ncyBsaWtlOgogIwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFycyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNWM2YzE0N2QwM2M3NAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMKQEAgLTAsMCAmIzQzOzEsMTk2IEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIFNoYXJlZCB0b29sY2hhaW4sIHBhdGggYW5kIGZsYWcgZGVmaW5pdGlvbnMgZm9yIHRoZSBCUEYgc2VsZnRlc3RzCiYjNDM7IyBidWlsZCwgaW5jbHVkZWQgYnkgYm90aCBNYWtlZmlsZSBhbmQgTWFrZWZpbGUucnVubmVyLiBEZWZpbml0aW9ucwomIzQzOyMgZm9sbG93IHRoZSBvcmRlciB0aGV5IGhhZCBpbiB0aGUgTWFrZWZpbGUgYmVmb3JlIHRoZSBzcGxpdC4KJiM0MzsKJiM0MztUT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pCiYjNDM7TElCRElSIDo9ICQoVE9PTFNESVIpL2xpYgomIzQzO0JQRkRJUiA6PSAkKExJQkRJUikvYnBmCiYjNDM7VE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZQomIzQzO1RPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZQomIzQzO0FQSURJUiA6PSAkKFRPT0xTSU5DRElSKS91YXBpCiYjNDM7aWZuZXEgKCQoTyksKQomIzQzO0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkCiYjNDM7ZWxzZQomIzQzO0dFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpCiYjNDM7ZW5kaWYKJiM0MztHRU5IRFIgOj0gJChHRU5ESVIpL2F1dG9jb25mLmgKJiM0MztQS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnCiYjNDM7CiYjNDM7aWZuZXEgKCQod2lsZGNhcmQgJChHRU5IRFIpKSwpCiYjNDM7ICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MztpZmRlZiBBU0FOCiYjNDM7U0FOX0NGTEFHUyAJPz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCiYjNDM7ZWxzZQomIzQzO1NBTl9DRkxBR1MJPz0KJiM0MztlbmRpZgomIzQzO1NBTl9MREZMQUdTCT89ICQoU0FOX0NGTEFHUykKJiM0MztSRUxFQVNFCQk/PQomIzQzO09QVF9GTEFHUwk/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMCkKJiM0MzsKJiM0MztMSUJFTEZfQ0ZMQUdTCTo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMiZndDsvZGV2L251bGwpCiYjNDM7TElCRUxGX0xJQlMJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMiZndDsvZGV2L251bGwgfHwgZWNobyAtbGVsZikKJiM0MzsKJiM0MzsjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvcgomIzQzOyMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzCiYjNDM7IyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy4KJiM0MztCUEZfU1RSSUNUX0JVSUxEID89IDEKJiM0MztQRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSkKJiM0MzsKJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhCiYjNDM7IyBTS0lQIG1hcmtlciBhbmQgcmVwb3J0IHN1Y2Nlc3Mgc28gdGhlIHJlc3Qgb2YgdGhlIGJ1aWxkIGNvbnRpbnVlcy4KJiM0MzsjICQoMSkgLSBTS0lQIHRhZyAoQlBGLCBURVNULCBCRU5DSCwgU0tFTCwgTElOSywgLi4uKQomIzQzOyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldAomIzQzOyMgJCgzKSAtIG9wdGlvbmFsIG5vdGUgYXBwZW5kZWQgdG8gdGhlIFNLSVAgbWVzc2FnZQomIzQzO3NraXBfb25fZmFpbCA9ICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7ICQoUk0pICRAICQoMik7IFwKJiM0MzsJcHJpbnRmICYjMzk7ICAlLTEycyAlc1xuJiMzOTsgJiMzOTtTS0lQLSQoMSkmIzM5OyAmIzM5OyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSkmIzM5OyAxJmd0OyZhbXA7MjsgfSkKJiM0MzsKJiM0MzsjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgcHJlZml4OiB3aGVuIGEgcHJlcmVxdWlzaXRlIG9iamVjdCBpcyBtaXNzaW5nCiYjNDM7IyAoaXRzIGNvbXBpbGUgZmFpbGVkIGFuZCB3YXMgc2tpcHBlZCksIHJlbW92ZSB0aGUgdGFyZ2V0IGFuZCAkKDMpLAomIzQzOyMgZW1pdCBhIFNLSVAgbWFya2VyIGFuZCByZXBvcnQgc3VjY2VzcyB3aXRob3V0IHJ1bm5pbmcgdGhlIHJlc3Qgb2YKJiM0MzsjIHRoZSByZWNpcGUuCiYjNDM7IyAkKDEpIC0gU0tJUCB0YWcKJiM0MzsjICQoMikgLSBpbnB1dCBmaWxlcyB0byBjaGVjawomIzQzOyMgJCgzKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldAomIzQzO3NraXBfaWZfbWlzc2luZyA9ICQoaWYgJChQRVJNSVNTSVZFKSxmb3IgZiBpbiAkKDIpOyBkbyBbIC1mICQkZiBdIHx8IHsgXAomIzQzOwkkKFJNKSAkQCAkKDMpOyBcCiYjNDM7CXByaW50ZiAmIzM5OyAgJS0xMnMgJXNcbiYjMzk7ICYjMzk7U0tJUC0kKDEpJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OyAxJmd0OyZhbXA7MjsgZXhpdCAwOyB9OyBkb25lOykKJiM0MzsKJiM0MztpZmVxICgkKHNyY3RyZWUpLCkKJiM0MztzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKQomIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQomIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQomIzQzO3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKQomIzQzO2VuZGlmCiYjNDM7CiYjNDM7Q09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMQkJCQlcCiYjNDM7CSAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgkJCQlcCiYjNDM7CSAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZQkJCQkJXAomIzQzOwkgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKQkJCVwKJiM0MzsJICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpCQlcCiYjNDM7CSAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKQlcCiYjNDM7CSAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZQomIzQzO0xETElCUyAmIzQzOz0gJChMSUJFTEZfTElCUykgLWx6IC1scnQgLWxwdGhyZWFkCiYjNDM7CiYjNDM7UENBUF9DRkxBR1MJOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMiZndDsvZGV2L251bGwgJmFtcDsmYW1wOyBlY2hvICYjMzQ7LURUUkFGRklDX01PTklUT1I9MSYjMzQ7KQomIzQzO1BDQVBfTElCUwk6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGxpYnBjYXAgMiZndDsvZGV2L251bGwpCiYjNDM7TERMSUJTICYjNDM7PSAkKFBDQVBfTElCUykKJiM0MzsKJiM0MztpZm5lcSAoJChMTFZNKSwpCiYjNDM7IyBTaWxlbmNlIHNvbWUgd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIGNsYW5nCiYjNDM7Q0xBTkdfV0FSTl9DRkxBR1MgOj0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50CiYjNDM7ZW5kaWYKJiM0MzsKJiM0MzsjIEJlZm9yZSB0aGUgc3BsaXQgdGhlc2UgZGVmaW5pdGlvbnMgc2F0IGFib3ZlIHRoZSAuLi9saWIubWsgaW5jbHVkZToKJiM0MzsjIHRoZXkgYXBwZW5kZWQgdG8gdGhlIGZsYWdzIGluaGVyaXRlZCBmcm9tIHRoZSBlbnZpcm9ubWVudCwgYW5kCiYjNDM7IyBsaWIubWsmIzM5O3MgYWRkaXRpb25zIChVU0VSQ0ZMQUdTL1VTRVJMREZMQUdTIGFtb25nIHRoZW0pIGNhbWUgbGFzdC4KJiM0MzsjIFRoaXMgZmlsZSBpcyBwYXJzZWQgYWZ0ZXIgbGliLm1rIGF0IHRoZSB0b3AgbGV2ZWwgYW5kIGluIGl0cyBwbGFjZQomIzQzOyMgaW4gdGhlIHJ1bm5lciBzdWItbWFrZXMsIHNvIHRoZSBzYW1lIG9yZGVyIGlzIHJlYnVpbHQgaGVyZS4gVGhlCiYjNDM7IyBpbmNsdWRlciBzbmFwc2hvdHMgdGhlIGluaGVyaXRlZCBmbGFncyBpbiBJTkhFUklURURfQ0ZMQUdTIGFuZAomIzQzOyMgSU5IRVJJVEVEX0xERkxBR1MgYmVmb3JlIGxpYi5tayBydW5zOyB3aGF0ZXZlciBsaWIubWsgYXBwZW5kZWQgc2luY2UKJiM0MzsjIGlzIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50IHZhbHVlLgomIzQzO2xpYl9ta19hZGRlZCA9ICQod29yZGxpc3QgJCh3b3JkcyB4ICQoSU5IRVJJVEVEXyQoMSkpKSwkKHdvcmRzICQoJCgxKSkpLCQoJCgxKSkpCiYjNDM7TElCX01LX0NGTEFHUyA6PSAkKGNhbGwgbGliX21rX2FkZGVkLENGTEFHUykKJiM0MztMSUJfTUtfTERGTEFHUyA6PSAkKGNhbGwgbGliX21rX2FkZGVkLExERkxBR1MpCiYjNDM7Q0ZMQUdTID0gJChJTkhFUklURURfQ0ZMQUdTKSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpCQlcCiYjNDM7CSAkKENMQU5HX1dBUk5fQ0ZMQUdTKSAkKExJQl9NS19DRkxBR1MpCiYjNDM7TERGTEFHUyA9ICQoSU5IRVJJVEVEX0xERkxBR1MpICQoU0FOX0xERkxBR1MpICQoTElCX01LX0xERkxBR1MpCiYjNDM7CiYjNDM7IyBDaGVjayB3aGV0aGVyIGNsYW5nIHN1cHBvcnRzIEJQRiBhZGRyZXNzIHNhbml0aXplciAocmVxdWlyZXMgTExWTSAyMiYjNDM7KS4KJiM0MzsjIFRoaXMgcnVucyBhZnRlciAuLi9saWIubWsgaGFzIHJlc29sdmVkIENMQU5HIGZyb20gTExWTT0mbHQ7c3VmZml4IG9yIHBhdGgmZ3Q7LAomIzQzOyMgc28gaXQgcHJvYmVzIHRoZSBjb21waWxlciB0aGF0IGJ1aWxkcyB0aGUgQlBGIG9iamVjdHMuCiYjNDM7Q0xBTkdfSEFTX0FSRU5BX0FTQU4gOj0gJChzaGVsbCBlY2hvICYjMzk7aW50IHg7JiMzOTsgfCBcCiYjNDM7CSQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFwKJiM0MzsJLW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXAomIzQzOwkteCBjIC1jIC0gLW8gL2Rldi9udWxsIDImZ3Q7L2Rldi9udWxsICZhbXA7JmFtcDsgZWNobyAxKQomIzQzOwomIzQzO1NDUkFUQ0hfRElSIDo9ICQoT1VUUFVUKS90b29scwomIzQzO0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZAomIzQzO0lOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGUKJiM0MztCUEZPQkogOj0gJChCVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYQomIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLCkKJiM0MztIT1NUX0JVSUxEX0RJUgkJOj0gJChCVUlMRF9ESVIpL2hvc3QKJiM0MztIT1NUX1NDUkFUQ0hfRElSCTo9ICQoT1VUUFVUKS9ob3N0LXRvb2xzCiYjNDM7SE9TVF9JTkNMVURFX0RJUgk6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL2luY2x1ZGUKJiM0MztlbHNlCiYjNDM7SE9TVF9CVUlMRF9ESVIJCTo9ICQoQlVJTERfRElSKQomIzQzO0hPU1RfU0NSQVRDSF9ESVIJOj0gJChTQ1JBVENIX0RJUikKJiM0MztIT1NUX0lOQ0xVREVfRElSCTo9ICQoSU5DTFVERV9ESVIpCiYjNDM7ZW5kaWYKJiM0MztSRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0ZmlkcwomIzQzOwomIzQzO0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbAomIzQzO2lmbmVxICgkKENST1NTX0NPTVBJTEUpLCkKJiM0MztDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbAomIzQzO1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpCiYjNDM7VVNFX0JPT1RTVFJBUCA6PSAmIzM0OyYjMzQ7CiYjNDM7ZWxzZQomIzQzO1RSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTCkKJiM0MztVU0VfQk9PVFNUUkFQIDo9ICYjMzQ7Ym9vdHN0cmFwLyYjMzQ7CiYjNDM7ZW5kaWYKJiM0MzsKJiM0MztCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKQomIzQzOwomIzQzOyMgR2V0IENsYW5nJiMzOTtzIGRlZmF1bHQgaW5jbHVkZXMgb24gdGhpcyBzeXN0ZW0sIGFzIG9wcG9zZWQgdG8gdGhvc2Ugc2VlbiBieQomIzQzOyMgJiMzOTstLXRhcmdldD1icGYmIzM5Oy4gVGhpcyBmaXhlcyAmIzM0O21pc3NpbmcmIzM0OyBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcywKJiM0MzsjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy4KJiM0MzsjCiYjNDM7IyBVc2UgJiMzOTstaWRpcmFmdGVyJiMzOTs6IERvbiYjMzk7dCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlCiYjNDM7IyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLgomIzQzO2RlZmluZSBnZXRfc3lzX2luY2x1ZGVzCiYjNDM7JChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSAmbHQ7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIFwKJiM0MzsJfCBzZWQgLW4gJiMzOTsvJmx0Oy4uLiZndDsgc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcKC8uKlwpfC1pZGlyYWZ0ZXIgXDF8cCB9JiMzOTspIFwKJiM0MzskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fcmlzY3ZfeGxlbiAmIzM5OyB8IGF3ayAmIzM5O3twcmludGYoJiMzNDstRF9fcmlzY3ZfeGxlbj0lZCAtRF9fQklUU19QRVJfTE9ORz0lZCYjMzQ7LCAkJDMsICQkMyl9JiMzOTspIFwKJiM0MzskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAmIzM5O19fbG9vbmdhcmNoX2dybGVuICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EX19CSVRTX1BFUl9MT05HPSVkJiMzNDssICQkMyl9JiMzOTspIFwKJiM0MzskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgZ3JlcCAtRSAmIzM5O01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICYjMzk7IHwgYXdrICYjMzk7e3ByaW50ZigmIzM0Oy1EJXM9JXMgJiMzNDssICQkMiwgJCQzKX0mIzM5OykKJiM0MztlbmRlZgomIzQzOwomIzQzOyMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLgomIzQzO0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSAmbHQ7L2Rldi9udWxsIHwgXAomIzQzOwkJCWdyZXAgJiMzOTtkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18mIzM5OykKJiM0MztNRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbikKJiM0MzsKJiM0MztpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpCiYjNDM7Q0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MzsjIEltbWVkaWF0ZSBvbiBwdXJwb3NlOiBleHBhbmRpbmcgZ2V0X3N5c19pbmNsdWRlcyBmb3JrcyBzZXZlcmFsIHNoZWxscy4KJiM0MztDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpCiYjNDM7QlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKQlcCiYjNDM7CSAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKQkJCVwKJiM0MzsJICAgICAtSSQoVE9PTFNJTkNESVIpIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUJCVwKJiM0MzsJICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpCQkJXAomIzQzOwkgICAgIC1zdGQ9Z251MTEJCSAJCQkJCVwKJiM0MzsJICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyAJCQkJCVwKJiM0MzsJICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZwkJCQkJXAomIzQzOwkgICAgIC1mbXMtZXh0ZW5zaW9ucwkJCQkJCVwKJiM0MzsJICAgICAtV25vLWNvbXBhcmUtZGlzdGluY3QtcG9pbnRlci10eXBlcwkJCVwKJiM0MzsJICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlcwkJCQkJXAomIzQzOwkgICAgICMKJiM0MzsjIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZQomIzQzOwomIzQzO1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2gKJiM0MztWRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXIKJiM0MztQUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtCiYjNDM7CiYjNDM7TElCQVJFTkFfU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYS5za2VsLmgKJiM0MzsKJiM0MztpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKQomIzQzO0xJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaAomIzQzO0NGTEFHUyAmIzQzOz0gLURIQVNfQlBGX0FSRU5BX0FTQU4KJiM0MztlbmRpZgomIzQzOwomIzQzO1JVTk5FUl9PQkpTLXRlc3RfcHJvZ3MgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLywJCQlcCiYjNDM7CXRlc3RfcHJvZ3MubyBjZ3JvdXBfaGVscGVycy5vIHRyYWNlX2hlbHBlcnMubwkJCVwKJiM0MzsJbmV0d29ya19oZWxwZXJzLm8gdGVzdGluZ19oZWxwZXJzLm8gYnRmX2hlbHBlcnMubwkJXAomIzQzOwljYXBfaGVscGVycy5vIHVucHJpdl9oZWxwZXJzLm8gc3lzY3RsX2hlbHBlcnMubwkJCVwKJiM0MzsJbmV0bGlua19oZWxwZXJzLm8gaml0X2Rpc2FzbV9oZWxwZXJzLm8gaW9faGVscGVycy5vCQlcCiYjNDM7CXRlc3RfbG9hZGVyLm8geHNrLm8gZGlzYXNtLm8gZGlzYXNtX2hlbHBlcnMubwkJCVwKJiM0MzsJanNvbl93cml0ZXIubyBicGZ0b29sX2hlbHBlcnMubyB1c2R0XzEubyB1c2R0XzIubykKJiM0MztSVU5ORVJfT0JKUy10ZXN0X21hcHMgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLywJCQlcCiYjNDM7CXRlc3RfbWFwcy5vIHRlc3RpbmdfaGVscGVycy5vKQomIzQzOwomIzQzO1JVTk5FUl9MSUJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoT1VUUFVUKS9maW5kX2JpdC5vCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi43MzYxZmY3ZGUzMzBjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lcgpAQCAtMCwwICYjNDM7MSwxOTkgQEAKJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7IwomIzQzOyMgQnVpbGQgb25lIEJQRiB0ZXN0LXJ1bm5lciBpbnN0YW5jZTogdGVzdF9wcm9ncywgb25lIG9mIGl0cyBmbGF2b3JzCiYjNDM7IyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLgomIzQzOyMKJiM0MzsjIEVhY2ggaW5zdGFuY2UgaXMgYW4gaW5kZXBlbmRlbnQgc3ViLW1ha2UgLSB0aGUgZmxhdm9yZWQgb25lcyB3aXRoIHRoZWlyCiYjNDM7IyBvd24gb3V0cHV0IGRpcmVjdG9yeSwgdGhlIHVuZmxhdm9yZWQgb25lcyBzaGFyaW5nICQoT1VUUFVUKSB3aXRoIHRoZQomIzQzOyMgbWFpbiBNYWtlZmlsZSAtIHNvIGV2ZXJ5dGhpbmcgaGVyZSBpcyB3cml0dGVuIGluIHBsYWluIG1ha2U6IG5vCiYjNDM7IyBkZWZpbmUvZXZhbCBsYXllciwgbm8gcGVyLWZsYXZvciBndWFyZHMuIFRoaXMgZmlsZSBpcyBhbHdheXMKJiM0MzsjIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkCiYjNDM7IyBwcmVyZXF1aXNpdGVzIChsaWJicGYsIGJwZnRvb2wsCiYjNDM7IyByZXNvbHZlX2J0Zmlkcywgdm1saW51eC5oLCB2ZXJpc3RhdCwgdXNlcnNwYWNlIG9iamVjdHMsIHNpZ25pbmcga2V5LAomIzQzOyMgbGliYXJlbmEgc2tlbGV0b25zLCBleHRyYSBiaW5hcmllcyBhbmQgLSBmb3IgdGhlCiYjNDM7IyB1bmZsYXZvcmVkIGluc3RhbmNlcyAtIHRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBCUEYgb2JqZWN0cyBhbmQKJiM0MzsjIHNrZWxldG9ucykgYXJlIGJ1aWx0IGJ5IHRoZSBtYWluIE1ha2VmaWxlICpiZWZvcmUqIHRoaXMgb25lIHJ1bnMgYW5kCiYjNDM7IyBhcmUgcmVmZXJlbmNlZCBiZWxvdyBhcyBwbGFpbiBmaWxlcy4KJiM0MzsjCiYjNDM7IyBQYXJhbWV0ZXJzLCBwYXNzZWQgb24gdGhlIHN1Yi1tYWtlIGNvbW1hbmQgbGluZToKJiM0MzsjICAgT1VUUFVUICAgICAgdGhlIHNlbGZ0ZXN0cyBvdXRwdXQgZGlyZWN0b3J5LCBhcyBsaWIubWsgcmVzb2x2ZWQgaXQKJiM0MzsjICAgUlVOTkVSICAgICAgYmFzZSBiaW5hcnkgbmFtZTogdGVzdF9wcm9ncyB8IHRlc3RfbWFwcwomIzQzOyMgICBGTEFWT1IgICAgICBmbGF2b3Igc3VmZml4OiBlbXB0eSB8IG5vX2FsdTMyIHwgY3B1djQgfCBicGZfZ2NjCiYjNDM7IyAgIFRFU1RTX0RJUiAgIGRpcmVjdG9yeSB3aXRoIHRoZSB0ZXN0IHNvdXJjZXM6IHByb2dfdGVzdHMgfCBtYXBfdGVzdHMKJiM0MzsjICAgQlBGX0NDICAgICAgY29tcGlsZXIgZm9yIHByb2dzLyouYyBCUEYgb2JqZWN0cyAoJChDTEFORykgb3IKJiM0MzsjICAgICAgICAgICAgICAgJChCUEZfR0NDKSk7IGVtcHR5IGZvciB0ZXN0X21hcHMsIHdoaWNoIGJ1aWxkcyBub25lCiYjNDM7IyAgIEJQRl9DQ19NU0cgIGJ1aWxkLWxvZyB0YWc6IENMTkctQlBGIHwgR0NDLUJQRgomIzQzOyMgICBCUEZfQ0NfRkxBR1MKJiM0MzsjICAgICAgICAgICAgICAgY29tcGlsZXItc3BlY2lmaWMgZmxhZ3MgKC1PMiwgdGFyZ2V0Ly1tY3B1IG9yIGdjYyBrbm9icykKJiM0MzsjICAgQlBGX1NZU19JTkNMVURFUwomIzQzOyMgICAgICAgICAgICAgICBzeXN0ZW0gaW5jbHVkZSBmbGFncyBtYXRjaGluZyBCUEZfQ0MKJiM0MzsjICAgQlBGX0RFRklORVMgZXh0cmEgZGVmaW5lcyBmb3IgQlBGIG9iamVjdHMgKGUuZy4gLURFTkFCTEVfQVRPTUlDU19URVNUUykKJiM0MzsjICAgQ0MsIENMQU5HICAgQyBjb21waWxlciBhbmQgY2xhbmcgKGFzIHJlc29sdmVkIGJ5IGxpYi5tayBpbiB0aGUgbWFpbgomIzQzOyMgICAgICAgICAgICAgICBNYWtlZmlsZTsgY2xhbmcgYWxzbyBkcml2ZXMgdGhlIGZlYXR1cmUgcHJvYmVzIGluCiYjNDM7IyAgICAgICAgICAgICAgIE1ha2VmaWxlLmJ1aWxkdmFycykKJiM0MzsjCiYjNDM7IyBGcm9tIHRoZSBlbnZpcm9ubWVudCwgZXhwb3J0ZWQgYnkgdGhlIG1haW4gTWFrZWZpbGU6CiYjNDM7IyAgIExMVk1fTERMSUJTL0xMVk1fTERGTEFHUwomIzQzOyMgICAgICAgICAgICAgICByZXN1bHRzIG9mIHRoZSB0b3AtbGV2ZWwgTExWTSBmZWF0dXJlIHByb2JlCiYjNDM7IyAgIFRFU1RfS01PRFMgIHRoZSBrZXJuZWwgdGVzdCBtb2R1bGVzIHRvIGNvcHkgaW50byBhIGZsYXZvciBkaXJlY3RvcnkKJiM0MzsjICAgSU5IRVJJVEVEX0NGTEFHUy9JTkhFUklURURfTERGTEFHUwomIzQzOyMgICAgICAgICAgICAgICB0aGUgZmxhZ3MgdGhlIG1haW4gTWFrZWZpbGUgaW5oZXJpdGVkIGZyb20gaXRzIG93bgomIzQzOyMgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAoc2VlIE1ha2VmaWxlLmJ1aWxkdmFycykKJiM0MzsKJiM0MztpbmNsdWRlIC4uLy4uLy4uL2J1aWxkL0J1aWxkLmluY2x1ZGUKJiM0MztpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaAomIzQzO2luY2x1ZGUgLi4vLi4vLi4vc2NyaXB0cy9NYWtlZmlsZS5pbmNsdWRlCiYjNDM7CiYjNDM7IyBTYW1lIG1lc3NhZ2UgaGVscGVycyBhcyAuLi9saWIubWssIHdoaWNoIG9ubHkgdGhlIHRvcCBsZXZlbCBpbmNsdWRlcy4KJiM0MztpZmVxICgkKFYpLDEpCiYjNDM7USA9CiYjNDM7bXNnID0KJiM0MztlbHNlCiYjNDM7USA9IEAKJiM0Mzttc2cgPSBAcHJpbnRmICYjMzk7ICAlLThzJXMgJXMlc1xuJiMzOTsgJiMzNDskKDEpJiMzNDsgJiMzNDskKGlmICQoMiksIFskKDIpXSkmIzM0OyAmIzM0OyQobm90ZGlyICQoMykpJiMzNDsgJiMzNDskKGlmICQoNCksICQoNCkpJiMzNDs7CiYjNDM7TUFLRUZMQUdTICYjNDM7PSAtLW5vLXByaW50LWRpcmVjdG9yeQomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBUaGUgdG9wIE1ha2VmaWxlIGhhbmRzIGRvd24gdGhlIGZsYWdzIGl0IGluaGVyaXRlZCBmcm9tIHRoZQomIzQzOyMgZW52aXJvbm1lbnQgaW4gSU5IRVJJVEVEX0NGTEFHUy9JTkhFUklURURfTERGTEFHUzsgc3RhcnQgZnJvbSB0aG9zZQomIzQzOyMgcmF0aGVyIHRoYW4gZnJvbSBpdHMgYXNzZW1ibGVkIENGTEFHUy9MREZMQUdTLCB3aGljaCBtYWtlIGV4cG9ydHMKJiM0MzsjIGFsb25nc2lkZSB3aGVuZXZlciB0aGV5IGNhbWUgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiYjNDM7Q0ZMQUdTIDo9ICQoSU5IRVJJVEVEX0NGTEFHUykKJiM0MztMREZMQUdTIDo9ICQoSU5IRVJJVEVEX0xERkxBR1MpCiYjNDM7CiYjNDM7aW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnMKJiM0MzsKJiM0MzsjIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBDRkxBR1MvTERGTEFHUyBhZGRpdGlvbnMgaW4gLi4vbGliLm1rLCBpbiBpdHMKJiM0MzsjIG9yZGVyICh0aGUgc2VsZnRlc3RzIGluY2x1ZGUgcGF0aCBpcyBzcGVsbGVkIGZyb20gc3JjdHJlZSBoZXJlOyBsaWIubWsKJiM0MzsjIHNwZWxscyBpdCBmcm9tIGl0cyBvd24gZGlyZWN0b3J5KS4KJiM0MztpZm5lcSAoJChMTFZNKSwpCiYjNDM7Q0ZMQUdTICYjNDM7PSAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlcgomIzQzO0NGTEFHUyAmIzQzOz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kCiYjNDM7ZW5kaWYKJiM0MztDRkxBR1MgJiM0Mzs9IC1EX0dOVV9TT1VSQ0U9CiYjNDM7Q0ZMQUdTICYjNDM7PSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMKJiM0MztDRkxBR1MgJiM0Mzs9ICQoVVNFUkNGTEFHUykKJiM0MztMREZMQUdTICYjNDM7PSAkKFVTRVJMREZMQUdTKQomIzQzOwomIzQzO0JJTkFSWSA6PSAkKFJVTk5FUikkKGlmICQoRkxBVk9SKSwtJChGTEFWT1IpKQomIzQzO1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKQomIzQzOwomIzQzO2FsbDogJChPVVRQVVQpLyQoQklOQVJZKQomIzQzOy5QSE9OWTogYWxsCiYjNDM7CiYjNDM7IyBEZWxldGUgcGFydGlhbGx5IHVwZGF0ZWQgKGNvcnJ1cHRlZCkgZmlsZXMgb24gZXJyb3IKJiM0MzsuREVMRVRFX09OX0VSUk9SOgomIzQzOwomIzQzOyMgTm8gYnVpbHQtaW4gcnVsZXM6IGV2ZXJ5IGZpbGUgYnVpbHQgaGVyZSBoYXMgYW4gZXhwbGljaXQgcnVsZSwgYW5kIHRoZQomIzQzOyMgb2JqZWN0cyB0aGF0IGNvbWUgZnJvbSB0aGUgbWFpbiBNYWtlZmlsZSBoYXZlIHRvIGJlIGFuIGVycm9yIHdoZW4KJiM0MzsjIG1pc3NpbmcgcmF0aGVyIHRoYW4gYSBzaWxlbnQgcmVidWlsZCBieSB0aGUgYnVpbHQtaW4gJS5vIHJlY2lwZXMuCiYjNDM7TUFLRUZMQUdTICYjNDM7PSAtcgomIzQzOwomIzQzOyMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHkKJiM0MzsjIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnM7IHJ1bm5lcnMgdGhhdCB1c2Ugc3Ryb25nIGNyb3NzLW9iamVjdAomIzQzOyMgcmVmZXJlbmNlcyAoZS5nLiB0ZXN0X21hcHMpIGtlZXAgc3RyaWN0IHNlbWFudGljcyBldmVuIHdoZW4gcGVybWlzc2l2ZS4KJiM0MztQRVJNSVNTSVZFX1RFU1RTIDo9ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncywkKFJVTk5FUikpLCQoUEVSTUlTU0lWRSkpCiYjNDM7CiYjNDM7JChSRElSKToKJiM0MzsJJChjYWxsIG1zZyxNS0RJUiwsJEApCiYjNDM7CSQoUSlta2RpciAtcCAkQAomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBQZXItcnVubmVyIHNvdXJjZXMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2lmZXEgKCQoUlVOTkVSKSx0ZXN0X3Byb2dzKQomIzQzO0dFTkVSQVRFRF9IRFJTIDo9ICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpCiYjNDM7RVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZAkJCQlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvCQkJXAomIzQzOwkgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eQkJCQlcCiYjNDM7CSAgICAgICAkKE9VVFBVVCkvc2lnbi1maWxlCQkJCVwKJiM0MzsJICAgICAgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkJCQkJXAomIzQzOwkgICAgICAgJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKQkJXAomIzQzOwkgICAgICAgaW1hX3NldHVwLnNoIAkJCQkJXAomIzQzOwkgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKQkJCQlcCiYjNDM7CSAgICAgICAkKHdpbGRjYXJkIHByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV8qLmMpCQlcCiYjNDM7CSAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pCiYjNDM7ZW5kaWYKJiM0MzsKJiM0MztURVNUX1NSQ1MgIDo9ICQobm90ZGlyICQod2lsZGNhcmQgJChURVNUU19ESVIpLyouYykpCiYjNDM7VEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSkKJiM0MztURVNUX0RFUFMgIDo9ICQoVEVTVF9PQkpTOi5vPS5kKQomIzQzOwomIzQzOyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiYjNDM7IyBCUEYgb2JqZWN0cyBhbmQgc2tlbGV0b25zIC0gcnVsZXMgc2hhcmVkIHdpdGggdGhlIG1haW4gTWFrZWZpbGUKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2luY2x1ZGUgTWFrZWZpbGUuc2tlbAomIzQzOwomIzQzOyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdAomIzQzOyMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUubwomIzQzOyMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlcwomIzQzOyMgaW4gJChSRElSKSwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgomIzQzO3ZwYXRoICUuc2tlbC5oICQoUkRJUikKJiM0Mzt2cGF0aCAlLmxza2VsLmggJChSRElSKQomIzQzO3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUikKJiM0MzsKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsKJiM0MzskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYubwomIzQzOyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMQomIzQzOwomIzQzOyMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXMKJiM0MzsjIE5vdGU6IHdlIGNkIGludG8gb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdCBpcyBmb3VuZAomIzQzOyMgVGhlICUudGVzdC5kIGRlcGVuZGVuY3kgZmlsZXMgYXJlIGEgc2lkZSBlZmZlY3Qgb2YgdGhlIC1NTUQgYmVsb3c7IHRoZQomIzQzOyMgc2VwYXJhdGUgbm8tcmVjaXBlIHJ1bGUgZm9yIHRoZW0gb3JkZXJzIHRoZSBmaXJzdCBjb21waWxhdGlvbiBhZnRlcgomIzQzOyMgc2tlbGV0b24gZ2VuZXJhdGlvbiBhbmQgcmUtb3JkZXJzIHRlc3Qgb2JqZWN0IGNvbXBpbGF0aW9uIHdoZW4gaGVhZGVycwomIzQzOyMgY2hhbmdlLgomIzQzOyQoVEVTVF9PQkpTKTogJChSRElSKS8lLnRlc3QubzogJChURVNUU19ESVIpLyUuYyB8ICQoUkRJUikvJS50ZXN0LmQKJiM0MzsJJChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkoY2QgJChARCkgJmFtcDsmYW1wOyAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kJmx0OyAkKExETElCUykgLW8gJChARikpIFwKJiM0MzsJCSQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKQomIzQzOwkkKGlmICQoVEVTVF9ORUVEU19CVEZJRFMpLAkJCQkJXAomIzQzOwkJJChRKWlmIFsgLWYgJEAgXTsgdGhlbgkJCQkJXAomIzQzOwkJJChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzQ7QlRGSURTJiMzNDsgJiMzNDsgWyQoQklOQVJZKV0mIzM0OyAmIzM0OyQobm90ZGlyICRAKSYjMzQ7KTsgXAomIzQzOwkJJChSRVNPTFZFX0JURklEUykgLS1idGYgJChSRElSKS9idGZfZGF0YS5icGYubyAkQDsJXAomIzQzOwkJJChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJEAuQlRGX2lkcyAkQDsJCVwKJiM0MzsJCWZpKQomIzQzOwomIzQzOyQoVEVTVF9ERVBTKTogJChSRElSKS8lLnRlc3QuZDogJChURVNUU19ESVIpLyUuYyAkKEdFTkVSQVRFRF9IRFJTKSAkKEJQRk9CSikgXAomIzQzOwkgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpCiYjNDM7CiYjNDM7aW5jbHVkZSAkKHdpbGRjYXJkICQoVEVTVF9ERVBTKSkKJiM0MzsKJiM0MzsjIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZQomIzQzOyMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKQomIzQzOy5QSE9OWTogZXh0cmFzCiYjNDM7ZXh0cmFzOiAkKGlmICQoUEVSTUlTU0lWRSksJCh3aWxkY2FyZCAkKEVYVFJBX0ZJTEVTKSksJChFWFRSQV9GSUxFUykpIHwgJChSRElSKQomIzQzO2lmbmVxICgkKEZMQVZPUik6JChyZWFscGF0aCAkKE9VVFBVVCkpLDokKENVUkRJUikpCiYjNDM7aWZuZXEgKCQoc3RyaXAgJChFWFRSQV9GSUxFUykpLCkKJiM0MzsJJChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChFWFRSQV9GSUxFUykpCiYjNDM7CSQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS8KJiM0MztlbmRpZgomIzQzO2VuZGlmCiYjNDM7CiYjNDM7IyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlcwomIzQzOyMgSW4gcGVybWlzc2l2ZSBtb2RlLCBsaW5rIHdoYXRldmVyIHRlc3Qgb2JqZWN0cyB3ZXJlIHN1Y2Nlc3NmdWxseSBidWlsdAomIzQzOyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk6IHRoZSBvYmplY3RzIGV4aXN0aW5nIGF0CiYjNDM7IyBwYXJzZSB0aW1lIGFyZSBub3JtYWwgcHJlcmVxdWlzaXRlcyAtIHNvIGVkaXRpbmcgYSB0ZXN0IHNvdXJjZSBzdGlsbAomIzQzOyMgcmVsaW5rcyB0aGUgcnVubmVyIC0gd2hpbGUgdGhlIGZ1bGwgc2V0IHN0YXlzIG9yZGVyLW9ubHkgdG8gZHJpdmUgdGhlCiYjNDM7IyBidWlsZCBhdHRlbXB0cywgYW5kIHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnMKJiM0MzsjIGF0IGxpbmsgdGltZS4KJiM0MzsjIFByZXJlcXVpc2l0ZSBvcmRlciBpcyBhbHNvIGxpbmsgb3JkZXIgKHRlc3Qgb2JqZWN0cywgcnVubmVyIG9iamVjdHMsCiYjNDM7IyBsaWJicGYsIGxpYiBvYmplY3RzKS4KJiM0MzskKE9VVFBVVCkvJChCSU5BUlkpOiAkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJCh3aWxkY2FyZCAkKFRFU1RfT0JKUykpLCQoVEVTVF9PQkpTKSkgXAomIzQzOwkJICAgICAkKFJVTk5FUl9PQkpTLSQoUlVOTkVSKSkgJChCUEZPQkopCQkJXAomIzQzOwkJICAgICAkKFJVTk5FUl9MSUJfT0JKUy0kKFJVTk5FUikpCQkJXAomIzQzOwkJICAgICAkKFRSVU5ORVJfQlBGVE9PTCkgJChPVVRQVVQpL3ZlcmlzdGF0CQlcCiYjNDM7CQkgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpCQkJCVwKJiM0MzsJCSAgICAgJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoVEVTVF9PQkpTKSkKJiM0MzsJJChjYWxsIG1zZyxCSU5BUlksLCRAKQomIzQzOwkkKFEpJChDQykgJChDRkxBR1MpCQkJCQkJXAomIzQzOwkJJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKQlcCiYjNDM7CQkJJChmaWx0ZXItb3V0ICQoVEVTVF9PQkpTKSwkKGZpbHRlciAlLmEgJS5vLCReKSksXAomIzQzOwkJCSQoZmlsdGVyICUuYSAlLm8sJF4pKQkJCQlcCiYjNDM7CQkkKExETElCUykgJChMTFZNX0xETElCUykgJChMREZMQUdTKSAkKExMVk1fTERGTEFHUykgLW8gJEAKJiM0MzsJJChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFwKJiM0MzsJCSAgICQoUkRJUikvYnBmdG9vbApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWwgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuc2tlbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5hODcxZWE3NjgxN2RmCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWwKQEAgLTAsMCAmIzQzOzEsMTQxIEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMgUnVsZXMgdG8gYnVpbGQgdGhlIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgb2Ygb25lIGJ1aWxkIGZsYXZvciwKJiM0MzsjIHNoYXJlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSAod2hpY2ggaW5zdGFudGlhdGVzIHRoZW0gZm9yIHRoZSBkZWZhdWx0CiYjNDM7IyBmbGF2b3IsIHNvIHRoYXQgYmVuY2gsIHhza3hjZWl2ZXIsIHhkcF8qIGFuZCB0ZXN0X2NwcCBjYW4gZGVwZW5kIG9uCiYjNDM7IyB0aGUgZXhhY3Qgc2tlbGV0b25zIHRoZXkgY29uc3VtZSkgYW5kIGJ5IE1ha2VmaWxlLnJ1bm5lciAod2hpY2gKJiM0MzsjIGluc3RhbnRpYXRlcyB0aGVtIGZvciBlYWNoIHJ1bm5lciBpbnN0YW5jZSB0aGF0IGJ1aWxkcyBCUEYgb2JqZWN0czoKJiM0MzsjIHRoZSBmbGF2b3JlZCBvbmVzIGluIHRoZWlyIG93biBvdXRwdXQgZGlyZWN0b3JpZXMsIHRoZSB1bmZsYXZvcmVkCiYjNDM7IyB0ZXN0X3Byb2dzIG9uZSBpbiAkKE9VVFBVVCksIHdoZXJlIGl0IGZpbmRzIHRoZW0gYWxyZWFkeSBidWlsdCkuCiYjNDM7IwomIzQzOyMgUGFyYW1ldGVycyAodmFyaWFibGVzIGRlZmluZWQgYnkgdGhlIGluY2x1ZGVyKToKJiM0MzsjICAgUkRJUiAgICAgICAgICAgICBvdXRwdXQgZGlyZWN0b3J5IG9mIHRoaXMgZmxhdm9yCiYjNDM7IyAgIEZMQVZPUiAgICAgICAgICAgZmxhdm9yIG5hbWUsIGVtcHR5IGZvciB0aGUgZGVmYXVsdAomIzQzOyMgICBCSU5BUlkgICAgICAgICAgIHJ1bm5lciBiaW5hcnkgbmFtZSwgZm9yIGJ1aWxkLWxvZyBtZXNzYWdlcwomIzQzOyMgICBCUEZfQ0MgICAgICAgICAgIEJQRiBjb21waWxlcgomIzQzOyMgICBCUEZfQ0NfTVNHICAgICAgIGJ1aWxkLWxvZyB0YWcgKENMTkctQlBGL0dDQy1CUEYpCiYjNDM7IyAgIEJQRl9DQ19GTEFHUyAgICAgcGVyLWZsYXZvciBjb21waWxlciBmbGFncwomIzQzOyMgICBCUEZfU1lTX0lOQ0xVREVTIHN5c3RlbSBpbmNsdWRlIGZsYWdzIGZvciAkKEJQRl9DQykKJiM0MzsjICAgQlBGX0RFRklORVMgICAgICBleHRyYSBkZWZpbmVzICgtREVOQUJMRV9BVE9NSUNTX1RFU1RTKQomIzQzOyMKJiM0MzsjIFRoZSBkZWZhdWx0IGZsYXZvciYjMzk7cyBydWxlcyBhcmUgaW5zdGFudGlhdGVkIGlkZW50aWNhbGx5IGJ5IHRoZSBtYWluCiYjNDM7IyBNYWtlZmlsZSBhbmQgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBzdWItbWFrZTsgdGhlIG1haW4gTWFrZWZpbGUKJiM0MzsjIGxpc3RzIGV2ZXJ5IHNrZWxldG9uIGFuZCBCUEYgb2JqZWN0IGFzIGEgcHJlcmVxdWlzaXRlIG9mIHRoZSB1bmZsYXZvcmVkCiYjNDM7IyBydW5uZXJzJiMzOTsgZGVsZWdhdGlvbiBydWxlcywgc28gdGhlIGZpbGVzIGFyZSBhbHdheXMgZnJlc2ggYnkgdGhlIHRpbWUKJiM0MzsjIHRoYXQgc3ViLW1ha2UgcmUtZXZhbHVhdGVzIHRoZW0uCiYjNDM7CiYjNDM7IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJiM0MzsjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMKJiM0MzsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomIzQzOwomIzQzO2lmbmVxICgkKEJQRl9DQyksKQomIzQzOwomIzQzO0JQRl9TUkNTIDo9ICQobm90ZGlyICQod2lsZGNhcmQgcHJvZ3MvKi5jKSkKJiM0MztCUEZfT0JKUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuYnBmLm8sJChCUEZfU1JDUykpCiYjNDM7CiYjNDM7U0tFTF9CTEFDS0xJU1QgOj0gYnRmX18lIHRlc3RfcGlubmluZ19pbnZhbGlkLmMgdGVzdF9za19hc3NpZ24uYwomIzQzOwomIzQzO0xJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmgJCVwKJiM0MzsJCWxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggCQkJXAomIzQzOwkJdGVzdF9zdWJza2VsZXRvbi5za2VsLmggdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oCVwKJiM0MzsJCXRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmgJCQlcCiYjNDM7CQl0cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgJCQkJXAomIzQzOwkJdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oCQkJCVwKJiM0MzsJCXRyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgKJiM0MzsKJiM0MztMU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgCVwKJiM0MzsJY29yZV9rZXJuLmMgY29yZV9rZXJuX292ZXJmbG93LmMgdGVzdF9yaW5nYnVmLmMJCQlcCiYjNDM7CXRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcCiYjNDM7CXRlc3RfcmluZ2J1Zl9vdmVyd3JpdGUuYwomIzQzOwomIzQzO0xTS0VMU19TSUdORUQgOj0gZmVudHJ5X3Rlc3QuYyBmZXhpdF90ZXN0LmMgYXRvbWljcy5jCiYjNDM7CiYjNDM7IyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlCiYjNDM7TFNLRUxTX0VYVFJBIDo9IHRlc3Rfa3N5bXNfbW9kdWxlLmMgdGVzdF9rc3ltc193ZWFrLmMga2Z1bmNfY2FsbF90ZXN0LmMgXAomIzQzOwlrZnVuY19jYWxsX3Rlc3Rfc3VicHJvZy5jIHRlc3RfZ2xvYmFsX3BlcmNwdV9kYXRhLmMKJiM0MztTS0VMX0JMQUNLTElTVCAmIzQzOz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRCkKJiM0MzsKJiM0Mzt0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vCiYjNDM7bGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYubwomIzQzO2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm8KJiM0MztsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vCiYjNDM7IyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGUKJiM0MzsjIGJ1dCB0aGF0JiMzOTtzIGNyZWF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgc2tlbC5oIGdlbmVyYXRpb24uCiYjNDM7dGVzdF9zdWJza2VsZXRvbi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbi5icGYubwomIzQzO3Rlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubwomIzQzO3Rlc3RfdXNkdC5za2VsLmgtZGVwcyA6PSB0ZXN0X3VzZHQuYnBmLm8gdGVzdF91c2R0X211bHRpc3BlYy5icGYubwomIzQzO3RyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYubwomIzQzO3RyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCiYjNDM7dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm8KJiM0Mzt0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vCiYjNDM7CiYjNDM7TElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpCiYjNDM7TElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKQomIzQzOwomIzQzO1NLRUxTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5za2VsLmgsCQkJCVwKJiM0MzsJICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpCiYjNDM7TFNLRUxTX0ggICAgICAgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTKSAkKExTS0VMU19FWFRSQSkpCiYjNDM7TFNLRUxTX1NJR05FRF9IIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5sc2tlbC5oLCQoTFNLRUxTX1NJR05FRCkpCiYjNDM7TElOS0VEX1NLRUxTX0ggIDo9ICQoYWRkcHJlZml4ICQoUkRJUikvLCQoTElOS0VEX1NLRUxTKSkKJiM0MztBTExfU0tFTFMgOj0gJChTS0VMUykgJChMU0tFTFNfSCkgJChMU0tFTFNfU0lHTkVEX0gpICQoTElOS0VEX1NLRUxTX0gpCiYjNDM7CiYjNDM7SEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaCkJCVwKJiM0MzsJCQkkKHdpbGRjYXJkICQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlLyouW2NoXSkJXAomIzQzOwkJCSQoYWRkcHJlZml4ICQoQlBGRElSKS8sCWJwZl9jb3JlX3JlYWQuaAlcCiYjNDM7CQkJICAgICAgICAgICAgICAgICAgICAgICAgYnBmX2VuZGlhbi5oCVwKJiM0MzsJCQkJCQlicGZfaGVscGVycy5oCVwKJiM0MzsJCQkgICAgICAgICAgICAgICAgICAgICAgICBicGZfdHJhY2luZy5oKQomIzQzOwomIzQzOyMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCwKJiM0MzsjIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2YKJiM0MzsjIGFub255bW91cyBzdHJ1Y3QgdHlwZXMgaW4gZnVuY3Rpb24gcGFyYW1ldGVyIGxpc3RzLgomIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7cHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgomIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWNraW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgomIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvcgomIzQzO3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yCiYjNDM7CiYjNDM7JChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaAkJCVwKJiM0MzsJICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUykJCVwKJiM0MzsJICAgICB8ICQoUkRJUikgJChCUEZPQkopCiYjNDM7CSQoY2FsbCBtc2csJChCUEZfQ0NfTVNHKSwkKEJJTkFSWSksJEApCiYjNDM7CSQoUSkkKEJQRl9DQykgJChCUEZfQ0ZMQUdTKSAkKEJQRl9TWVNfSU5DTFVERVMpICQoQlBGX0RFRklORVMpCVwKJiM0MzsJCSQoJCZsdDstQ0ZMQUdTKSAkKCQmbHQ7LSQoRkxBVk9SKS1DRkxBR1MpCQkJXAomIzQzOwkJJChCUEZfQ0NfRkxBR1MpIC1jICQmbHQ7IC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsQlBGKQomIzQzOwomIzQzO0dFTl9TS0VMIDo9IC4vZ2VuX2JwZl9za2VsLnNoCiYjNDM7CiYjNDM7JChTS0VMUyk6ICQoUkRJUikvJS5za2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKQomIzQzOwkkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCQmbHQ7LCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKQlcCiYjNDM7CXByaW50ZiAmIzM5OyAgJS04cyVzICVzXG4mIzM5OyAmIzM5O0dFTi1TS0VMJiMzOTsgJiMzOTsgWyQoQklOQVJZKV0mIzM5OyAmIzM5OyQobm90ZGlyICRAKSYjMzk7OyBcCiYjNDM7CUJQRlRPT0w9JChCUEZUT09MKSAkKEdFTl9TS0VMKSAtLW5hbWUgJCoJCQkJCQlcCiYjNDM7CQktLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQmbHQ7CQlcCiYjNDM7CQkkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpCiYjNDM7CiYjNDM7JChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUikKJiM0MzsJJChRKSQoY2FsbCBza2lwX2lmX21pc3NpbmcsU0tFTCwkJmx0OykJCQkJXAomIzQzOwlwcmludGYgJiMzOTsgICUtOHMlcyAlc1xuJiMzOTsgJiMzOTtHRU4tU0tFTCYjMzk7ICYjMzk7IFskKEJJTkFSWSldJiMzOTsgJiMzOTskKG5vdGRpciAkQCkmIzM5OzsgXAomIzQzOwlCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqX2xza2VsIC0tbHNrZWwJCQkJXAomIzQzOwkJLS1za2VsICRAICQmbHQ7ICQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCkKJiM0MzsKJiM0MzskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKQlcCiYjNDM7CQkgICAgJChHRU5fU0tFTCkgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVCkgfCAkKFJESVIpCiYjNDM7CSQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJCZsdDspCQkJCVwKJiM0MzsJcHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5OyBbJChCSU5BUlkpIChzaWduZWQpXSYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTs7IFwKJiM0MzsJQlBGVE9PTD0kKEJQRlRPT0wpIFBSSVZBVEVfS0VZPSQoUFJJVkFURV9LRVkpCQkJCVwKJiM0MzsJCVZFUklGSUNBVElPTl9DRVJUPSQoVkVSSUZJQ0FUSU9OX0NFUlQpCQkJXAomIzQzOwkJJChHRU5fU0tFTCkgLS1zaWduIC0tbmFtZSAkKl9sc2tlbAkJCVwKJiM0MzsJCS0tc2tlbCAkQCAkJmx0OyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpCiYjNDM7CiYjNDM7IyAuU0VDT05ERVhQQU5TSU9OIGhlcmUgYWxsb3dzIHRvIGNvcnJlY3RseSBleHBhbmQgJS1kZXBzIHZhcmlhYmxlcyBhcyBwcmVyZXF1aXNpdGVzCiYjNDM7LlNFQ09OREVYUEFOU0lPTjoKJiM0MzskKExJTktFRF9TS0VMU19IKTogJChSRElSKS8lLnNrZWwuaDogJCQoYWRkcHJlZml4ICQoUkRJUikvLCQkKCQkKi5za2VsLmgtZGVwcykpIFwKJiM0MzsJCSAgICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpCiYjNDM7CSQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKSBcCiYjNDM7CXByaW50ZiAmIzM5OyAgJS04cyVzICVzXG4mIzM5OyAmIzM5O0xJTkstQlBGJiMzOTsgJiMzOTsgWyQoQklOQVJZKV0mIzM5OyAmIzM5OyQobm90ZGlyICQoQDouc2tlbC5oPS5icGYubykpJiMzOTs7IFwKJiM0MzsJcHJpbnRmICYjMzk7ICAlLThzJXMgJXNcbiYjMzk7ICYjMzk7R0VOLVNLRUwmIzM5OyAmIzM5OyBbJChCSU5BUlkpXSYjMzk7ICYjMzk7JChub3RkaXIgJEApJiMzOTs7IFwKJiM0MzsJQlBGVE9PTD0kKEJQRlRPT0wpICQoR0VOX1NLRUwpIC0tbmFtZSAkKgkJCQkJCVwKJiM0MzsJCS0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaCkJCVwKJiM0MzsJCSQoYWRkcHJlZml4ICQoUkRJUikvLCQoJCouc2tlbC5oLWRlcHMpKQkJCVwKJiM0MzsJCSQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSkKJiM0MzsKJiM0MztlbmRpZiAjIEJQRl9DQwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMC4uZTQzY2NmMDk1NTc1NgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2gKQEAgLTAsMCAmIzQzOzEsOTkgQEAKJiM0MzsjIS9iaW4vYmFzaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsjCiYjNDM7IyBMaW5rIEJQRiBvYmplY3QgZmlsZShzKSB3aXRoICYjMzQ7YnBmdG9vbCBnZW4gb2JqZWN0JiMzNDsgYW5kIGdlbmVyYXRlIGEKJiM0MzsjIHNrZWxldG9uIChvciBsaWdodCBza2VsZXRvbikgaGVhZGVyIGZyb20gdGhlIHJlc3VsdC4KJiM0MzsjCiYjNDM7IyBVc2FnZToKJiM0MzsjICAgQlBGVE9PTD0mbHQ7YnBmdG9vbCZndDsgZ2VuX2JwZl9za2VsLnNoIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLgomIzQzOyMKJiM0MzsjICAgLS1uYW1lIE5BTUUgICAgICAgc2tlbGV0b24gb2JqZWN0IG5hbWUgKCYjMzQ7bmFtZSBOQU1FJiMzNDsgZm9yIGJwZnRvb2wpCiYjNDM7IyAgIC0tc2tlbCBPVVQgICAgICAgIG91dHB1dCBoZWFkZXIgKCYjMzQ7Zm9vLnNrZWwuaCYjMzQ7IG9yICYjMzQ7Zm9vLmxza2VsLmgmIzM0OykKJiM0MzsjICAgLS1zdWJza2VsIE9VVCAgICAgYWxzbyBnZW5lcmF0ZSBhIHN1YnNrZWxldG9uIGhlYWRlciBpbnRvIE9VVAomIzQzOyMgICAtLWxza2VsICAgICAgICAgICBnZW5lcmF0ZSBhIGxpZ2h0IHNrZWxldG9uIChicGZ0b29sIGdlbiBza2VsZXRvbiAtTCkKJiM0MzsjICAgLS1zaWduICAgICAgICAgICAgc2lnbiB0aGUgKGxpZ2h0KSBza2VsZXRvbiwgd2l0aCB0aGUga2V5IGFuZAomIzQzOyMgICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZSB0YWtlbiBmcm9tICRQUklWQVRFX0tFWSBhbmQKJiM0MzsjICAgICAgICAgICAgICAgICAgICAgJFZFUklGSUNBVElPTl9DRVJUCiYjNDM7IwomIzQzOyMgVGhlIGlucHV0cyBhcmUgbGlua2VkIHRocmVlIHRpbWVzIGFuZCB0aGUgMm5kIGFuZCAzcmQgcmVzdWx0cwomIzQzOyMgY29tcGFyZWQsIGFzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgZGV0ZXJtaW5pc20gb2YgJiMzNDticGZ0b29sIGdlbgomIzQzOyMgb2JqZWN0JiMzNDsuCiYjNDM7IwomIzQzOyMgSW50ZXJtZWRpYXRlIGZpbGVzIGFyZSBuYW1lZCBhZnRlciB0aGUgb3V0cHV0IGhlYWRlciB3aXRoIGEgJiMzNDtsaW5rZWQmIzM0OwomIzQzOyMgaW5maXggLSAmIzM0O2xsaW5rZWQmIzM0OyBmb3IgbGlnaHQgb3Igc2lnbmVkIHNrZWxldG9ucywgc28gZ2VuZXJhdGluZyBhCiYjNDM7IyAuc2tlbC5oIGFuZCBhIC5sc2tlbC5oIGZyb20gdGhlIHNhbWUgLmJwZi5vIGluIHBhcmFsbGVsIG5ldmVyIHJhY2VzCiYjNDM7IyBvbiB0aGUgaW50ZXJtZWRpYXRlcy4KJiM0MzsjCiYjNDM7IyBUaGUgYnBmdG9vbCBiaW5hcnkgaXMgdGFrZW4gZnJvbSAkQlBGVE9PTCAoZGVmYXVsdDogYnBmdG9vbCBmcm9tIFBBVEgpLgomIzQzOyMgT24gZmFpbHVyZSBhbGwgb3V0cHV0cyBhbmQgaW50ZXJtZWRpYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHNjcmlwdAomIzQzOyMgZXhpdHMgbm9uLXplcm87IHBlcm1pc3NpdmUtbW9kZSBza2lwcGluZyBpcyB0aGUgY2FsbGVyJiMzOTtzIGJ1c2luZXNzCiYjNDM7IyAoc2VlIHNraXBfb25fZmFpbCBpbiB0aGUgTWFrZWZpbGUpLgomIzQzOwomIzQzO3NldCAtdQomIzQzOwomIzQzO2JwZnRvb2w9JHtCUEZUT09MOi1icGZ0b29sfQomIzQzO25hbWU9JiMzOTsmIzM5OyBza2VsPSYjMzk7JiMzOTsgc3Vic2tlbD0mIzM5OyYjMzk7CiYjNDM7bHNrZWw9MCBzaWduPTAKJiM0MzsKJiM0Mzt3aGlsZSBbICQjIC1ndCAwIF07IGRvCiYjNDM7CWNhc2UgJiMzNDskMSYjMzQ7IGluCiYjNDM7CS0tbmFtZSkJCW5hbWU9JDI7IHNoaWZ0IDIgOzsKJiM0MzsJLS1za2VsKQkJc2tlbD0kMjsgc2hpZnQgMiA7OwomIzQzOwktLXN1YnNrZWwpCXN1YnNrZWw9JDI7IHNoaWZ0IDIgOzsKJiM0MzsJLS1sc2tlbCkJbHNrZWw9MTsgc2hpZnQgOzsKJiM0MzsJLS1zaWduKQkJc2lnbj0xOyBzaGlmdCA7OwomIzQzOwktLSkJCXNoaWZ0OyBicmVhayA7OwomIzQzOwktKikJCWVjaG8gJiMzNDskMDogdW5rbm93biBvcHRpb246ICQxJiMzNDsgJmd0OyZhbXA7MjsgZXhpdCAxIDs7CiYjNDM7CSopCQlicmVhayA7OwomIzQzOwllc2FjCiYjNDM7ZG9uZQomIzQzOwomIzQzO2lmIFsgLXogJiMzNDskbmFtZSYjMzQ7IF0gfHwgWyAteiAmIzM0OyRza2VsJiMzNDsgXSB8fCBbICQjIC1lcSAwIF07IHRoZW4KJiM0MzsJZWNobyAmIzM0O3VzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi4mIzM0OyAmZ3Q7JmFtcDsyCiYjNDM7CWV4aXQgMQomIzQzO2ZpCiYjNDM7CiYjNDM7aW5maXg9bGlua2VkCiYjNDM7aWYgWyAmIzM0OyRsc2tlbCYjMzQ7IC1lcSAxIF0gfHwgWyAmIzM0OyRzaWduJiMzNDsgLWVxIDEgXTsgdGhlbgomIzQzOwlpbmZpeD1sbGlua2VkCiYjNDM7ZmkKJiM0MzsKJiM0MztpZiBbICYjMzQ7JHNpZ24mIzM0OyAtZXEgMSBdICZhbXA7JmFtcDsgeyBbIC16ICYjMzQ7JHtQUklWQVRFX0tFWS19JiMzNDsgXSB8fCBbIC16ICYjMzQ7JHtWRVJJRklDQVRJT05fQ0VSVC19JiMzNDsgXTsgfTsgdGhlbgomIzQzOwllY2hvICYjMzQ7JDA6IC0tc2lnbiByZXF1aXJlcyBQUklWQVRFX0tFWSBhbmQgVkVSSUZJQ0FUSU9OX0NFUlQgaW4gdGhlIGVudmlyb25tZW50JiMzNDsgJmd0OyZhbXA7MgomIzQzOwlleGl0IDEKJiM0MztmaQomIzQzOwomIzQzO2Jhc2U9JHtza2VsJS5za2VsLmh9CiYjNDM7YmFzZT0ke2Jhc2UlLmxza2VsLmh9CiYjNDM7dDE9JGJhc2UuJHtpbmZpeH0xLm8KJiM0Mzt0Mj0kYmFzZS4ke2luZml4fTIubwomIzQzO3QzPSRiYXNlLiR7aW5maXh9My5vCiYjNDM7CiYjNDM7ZmFpbCgpIHsKJiM0MzsJcm0gLWYgJiMzNDskc2tlbCYjMzQ7ICR7c3Vic2tlbDomIzQzOyYjMzQ7JHN1YnNrZWwmIzM0O30gJiMzNDskdDEmIzM0OyAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQzJiMzNDsKJiM0MzsJZXhpdCAxCiYjNDM7fQomIzQzOwomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gb2JqZWN0ICYjMzQ7JHQxJiMzNDsgJiMzNDskQCYjMzQ7IHx8IGZhaWwKJiM0MzsmIzM0OyRicGZ0b29sJiMzNDsgZ2VuIG9iamVjdCAmIzM0OyR0MiYjMzQ7ICYjMzQ7JHQxJiMzNDsgfHwgZmFpbAomIzQzOyYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gb2JqZWN0ICYjMzQ7JHQzJiMzNDsgJiMzNDskdDImIzM0OyB8fCBmYWlsCiYjNDM7aWYgISBjbXAgLXMgJiMzNDskdDImIzM0OyAmIzM0OyR0MyYjMzQ7OyB0aGVuCiYjNDM7CWVjaG8gJiMzNDskMDogYnBmdG9vbCBnZW4gb2JqZWN0IGlzIG5vdCBkZXRlcm1pbmlzdGljIGZvciAkc2tlbCYjMzQ7ICZndDsmYW1wOzIKJiM0MzsJZmFpbAomIzQzO2ZpCiYjNDM7CiYjNDM7YXJncz0oKQomIzQzO2lmIFsgJiMzNDskc2lnbiYjMzQ7IC1lcSAxIF07IHRoZW4KJiM0MzsJYXJncyYjNDM7PSgtUyAtayAmIzM0OyRQUklWQVRFX0tFWSYjMzQ7IC1pICYjMzQ7JFZFUklGSUNBVElPTl9DRVJUJiMzNDspCiYjNDM7ZmkKJiM0MztpZiBbICYjMzQ7JGxza2VsJiMzNDsgLWVxIDEgXTsgdGhlbgomIzQzOwlhcmdzJiM0Mzs9KC1MKQomIzQzO2ZpCiYjNDM7JiMzNDskYnBmdG9vbCYjMzQ7IGdlbiBza2VsZXRvbiAke2FyZ3NbQF0mIzQzOyYjMzQ7JHthcmdzW0BdfSYjMzQ7fSAmIzM0OyR0MyYjMzQ7IG5hbWUgJiMzNDskbmFtZSYjMzQ7ICZndDsgJiMzNDskc2tlbCYjMzQ7IHx8IGZhaWwKJiM0MzsKJiM0MztpZiBbIC1uICYjMzQ7JHN1YnNrZWwmIzM0OyBdOyB0aGVuCiYjNDM7CSYjMzQ7JGJwZnRvb2wmIzM0OyBnZW4gc3Vic2tlbGV0b24gJiMzNDskdDMmIzM0OyBuYW1lICYjMzQ7JG5hbWUmIzM0OyAmZ3Q7ICYjMzQ7JHN1YnNrZWwmIzM0OyB8fCBmYWlsCiYjNDM7ZmkKJiM0MzsKJiM0MztybSAtZiAmIzM0OyR0MSYjMzQ7ICYjMzQ7JHQyJiMzNDsgJiMzNDskdDMmIzM0OwomIzQzO2V4aXQgMApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmMKaW5kZXggMmJiNTc3M2Q2Zjk5My4uZWEzNDI4NTlkNmNlMSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jCkBAIC00NjUsNyAmIzQzOzQ2NSw3IEBAIHN0cnVjdCBleHBvc2VkX2hvb2sgewogCQkuZXhwZWN0ZWRfZXJyID0gRVhQRUNURURfRVJSLCBcCiAJfSwKIAotI2luY2x1ZGUgJiMzNDtjZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3Byb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmgmIzM0OwogCiAjdW5kZWYgQlBGX1JFVFZBTF9IT09LCiB9OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmgKcmVuYW1lIHRvIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDIwOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjE1CgkJCQkJCQlvdXRwdXQ6IDY5CgkJCQkJCQl0aG91Z2h0czogNDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGVjaXNpb24gZm9yIFRoaXMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3Nlc3MgaWYgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYgdGhhdCAqcmVxdWlyZSogZnV6emluZy4gSSBzZWUgYSBzZXJpZXMgb2YgbW9kaWZpY2F0aW9ucywgYWxsIGNvbnRhaW5lZCB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aWNpbmcgYWRkaXRpb25zIG9mIG5ldyBNYWtlZmlsZXM6IGBNYWtlZmlsZS5idWlsZHZhcnNgLCBgTWFrZWZpbGUucnVubmVyYCwgYE1ha2VmaWxlLnNrZWxgLCBhbmQgYGdlbl9icGZfc2tlbC5zaGAuIFRoZXJlJiMzOTtzIGFsc28gYSByZW5hbWUgZnJvbSBgY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaGAgdG8gYHByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhgLCBhbmQgYW4gaW5jbHVkZSB1cGRhdGUgaW4gYGNncm91cF9nZXRzZXRfcmV0dmFsLmNgLgoKSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlcyBhcmUgYWxsIGlzb2xhdGVkIHRvIHRoZSBzZWxmdGVzdHMgaW5mcmFzdHJ1Y3R1cmUgd2l0aGluIHRoZSBCUEYgc3Vic3lzdGVtLiBJIGRvbiYjMzk7dCBzZWUgYW55dGhpbmcgZGlyZWN0bHkgdG91Y2hpbmcgY29yZSBrZXJuZWwgY29kZSwganVzdCB0aGUgdGVzdGluZyBoYXJuZXNzLgoKVG8gYmUgZXh0cmEgc3VyZSwgbGV0JiMzOTtzIHF1aWNrbHkgcmUtZXhhbWluZSB0aG9zZSBmaWxlczogYE1ha2VmaWxlYCwgYE1ha2VmaWxlLmJ1aWxkdmFyc2AsIGBNYWtlZmlsZS5ydW5uZXJgLCBgTWFrZWZpbGUuc2tlbGAsIGBnZW5fYnBmX3NrZWwuc2hgLCBgcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jYCwgYW5kIGBwcm9ncy9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oYC4gWWVwLCBzdGlsbCBubyBrZXJuZWwgc291cmNlIGNvZGUgYmVpbmcgZGlyZWN0bHkgbW9kaWZpZWQuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBrZXJuZWwtbGV2ZWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBUaGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMjA6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDIwOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yM1QyMDoxNDozNi4wOTg5NzIzMTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjI3MDM2NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGJ1aWxkIHN5c3RlbSAoTWFrZWZpbGVzIGFuZCBzY3JpcHRzKSBhbmQgcmVuYW1lcyBhIHRlc3QgaGVhZGVyIGZpbGUuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMjA6MTQ6MzYuMDk4OTgxNzk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTkyMjQ0MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZGFmZTJiOTYxZDEzYmM0MzljYWMxYzQyYjk5NjVjMzQ4YWM0NGQ5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIzIDIwOjE0OjM1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxcbmluZGV4IDVmMWEzYmZjMDU2OWYuLjliOTkwNTYxMDA3MGQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuQEAgLTQsOTMgKzQsMTkgQEAgaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcXG4gaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmluY2x1ZGVcXG4gXFxuIENYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXFxuLU9CSkNPUFkgPz0gJChDUk9TU19DT01QSUxFKW9iamNvcHlcXG4tXFxuLUNVUkRJUiA6PSAkKGFic3BhdGggLilcXG4tVE9PTFNESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uKVxcbi1MSUJESVIgOj0gJChUT09MU0RJUikvbGliXFxuLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmXFxuLVRPT0xTSU5DRElSIDo9ICQoVE9PTFNESVIpL2luY2x1ZGVcXG4tVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXFxuLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcXG4tQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcXG4taWZuZXEgKCQoTyksKVxcbi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxcbi1lbHNlXFxuLUdFTkRJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4vLi4vaW5jbHVkZS9nZW5lcmF0ZWQpXFxuLWVuZGlmXFxuLUdFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxcbi1QS0dfQ09ORklHID89ICQoQ1JPU1NfQ09NUElMRSlwa2ctY29uZmlnXFxuLVxcbi1pZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcXG4tICBHRU5GTEFHUyA6PSAtREhBVkVfR0VOSERSXFxuLWVuZGlmXFxuIFxcbiBCUEZfR0NDXFx0XFx0Pz0gJChzaGVsbCBjb21tYW5kIC12IGJwZi1nY2M7KVxcbi1pZmRlZiBBU0FOXFxuLVNBTl9DRkxBR1MgXFx0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFxuLWVsc2VcXG4tU0FOX0NGTEFHU1xcdD89XFxuLWVuZGlmXFxuLVNBTl9MREZMQUdTXFx0Pz0gJChTQU5fQ0ZMQUdTKVxcbi1SRUxFQVNFXFx0XFx0Pz1cXG4tT1BUX0ZMQUdTXFx0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXFxuLVxcbi1MSUJFTEZfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXFx1MDAzZS9kZXYvbnVsbClcXG4tTElCRUxGX0xJQlNcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXFx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxcbiBcXG4gU0tJUF9ET0NTXFx0Pz1cXG4gU0tJUF9MTFZNXFx0Pz1cXG4gU0tJUF9MSUJCRkRcXHQ/PVxcbiBTS0lQX0NSWVBUT1xcdD89XFxuIFxcbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxcbi0jIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xcbi0jIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxcbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcXG4tUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXFxuLVxcbi1pZmVxICgkKHNyY3RyZWUpLClcXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcXG4tc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4tZW5kaWZcXG4tXFxuLUNPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlhYmxlXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICQoR0VORkxBR1MpICQoU0FOX0NGTEFHUykgJChMSUJFTEZfQ0ZMQUdTKVxcdFxcdFxcdFxcXFxcXG4tXFx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXFx0XFx0XFxcXFxcbi1cXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcXHRcXFxcXFxuLVxcdCAgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcbi1MREZMQUdTICs9ICQoU0FOX0xERkxBR1MpXFxuLUxETElCUyArPSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcXG4tXFxuLVBDQVBfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyBcXFwiLURUUkFGRklDX01PTklUT1I9MVxcXCIpXFxuLVBDQVBfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbClcXG4tTERMSUJTICs9ICQoUENBUF9MSUJTKVxcbi1DRkxBR1MgKz0gJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKVxcbi1cXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xcbi1qaXRfZGlzYXNtX2hlbHBlcnMuYy1DRkxBR1MgPSAkKExMVk1fQ0ZMQUdTKVxcbi1cXG4taWZuZXEgKCQoTExWTSksKVxcbi0jIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcXG4tQ0ZMQUdTICs9IC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFxcbi1lbmRpZlxcbi1cXG4gIyBDaGVjayB3aGV0aGVyIGJwZiBjcHU9djQgaXMgc3VwcG9ydGVkIG9yIG5vdCBieSBjbGFuZ1xcbiBpZm5lcSAoJChzaGVsbCAkKENMQU5HKSAtLXRhcmdldD1icGYgLW1jcHU9aGVscCAyXFx1MDAzZVxcdTAwMjYxIHwgZ3JlcCAndjQnKSwpXFxuIENMQU5HX0NQVVY0IDo9IDFcXG4gZW5kaWZcXG4gXFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjIrKVxcbi1DTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJ2ludCB4OycgfCBcXFxcXFxuLVxcdCQoQ0xBTkcpIC0tdGFyZ2V0PWJwZiAtZnNhbml0aXplPWtlcm5lbC1hZGRyZXNzIFxcXFxcXG4tXFx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcXFxcbi1cXHQteCBjIC1jIC0gLW8gL2Rldi9udWxsIDJcXHUwMDNlL2Rldi9udWxsIFxcdTAwMjZcXHUwMDI2IGVjaG8gMSlcXG4tXFxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAnbWFrZSBydW5fdGVzdHMnIG9yZGVyXFxuIFRFU1RfR0VOX1BST0dTID0gdGVzdF92ZXJpZmllciB0ZXN0X3RhZyB0ZXN0X21hcHMgdGVzdF9scnVfbWFwIHRlc3RfcHJvZ3MgXFxcXFxcbiBcXHR0ZXN0X3NvY2ttYXAgXFxcXFxcbkBAIC0xMDIsMTYgKzI4LDYgQEAgVEVTVF9JTlNUX1NVQkRJUlMgOj0gbm9fYWx1MzJcXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxcbiBURVNUX0dFTl9QUk9HUyArPSB0ZXN0X3Byb2dzLWJwZl9nY2NcXG4gVEVTVF9JTlNUX1NVQkRJUlMgKz0gYnBmX2djY1xcbi1cXG4tIyBUaGUgZm9sbG93aW5nIHRlc3RzIGNvbnRhaW4gQyBjb2RlIHRoYXQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGxlZ2FsLFxcbi0jIHRyaWdnZXJzIEdDQyB3YXJuaW5ncyB0aGF0IGNhbm5vdCBiZSBkaXNhYmxlZDogZGVjbGFyYXRpb24gb2ZcXG4tIyBhbm9ueW1vdXMgc3RydWN0IHR5cGVzIGluIGZ1bmN0aW9uIHBhcmFtZXRlciBsaXN0cy5cXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX25hbWVzcGFjaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4tcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9zeW50YXguYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuLVxcbiBlbmRpZlxcbiBcXG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcXG5AQCAtMTY4LDcgKzg0LDIxIEBAIG92ZXJyaWRlIGRlZmluZSBDTEVBTlxcbiBcXHQkKFEpJChNQUtFKSBkb2NzLWNsZWFuXFxuIGVuZGVmXFxuIFxcbisjIC4uL2xpYi5tayBhcHBlbmRzIHRvIHRoZSBmbGFncyBpbmhlcml0ZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQ7XFxuKyMgTWFrZWZpbGUuYnVpbGR2YXJzIHJlYnVpbGRzIENGTEFHUyBhbmQgTERGTEFHUyBhcm91bmQgdGhlc2Ugc25hcHNob3RzXFxuKyMgc28gdGhhdCBpdHMgb3duIGFkZGl0aW9ucyBwcmVjZWRlIGxpYi5taydzLCBhcyB0aGV5IGRpZCB3aGVuIHRoZXlcXG4rIyB3ZXJlIGRlZmluZWQgYWJvdmUgdGhlIGluY2x1ZGUuXFxuK0lOSEVSSVRFRF9DRkxBR1MgOj0gJChDRkxBR1MpXFxuK0lOSEVSSVRFRF9MREZMQUdTIDo9ICQoTERGTEFHUylcXG4gaW5jbHVkZSAuLi9saWIubWtcXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcXG4rXFxuKyMgRGVmaW5pdGlvbnMgb25seSB0aGlzIE1ha2VmaWxlIGNvbnN1bWVzOyBwbGFjZWQgYWZ0ZXIgdGhlIGluY2x1ZGVcXG4rIyBiZWNhdXNlIHNvbWUgb2YgdGhlbSBkZXJpdmUgZnJvbSBNYWtlZmlsZS5idWlsZHZhcnMgdmFsdWVzLlxcbitCUEZUT09MRElSIDo9ICQoVE9PTFNESVIpL2JwZi9icGZ0b29sXFxuK0hPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxcbitCUEZfVEFSR0VUX0VORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC0tdGFyZ2V0PWJwZmVsLC0tdGFyZ2V0PWJwZmViKVxcbitDTEFOR19DRkxBR1MgPSAkKENMQU5HX1NZU19JTkNMVURFUylcXG4gXFxuIE5PTl9DSEVDS19GRUFUX1RBUkdFVFMgOj0gY2xlYW4gZG9jcy1jbGVhbiBlbWl0X3Rlc3RzXFxuIENIRUNLX0ZFQVQgOj0gJChmaWx0ZXItb3V0ICQoTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyksJChvciAkKE1BS0VDTURHT0FMUyksIFxcXCJub25lXFxcIikpXFxuQEAgLTIxMywyMSArMTQzLDkgQEAgaWZlcSAoJChmZWF0dXJlLWxsdm0pLDEpXFxuIGVuZGlmXFxuIGVuZGlmXFxuIFxcbi1TQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcXG4tQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXFxuLUlOQ0xVREVfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2luY2x1ZGVcXG4tQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1IT1NUX0JVSUxEX0RJUlxcdFxcdDo9ICQoQlVJTERfRElSKS9ob3N0XFxuLUhPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xcbi1IT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChIT1NUX1NDUkFUQ0hfRElSKS9pbmNsdWRlXFxuLWVsc2VcXG4tSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUilcXG4tSE9TVF9TQ1JBVENIX0RJUlxcdDo9ICQoU0NSQVRDSF9ESVIpXFxuLUhPU1RfSU5DTFVERV9ESVJcXHQ6PSAkKElOQ0xVREVfRElSKVxcbi1lbmRpZlxcbi1IT1NUX0JQRk9CSiA6PSAkKEhPU1RfQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcXG4tUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcXG4rIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xcbiskKE9VVFBVVCkvaml0X2Rpc2FzbV9oZWxwZXJzLm86IENGTEFHUyArPSAkKExMVk1fQ0ZMQUdTKVxcbitcXG4gVk1MSU5VWF9CVEZfUEFUSFMgPz0gJChpZiAkKE8pLCQoTykvdm1saW51eClcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdCAgICAgJChpZiAkKEtCVUlMRF9PVVRQVVQpLCQoS0JVSUxEX09VVFBVVCkvdm1saW51eClcXHRcXFxcXFxuIFxcdFxcdCAgICAgLi4vLi4vLi4vLi4vdm1saW51eFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjQ2LDcgKzE2NCw3IEBAICQobm90ZGlyICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9LTU9EUylcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdCAkKFRFU1RfR0VOX1BST0dTX0VYVEVOREVEKSk6ICU6ICQoT1VUUFVUKS8lIDtcXG4gXFxuICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nXFxuLU1BS0VfRElSUyA6PSAkKHNvcnQgJChCVUlMRF9ESVIpL2xpYmJwZiAkKEhPU1RfQlVJTERfRElSKS9saWJicGZcXHRcXFxcXFxuK01BS0VfRElSUyA6PSAkKHNvcnQgJChPVVRQVVQpICQoQlVJTERfRElSKS9saWJicGYgJChIT1NUX0JVSUxEX0RJUikvbGliYnBmIFxcXFxcXG4gXFx0ICAgICAgICQoQlVJTERfRElSKS9icGZ0b29sICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcXHRcXHRcXFxcXFxuIFxcdCAgICAgICAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkc1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ICAgICAgICQoSU5DTFVERV9ESVIpKVxcbkBAIC0yNTgsOSArMTc2LDEyIEBAICQoT1VUUFVUKS8lLm86ICUuY1xcbiBcXHQkKGNhbGwgbXNnLENDLCwkQClcXG4gXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkKGZpbHRlciAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbiBcXG4rIyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7XFxuKyMgdGhleSBtdXN0IG5vdCByZWFjaCB0aGUgY2xhbmcvZ2NjIGNvbW1hbmQgbGluZSAoY2xhbmcgdHJlYXRzIGEgYmFyZSAuaFxcbisjIGFyZ3VtZW50IGFzIGEgcHJlY29tcGlsZWQtaGVhZGVyIGpvYiBhbmQgcmVmdXNlcyAtbykuXFxuICQoT1VUUFVUKS8lOiUuY1xcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuLVxcdCQoUSkkKExJTksuYykgJF4gJChMRExJQlMpIC1vICRAXFxuK1xcdCQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRAXFxuIFxcbiAjIExMVk0ncyBsZC5sbGQgZG9lc24ndCBzdXBwb3J0IGFsbCB0aGUgYXJjaGl0ZWN0dXJlcywgc28gdXNlIGl0IG9ubHkgb24geDg2XFxuIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKVxcbkBAIC0zMTMsMTcgKzIzNCw2IEBAICQoVEVTVF9LTU9EX1RBUkdFVFMpOiAkKGFkZHByZWZpeCB0ZXN0X2ttb2RzLywkKFRFU1RfS01PRFMpKVxcbiBcXHQkKGNhbGwgbXNnLE1PRCwsJEApXFxuIFxcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAtZiB0ZXN0X2ttb2RzLyQoQEYpIF07IHRoZW4gKWNwIHRlc3Rfa21vZHMvJChARikgJEAkKGlmICQoUEVSTUlTU0lWRSksOyBmaSlcXG4gXFxuLVxcbi1ERUZBVUxUX0JQRlRPT0wgOj0gJChIT1NUX1NDUkFUQ0hfRElSKS9zYmluL2JwZnRvb2xcXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbi1DUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbi1UUlVOTkVSX0JQRlRPT0wgOj0gJChDUk9TU19CUEZUT09MKVxcbi1VU0VfQk9PVFNUUkFQIDo9IFxcXCJcXFwiXFxuLWVsc2VcXG4tVFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKVxcbi1VU0VfQk9PVFNUUkFQIDo9IFxcXCJib290c3RyYXAvXFxcIlxcbi1lbmRpZlxcbi1cXG4gJChURVNUX0dFTl9QUk9HUykgJChURVNUX0dFTl9QUk9HU19FWFRFTkRFRCk6ICQoQlBGT0JKKVxcbiBcXG4gVEVTVElOR19IRUxQRVJTXFx0Oj0gJChPVVRQVVQpL3Rlc3RpbmdfaGVscGVycy5vXFxuQEAgLTMzOSwxMiArMjQ5LDMzIEBAICQoT1VUUFVUKS90ZXN0X3RjcG5vdGlmeV91c2VyOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUykgJChUUkFDRV9IRUxQXFxuICQoT1VUUFVUKS90ZXN0X3NvY2tfZmllbGRzOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUylcXG4gJChPVVRQVVQpL3Rlc3RfdGFnOiAkKFRFU1RJTkdfSEVMUEVSUylcXG4gJChPVVRQVVQpL3Rlc3RfbGlyY19tb2RlMl91c2VyOiAkKFRFU1RJTkdfSEVMUEVSUylcXG4tJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKVxcbi0kKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFRFU1RJTkdfSEVMUEVSUylcXG4rJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcXG4gJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6ICQoVEVTVElOR19IRUxQRVJTKSAkKENBUF9IRUxQRVJTKSAkKFVOUFJJVl9IRUxQRVJTKVxcbi0kKE9VVFBVVCkveHNrLm86ICQoQlBGT0JKKVxcbiBcXG4tQlBGVE9PTCA/PSAkKERFRkFVTFRfQlBGVE9PTClcXG4rIyBEZWZpbmVkIGFoZWFkIG9mIHRoZSBmaXJzdCBydWxlIHRoYXQgbGlzdHMgaXQgYXMgYSBwcmVyZXF1aXNpdGUuXFxuK1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcXG4rXFxuKyMgVGhlIHVzZXJzcGFjZSBvYmplY3RzIHRoZSBydW5uZXIgaW5zdGFuY2VzIGxpbmsgKFJVTk5FUl9PQkpTLCBzZWVcXG4rIyBNYWtlZmlsZS5idWlsZHZhcnMpIGFyZSBidWlsdCBoZXJlLCBvbmNlLCBzbyB0aGF0IG5vIHJ1bm5lciBzdWItbWFrZVxcbisjIGV2ZXIgd3JpdGVzIGEgZmlsZSB0aGlzIE1ha2VmaWxlIGFsc28gYnVpbGRzLlxcbisjXFxuKyMgJChUUlVOTkVSX0JQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXRcXG4rIyBpbnN0YWxscyBsaWJicGYncyBpbnRlcm5hbCBoZWFkZXJzIChicGYvaGFzaG1hcC5oLCBicGYvbGliYnBmX2ludGVybmFsLmgpXFxuKyMgaW50byAkKElOQ0xVREVfRElSKSAtIHRoZSBjcm9zcy1jb21waWxlZCBicGZ0b29sJ3Mgd2hlbiBjcm9zcy1jb21waWxpbmc7XFxuKyMgd2l0aG91dCBpdCwgdHJhY2VfaGVscGVycy5jIHJhY2VzIHRoZSBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cFxcbisjIHRoZSBzb3VyY2UtdHJlZSBjb3BpZXMgaW5zdGVhZC5cXG4rUlVOTkVSX09CSlMgOj0gJChzb3J0ICQoUlVOTkVSX09CSlMtdGVzdF9wcm9ncykgJChSVU5ORVJfT0JKUy10ZXN0X21hcHMpXFxcXFxcbitcXHRcXHQgICAgICAkKFJVTk5FUl9MSUJfT0JKUy10ZXN0X3Byb2dzKSlcXG4rJChSVU5ORVJfT0JKUyk6ICQoVkVSSUZZX1NJR19IRFIpICQoQlBGT0JKKSAkKFRSVU5ORVJfQlBGVE9PTClcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MubzogcHJvZ190ZXN0cy90ZXN0cy5oXFxuKyQoT1VUUFVUKS90ZXN0X21hcHMubzogbWFwX3Rlc3RzL3Rlc3RzLmhcXG4rXFxuKyMgZmluZF9iaXQuYyBpcyB0aGUgb25seSBydW5uZXIgc291cmNlIG91dHNpZGUgdGhpcyBkaXJlY3RvcnksXFxuKyMgc28gaXQgbmVlZHMgYSBydWxlIG9mIGl0cyBvd24uXFxuKyQoT1VUUFVUKS9maW5kX2JpdC5vOiAkKFRPT0xTRElSKS9saWIvZmluZF9iaXQuY1xcbitcXHQkKGNhbGwgbXNnLENDLCwkQClcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXFx1MDAzYyAkKExETElCUykgLW8gJEBcXG4rXFxuICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcXFxcXFxuIFxcdFxcdCAgICAkKEhPU1RfQlBGT0JKKSB8ICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcXG4gXFx0JChRKSQoTUFLRSkgJChzdWJtYWtlX2V4dHJhcykgIC1DICQoQlBGVE9PTERJUilcXHRcXHRcXHQgICAgICAgXFxcXFxcbkBAIC00MTIsNyArMzQzLDcgQEAgZW5kaWZcXG4gXFxuICMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXFxuICMgdGhlIHByZXZpb3VzIHZlcnNpb24uIFRoaXMgaGVscHMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcmUtYnVpbGRzIG9mXFxuLSMgJChUUlVOTkVSX0JQRl9PQkpTKVxcbisjIEJQRiBvYmplY3RzLlxcbiAkKElOQ0xVREVfRElSKS92bWxpbnV4Lmg6ICQoVk1MSU5VWF9CVEYpICQoQlBGVE9PTCkgfCAkKElOQ0xVREVfRElSKVxcbiBpZmVxICgkKFZNTElOVVhfSCksKVxcbiBcXHQkKGNhbGwgbXNnLEdFTiwsJEApXFxuQEAgLTQzNywzNzQgKzM2OCwxMiBAQCAkKFJFU09MVkVfQlRGSURTKTogJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkc1xcdFxcXFxcXG4gXFx0XFx0SE9TVFBLR19DT05GSUc9JyQoUEtHX0NPTkZJRyknIFxcXFxcXG4gXFx0XFx0T1VUUFVUPSQoSE9TVF9CVUlMRF9ESVIpL3Jlc29sdmVfYnRmaWRzLyBCUEZPQko9JChIT1NUX0JQRk9CSilcXG4gXFxuLSMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XFxuLSMgJy0tdGFyZ2V0PWJwZicuIFRoaXMgZml4ZXMgXFxcIm1pc3NpbmdcXFwiIGZpbGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy9kaXN0cm9zLFxcbi0jIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cXG4tI1xcbi0jIFVzZSAnLWlkaXJhZnRlcic6IERvbid0IGludGVyZmVyZSB3aXRoIGluY2x1ZGUgbWVjaGFuaWNzIGV4Y2VwdCB3aGVyZSB0aGVcXG4tIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxcbi1kZWZpbmUgZ2V0X3N5c19pbmNsdWRlc1xcbi0kKHNoZWxsICQoMSkgJCgyKSAtdiAtRSAtIFxcdTAwM2MvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXFxcXFxuLVxcdHwgc2VkIC1uICcvXFx1MDAzYy4uLlxcdTAwM2Ugc2VhcmNoIHN0YXJ0cyBoZXJlOi8sL0VuZCBvZiBzZWFyY2ggbGlzdC4veyBzfCBcXFxcKC8uKlxcXFwpfC1pZGlyYWZ0ZXIgXFxcXDF8cCB9JykgXFxcXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19yaXNjdl94bGVuPSVkIC1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzLCAkJDMpfScpIFxcXFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgJ19fbG9vbmdhcmNoX2dybGVuICcgfCBhd2sgJ3twcmludGYoXFxcIi1EX19CSVRTX1BFUl9MT05HPSVkXFxcIiwgJCQzKX0nKSBcXFxcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwIC1FICdNSVBTKEVMfEVCKXxfTUlQU19TWihQVFJ8TE9ORykgfF9NSVBTX1NJTSB8X0FCSShPMzJ8TjMyfDY0KSAnIHwgYXdrICd7cHJpbnRmKFxcXCItRCVzPSVzIFxcXCIsICQkMiwgJCQzKX0nKVxcbi1lbmRlZlxcbi1cXG4tIyBEZXRlcm1pbmUgdGFyZ2V0IGVuZGlhbm5lc3MuXFxuLUlTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgXFxcXFxcbi1cXHRcXHRcXHRncmVwICdkZWZpbmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18nKVxcbi1NRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLW1saXR0bGUtZW5kaWFuLC1tYmlnLWVuZGlhbilcXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcXG4tXFxuLWlmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXFxuLWVuZGlmXFxuLVxcbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcXG4tQlBGX0NGTEFHUyA9IC1nIC1XYWxsIC1XZXJyb3IgLURfX1RBUkdFVF9BUkNIXyQoU1JDQVJDSCkgJChNRU5ESUFOKVxcdFxcXFxcXG4tXFx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1JJChUT09MU0lOQ0RJUikgLUkkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZVxcdFxcdFxcXFxcXG4tXFx0ICAgICAtSSQoYWJzcGF0aCAkKE9VVFBVVCkvLi4vdXNyL2luY2x1ZGUpXFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1zdGQ9Z251MTFcXHRcXHQgXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHQgICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtV25vLW1pY3Jvc29mdC1hbm9uLXRhZ1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ICAgICAtZm1zLWV4dGVuc2lvbnNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgI1xcbi0jIFRPRE86IGVuYWJsZSBtZSAtV3NpZ24tY29tcGFyZVxcbi1cXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXFxuLVxcbi0kKE9VVFBVVCkvdGVzdF9sNGxiX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcXG4tXFxuLSQoT1VUUFVUKS9mbG93X2Rpc3NlY3Rvcl9sb2FkLm86IGZsb3dfZGlzc2VjdG9yX2xvYWQuaFxcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcbi1cXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIENsYW5nXFxuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXFxuLSMgJDIgLSBvdXRwdXQgLm8gZmlsZVxcbi0jICQzIC0gQ0ZMQUdTXFxuLSMgJDQgLSBiaW5hcnkgbmFtZVxcbi1kZWZpbmUgQ0xBTkdfQlBGX0JVSUxEX1JVTEVcXG4tXFx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12MyAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcXHUwMDNlXFx1MDAyNjIpKVxcbi1lbmRlZlxcbi0jIFNpbWlsYXIgdG8gQ0xBTkdfQlBGX0JVSUxEX1JVTEUsIGJ1dCB3aXRoIGRpc2FibGVkIGFsdTMyXFxuLWRlZmluZSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBTaW1pbGFyIHRvIENMQU5HX0JQRl9CVUlMRF9SVUxFLCBidXQgd2l0aCBjcHUtdjRcXG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csQ0xORy1CUEYsJDQsJDIpXFxuLVxcdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djQgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xcbi1kZWZpbmUgR0NDX0JQRl9CVUlMRF9SVUxFXFxuLVxcdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcXG4tXFx0JChRKSQoQlBGX0dDQykgJDMgLURCUEZfTk9fUFJFU0VSVkVfQUNDRVNTX0lOREVYIC1Xbm8tYXR0cmlidXRlcyAtTzIgLWMgJDEgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXFxcXG4tXFx0XFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4tZW5kZWZcXG4tXFxuLVNLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcXG4tXFxuLUxJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcXHRcXHRcXFxcXFxuLVxcdFxcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuLVxcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuLVxcbi1MU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXFx0XFxcXFxcbi1cXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1xcdFxcdFxcdFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXFxcXG4tXFx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXFxuLVxcbi1MU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xcbi1cXG4tIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXFxuLUxTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXFxcXG4tXFx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYyB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXFxuLVNLRUxfQkxBQ0tMSVNUICs9ICQkKExTS0VMUykgJCQoTFNLRUxTX1NJR05FRClcXG4tXFxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cXG4tbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xcbi1saW5rZWRfdmFycy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfdmFyczEuYnBmLm8gbGlua2VkX3ZhcnMyLmJwZi5vXFxuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cXG4tIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcXG4tIyBidXQgdGhhdCdzIGNyZWF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiB0aGUgc2tlbC5oIGdlbmVyYXRpb24uXFxuLXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm9cXG4tdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXFxuLXRlc3RfdXNkdC5za2VsLmgtZGVwcyA6PSB0ZXN0X3VzZHQuYnBmLm8gdGVzdF91c2R0X211bHRpc3BlYy5icGYub1xcbi14c2tfeGRwX3Byb2dzLnNrZWwuaC1kZXBzIDo9IHhza194ZHBfcHJvZ3MuYnBmLm9cXG4teGRwX2h3X21ldGFkYXRhLnNrZWwuaC1kZXBzIDo9IHhkcF9od19tZXRhZGF0YS5icGYub1xcbi14ZHBfZmVhdHVyZXMuc2tlbC5oLWRlcHMgOj0geGRwX2ZlYXR1cmVzLmJwZi5vXFxuLXRyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi10cmFjaW5nX211bHRpX21vZHVsZS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaF9tb2R1bGUuYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi10cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xcbi10cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuLVxcbi1MSU5LRURfQlBGX09CSlMgOj0gJChmb3JlYWNoIHNrZWwsJChMSU5LRURfU0tFTFMpLCQoJChza2VsKS1kZXBzKSlcXG4tTElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKVxcbi1cXG4tSEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaClcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVxcdFxcXFxcXG4tXFx0XFx0XFx0JChhZGRwcmVmaXggJChCUEZESVIpLyxcXHRicGZfY29yZV9yZWFkLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0YnBmX2hlbHBlcnMuaFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcXG4tXFxuLSMgU2V0IHVwIGV4dHJhIFRSVU5ORVJfWFhYIFxcXCJ0ZW1wb3JhcnlcXFwiIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxcbi0jICRldmFsKCkpIGFuZCBwYXNzIGNvbnRyb2wgdG8gREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLlxcbi0jIFBhcmFtZXRlcnM6XFxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxcbi0jICQyIC0gdGVzdCBydW5uZXIgZXh0cmEgXFxcImZsYXZvclxcXCIgKGUuZy4sIG5vX2FsdTMyLCBjcHV2NCwgYnBmX2djYywgZXRjKVxcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSXFxuLVxcbi1MU0tFTF9TSUdOIDo9IC1TIC1rICQoUFJJVkFURV9LRVkpIC1pICQoVkVSSUZJQ0FUSU9OX0NFUlQpXFxuLVRSVU5ORVJfT1VUUFVUIDo9ICQoT1VUUFVUKSQoaWYgJDIsLykkMlxcbi1UUlVOTkVSX0JJTkFSWSA6PSAkMSQoaWYgJDIsLSkkMlxcbi1UUlVOTkVSX1RFU1RfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vLFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0ICQkKG5vdGRpciAkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMpKSlcXG4tVFJVTk5FUl9FWFRSQV9PQkpTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5vLFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0XFx0ICQkKGZpbHRlciAlLmMsJChUUlVOTkVSX0VYVFJBX1NPVVJDRVMpKSlcXG4tVFJVTk5FUl9MSUJfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9MSUJfU09VUkNFUykpKVxcbi1UUlVOTkVSX0VYVFJBX0hEUlMgOj0gJCQoZmlsdGVyICUuaCwkKFRSVU5ORVJfRVhUUkFfU09VUkNFUykpXFxuLVRSVU5ORVJfVEVTVFNfSERSIDo9ICQoVFJVTk5FUl9URVNUU19ESVIpL3Rlc3RzLmhcXG4tVFJVTk5FUl9CUEZfU1JDUyA6PSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouYykpXFxuLVRSVU5ORVJfQlBGX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLmJwZi5vLCAkJChUUlVOTkVSX0JQRl9TUkNTKSlcXG4tVFJVTk5FUl9CUEZfU0tFTFMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnNrZWwuaCxcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdCAkJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSxcXFxcXFxuLVxcdFxcdFxcdFxcdFxcdCAgICAgICAkJChUUlVOTkVSX0JQRl9TUkNTKSkpXFxuLVRSVU5ORVJfQlBGX0xTS0VMUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubHNrZWwuaCwgJCQoTFNLRUxTKSAkJChMU0tFTFNfRVhUUkEpKVxcbi1UUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQgOj0gJCQoYWRkcHJlZml4ICQkKFRSVU5ORVJfT1VUUFVUKS8sJChMSU5LRURfU0tFTFMpKVxcbi1UUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFNfU0lHTkVEKSlcXG4tVEVTVF9HRU5fRklMRVMgKz0gJCQoVFJVTk5FUl9CUEZfT0JKUylcXG4tXFxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxcbi0kJChldmFsICQkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTLCQxLCQyKSlcXG4tXFxuLWVuZGVmXFxuLVxcbi0jIFVzaW5nIFRSVU5ORVJfWFhYIHZhcmlhYmxlcywgcHJvdmlkZWQgYnkgY2FsbGVycyBvZiBERUZJTkVfVEVTVF9SVU5ORVIgYW5kXFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxcbi0jICQxIC0gdGVzdCBydW5uZXIgYmFzZSBiaW5hcnkgbmFtZSAoZS5nLiwgdGVzdF9wcm9ncylcXG4tIyAkMiAtIHRlc3QgcnVubmVyIGV4dHJhIFxcXCJmbGF2b3JcXFwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0YylcXG4tZGVmaW5lIERFRklORV9URVNUX1JVTk5FUl9SVUxFU1xcbi1cXG4tIyBQZXJtaXNzaXZlIGJ1aWxkIGJlaGF2aW91ciAoc2tpcC1vbi1mYWlsdXJlIGNvbXBpbGUsIHBhcnRpYWwtbGluaykgb25seVxcbi0jIGFwcGxpZXMgdG8gdGVzdF9wcm9ncyBhbmQgaXRzIGZsYXZvcnM7IHJ1bm5lcnMgdGhhdCB1c2Ugc3Ryb25nIGNyb3NzLW9iamVjdFxcbi0jIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXFxuLSMgVGhlIGNoZWNrIGlzIGlubGluZWQgcGVyLXJ1bm5lciBzbyAkMSBpcyBzdWJzdGl0dXRlZCBhdCAkKGNhbGwpIHRpbWUgYW5kXFxuLSMgdGhlIHJlc3VsdCBpcyBiYWtlZCBpbnRvIGVhY2ggcnVsZSdzIHJlY2lwZS5cXG4tXFxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXFxuLSQoVFJVTk5FUl9PVVRQVVQpLWRpciA6PSB5XFxuLSQoVFJVTk5FUl9PVVRQVVQpOlxcbi1cXHQkJChjYWxsIG1zZyxNS0RJUiwsJCRAKVxcbi1cXHQkKFEpbWtkaXIgLXAgJCRAXFxuLWVuZGlmXFxuLVxcbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxcbi0jIGlucHV0L291dHB1dCBkaXJlY3RvcnkgY29tYmluYXRpb25cXG4taWZlcSAoJCgkKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyksKVxcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XFxuLSQoVFJVTk5FUl9CUEZfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm86XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICQoVFJVTk5FUl9CUEZfUFJPR1NfRElSKS8lLmNcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAkJChJTkNMVURFX0RJUikvdm1saW51eC5oXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICQoSEVBREVSU19GT1JfQlBGX09CSlMpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgIHwgJChUUlVOTkVSX09VVFBVVCkgJCQoQlBGT0JKKVxcbi1cXHQkJChjYWxsICQoVFJVTk5FUl9CUEZfQlVJTERfUlVMRSksJCRcXHUwMDNjLCQkQCxcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdFxcdFxcdCAgJChUUlVOTkVSX0JQRl9DRkxBR1MpICAgICAgICAgXFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICQkKCQkXFx1MDAzYy1DRkxBR1MpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHRcXHRcXHQgICQkKCQkXFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxcbi1cXG4tJChUUlVOTkVSX0JQRl9TS0VMUyk6ICUuc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFxcdTAwM2MgXTsgdGhlblxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQCAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCk7XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdFxcdGV4aXQgMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGZpOylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyOyBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJFxcdTAwM2MgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5saW5rZWQxLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5saW5rZWQzLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRkaWZmICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQkKFxcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89KSkgXFx1MDAzZSAkJEAgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcXHUwMDNjOi5icGYubz0pKSBcXHUwMDNlICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkKGlmICQoUEVSTUlTU0lWRSksfHwgeyBcXFxcXFxuLVxcdFxcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0fSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRybSAtZiAkJChcXHUwMDNjOi5vPS5saW5rZWQxLm8pICQkKFxcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGlua2VkMy5vKVxcbi1cXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFxuLVxcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXFx1MDAzYyBdOyB0aGVuXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHRcXHRleGl0IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRmaTspXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MjsgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXFx1MDAzYyBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRkaWZmICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFxcdTAwMjZcXHUwMDI2XFx0XFx0XFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gLUwgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89X2xza2VsKSkgXFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAOyBcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0fSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRybSAtZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxcbi1cXG4tJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKTogJS5sc2tlbC5oOiAlLmJwZi5vICQoQlBGVE9PTCkgfCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFxcdTAwM2MgXTsgdGhlblxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0JCQoUk0pICQkQDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0XFx0ZXhpdCAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0Zmk7KVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0cHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKSAoc2lnbmVkKV0gJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJFxcdTAwM2MgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBvYmplY3QgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDEubykgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQzLm8pICQkKFxcdTAwM2M6Lm89LmxsaW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBcXHUwMDI2XFx1MDAyNlxcdFxcdFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXFx1MDAzYzouYnBmLm89X2xza2VsKSkgXFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAOyBcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0fSkgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbi1cXHRybSAtZiAkJChcXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxcbi1cXG4tJChMSU5LRURfQlBGX09CSlMpOiAlOiAkKFRSVU5ORVJfT1VUUFVUKS8lXFxuLVxcbi0jIC5TRUNPTkRFWFBBTlNJT04gaGVyZSBhbGxvd3MgdG8gY29ycmVjdGx5IGV4cGFuZCAlLWRlcHMgdmFyaWFibGVzIGFzIHByZXJlcXVpc2l0ZXNcXG4tLlNFQ09OREVYUEFOU0lPTjpcXG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFxuLVxcdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksZm9yIGYgaW4gJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpOyBkbyBcXFxcXFxuLVxcdFxcdGlmIFsgISAtZiAkJCQkZiBdOyB0aGVuXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0XFx0XFx0ZXhpdCAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0Zmk7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRkb25lOylcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnTElOSy1CUEYnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJChAOi5za2VsLmg9LmJwZi5vKSknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoYWRkcHJlZml4ICQoVFJVTk5FUl9PVVRQVVQpLywkJCgkJChARiktZGVwcykpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQxLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0ZGlmZiAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIFxcdTAwMjZcXHUwMDI2XFx0XFxcXFxcbi1cXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnWyQoVFJVTk5FUl9CSU5BUlkpXSAkJChub3RkaXIgJCRAKScgMVxcdTAwM2VcXHUwMDI2MiBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuLVxcdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFxcdTAwM2UgJCRAIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4tXFx0JCQoQlBGVE9PTCkgZ2VuIHN1YnNrZWxldG9uICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChAOi5za2VsLmg9KSkgXFx1MDAzZSAkJChAOi5za2VsLmg9LnN1YnNrZWwuaCkgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcXFxcbi1cXHRcXHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcXHUwMDNlXFx1MDAyNjI7IFxcXFxcXG4tXFx0fSkgXFx1MDAyNlxcdTAwMjZcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHJtIC1mICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pXFxuLVxcbi0jIFdoZW4gdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhICUuZCBmaWxlLCBvbmx5IHNrZWwgYmFzZW5hbWVzIChub3RcXG4tIyBmdWxsIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIGNvcnJlc3BvbmRpbmcgJS5vXFxuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xcbi0jIGluIFRSVU5ORVJfT1VUUFVULCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXFxuLXZwYXRoICUuc2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXFxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxcbi12cGF0aCAlLnN1YnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxcbi1cXG4tZW5kaWZcXG4tXFxuLSMgZW5zdXJlIHdlIHNldCB1cCB0ZXN0cy5oIGhlYWRlciBnZW5lcmF0aW9uIHJ1bGUganVzdCBvbmNlXFxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXFxuLSQoVFJVTk5FUl9URVNUU19ESVIpLXRlc3RzLWhkciA6PSB5XFxuLSQoVFJVTk5FUl9URVNUU19IRFIpOiAkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmNcXG4tXFx0JCQoY2FsbCBtc2csVEVTVC1IRFIsJChUUlVOTkVSX0JJTkFSWSksJCRAKVxcbi1cXHQkJChzaGVsbCAoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICBzZWQgLW4gLUUgJ3MvXnZvaWQgKHNlcmlhbF8pP3Rlc3RfKFthLXpBLVowLTlfXSspXFxcXCgodm9pZCk/XFxcXCkuKi9ERUZJTkVfVEVTVChcXFxcMikvcCdcXHRcXFxcXFxuLVxcdFxcdFxcdCQoVFJVTk5FUl9URVNUU19ESVIpLyouYyB8IHNvcnQgO1xcdFxcXFxcXG4tXFx0XFx0ICkgXFx1MDAzZSAkJEApXFxuLWVuZGlmXFxuLVxcbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vXFxuLSQoVFJVTk5FUl9PVVRQVVQpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcXG4tXFxuLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcXG4tIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcXG4tJChUUlVOTkVSX1RFU1RfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5vOlxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpLyUudGVzdC5kXFxuLVxcdCQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKShjZCAkJChARCkgXFx1MDAyNlxcdTAwMjYgJCQoQ0MpIC1JLiAkJChDRkxBR1MpIC1NTUQgLU1UICQkQCAtYyAkKENVUkRJUikvJCRcXHUwMDNjICQkKExETElCUykgLW8gJCQoQEYpKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJCRAOyBwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtVEVTVCcgJyQkKG5vdGRpciAkJEApJyAxXFx1MDAzZVxcdTAwMjYyKSkpXFxuLVxcdCQkKGlmICQkKFRFU1RfTkVFRFNfQlRGSURTKSxcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCQoUSlpZiBbIC1mICQkQCBdOyB0aGVuXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQkKGlmICQoZmlsdGVyIDEsJChWKSksdHJ1ZSxwcmludGYgJyAgJS04cyVzICVzXFxcXG4nIFxcXCJCVEZJRFNcXFwiIFxcXCIgWyQoVFJVTk5FUl9CSU5BUlkpXVxcXCIgXFxcIiQkKG5vdGRpciAkJEApXFxcIik7IFxcXFxcXG4tXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1xcdFxcXFxcXG4tXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1xcdFxcdFxcXFxcXG4tXFx0XFx0ZmkpXFxuLVxcbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9TS0VMUylcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAkKFRSVU5ORVJfQlBGX0xTS0VMUylcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAkKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpXFxuLVxcbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXFxuLWluY2x1ZGUgJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKSlcXG4tZW5kaWZcXG4tXFxuLSMgYWRkIHBlciBleHRyYSBvYmogQ0ZHTEFHUyBkZWZpbml0aW9uc1xcbi0kKGZvcmVhY2ggTiwkKHBhdHN1YnN0ICQoVFJVTk5FUl9PVVRQVVQpLyUubywlLCQoVFJVTk5FUl9FWFRSQV9PQkpTKSksXFx0XFxcXFxcbi1cXHQkKGV2YWwgJChUUlVOTkVSX09VVFBVVCkvJChOKS5vOiBDRkxBR1MgKz0gJCgkKE4pLmMtQ0ZMQUdTKSkpXFxuLVxcbi0kKFRSVU5ORVJfRVhUUkFfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzpcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAlLmNcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFRSVU5ORVJfRVhUUkFfSERSUylcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKFZFUklGWV9TSUdfSERSKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoVFJVTk5FUl9URVNUU19IRFIpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFxuLVxcdCQkKGNhbGwgbXNnLEVYVC1PQkosJChUUlVOTkVSX0JJTkFSWSksJCRAKVxcbi1cXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcXHUwMDNjICQkKExETElCUykgLW8gJCRAXFxuLVxcbi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuY1xcbi1cXHQkJChjYWxsIG1zZyxMSUItT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcXG4tXFx0JChRKSQkKENDKSAkJChDRkxBR1MpIC1jICQkXFx1MDAzYyAkJChMRExJQlMpIC1vICQkQFxcbi1cXG4tIyBub24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhciwgd2VcXG4tIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXFxuLSQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhczogJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSB8ICQoVFJVTk5FUl9PVVRQVVQpXFxuLWlmbmVxICgkMjokKE9VVFBVVCksOiQoc2hlbGwgcHdkKSlcXG4tXFx0JCQoY2FsbCBtc2csRVhULUNPUFksJChUUlVOTkVSX0JJTkFSWSksJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSlcXG4tXFx0JChRKXJzeW5jIC1hcSAkKGlmICQoUEVSTUlTU0lWRSksLS1pZ25vcmUtbWlzc2luZy1hcmdzKSAkJF4gJChUUlVOTkVSX09VVFBVVCkvXFxuLWVuZGlmXFxuLVxcbi0jIHNvbWUgWC50ZXN0Lm8gZmlsZXMgaGF2ZSBydW50aW1lIGRlcGVuZGVuY2llcyBvbiBZLmJwZi5vIGZpbGVzXFxuLSQoT1VUUFVUKS8kKFRSVU5ORVJfQklOQVJZKTogfCAkKFRSVU5ORVJfQlBGX09CSlMpXFxuLVxcbi0kKE9VVFBVVCkvJChUUlVOTkVSX0JJTkFSWSk6ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncyUsJDEpLCQoaWYgJChQRVJNSVNTSVZFKSwkJCh3aWxkY2FyZCAkKFRSVU5ORVJfVEVTVF9PQkpTKSksJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKVxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKFRSVU5ORVJfRVhUUkFfT0JKUykgJCQoQlBGT0JKKVxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKFRSVU5ORVJfTElCX09CSlMpXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgICAgICQoVFJVTk5FUl9CUEZUT09MKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0ICAgICAkKE9VVFBVVCkvdmVyaXN0YXRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgfCAkKFRSVU5ORVJfQklOQVJZKS1leHRyYXNcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCAgICAgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQoVFJVTk5FUl9URVNUX09CSlMpKSlcXG4tXFx0JCQoY2FsbCBtc2csQklOQVJZLCwkJEApXFxuLVxcdCQoUSkkJChDQykgJCQoQ0ZMQUdTKSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQoZmlsdGVyICUuYSAlLm8sJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpICQkKGZpbHRlci1vdXQgJChUUlVOTkVSX1RFU1RfT0JKUyksJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSksJCQoZmlsdGVyICUuYSAlLm8sJCReKSkgJCQoTERMSUJTKSAkJChMTFZNX0xETElCUykgJCQoTERGTEFHUykgJCQoTExWTV9MREZMQUdTKSAtbyAkJEBcXG4tXFx0JChRKWxuIC1zZiAkKGlmICQyLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcXFxcbi1cXHRcXHQgICAkKE9VVFBVVCkvJChpZiAkMiwkMi8pYnBmdG9vbFxcbi1cXG4tZW5kZWZcXG4tXFxuLVZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2hcXG4tVkVSSUZZX1NJR19IRFIgOj0gdmVyaWZpY2F0aW9uX2NlcnQuaFxcbi1WRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcXG4tUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxcbi1cXG4tJChWRVJJRklDQVRJT05fQ0VSVCkgJChQUklWQVRFX0tFWSk6ICQoVkVSSUZZX1NJR19TRVRVUClcXG4rIyBPbmUgZ2Vua2V5IHJ1biBwcm9kdWNlcyBib3RoIGZpbGVzLiBBIHBsYWluIHR3by10YXJnZXQgcnVsZSBpcyBub3RcXG4rIyBncm91cGVkIC0gaWYgYm90aCBmaWxlcyBhcmUgc3RhbGUgbWFrZSB3b3VsZCBydW4gZ2Vua2V5IHR3aWNlLCB1bmRlclxcbisjIC1qIGNvbmN1cnJlbnRseSwgYW5kIHRoZSBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm1cXG4rIyBpcyBpbXBsaWNpdGx5IGdyb3VwZWQgZXZlbiB3aXRoIG1ha2UgXFx1MDAzYyA0LjMuIFRoZSBzdGVtIG9ubHkgc3RhbmRzIGluXFxuKyMgZm9yICdzaWduaW5nJyBzbyB0aGF0IG5vIG90aGVyIC5wZW0vLmRlciB1bmRlciAkKEJVSUxEX0RJUikgbWF0Y2hlcy5cXG4rJChCVUlMRF9ESVIpLyVfa2V5LnBlbSAkKEJVSUxEX0RJUikvJV9rZXkuZGVyOiAkKFZFUklGWV9TSUdfU0VUVVApXFxuIFxcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcXG4gXFx0JChRKSQoVkVSSUZZX1NJR19TRVRVUCkgZ2Vua2V5ICQoQlVJTERfRElSKVxcbiBcXG5AQCAtODMzLDcgKzQwMiw2IEBAIExJQkFSRU5BX0NPTU1PTl9ERVBTIDo9ICQod2lsZGNhcmQgbGliYXJlbmEvTWFrZWZpbGVcXHRcXHRcXFxcXFxuIExJQkFSRU5BX0JQRl9ERVBTIDo9ICQoTElCQVJFTkFfQ09NTU9OX0RFUFMpICQod2lsZGNhcmQgbGliYXJlbmEvc2VsZnRlc3RzLyopXFxuIExJQkFSRU5BX0JFTkNIX0JQRl9ERVBTIDo9ICQoTElCQVJFTkFfQ09NTU9OX0RFUFMpICQod2lsZGNhcmQgbGliYXJlbmEvYmVuY2hzLyopXFxuIFxcbi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxcbiBMSUJBUkVOQV9CRU5DSF9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hX2JlbmNoLnNrZWwuaFxcbiBcXG4gJChMSUJBUkVOQV9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxcbkBAIC04NDMsOTUgKzQxMSwxMjYgQEAgJChMSUJBUkVOQV9CRU5DSF9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JFTkNIX0JQRl9cXG4gXFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgYmVuY2htYXJrcyAkKExJQkFSRU5BX01BS0VfQVJHUylcXG4gXFxuIGlmbmVxICgkKENMQU5HX0hBU19BUkVOQV9BU0FOKSwpXFxuLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxcbi1DRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cXG4gXFxuICQoTElCQVJFTkFfQVNBTl9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxcbiBcXHQrJChNQUtFKSAtQyBsaWJhcmVuYSBsaWJhcmVuYV9hc2FuLnNrZWwuaCAkKExJQkFSRU5BX01BS0VfQVJHUylcXG4gZW5kaWZcXG4gXFxuLSMgRGVmaW5lIHRlc3RfcHJvZ3MgdGVzdCBydW5uZXIuXFxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHNcXG4tVFJVTk5FUl9CUEZfUFJPR1NfRElSIDo9IHByb2dzXFxuLVRSVU5ORVJfRVhUUkFfU09VUkNFUyA6PSB0ZXN0X3Byb2dzLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBjZ3JvdXBfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgdHJhY2VfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgbmV0d29ya19oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCB0ZXN0aW5nX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IGJ0Zl9oZWxwZXJzLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBjYXBfaGVscGVycy5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgdW5wcml2X2hlbHBlcnMuYyBcXHRcXFxcXFxuLVxcdFxcdFxcdCBzeXNjdGxfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgbmV0bGlua19oZWxwZXJzLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCBqaXRfZGlzYXNtX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IGlvX2hlbHBlcnMuY1xcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IHRlc3RfbG9hZGVyLmNcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCB4c2suY1xcdFxcdFxcdFxcXFxcXG4tXFx0XFx0XFx0IGRpc2FzbS5jXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgZGlzYXNtX2hlbHBlcnMuY1xcdFxcXFxcXG4tXFx0XFx0XFx0IGpzb25fd3JpdGVyLmMgXFx0XFx0XFxcXFxcbi1cXHRcXHRcXHQgJChWRVJJRllfU0lHX0hEUilcXHRcXHRcXFxcXFxuLVxcdFxcdFxcdCBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcXHRcXFxcXFxuLVxcdFxcdFxcdCBpcF9jaGVja19kZWZyYWdfZnJhZ3MuaFxcdFxcXFxcXG4tXFx0XFx0XFx0IGJwZnRvb2xfaGVscGVycy5jXFx0XFxcXFxcbi1cXHRcXHRcXHQgdXNkdF8xLmMgdXNkdF8yLmNcXHRcXFxcXFxuLVxcdFxcdFxcdCAkKExJQkFSRU5BX1NLRUwpXFx0XFxcXFxcbi1cXHRcXHRcXHQgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICBpbWFfc2V0dXAuc2ggXFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRcXHQgICAgICAgJChWRVJJRllfU0lHX1NFVFVQKVxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0XFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlXyouYylcXHRcXHRcXFxcXFxuLVxcdFxcdCAgICAgICAkKHdpbGRjYXJkIHByb2dzLyouYnBmLm8pXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncykpXFxuLVxcbi0jIERlZmluZSB0ZXN0X3Byb2dzLW5vX2FsdTMyIHRlc3QgcnVubmVyLlxcbi1UUlVOTkVSX0JQRl9CVUlMRF9SVUxFIDo9IENMQU5HX05PQUxVMzJfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpXFxuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3Msbm9fYWx1MzIpKVxcbi1cXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1jcHV2NCB0ZXN0IHJ1bm5lci5cXG4rIyBHZW5lcmF0ZWQgdGVzdCBsaXN0IGhlYWRlcnNcXG4rXFxuK2RlZmluZSBnZW5fdGVzdHNfaGRyXFxuK1xcdCQoY2FsbCBtc2csVEVTVC1IRFIsLCRAKVxcbitcXHQkKFEpKGVjaG8gJy8qIEdlbmVyYXRlZCBoZWFkZXIsIGRvIG5vdCBlZGl0ICovJztcXHRcXHRcXFxcXFxuK1xcdFxcdCAgc2VkIC1uIC1FICdzL152b2lkIChzZXJpYWxfKT90ZXN0XyhbYS16QS1aMC05X10rKVxcXFwoKHZvaWQpP1xcXFwpLiovREVGSU5FX1RFU1QoXFxcXDIpL3AnXFx0XFxcXFxcbitcXHRcXHQkKEBEKS8qLmMgfCBzb3J0KSBcXHUwMDNlICRAXFxuK2VuZGVmXFxuK1xcbitwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXFxuK1xcdCQoZ2VuX3Rlc3RzX2hkcilcXG4rXFxuK21hcF90ZXN0cy90ZXN0cy5oOiAkKHdpbGRjYXJkIG1hcF90ZXN0cy8qLmMpXFxuK1xcdCQoZ2VuX3Rlc3RzX2hkcilcXG4rXFxuKyMgVGVzdCBydW5uZXIgaW5zdGFuY2VzLCBvbmUgc3ViLW1ha2UgZWFjaCAoc2VlIE1ha2VmaWxlLnJ1bm5lcikuXFxuK1xcbisjIFRoZSBMTFZNIGZlYXR1cmUtcHJvYmUgcmVzdWx0cyBhbmQgVEVTVF9LTU9EUyBhcmUgZXhwb3J0ZWRcXG4rIyB0byB0aGUgcnVubmVyIHN1Yi1tYWtlcy4gQ0MgaXMgcGFzc2VkIGV4cGxpY2l0bHkgaW5zdGVhZDogZXhwb3J0aW5nIGl0XFxuKyMgd291bGQgYWxzbyBsZWFrIGxpYi5taydzIENDIGludG8gdGhlIGxpYmJwZiBzdWItYnVpbGQsIHdoaWNoIGNvbXB1dGVzXFxuKyMgaXRzIG93bi4gKCdleHBvcnQgTkFNRScgb24gYW4gdW5kZWZpbmVkXFxuKyMgdmFyaWFibGUgY3JlYXRlcyBhbiBlbXB0eSBvbmUsIHNvIHRoZXNlIHN0YXkgYmVsb3cgdGhlIGRlZmluaXRpb25zLilcXG4rZXhwb3J0IExMVk1fTERMSUJTIExMVk1fTERGTEFHUyBURVNUX0tNT0RTXFxuK2V4cG9ydCBJTkhFUklURURfQ0ZMQUdTIElOSEVSSVRFRF9MREZMQUdTXFxuK1xcbitSVU5ORVJfTUFLRSA6PSAkKE1BS0UpIC1mIE1ha2VmaWxlLnJ1bm5lciBPVVRQVVQ9JChPVVRQVVQpIENDPSckKENDKSdcXHRcXFxcXFxuK1xcdCAgICAgICBDTEFORz0nJChDTEFORyknXFxuK1xcbisjIEV2ZXJ5dGhpbmcgYSBydW5uZXIgaW5zdGFuY2UgcmVmZXJlbmNlcyBidXQgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQuXFxuK1JVTk5FUl9QUkVSRVFTIDo9ICQoSU5DTFVERV9ESVIpL3ZtbGludXguaCAkKEJQRk9CSikgJChCUEZUT09MKVxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3ZlcmlzdGF0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXFx0XFxcXFxcbitcXHRcXHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFx0XFx0XFxcXFxcbitcXHRcXHQgIHByb2dfdGVzdHMvdGVzdHMuaCBtYXBfdGVzdHMvdGVzdHMuaFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKFJVTk5FUl9PQkpTKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAkKE9VVFBVVCkvdXJhbmRvbV9yZWFkICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cXHRcXFxcXFxuK1xcdFxcdCAgJChPVVRQVVQpL3hkcF9zeW5wcm94eSAkKE9VVFBVVCkvc2lnbi1maWxlXFx0XFx0XFxcXFxcbitcXHRcXHQgICQoT1VUUFVUKS91cHJvYmVfbXVsdGkgJChURVNUX0tNT0RfVEFSR0VUUylcXG4rXFxuKyMgVGhlIG1haW4gTWFrZWZpbGUgY2Fubm90IHRlbGwgd2hldGhlciAkKE9VVFBVVCkvdGVzdF9wcm9ncyBpcyBzdGFsZSAtXFxuKyMgb25seSB0aGUgcnVubmVyIHN1Yi1tYWtlIGtub3dzIGl0cyBmdWxsIGRlcGVuZGVuY3kgZ3JhcGguIEZPUkNFIG1ha2VzXFxuKyMgdGhlIGRlbGVnYXRpbmcgcnVsZXMgYmVsb3cgYWx3YXlzIHJ1bjsgdGhlaXIgZGVwZW5kZW50cyBzdGlsbCByZWJ1aWxkXFxuKyMgb24gbXRpbWUgb25seS5cXG4rRk9SQ0U6XFxuK1xcbisjIFRoZSBkZWZhdWx0IGZsYXZvcidzIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgYXJlIGNvbnN1bWVkIGhlcmUgYXNcXG4rIyB3ZWxsIGFzIGluc2lkZSB0aGUgcnVubmVyIHN1Yi1tYWtlczogYmVuY2gsIHhza3hjZWl2ZXIsIHhkcF8qIGFuZFxcbisjIHRlc3RfY3BwIGRlcGVuZCBvbiBpbmRpdmlkdWFsIHNrZWxldG9ucywgYW5kIGxpYi5taydzXFxuKyMgaW5zdGFsbCBydWxlIGNvcGllcyB0aGUgQlBGIG9iamVjdHMuIEluc3RhbnRpYXRlIHRoZSBzaGFyZWQgcnVsZXNcXG4rIyAoTWFrZWZpbGUuc2tlbCkgZm9yIHRoZSBkZWZhdWx0IGZsYXZvciwgc28gdGhvc2UgY29uc3VtZXJzIGRlcGVuZCBvblxcbisjIGV4YWN0bHkgdGhlIGZpbGVzIHRoZXkgdXNlOyB0aGUgdW5mbGF2b3JlZCBydW5uZXJzJyBkZWxlZ2F0aW9uIHJ1bGVzXFxuKyMgYmVsb3cgbGlzdCB0aGUgd2hvbGUgc2V0IGFzIHByZXJlcXVpc2l0ZXMsIHNvIHRob3NlIHN1Yi1tYWtlcyBmaW5kIHRoZVxcbisjIGZpbGVzIHRoaXMgTWFrZWZpbGUgb3ducyB1cCB0byBkYXRlLlxcbitSRElSIDo9ICQoT1VUUFVUKVxcbitGTEFWT1IgOj1cXG4rQklOQVJZIDo9IHRlc3RfcHJvZ3NcXG4rQlBGX0NDIDo9ICQoQ0xBTkcpXFxuK0JQRl9DQ19NU0cgOj0gQ0xORy1CUEZcXG4rQlBGX1NZU19JTkNMVURFUyA6PSAkKENMQU5HX1NZU19JTkNMVURFUylcXG4rQlBGX0NDX0ZMQUdTIDo9IC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12M1xcbitCUEZfREVGSU5FUyA6PSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuK2luY2x1ZGUgTWFrZWZpbGUuc2tlbFxcbitcXG4rREVGQVVMVF9SVU5ORVJfQVJHUyA6PSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9IFRFU1RTX0RJUj1wcm9nX3Rlc3RzXFx0XFxcXFxcbitcXHRCUEZfQ0M9JyQoQlBGX0NDKScgQlBGX0NDX01TRz0kKEJQRl9DQ19NU0cpXFx0XFx0XFx0XFxcXFxcbitcXHRCUEZfU1lTX0lOQ0xVREVTPSckKEJQRl9TWVNfSU5DTFVERVMpJ1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0QlBGX0NDX0ZMQUdTPSckKEJQRl9DQ19GTEFHUyknIEJQRl9ERUZJTkVTPSQoQlBGX0RFRklORVMpXFxuK1xcbiskKE9VVFBVVCkvdGVzdF9wcm9nczogJChSVU5ORVJfUFJFUkVRUykgJChCUEZfT0JKUykgJChBTExfU0tFTFMpIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgJChERUZBVUxUX1JVTk5FUl9BUkdTKVxcbitcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXFxuK1xcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPW5vX2FsdTMyIFRFU1RTX0RJUj1wcm9nX3Rlc3RzIFxcXFxcXG4rXFx0XFx0QlBGX0NDPSckKENMQU5HKScgQlBGX0NDX01TRz1DTE5HLUJQRiBCUEZfU1lTX0lOQ0xVREVTPSckKENMQU5HX1NZU19JTkNMVURFUyknXFx0XFxcXFxcbitcXHRcXHRCUEZfQ0NfRkxBR1M9Jy1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12MidcXG4rXFxuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQ1BVVjRfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxjcHV2NCkpXFxuKyQoT1VUUFVUKS90ZXN0X3Byb2dzLWNwdXY0OiAkKFJVTk5FUl9QUkVSRVFTKSBGT1JDRVxcbitcXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1jcHV2NCBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9DQz0nJChDTEFORyknIEJQRl9DQ19NU0c9Q0xORy1CUEYgQlBGX1NZU19JTkNMVURFUz0nJChDTEFOR19TWVNfSU5DTFVERVMpJ1xcdFxcXFxcXG4rXFx0XFx0QlBGX0NDX0ZMQUdTPSctTzIgJChCUEZfVEFSR0VUX0VORElBTikgLW1jcHU9djQnXFx0XFx0XFxcXFxcbitcXHRcXHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXFxuIGVuZGlmXFxuIFxcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXFxuIGlmbmVxICgkKEJQRl9HQ0MpLClcXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBHQ0NfQlBGX0JVSUxEX1JVTEVcXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxicGZfZ2NjKSlcXG4rIyBTeXMgaW5jbHVkZXMgY29tZSBmcm9tIHRoZSAqaG9zdCogZ2NjLCBub3QgJChCUEZfR0NDKSwgYXMgdGhlIHJ1bGVcXG4rIyB0aGlzIHJlcGxhY2VzIGhhZCBpdC5cXG4rR0NDX1NZU19JTkNMVURFUyA6PSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcyxnY2MsKVxcbitcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9wcm9ncyBGTEFWT1I9YnBmX2djYyBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxcXFxuK1xcdFxcdEJQRl9DQz0nJChCUEZfR0NDKScgQlBGX0NDX01TRz1HQ0MtQlBGXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRCUEZfU1lTX0lOQ0xVREVTPSckKEdDQ19TWVNfSU5DTFVERVMpJ1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0QlBGX0NDX0ZMQUdTPSctREJQRl9OT19QUkVTRVJWRV9BQ0NFU1NfSU5ERVggLVduby1hdHRyaWJ1dGVzIC1PMidcXG4gZW5kaWZcXG4gXFxuLSMgRGVmaW5lIHRlc3RfbWFwcyB0ZXN0IHJ1bm5lci5cXG4tVFJVTk5FUl9URVNUU19ESVIgOj0gbWFwX3Rlc3RzXFxuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xcbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9tYXBzLmNcXG4tVFJVTk5FUl9MSUJfU09VUkNFUyA6PVxcbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XFxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gJCQoZXJyb3Igbm8gQlBGIG9iamVjdHMgc2hvdWxkIGJlIGJ1aWx0KVxcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj1cXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcXG4rIyB0ZXN0X21hcHMgY29tcGlsZXMgbWFwX3Rlc3RzLyouYyBhZ2FpbnN0IHRoZSBkZWZhdWx0IGZsYXZvcidzIHNrZWxldG9uc1xcbiskKE9VVFBVVCkvdGVzdF9tYXBzOiAkKFJVTk5FUl9QUkVSRVFTKSAkKEJQRl9PQkpTKVxcdFxcXFxcXG4rXFx0XFx0ICAgICAkKEFMTF9TS0VMUykgRk9SQ0VcXG4rXFx0KyQoUSkkKFJVTk5FUl9NQUtFKSBSVU5ORVI9dGVzdF9tYXBzIEZMQVZPUj0gVEVTVFNfRElSPW1hcF90ZXN0c1xcbitcXG4rVEVTVF9HRU5fRklMRVMgKz0gJChCUEZfT0JKUylcXG4gXFxuICMgRGVmaW5lIHRlc3RfdmVyaWZpZXIgdGVzdCBydW5uZXIuXFxuICMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxcbiAjIHRoZW0gKGUuZy4sIHRlc3QuaCBpcyB1c2luZyBjb21wbGV0ZWx5IHBhdHRlcm4pLCB0aGF0IGl0J3Mgd29ydGgganVzdFxcbiAjIGV4cGxpY2l0bHkgZGVmaW5pbmcgYWxsIHRoZSBydWxlcyBleHBsaWNpdGx5LlxcbiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcXG4tXFx0JChzaGVsbCAoIGNkIHZlcmlmaWVyLzsgXFxcXFxcbitcXHQkKFEpKCBjZCB2ZXJpZmllci87IFxcXFxcXG4gXFx0XFx0ICBlY2hvICcvKiBHZW5lcmF0ZWQgaGVhZGVyLCBkbyBub3QgZWRpdCAqLyc7IFxcXFxcXG4gXFx0XFx0ICBlY2hvICcjaWZkZWYgRklMTF9BUlJBWSc7IFxcXFxcXG4gXFx0XFx0ICBscyAqLmMgMlxcdTAwM2UgL2Rldi9udWxsIHwgc2VkIC1lICdzQFxcXFwoLipcXFxcKUAjaW5jbHVkZSBcXFxcXFxcIlxcXFwxXFxcXFxcXCJAJzsgXFxcXFxcbiBcXHRcXHQgIGVjaG8gJyNlbmRpZicgXFxcXFxcbi1cXHRcXHQpIFxcdTAwM2UgdmVyaWZpZXIvdGVzdHMuaClcXG4rXFx0XFx0KSBcXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcXG4gJChPVVRQVVQpL3Rlc3RfdmVyaWZpZXI6IHRlc3RfdmVyaWZpZXIuYyB2ZXJpZmllci90ZXN0cy5oICQoQlBGT0JKKSB8ICQoT1VUUFVUKVxcbiBcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuIFxcdCQoUSkkKENDKSAkKENGTEFHUykgJChmaWx0ZXIgJS5hICUubyAlLmMsJF4pICQoTERMSUJTKSAtbyAkQFxcbkBAIC05NjcsMTEgKzU2NiwxMSBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopXFxuIFxcdCQoY2FsbCBtc2csQ1hYLCwkQClcXG4gXFx0JChRKSQoQ1hYKSAkKENYWEZMQUdTKSAkKGZpbHRlciAlLmEgJS5vICUuY3BwLCReKSAkKExETElCUykgLW8gJEBcXG4gXFxuLSMgQmVuY2htYXJrIHJ1bm5lclxcbisjIEJlbmNobWFyayBydW5uZXIuIEV2ZXJ5IGJlbmNocy9iZW5jaF8qLmMgaXMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbi5cXG4rQkVOQ0hfT0JKUyA6PSAkKHNvcnQgJChwYXRzdWJzdCBiZW5jaHMvJS5jLCQoT1VUUFVUKS8lLm8sJCh3aWxkY2FyZCBiZW5jaHMvYmVuY2hfKi5jKSkpXFxuICQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcXG4gXFx0JChjYWxsIG1zZyxDQywsJEApXFxuLVxcdCQoUSkkKENDKSAkKENGTEFHUykgLU8yIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxcXFxuLVxcdFxcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxcXG4nICdTS0lQLUJFTkNIJyAnJChub3RkaXIgJEApJyAxXFx1MDAzZVxcdTAwMjYyKSlcXG4rXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCRU5DSClcXG4gJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vOiAkKE9VVFBVVCkvdGVzdF9vdmVyaGVhZC5za2VsLmhcXG4gJChPVVRQVVQpL2JlbmNoX3RyaWdnZXIubzogJChPVVRQVVQpL3RyaWdnZXJfYmVuY2guc2tlbC5oXFxuICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcXFxcbkBAIC05OTksMzMgKzU5OCwxMSBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXFxcXG4gXFx0XFx0ICQoVEVTVElOR19IRUxQRVJTKSBcXFxcXFxuIFxcdFxcdCAkKFRSQUNFX0hFTFBFUlMpIFxcXFxcXG4gXFx0XFx0ICQoQ0dST1VQX0hFTFBFUlMpIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9jb3VudC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9yZW5hbWUubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9ibG9vbV9maWx0ZXJfbWFwLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9mb3IubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfc3RybmNtcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2xvY2FsX3N0b3JhZ2VfcmN1X3Rhc2tzX3RyYWNlLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9sb2NhbF9zdG9yYWdlX2NyZWF0ZS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm8gXFxcXFxcbi1cXHRcXHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX25vcC5vIFxcXFxcXG4tXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF94ZHBfbGIubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfbGliYXJlbmEubyBcXFxcXFxuK1xcdFxcdCAkKEJFTkNIX09CSlMpIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS91c2R0XzEubyBcXFxcXFxuLVxcdFxcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcXFxcbi1cXHRcXHQgI1xcbitcXHRcXHQgJChPVVRQVVQpL3VzZHRfMi5vXFxuIFxcdCQoY2FsbCBtc2csQklOQVJZLCwkQClcXG4tXFx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcXFxcbi1cXHRcXHQoJChSTSkgJEA7IHByaW50ZiAnICAlLTEycyAlc1xcXFxuJyAnU0tJUC1MSU5LJyAnJChub3RkaXIgJEApIChzb21lIGJlbmNobWFya3MgbWF5IGhhdmUgYmVlbiBza2lwcGVkKScgMVxcdTAwM2VcXHUwMDI2MikpXFxuK1xcdCQoUSkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAkKGZpbHRlciAlLmEgJS5vLCReKSAkKExETElCUykgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxMSU5LLCwoc29tZSBiZW5jaG1hcmtzIG1heSBoYXZlIGJlZW4gc2tpcHBlZCkpXFxuIFxcbiAjIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5nIGFib3V0IHNucHJpbnRmIHRydW5jYXRpbmcgc3RyaW5ncyBsaWtlOlxcbiAjXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi41YzZjMTQ3ZDAzYzc0XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnNcXG5AQCAtMCwwICsxLDE5NiBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBTaGFyZWQgdG9vbGNoYWluLCBwYXRoIGFuZCBmbGFnIGRlZmluaXRpb25zIGZvciB0aGUgQlBGIHNlbGZ0ZXN0c1xcbisjIGJ1aWxkLCBpbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlIGFuZCBNYWtlZmlsZS5ydW5uZXIuIERlZmluaXRpb25zXFxuKyMgZm9sbG93IHRoZSBvcmRlciB0aGV5IGhhZCBpbiB0aGUgTWFrZWZpbGUgYmVmb3JlIHRoZSBzcGxpdC5cXG4rXFxuK1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcXG4rTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxcbitCUEZESVIgOj0gJChMSUJESVIpL2JwZlxcbitUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXFxuK1RPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxcbitBUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxcbitpZm5lcSAoJChPKSwpXFxuK0dFTkRJUiA6PSAkKE8pL2luY2x1ZGUvZ2VuZXJhdGVkXFxuK2Vsc2VcXG4rR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcXG4rZW5kaWZcXG4rR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXFxuK1BLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcXG4rXFxuK2lmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxcbisgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcXG4rZW5kaWZcXG4rXFxuK2lmZGVmIEFTQU5cXG4rU0FOX0NGTEFHUyBcXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcXG4rZWxzZVxcbitTQU5fQ0ZMQUdTXFx0Pz1cXG4rZW5kaWZcXG4rU0FOX0xERkxBR1NcXHQ/PSAkKFNBTl9DRkxBR1MpXFxuK1JFTEVBU0VcXHRcXHQ/PVxcbitPUFRfRkxBR1NcXHQ/PSAkKGlmICQoUkVMRUFTRSksLU8yLC1PMClcXG4rXFxuK0xJQkVMRl9DRkxBR1NcXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tY2ZsYWdzIDJcXHUwMDNlL2Rldi9udWxsKVxcbitMSUJFTEZfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1saWJzIDJcXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXFxuK1xcbisjIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxcbisjIGJlbmNobWFyayBjb21waWxhdGlvbiBmYWlsdXJlIGlzIGZhdGFsLiBTZXQgdG8gMCB0byB0b2xlcmF0ZSBmYWlsdXJlc1xcbisjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxcbitCUEZfU1RSSUNUX0JVSUxEID89IDFcXG4rUEVSTUlTU0lWRSA6PSAkKGZpbHRlciAwLCQoQlBGX1NUUklDVF9CVUlMRCkpXFxuK1xcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgc3VmZml4OiBvbiBmYWlsdXJlLCByZW1vdmUgdGhlIHRhcmdldCwgZW1pdCBhXFxuKyMgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHNvIHRoZSByZXN0IG9mIHRoZSBidWlsZCBjb250aW51ZXMuXFxuKyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXFxuKyMgJCgyKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxcbisjICQoMykgLSBvcHRpb25hbCBub3RlIGFwcGVuZGVkIHRvIHRoZSBTS0lQIG1lc3NhZ2VcXG4rc2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcXFxcbitcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSknIDFcXHUwMDNlXFx1MDAyNjI7IH0pXFxuK1xcbisjIFBlcm1pc3NpdmUtbW9kZSByZWNpcGUgcHJlZml4OiB3aGVuIGEgcHJlcmVxdWlzaXRlIG9iamVjdCBpcyBtaXNzaW5nXFxuKyMgKGl0cyBjb21waWxlIGZhaWxlZCBhbmQgd2FzIHNraXBwZWQpLCByZW1vdmUgdGhlIHRhcmdldCBhbmQgJCgzKSxcXG4rIyBlbWl0IGEgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHdpdGhvdXQgcnVubmluZyB0aGUgcmVzdCBvZlxcbisjIHRoZSByZWNpcGUuXFxuKyMgJCgxKSAtIFNLSVAgdGFnXFxuKyMgJCgyKSAtIGlucHV0IGZpbGVzIHRvIGNoZWNrXFxuKyMgJCgzKSAtIG9wdGlvbmFsIGV4dHJhIGZpbGVzIHRvIHJlbW92ZSBhbG9uZ3NpZGUgdGhlIHRhcmdldFxcbitza2lwX2lmX21pc3NpbmcgPSAkKGlmICQoUEVSTUlTU0lWRSksZm9yIGYgaW4gJCgyKTsgZG8gWyAtZiAkJGYgXSB8fCB7IFxcXFxcXG4rXFx0JChSTSkgJEAgJCgzKTsgXFxcXFxcbitcXHRwcmludGYgJyAgJS0xMnMgJXNcXFxcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKScgMVxcdTAwM2VcXHUwMDI2MjsgZXhpdCAwOyB9OyBkb25lOylcXG4rXFxuK2lmZXEgKCQoc3JjdHJlZSksKVxcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcXG4rc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChzcmN0cmVlKSkpXFxuK3NyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxcbitlbmRpZlxcbitcXG4rQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAtV2FsbCAtV2Vycm9yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXFx0XFx0XFx0XFxcXFxcbitcXHQgIC1JJChDVVJESVIpIC1JJChJTkNMVURFX0RJUikgLUkkKEdFTkRJUikgLUkkKExJQkRJUilcXHRcXHRcXFxcXFxuK1xcdCAgLUkkKFRPT0xTSU5DRElSKSAtSSQoVE9PTFNBUkNISU5DRElSKSAtSSQoQVBJRElSKSAtSSQoT1VUUFVUKVxcdFxcXFxcXG4rXFx0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXFxuK0xETElCUyArPSAkKExJQkVMRl9MSUJTKSAtbHogLWxydCAtbHB0aHJlYWRcXG4rXFxuK1BDQVBfQ0ZMQUdTXFx0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGxpYnBjYXAgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyBcXFwiLURUUkFGRklDX01PTklUT1I9MVxcXCIpXFxuK1BDQVBfTElCU1xcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgbGlicGNhcCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rTERMSUJTICs9ICQoUENBUF9MSUJTKVxcbitcXG4raWZuZXEgKCQoTExWTSksKVxcbisjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcXG4rQ0xBTkdfV0FSTl9DRkxBR1MgOj0gLVduby11bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XFxuK2VuZGlmXFxuK1xcbisjIEJlZm9yZSB0aGUgc3BsaXQgdGhlc2UgZGVmaW5pdGlvbnMgc2F0IGFib3ZlIHRoZSAuLi9saWIubWsgaW5jbHVkZTpcXG4rIyB0aGV5IGFwcGVuZGVkIHRvIHRoZSBmbGFncyBpbmhlcml0ZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZFxcbisjIGxpYi5taydzIGFkZGl0aW9ucyAoVVNFUkNGTEFHUy9VU0VSTERGTEFHUyBhbW9uZyB0aGVtKSBjYW1lIGxhc3QuXFxuKyMgVGhpcyBmaWxlIGlzIHBhcnNlZCBhZnRlciBsaWIubWsgYXQgdGhlIHRvcCBsZXZlbCBhbmQgaW4gaXRzIHBsYWNlXFxuKyMgaW4gdGhlIHJ1bm5lciBzdWItbWFrZXMsIHNvIHRoZSBzYW1lIG9yZGVyIGlzIHJlYnVpbHQgaGVyZS4gVGhlXFxuKyMgaW5jbHVkZXIgc25hcHNob3RzIHRoZSBpbmhlcml0ZWQgZmxhZ3MgaW4gSU5IRVJJVEVEX0NGTEFHUyBhbmRcXG4rIyBJTkhFUklURURfTERGTEFHUyBiZWZvcmUgbGliLm1rIHJ1bnM7IHdoYXRldmVyIGxpYi5tayBhcHBlbmRlZCBzaW5jZVxcbisjIGlzIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50IHZhbHVlLlxcbitsaWJfbWtfYWRkZWQgPSAkKHdvcmRsaXN0ICQod29yZHMgeCAkKElOSEVSSVRFRF8kKDEpKSksJCh3b3JkcyAkKCQoMSkpKSwkKCQoMSkpKVxcbitMSUJfTUtfQ0ZMQUdTIDo9ICQoY2FsbCBsaWJfbWtfYWRkZWQsQ0ZMQUdTKVxcbitMSUJfTUtfTERGTEFHUyA6PSAkKGNhbGwgbGliX21rX2FkZGVkLExERkxBR1MpXFxuK0NGTEFHUyA9ICQoSU5IRVJJVEVEX0NGTEFHUykgJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKVxcdFxcdFxcXFxcXG4rXFx0ICQoQ0xBTkdfV0FSTl9DRkxBR1MpICQoTElCX01LX0NGTEFHUylcXG4rTERGTEFHUyA9ICQoSU5IRVJJVEVEX0xERkxBR1MpICQoU0FOX0xERkxBR1MpICQoTElCX01LX0xERkxBR1MpXFxuK1xcbisjIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyKykuXFxuKyMgVGhpcyBydW5zIGFmdGVyIC4uL2xpYi5tayBoYXMgcmVzb2x2ZWQgQ0xBTkcgZnJvbSBMTFZNPVxcdTAwM2NzdWZmaXggb3IgcGF0aFxcdTAwM2UsXFxuKyMgc28gaXQgcHJvYmVzIHRoZSBjb21waWxlciB0aGF0IGJ1aWxkcyB0aGUgQlBGIG9iamVjdHMuXFxuK0NMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXFxcXG4rXFx0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcXFxcbitcXHQtbWxsdm0gLWFzYW4tc2hhZG93LWFkZHItc3BhY2U9MSBcXFxcXFxuK1xcdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlxcdTAwM2UvZGV2L251bGwgXFx1MDAyNlxcdTAwMjYgZWNobyAxKVxcbitcXG4rU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXFxuK0JVSUxEX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9idWlsZFxcbitJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXFxuK0JQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcXG4rSE9TVF9CVUlMRF9ESVJcXHRcXHQ6PSAkKEJVSUxEX0RJUikvaG9zdFxcbitIT1NUX1NDUkFUQ0hfRElSXFx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcXG4rSE9TVF9JTkNMVURFX0RJUlxcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxcbitlbHNlXFxuK0hPU1RfQlVJTERfRElSXFx0XFx0Oj0gJChCVUlMRF9ESVIpXFxuK0hPU1RfU0NSQVRDSF9ESVJcXHQ6PSAkKFNDUkFUQ0hfRElSKVxcbitIT1NUX0lOQ0xVREVfRElSXFx0Oj0gJChJTkNMVURFX0RJUilcXG4rZW5kaWZcXG4rUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcXG4rXFxuK0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXFxuK0NST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXFxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXFxuK1VTRV9CT09UU1RSQVAgOj0gXFxcIlxcXCJcXG4rZWxzZVxcbitUUlVOTkVSX0JQRlRPT0wgOj0gJChERUZBVUxUX0JQRlRPT0wpXFxuK1VTRV9CT09UU1RSQVAgOj0gXFxcImJvb3RzdHJhcC9cXFwiXFxuK2VuZGlmXFxuK1xcbitCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxcbitcXG4rIyBHZXQgQ2xhbmcncyBkZWZhdWx0IGluY2x1ZGVzIG9uIHRoaXMgc3lzdGVtLCBhcyBvcHBvc2VkIHRvIHRob3NlIHNlZW4gYnlcXG4rIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcXFwibWlzc2luZ1xcXCIgZmlsZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzL2Rpc3Ryb3MsXFxuKyMgc3VjaCBhcyBhc20vYnl0ZW9yZGVyLmgsIGFzbS9zb2NrZXQuaCwgYXNtL3NvY2tpb3MuaCwgc3lzL2NkZWZzLmggZXRjLlxcbisjXFxuKyMgVXNlICctaWRpcmFmdGVyJzogRG9uJ3QgaW50ZXJmZXJlIHdpdGggaW5jbHVkZSBtZWNoYW5pY3MgZXhjZXB0IHdoZXJlIHRoZVxcbisjIGJ1aWxkIHdvdWxkIGhhdmUgZmFpbGVkIGFueXdheXMuXFxuK2RlZmluZSBnZXRfc3lzX2luY2x1ZGVzXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC12IC1FIC0gXFx1MDAzYy9kZXYvbnVsbCAyXFx1MDAzZVxcdTAwMjYxIFxcXFxcXG4rXFx0fCBzZWQgLW4gJy9cXHUwMDNjLi4uXFx1MDAzZSBzZWFyY2ggc3RhcnRzIGhlcmU6LywvRW5kIG9mIHNlYXJjaCBsaXN0Li97IHN8IFxcXFwoLy4qXFxcXCl8LWlkaXJhZnRlciBcXFxcMXxwIH0nKSBcXFxcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX3Jpc2N2X3hsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX3Jpc2N2X3hsZW49JWQgLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMsICQkMyl9JykgXFxcXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19sb29uZ2FyY2hfZ3JsZW4gJyB8IGF3ayAne3ByaW50ZihcXFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcXFwiLCAkJDMpfScpIFxcXFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXFxcIi1EJXM9JXMgXFxcIiwgJCQyLCAkJDMpfScpXFxuK2VuZGVmXFxuK1xcbisjIERldGVybWluZSB0YXJnZXQgZW5kaWFubmVzcy5cXG4rSVNfTElUVExFX0VORElBTiA6PSAkKHNoZWxsICQoQ0MpIC1kTSAtRSAtIFxcdTAwM2MvZGV2L251bGwgfCBcXFxcXFxuK1xcdFxcdFxcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXFxuK01FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtbWxpdHRsZS1lbmRpYW4sLW1iaWctZW5kaWFuKVxcbitcXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxcbitDTEFOR19UQVJHRVRfQVJDSCA9IC0tdGFyZ2V0PSQobm90ZGlyICQoQ1JPU1NfQ09NUElMRTolLT0lKSlcXG4rZW5kaWZcXG4rXFxuKyMgSW1tZWRpYXRlIG9uIHB1cnBvc2U6IGV4cGFuZGluZyBnZXRfc3lzX2luY2x1ZGVzIGZvcmtzIHNldmVyYWwgc2hlbGxzLlxcbitDTEFOR19TWVNfSU5DTFVERVMgOj0gJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsJChDTEFORyksJChDTEFOR19UQVJHRVRfQVJDSCkpXFxuK0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTilcXHRcXFxcXFxuK1xcdCAgICAgLUkkKElOQ0xVREVfRElSKSAtSSQoQ1VSRElSKSAtSSQoQVBJRElSKVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtSSQoVE9PTFNJTkNESVIpIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcXHRcXHRcXFxcXFxuK1xcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtc3RkPWdudTExXFx0XFx0IFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgLWZtcy1leHRlbnNpb25zXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgIC1Xbm8taW5pdGlhbGl6ZXItb3ZlcnJpZGVzXFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICNcXG4rIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcXG4rXFxuK1ZFUklGWV9TSUdfU0VUVVAgOj0gJChDVVJESVIpL3ZlcmlmeV9zaWdfc2V0dXAuc2hcXG4rVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXFxuK1BSSVZBVEVfS0VZIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5wZW1cXG4rXFxuK0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXFxuK1xcbitpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxcbitMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcXG4rQ0ZMQUdTICs9IC1ESEFTX0JQRl9BUkVOQV9BU0FOXFxuK2VuZGlmXFxuK1xcbitSVU5ORVJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sXFx0XFx0XFx0XFxcXFxcbitcXHR0ZXN0X3Byb2dzLm8gY2dyb3VwX2hlbHBlcnMubyB0cmFjZV9oZWxwZXJzLm9cXHRcXHRcXHRcXFxcXFxuK1xcdG5ldHdvcmtfaGVscGVycy5vIHRlc3RpbmdfaGVscGVycy5vIGJ0Zl9oZWxwZXJzLm9cXHRcXHRcXFxcXFxuK1xcdGNhcF9oZWxwZXJzLm8gdW5wcml2X2hlbHBlcnMubyBzeXNjdGxfaGVscGVycy5vXFx0XFx0XFx0XFxcXFxcbitcXHRuZXRsaW5rX2hlbHBlcnMubyBqaXRfZGlzYXNtX2hlbHBlcnMubyBpb19oZWxwZXJzLm9cXHRcXHRcXFxcXFxuK1xcdHRlc3RfbG9hZGVyLm8geHNrLm8gZGlzYXNtLm8gZGlzYXNtX2hlbHBlcnMub1xcdFxcdFxcdFxcXFxcXG4rXFx0anNvbl93cml0ZXIubyBicGZ0b29sX2hlbHBlcnMubyB1c2R0XzEubyB1c2R0XzIubylcXG4rUlVOTkVSX09CSlMtdGVzdF9tYXBzIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sXFx0XFx0XFx0XFxcXFxcbitcXHR0ZXN0X21hcHMubyB0ZXN0aW5nX2hlbHBlcnMubylcXG4rXFxuK1JVTk5FUl9MSUJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoT1VUUFVUKS9maW5kX2JpdC5vXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXIgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi43MzYxZmY3ZGUzMzBjXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJcXG5AQCAtMCwwICsxLDE5OSBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcXG4rIyAobm9fYWx1MzIsIGNwdXY0LCBicGZfZ2NjKSwgb3IgdGVzdF9tYXBzLlxcbisjXFxuKyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSAtIHRoZSBmbGF2b3JlZCBvbmVzIHdpdGggdGhlaXJcXG4rIyBvd24gb3V0cHV0IGRpcmVjdG9yeSwgdGhlIHVuZmxhdm9yZWQgb25lcyBzaGFyaW5nICQoT1VUUFVUKSB3aXRoIHRoZVxcbisjIG1haW4gTWFrZWZpbGUgLSBzbyBldmVyeXRoaW5nIGhlcmUgaXMgd3JpdHRlbiBpbiBwbGFpbiBtYWtlOiBub1xcbisjIGRlZmluZS9ldmFsIGxheWVyLCBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5c1xcbisjIGludm9rZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUsIG5ldmVyIGRpcmVjdGx5OiBhbGwgc2hhcmVkXFxuKyMgcHJlcmVxdWlzaXRlcyAobGliYnBmLCBicGZ0b29sLFxcbisjIHJlc29sdmVfYnRmaWRzLCB2bWxpbnV4LmgsIHZlcmlzdGF0LCB1c2Vyc3BhY2Ugb2JqZWN0cywgc2lnbmluZyBrZXksXFxuKyMgbGliYXJlbmEgc2tlbGV0b25zLCBleHRyYSBiaW5hcmllcyBhbmQgLSBmb3IgdGhlXFxuKyMgdW5mbGF2b3JlZCBpbnN0YW5jZXMgLSB0aGUgZGVmYXVsdCBmbGF2b3IncyBCUEYgb2JqZWN0cyBhbmRcXG4rIyBza2VsZXRvbnMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZFxcbisjIGFyZSByZWZlcmVuY2VkIGJlbG93IGFzIHBsYWluIGZpbGVzLlxcbisjXFxuKyMgUGFyYW1ldGVycywgcGFzc2VkIG9uIHRoZSBzdWItbWFrZSBjb21tYW5kIGxpbmU6XFxuKyMgICBPVVRQVVQgICAgICB0aGUgc2VsZnRlc3RzIG91dHB1dCBkaXJlY3RvcnksIGFzIGxpYi5tayByZXNvbHZlZCBpdFxcbisjICAgUlVOTkVSICAgICAgYmFzZSBiaW5hcnkgbmFtZTogdGVzdF9wcm9ncyB8IHRlc3RfbWFwc1xcbisjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djY1xcbisjICAgVEVTVFNfRElSICAgZGlyZWN0b3J5IHdpdGggdGhlIHRlc3Qgc291cmNlczogcHJvZ190ZXN0cyB8IG1hcF90ZXN0c1xcbisjICAgQlBGX0NDICAgICAgY29tcGlsZXIgZm9yIHByb2dzLyouYyBCUEYgb2JqZWN0cyAoJChDTEFORykgb3JcXG4rIyAgICAgICAgICAgICAgICQoQlBGX0dDQykpOyBlbXB0eSBmb3IgdGVzdF9tYXBzLCB3aGljaCBidWlsZHMgbm9uZVxcbisjICAgQlBGX0NDX01TRyAgYnVpbGQtbG9nIHRhZzogQ0xORy1CUEYgfCBHQ0MtQlBGXFxuKyMgICBCUEZfQ0NfRkxBR1NcXG4rIyAgICAgICAgICAgICAgIGNvbXBpbGVyLXNwZWNpZmljIGZsYWdzICgtTzIsIHRhcmdldC8tbWNwdSBvciBnY2Mga25vYnMpXFxuKyMgICBCUEZfU1lTX0lOQ0xVREVTXFxuKyMgICAgICAgICAgICAgICBzeXN0ZW0gaW5jbHVkZSBmbGFncyBtYXRjaGluZyBCUEZfQ0NcXG4rIyAgIEJQRl9ERUZJTkVTIGV4dHJhIGRlZmluZXMgZm9yIEJQRiBvYmplY3RzIChlLmcuIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMpXFxuKyMgICBDQywgQ0xBTkcgICBDIGNvbXBpbGVyIGFuZCBjbGFuZyAoYXMgcmVzb2x2ZWQgYnkgbGliLm1rIGluIHRoZSBtYWluXFxuKyMgICAgICAgICAgICAgICBNYWtlZmlsZTsgY2xhbmcgYWxzbyBkcml2ZXMgdGhlIGZlYXR1cmUgcHJvYmVzIGluXFxuKyMgICAgICAgICAgICAgICBNYWtlZmlsZS5idWlsZHZhcnMpXFxuKyNcXG4rIyBGcm9tIHRoZSBlbnZpcm9ubWVudCwgZXhwb3J0ZWQgYnkgdGhlIG1haW4gTWFrZWZpbGU6XFxuKyMgICBMTFZNX0xETElCUy9MTFZNX0xERkxBR1NcXG4rIyAgICAgICAgICAgICAgIHJlc3VsdHMgb2YgdGhlIHRvcC1sZXZlbCBMTFZNIGZlYXR1cmUgcHJvYmVcXG4rIyAgIFRFU1RfS01PRFMgIHRoZSBrZXJuZWwgdGVzdCBtb2R1bGVzIHRvIGNvcHkgaW50byBhIGZsYXZvciBkaXJlY3RvcnlcXG4rIyAgIElOSEVSSVRFRF9DRkxBR1MvSU5IRVJJVEVEX0xERkxBR1NcXG4rIyAgICAgICAgICAgICAgIHRoZSBmbGFncyB0aGUgbWFpbiBNYWtlZmlsZSBpbmhlcml0ZWQgZnJvbSBpdHMgb3duXFxuKyMgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAoc2VlIE1ha2VmaWxlLmJ1aWxkdmFycylcXG4rXFxuK2luY2x1ZGUgLi4vLi4vLi4vYnVpbGQvQnVpbGQuaW5jbHVkZVxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuYXJjaFxcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxcbitcXG4rIyBTYW1lIG1lc3NhZ2UgaGVscGVycyBhcyAuLi9saWIubWssIHdoaWNoIG9ubHkgdGhlIHRvcCBsZXZlbCBpbmNsdWRlcy5cXG4raWZlcSAoJChWKSwxKVxcbitRID1cXG4rbXNnID1cXG4rZWxzZVxcbitRID0gQFxcbittc2cgPSBAcHJpbnRmICcgICUtOHMlcyAlcyVzXFxcXG4nIFxcXCIkKDEpXFxcIiBcXFwiJChpZiAkKDIpLCBbJCgyKV0pXFxcIiBcXFwiJChub3RkaXIgJCgzKSlcXFwiIFxcXCIkKGlmICQoNCksICQoNCkpXFxcIjtcXG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XFxuK2VuZGlmXFxuK1xcbisjIFRoZSB0b3AgTWFrZWZpbGUgaGFuZHMgZG93biB0aGUgZmxhZ3MgaXQgaW5oZXJpdGVkIGZyb20gdGhlXFxuKyMgZW52aXJvbm1lbnQgaW4gSU5IRVJJVEVEX0NGTEFHUy9JTkhFUklURURfTERGTEFHUzsgc3RhcnQgZnJvbSB0aG9zZVxcbisjIHJhdGhlciB0aGFuIGZyb20gaXRzIGFzc2VtYmxlZCBDRkxBR1MvTERGTEFHUywgd2hpY2ggbWFrZSBleHBvcnRzXFxuKyMgYWxvbmdzaWRlIHdoZW5ldmVyIHRoZXkgY2FtZSBmcm9tIHRoZSBlbnZpcm9ubWVudC5cXG4rQ0ZMQUdTIDo9ICQoSU5IRVJJVEVEX0NGTEFHUylcXG4rTERGTEFHUyA6PSAkKElOSEVSSVRFRF9MREZMQUdTKVxcbitcXG4raW5jbHVkZSBNYWtlZmlsZS5idWlsZHZhcnNcXG4rXFxuKyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWssIGluIGl0c1xcbisjIG9yZGVyICh0aGUgc2VsZnRlc3RzIGluY2x1ZGUgcGF0aCBpcyBzcGVsbGVkIGZyb20gc3JjdHJlZSBoZXJlOyBsaWIubWtcXG4rIyBzcGVsbHMgaXQgZnJvbSBpdHMgb3duIGRpcmVjdG9yeSkuXFxuK2lmbmVxICgkKExMVk0pLClcXG4rQ0ZMQUdTICs9IC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyXFxuK0NGTEFHUyArPSAtV25vLWdudS12YXJpYWJsZS1zaXplZC10eXBlLW5vdC1hdC1lbmRcXG4rZW5kaWZcXG4rQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0U9XFxuK0NGTEFHUyArPSAtSSQoc3JjdHJlZSkvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHNcXG4rQ0ZMQUdTICs9ICQoVVNFUkNGTEFHUylcXG4rTERGTEFHUyArPSAkKFVTRVJMREZMQUdTKVxcbitcXG4rQklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXFxuK1JESVIgICA6PSAkKE9VVFBVVCkkKGlmICQoRkxBVk9SKSwvJChGTEFWT1IpKVxcbitcXG4rYWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXFxuKy5QSE9OWTogYWxsXFxuK1xcbisjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxcbisuREVMRVRFX09OX0VSUk9SOlxcbitcXG4rIyBObyBidWlsdC1pbiBydWxlczogZXZlcnkgZmlsZSBidWlsdCBoZXJlIGhhcyBhbiBleHBsaWNpdCBydWxlLCBhbmQgdGhlXFxuKyMgb2JqZWN0cyB0aGF0IGNvbWUgZnJvbSB0aGUgbWFpbiBNYWtlZmlsZSBoYXZlIHRvIGJlIGFuIGVycm9yIHdoZW5cXG4rIyBtaXNzaW5nIHJhdGhlciB0aGFuIGEgc2lsZW50IHJlYnVpbGQgYnkgdGhlIGJ1aWx0LWluICUubyByZWNpcGVzLlxcbitNQUtFRkxBR1MgKz0gLXJcXG4rXFxuKyMgUGVybWlzc2l2ZSBidWlsZCBiZWhhdmlvdXIgKHNraXAtb24tZmFpbHVyZSBjb21waWxlLCBwYXJ0aWFsLWxpbmspIG9ubHlcXG4rIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3RcXG4rIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxcbitQRVJNSVNTSVZFX1RFU1RTIDo9ICQoaWYgJChmaWx0ZXIgdGVzdF9wcm9ncywkKFJVTk5FUikpLCQoUEVSTUlTU0lWRSkpXFxuK1xcbiskKFJESVIpOlxcbitcXHQkKGNhbGwgbXNnLE1LRElSLCwkQClcXG4rXFx0JChRKW1rZGlyIC1wICRAXFxuK1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbisjIFBlci1ydW5uZXIgc291cmNlc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4raWZlcSAoJChSVU5ORVIpLHRlc3RfcHJvZ3MpXFxuK0dFTkVSQVRFRF9IRFJTIDo9ICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXFxuK0VYVFJBX0ZJTEVTIDo9ICQoT1VUUFVUKS91cmFuZG9tX3JlYWRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJChhZGRwcmVmaXggJChPVVRQVVQpLywkKFRFU1RfS01PRFMpKVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgIGltYV9zZXR1cC5zaCBcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXFx0XFx0XFx0XFx0XFxcXFxcbitcXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVxcdFxcdFxcXFxcXG4rXFx0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcXG4rZW5kaWZcXG4rXFxuK1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSlcXG4rVEVTVF9PQkpTICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUudGVzdC5vLCQoVEVTVF9TUkNTKSlcXG4rVEVTVF9ERVBTICA6PSAkKFRFU1RfT0JKUzoubz0uZClcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyAtIHJ1bGVzIHNoYXJlZCB3aXRoIHRoZSBtYWluIE1ha2VmaWxlXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbitpbmNsdWRlIE1ha2VmaWxlLnNrZWxcXG4rXFxuKyMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxcbisjIGZ1bGwgcGF0aHMpIGFyZSBzcGVjaWZpZWQgYXMgcHJlcmVxdWlzaXRlcyBmb3IgY29ycmVzcG9uZGluZyAlLm9cXG4rIyBmaWxlLiB2cGF0aCBkaXJlY3RpdmVzIGJlbG93IGluc3RydWN0IG1ha2UgdG8gc2VhcmNoIGZvciBza2VsIGZpbGVzXFxuKyMgaW4gJChSRElSKSwgaWYgdGhleSBhcmUgbm90IHByZXNlbnQgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Llxcbit2cGF0aCAlLnNrZWwuaCAkKFJESVIpXFxuK3ZwYXRoICUubHNrZWwuaCAkKFJESVIpXFxuK3ZwYXRoICUuc3Vic2tlbC5oICQoUkRJUilcXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgVGVzdCBvYmplY3RzIGFuZCBydW5uZXIgYmluYXJ5XFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuK1xcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogJChSRVNPTFZFX0JURklEUykgJChSRElSKS9idGZfZGF0YS5icGYub1xcbiskKFJESVIpL3Jlc29sdmVfYnRmaWRzLnRlc3QubzogcHJpdmF0ZSBURVNUX05FRURTX0JURklEUyA9IDFcXG4rXFxuKyMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcXG4rIyBOb3RlOiB3ZSBjZCBpbnRvIG91dHB1dCBkaXJlY3RvcnkgdG8gZW5zdXJlIGVtYmVkZGVkIEJQRiBvYmplY3QgaXMgZm91bmRcXG4rIyBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRCBiZWxvdzsgdGhlXFxuKyMgc2VwYXJhdGUgbm8tcmVjaXBlIHJ1bGUgZm9yIHRoZW0gb3JkZXJzIHRoZSBmaXJzdCBjb21waWxhdGlvbiBhZnRlclxcbisjIHNrZWxldG9uIGdlbmVyYXRpb24gYW5kIHJlLW9yZGVycyB0ZXN0IG9iamVjdCBjb21waWxhdGlvbiB3aGVuIGhlYWRlcnNcXG4rIyBjaGFuZ2UuXFxuKyQoVEVTVF9PQkpTKTogJChSRElSKS8lLnRlc3QubzogJChURVNUU19ESVIpLyUuYyB8ICQoUkRJUikvJS50ZXN0LmRcXG4rXFx0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXFxuK1xcdCQoUSkoY2QgJChARCkgXFx1MDAyNlxcdTAwMjYgJChDQykgLUkuICQoQ0ZMQUdTKSAtTU1EIC1NVCAkQCAtYyAkKENVUkRJUikvJFxcdTAwM2MgJChMRExJQlMpIC1vICQoQEYpKSBcXFxcXFxuK1xcdFxcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKGNhbGwgc2tpcF9vbl9mYWlsLFRFU1QpKVxcbitcXHQkKGlmICQoVEVTVF9ORUVEU19CVEZJRFMpLFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0JChRKWlmIFsgLWYgJEAgXTsgdGhlblxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcXFxuJyBcXFwiQlRGSURTXFxcIiBcXFwiIFskKEJJTkFSWSldXFxcIiBcXFwiJChub3RkaXIgJEApXFxcIik7IFxcXFxcXG4rXFx0XFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChSRElSKS9idGZfZGF0YS5icGYubyAkQDtcXHRcXFxcXFxuK1xcdFxcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICRALkJURl9pZHMgJEA7XFx0XFx0XFxcXFxcbitcXHRcXHRmaSlcXG4rXFxuKyQoVEVTVF9ERVBTKTogJChSRElSKS8lLnRlc3QuZDogJChURVNUU19ESVIpLyUuYyAkKEdFTkVSQVRFRF9IRFJTKSAkKEJQRk9CSikgXFxcXFxcbitcXHQgICAgICB8ICQoUkRJUikgJChBTExfU0tFTFMpXFxuK1xcbitpbmNsdWRlICQod2lsZGNhcmQgJChURVNUX0RFUFMpKVxcbitcXG4rIyBub24tZmxhdm9yZWQgaW4tc3JjdHJlZSBidWlsZHMgcmVjZWl2ZSBzcGVjaWFsIHRyZWF0bWVudCwgaW4gcGFydGljdWxhciwgd2VcXG4rIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXFxuKy5QSE9OWTogZXh0cmFzXFxuK2V4dHJhczogJChpZiAkKFBFUk1JU1NJVkUpLCQod2lsZGNhcmQgJChFWFRSQV9GSUxFUykpLCQoRVhUUkFfRklMRVMpKSB8ICQoUkRJUilcXG4raWZuZXEgKCQoRkxBVk9SKTokKHJlYWxwYXRoICQoT1VUUFVUKSksOiQoQ1VSRElSKSlcXG4raWZuZXEgKCQoc3RyaXAgJChFWFRSQV9GSUxFUykpLClcXG4rXFx0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChFWFRSQV9GSUxFUykpXFxuK1xcdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJChFWFRSQV9GSUxFUykgJChSRElSKS9cXG4rZW5kaWZcXG4rZW5kaWZcXG4rXFxuKyMgc29tZSBYLnRlc3QubyBmaWxlcyBoYXZlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9uIFkuYnBmLm8gZmlsZXNcXG4rIyBJbiBwZXJtaXNzaXZlIG1vZGUsIGxpbmsgd2hhdGV2ZXIgdGVzdCBvYmplY3RzIHdlcmUgc3VjY2Vzc2Z1bGx5IGJ1aWx0XFxuKyMgKHRoZWlyIGNvbXBpbGF0aW9uIG1heSBoYXZlIGJlZW4gc2tpcHBlZCk6IHRoZSBvYmplY3RzIGV4aXN0aW5nIGF0XFxuKyMgcGFyc2UgdGltZSBhcmUgbm9ybWFsIHByZXJlcXVpc2l0ZXMgLSBzbyBlZGl0aW5nIGEgdGVzdCBzb3VyY2Ugc3RpbGxcXG4rIyByZWxpbmtzIHRoZSBydW5uZXIgLSB3aGlsZSB0aGUgZnVsbCBzZXQgc3RheXMgb3JkZXItb25seSB0byBkcml2ZSB0aGVcXG4rIyBidWlsZCBhdHRlbXB0cywgYW5kIHRoZSB3aWxkY2FyZCBpbiB0aGUgcmVjaXBlIHBpY2tzIHVwIHRoZSBzdXJ2aXZvcnNcXG4rIyBhdCBsaW5rIHRpbWUuXFxuKyMgUHJlcmVxdWlzaXRlIG9yZGVyIGlzIGFsc28gbGluayBvcmRlciAodGVzdCBvYmplY3RzLCBydW5uZXIgb2JqZWN0cyxcXG4rIyBsaWJicGYsIGxpYiBvYmplY3RzKS5cXG4rJChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFxcXFxcXG4rXFx0XFx0ICAgICAkKFJVTk5FUl9PQkpTLSQoUlVOTkVSKSkgJChCUEZPQkopXFx0XFx0XFx0XFxcXFxcbitcXHRcXHQgICAgICQoUlVOTkVSX0xJQl9PQkpTLSQoUlVOTkVSKSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICB8IGV4dHJhcyAkKEJQRl9PQkpTKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0ICAgICAkKGlmICQoUEVSTUlTU0lWRV9URVNUUyksJChURVNUX09CSlMpKVxcbitcXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXFxuK1xcdCQoUSkkKENDKSAkKENGTEFHUylcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKHdpbGRjYXJkICQoVEVTVF9PQkpTKSlcXHRcXFxcXFxuK1xcdFxcdFxcdCQoZmlsdGVyLW91dCAkKFRFU1RfT0JKUyksJChmaWx0ZXIgJS5hICUubywkXikpLFxcXFxcXG4rXFx0XFx0XFx0JChmaWx0ZXIgJS5hICUubywkXikpXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQkKExETElCUykgJChMTFZNX0xETElCUykgJChMREZMQUdTKSAkKExMVk1fTERGTEFHUykgLW8gJEBcXG4rXFx0JChRKWxuIC1zZiAkKGlmICQoRkxBVk9SKSwuLiwuKS90b29scy9idWlsZC9icGZ0b29sLyQoVVNFX0JPT1RTVFJBUClicGZ0b29sIFxcXFxcXG4rXFx0XFx0ICAgJChSRElSKS9icGZ0b29sXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5za2VsIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmE4NzFlYTc2ODE3ZGZcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWxcXG5AQCAtMCwwICsxLDE0MSBAQFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyMgUnVsZXMgdG8gYnVpbGQgdGhlIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgb2Ygb25lIGJ1aWxkIGZsYXZvcixcXG4rIyBzaGFyZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKHdoaWNoIGluc3RhbnRpYXRlcyB0aGVtIGZvciB0aGUgZGVmYXVsdFxcbisjIGZsYXZvciwgc28gdGhhdCBiZW5jaCwgeHNreGNlaXZlciwgeGRwXyogYW5kIHRlc3RfY3BwIGNhbiBkZXBlbmQgb25cXG4rIyB0aGUgZXhhY3Qgc2tlbGV0b25zIHRoZXkgY29uc3VtZSkgYW5kIGJ5IE1ha2VmaWxlLnJ1bm5lciAod2hpY2hcXG4rIyBpbnN0YW50aWF0ZXMgdGhlbSBmb3IgZWFjaCBydW5uZXIgaW5zdGFuY2UgdGhhdCBidWlsZHMgQlBGIG9iamVjdHM6XFxuKyMgdGhlIGZsYXZvcmVkIG9uZXMgaW4gdGhlaXIgb3duIG91dHB1dCBkaXJlY3RvcmllcywgdGhlIHVuZmxhdm9yZWRcXG4rIyB0ZXN0X3Byb2dzIG9uZSBpbiAkKE9VVFBVVCksIHdoZXJlIGl0IGZpbmRzIHRoZW0gYWxyZWFkeSBidWlsdCkuXFxuKyNcXG4rIyBQYXJhbWV0ZXJzICh2YXJpYWJsZXMgZGVmaW5lZCBieSB0aGUgaW5jbHVkZXIpOlxcbisjICAgUkRJUiAgICAgICAgICAgICBvdXRwdXQgZGlyZWN0b3J5IG9mIHRoaXMgZmxhdm9yXFxuKyMgICBGTEFWT1IgICAgICAgICAgIGZsYXZvciBuYW1lLCBlbXB0eSBmb3IgdGhlIGRlZmF1bHRcXG4rIyAgIEJJTkFSWSAgICAgICAgICAgcnVubmVyIGJpbmFyeSBuYW1lLCBmb3IgYnVpbGQtbG9nIG1lc3NhZ2VzXFxuKyMgICBCUEZfQ0MgICAgICAgICAgIEJQRiBjb21waWxlclxcbisjICAgQlBGX0NDX01TRyAgICAgICBidWlsZC1sb2cgdGFnIChDTE5HLUJQRi9HQ0MtQlBGKVxcbisjICAgQlBGX0NDX0ZMQUdTICAgICBwZXItZmxhdm9yIGNvbXBpbGVyIGZsYWdzXFxuKyMgICBCUEZfU1lTX0lOQ0xVREVTIHN5c3RlbSBpbmNsdWRlIGZsYWdzIGZvciAkKEJQRl9DQylcXG4rIyAgIEJQRl9ERUZJTkVTICAgICAgZXh0cmEgZGVmaW5lcyAoLURFTkFCTEVfQVRPTUlDU19URVNUUylcXG4rI1xcbisjIFRoZSBkZWZhdWx0IGZsYXZvcidzIHJ1bGVzIGFyZSBpbnN0YW50aWF0ZWQgaWRlbnRpY2FsbHkgYnkgdGhlIG1haW5cXG4rIyBNYWtlZmlsZSBhbmQgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBzdWItbWFrZTsgdGhlIG1haW4gTWFrZWZpbGVcXG4rIyBsaXN0cyBldmVyeSBza2VsZXRvbiBhbmQgQlBGIG9iamVjdCBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgdW5mbGF2b3JlZFxcbisjIHJ1bm5lcnMnIGRlbGVnYXRpb24gcnVsZXMsIHNvIHRoZSBmaWxlcyBhcmUgYWx3YXlzIGZyZXNoIGJ5IHRoZSB0aW1lXFxuKyMgdGhhdCBzdWItbWFrZSByZS1ldmFsdWF0ZXMgdGhlbS5cXG4rXFxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbitcXG4raWZuZXEgKCQoQlBGX0NDKSwpXFxuK1xcbitCUEZfU1JDUyA6PSAkKG5vdGRpciAkKHdpbGRjYXJkIHByb2dzLyouYykpXFxuK0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5icGYubywkKEJQRl9TUkNTKSlcXG4rXFxuK1NLRUxfQkxBQ0tMSVNUIDo9IGJ0Zl9fJSB0ZXN0X3Bpbm5pbmdfaW52YWxpZC5jIHRlc3Rfc2tfYXNzaWduLmNcXG4rXFxuK0xJTktFRF9TS0VMUyA6PSB0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oIGxpbmtlZF9mdW5jcy5za2VsLmhcXHRcXHRcXFxcXFxuK1xcdFxcdGxpbmtlZF92YXJzLnNrZWwuaCBsaW5rZWRfbWFwcy5za2VsLmggXFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaCB0ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmhcXHRcXFxcXFxuK1xcdFxcdHRlc3RfdXNkdC5za2VsLmggdHJhY2luZ19tdWx0aS5za2VsLmhcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXFxuK1xcbitMU0tFTFMgOj0gZmV4aXRfc2xlZXAuYyB0cmFjZV9wcmludGsuYyB0cmFjZV92cHJpbnRrLmMgbWFwX3B0cl9rZXJuLmMgXFx0XFxcXFxcbitcXHRjb3JlX2tlcm4uYyBjb3JlX2tlcm5fb3ZlcmZsb3cuYyB0ZXN0X3JpbmdidWYuY1xcdFxcdFxcdFxcXFxcXG4rXFx0dGVzdF9yaW5nYnVmX24uYyB0ZXN0X3JpbmdidWZfbWFwX2tleS5jIHRlc3RfcmluZ2J1Zl93cml0ZS5jICAgIFxcXFxcXG4rXFx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXFxuK1xcbitMU0tFTFNfU0lHTkVEIDo9IGZlbnRyeV90ZXN0LmMgZmV4aXRfdGVzdC5jIGF0b21pY3MuY1xcbitcXG4rIyBHZW5lcmF0ZSBib3RoIGxpZ2h0IHNrZWxldG9uIGFuZCBsaWJicGYgc2tlbGV0b24gZm9yIHRoZXNlXFxuK0xTS0VMU19FWFRSQSA6PSB0ZXN0X2tzeW1zX21vZHVsZS5jIHRlc3Rfa3N5bXNfd2Vhay5jIGtmdW5jX2NhbGxfdGVzdC5jIFxcXFxcXG4rXFx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYyB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXFxuK1NLRUxfQkxBQ0tMSVNUICs9ICQoTFNLRUxTKSAkKExTS0VMU19TSUdORUQpXFxuK1xcbit0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXFxuK2xpbmtlZF9mdW5jcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfZnVuY3MxLmJwZi5vIGxpbmtlZF9mdW5jczIuYnBmLm9cXG4rbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xcbitsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXFxuKyMgSW4gdGhlIHN1YnNrZWxldG9uIGNhc2UsIHdlIHdhbnQgdGhlIHRlc3Rfc3Vic2tlbGV0b25fbGliLnN1YnNrZWwuaCBmaWxlXFxuKyMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxcbit0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXFxuK3Rlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYub1xcbit0ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cXG4rdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuK3RyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuK3RyYWNpbmdfbXVsdGlfaW50ZXJzZWN0LnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfaW50ZXJzZWN0X2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXFxuK3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cXG4rXFxuK0xJTktFRF9CUEZfT0JKUyA6PSAkKGZvcmVhY2ggc2tlbCwkKExJTktFRF9TS0VMUyksJCgkKHNrZWwpLWRlcHMpKVxcbitMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKExJTktFRF9CUEZfT0JKUykpXFxuK1xcbitTS0VMUyA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUuc2tlbC5oLFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgJChmaWx0ZXItb3V0ICQoU0tFTF9CTEFDS0xJU1QpICQoTElOS0VEX0JQRl9TUkNTKSwkKEJQRl9TUkNTKSkpXFxuK0xTS0VMU19IICAgICAgICA6PSAkKHBhdHN1YnN0ICUuYywkKFJESVIpLyUubHNrZWwuaCwkKExTS0VMUykgJChMU0tFTFNfRVhUUkEpKVxcbitMU0tFTFNfU0lHTkVEX0ggOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmxza2VsLmgsJChMU0tFTFNfU0lHTkVEKSlcXG4rTElOS0VEX1NLRUxTX0ggIDo9ICQoYWRkcHJlZml4ICQoUkRJUikvLCQoTElOS0VEX1NLRUxTKSlcXG4rQUxMX1NLRUxTIDo9ICQoU0tFTFMpICQoTFNLRUxTX0gpICQoTFNLRUxTX1NJR05FRF9IKSAkKExJTktFRF9TS0VMU19IKVxcbitcXG4rSEVBREVSU19GT1JfQlBGX09CSlMgOj0gJCh3aWxkY2FyZCAkKEJQRkRJUikvKi5icGYuaClcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVxcdFxcXFxcXG4rXFx0XFx0XFx0JChhZGRwcmVmaXggJChCUEZESVIpLyxcXHRicGZfY29yZV9yZWFkLmhcXHRcXFxcXFxuK1xcdFxcdFxcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0YnBmX2hlbHBlcnMuaFxcdFxcXFxcXG4rXFx0XFx0XFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcXG4rXFxuKyMgVGhlIGZvbGxvd2luZyB0ZXN0cyBjb250YWluIEMgY29kZSB0aGF0LCBhbHRob3VnaCB0ZWNobmljYWxseSBsZWdhbCxcXG4rIyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mXFxuKyMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9iaXRmaWVsZHMuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXFxuK3Byb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9wYWRkaW5nLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxcbitcXG4rJChCUEZfT0JKUyk6ICQoUkRJUikvJS5icGYubzogcHJvZ3MvJS5jIHByb2dzLyouaFxcdFxcdFxcdFxcXFxcXG4rXFx0ICAgICAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChIRUFERVJTX0ZPUl9CUEZfT0JKUylcXHRcXHRcXFxcXFxuK1xcdCAgICAgfCAkKFJESVIpICQoQlBGT0JKKVxcbitcXHQkKGNhbGwgbXNnLCQoQlBGX0NDX01TRyksJChCSU5BUlkpLCRAKVxcbitcXHQkKFEpJChCUEZfQ0MpICQoQlBGX0NGTEFHUykgJChCUEZfU1lTX0lOQ0xVREVTKSAkKEJQRl9ERUZJTkVTKVxcdFxcXFxcXG4rXFx0XFx0JCgkXFx1MDAzYy1DRkxBR1MpICQoJFxcdTAwM2MtJChGTEFWT1IpLUNGTEFHUylcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoQlBGX0NDX0ZMQUdTKSAtYyAkXFx1MDAzYyAtbyAkQCAkKGNhbGwgc2tpcF9vbl9mYWlsLEJQRilcXG4rXFxuK0dFTl9TS0VMIDo9IC4vZ2VuX2JwZl9za2VsLnNoXFxuK1xcbiskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXFxuK1xcdCQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJFxcdTAwM2MsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXFx0XFxcXFxcbitcXHRwcmludGYgJyAgJS04cyVzICVzXFxcXG4nICdHRU4tU0tFTCcgJyBbJChCSU5BUlkpXScgJyQobm90ZGlyICRAKSc7IFxcXFxcXG4rXFx0QlBGVE9PTD0kKEJQRlRPT0wpICQoR0VOX1NLRUwpIC0tbmFtZSAkKlxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0LS1za2VsICRAIC0tc3Vic2tlbCAkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSAkXFx1MDAzY1xcdFxcdFxcXFxcXG4rXFx0XFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxcbitcXG4rJChMU0tFTFNfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKSAkKEdFTl9TS0VMKSB8ICQoUkRJUilcXG4rXFx0JChRKSQoY2FsbCBza2lwX2lmX21pc3NpbmcsU0tFTCwkXFx1MDAzYylcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHByaW50ZiAnICAlLThzJXMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJEApJzsgXFxcXFxcbitcXHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqX2xza2VsIC0tbHNrZWxcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAkXFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXFxuK1xcbiskKExTS0VMU19TSUdORURfSCk6ICQoUkRJUikvJS5sc2tlbC5oOiAkKFJESVIpLyUuYnBmLm8gJChCUEZUT09MKVxcdFxcXFxcXG4rXFx0XFx0ICAgICQoR0VOX1NLRUwpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpIHwgJChSRElSKVxcbitcXHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcXHUwMDNjKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cHJpbnRmICcgICUtOHMlcyAlc1xcXFxuJyAnR0VOLVNLRUwnICcgWyQoQklOQVJZKSAoc2lnbmVkKV0nICckKG5vdGRpciAkQCknOyBcXFxcXFxuK1xcdEJQRlRPT0w9JChCUEZUT09MKSBQUklWQVRFX0tFWT0kKFBSSVZBVEVfS0VZKVxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0VkVSSUZJQ0FUSU9OX0NFUlQ9JChWRVJJRklDQVRJT05fQ0VSVClcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoR0VOX1NLRUwpIC0tc2lnbiAtLW5hbWUgJCpfbHNrZWxcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdC0tc2tlbCAkQCAkXFx1MDAzYyAkKGNhbGwgc2tpcF9vbl9mYWlsLFNLRUwpXFxuK1xcbisjIC5TRUNPTkRFWFBBTlNJT04gaGVyZSBhbGxvd3MgdG8gY29ycmVjdGx5IGV4cGFuZCAlLWRlcHMgdmFyaWFibGVzIGFzIHByZXJlcXVpc2l0ZXNcXG4rLlNFQ09OREVYUEFOU0lPTjpcXG4rJChMSU5LRURfU0tFTFNfSCk6ICQoUkRJUikvJS5za2VsLmg6ICQkKGFkZHByZWZpeCAkKFJESVIpLywkJCgkJCouc2tlbC5oLWRlcHMpKSBcXFxcXFxuK1xcdFxcdCAgICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXFxuK1xcdCQoUSkkKGNhbGwgc2tpcF9pZl9taXNzaW5nLFNLRUwsJChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKSBcXFxcXFxuK1xcdHByaW50ZiAnICAlLThzJXMgJXNcXFxcbicgJ0xJTkstQlBGJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJChAOi5za2VsLmg9LmJwZi5vKSknOyBcXFxcXFxuK1xcdHByaW50ZiAnICAlLThzJXMgJXNcXFxcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJEApJzsgXFxcXFxcbitcXHRCUEZUT09MPSQoQlBGVE9PTCkgJChHRU5fU0tFTCkgLS1uYW1lICQqXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpXFx0XFx0XFxcXFxcbitcXHRcXHQkKGFkZHByZWZpeCAkKFJESVIpLywkKCQqLnNrZWwuaC1kZXBzKSlcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdCQoY2FsbCBza2lwX29uX2ZhaWwsU0tFTCwkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKSlcXG4rXFxuK2VuZGlmICMgQlBGX0NDXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5lNDNjY2YwOTU1NzU2XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcXG5AQCAtMCwwICsxLDk5IEBAXFxuKyMhL2Jpbi9iYXNoXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI1xcbisjIExpbmsgQlBGIG9iamVjdCBmaWxlKHMpIHdpdGggXFxcImJwZnRvb2wgZ2VuIG9iamVjdFxcXCIgYW5kIGdlbmVyYXRlIGFcXG4rIyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXFxuKyNcXG4rIyBVc2FnZTpcXG4rIyAgIEJQRlRPT0w9XFx1MDAzY2JwZnRvb2xcXHUwMDNlIGdlbl9icGZfc2tlbC5zaCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cXG4rI1xcbisjICAgLS1uYW1lIE5BTUUgICAgICAgc2tlbGV0b24gb2JqZWN0IG5hbWUgKFxcXCJuYW1lIE5BTUVcXFwiIGZvciBicGZ0b29sKVxcbisjICAgLS1za2VsIE9VVCAgICAgICAgb3V0cHV0IGhlYWRlciAoXFxcImZvby5za2VsLmhcXFwiIG9yIFxcXCJmb28ubHNrZWwuaFxcXCIpXFxuKyMgICAtLXN1YnNrZWwgT1VUICAgICBhbHNvIGdlbmVyYXRlIGEgc3Vic2tlbGV0b24gaGVhZGVyIGludG8gT1VUXFxuKyMgICAtLWxza2VsICAgICAgICAgICBnZW5lcmF0ZSBhIGxpZ2h0IHNrZWxldG9uIChicGZ0b29sIGdlbiBza2VsZXRvbiAtTClcXG4rIyAgIC0tc2lnbiAgICAgICAgICAgIHNpZ24gdGhlIChsaWdodCkgc2tlbGV0b24sIHdpdGggdGhlIGtleSBhbmRcXG4rIyAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlIHRha2VuIGZyb20gJFBSSVZBVEVfS0VZIGFuZFxcbisjICAgICAgICAgICAgICAgICAgICAgJFZFUklGSUNBVElPTl9DRVJUXFxuKyNcXG4rIyBUaGUgaW5wdXRzIGFyZSBsaW5rZWQgdGhyZWUgdGltZXMgYW5kIHRoZSAybmQgYW5kIDNyZCByZXN1bHRzXFxuKyMgY29tcGFyZWQsIGFzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgZGV0ZXJtaW5pc20gb2YgXFxcImJwZnRvb2wgZ2VuXFxuKyMgb2JqZWN0XFxcIi5cXG4rI1xcbisjIEludGVybWVkaWF0ZSBmaWxlcyBhcmUgbmFtZWQgYWZ0ZXIgdGhlIG91dHB1dCBoZWFkZXIgd2l0aCBhIFxcXCJsaW5rZWRcXFwiXFxuKyMgaW5maXggLSBcXFwibGxpbmtlZFxcXCIgZm9yIGxpZ2h0IG9yIHNpZ25lZCBza2VsZXRvbnMsIHNvIGdlbmVyYXRpbmcgYVxcbisjIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGUgc2FtZSAuYnBmLm8gaW4gcGFyYWxsZWwgbmV2ZXIgcmFjZXNcXG4rIyBvbiB0aGUgaW50ZXJtZWRpYXRlcy5cXG4rI1xcbisjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuXFxuKyMgT24gZmFpbHVyZSBhbGwgb3V0cHV0cyBhbmQgaW50ZXJtZWRpYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHNjcmlwdFxcbisjIGV4aXRzIG5vbi16ZXJvOyBwZXJtaXNzaXZlLW1vZGUgc2tpcHBpbmcgaXMgdGhlIGNhbGxlcidzIGJ1c2luZXNzXFxuKyMgKHNlZSBza2lwX29uX2ZhaWwgaW4gdGhlIE1ha2VmaWxlKS5cXG4rXFxuK3NldCAtdVxcbitcXG4rYnBmdG9vbD0ke0JQRlRPT0w6LWJwZnRvb2x9XFxuK25hbWU9Jycgc2tlbD0nJyBzdWJza2VsPScnXFxuK2xza2VsPTAgc2lnbj0wXFxuK1xcbit3aGlsZSBbICQjIC1ndCAwIF07IGRvXFxuK1xcdGNhc2UgXFxcIiQxXFxcIiBpblxcbitcXHQtLW5hbWUpXFx0XFx0bmFtZT0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLXNrZWwpXFx0XFx0c2tlbD0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLXN1YnNrZWwpXFx0c3Vic2tlbD0kMjsgc2hpZnQgMiA7O1xcbitcXHQtLWxza2VsKVxcdGxza2VsPTE7IHNoaWZ0IDs7XFxuK1xcdC0tc2lnbilcXHRcXHRzaWduPTE7IHNoaWZ0IDs7XFxuK1xcdC0tKVxcdFxcdHNoaWZ0OyBicmVhayA7O1xcbitcXHQtKilcXHRcXHRlY2hvIFxcXCIkMDogdW5rbm93biBvcHRpb246ICQxXFxcIiBcXHUwMDNlXFx1MDAyNjI7IGV4aXQgMSA7O1xcbitcXHQqKVxcdFxcdGJyZWFrIDs7XFxuK1xcdGVzYWNcXG4rZG9uZVxcbitcXG4raWYgWyAteiBcXFwiJG5hbWVcXFwiIF0gfHwgWyAteiBcXFwiJHNrZWxcXFwiIF0gfHwgWyAkIyAtZXEgMCBdOyB0aGVuXFxuK1xcdGVjaG8gXFxcInVzYWdlOiAkMCAtLW5hbWUgTkFNRSAtLXNrZWwgT1VUIFtvcHRpb25zXSBPQkouLi5cXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRleGl0IDFcXG4rZmlcXG4rXFxuK2luZml4PWxpbmtlZFxcbitpZiBbIFxcXCIkbHNrZWxcXFwiIC1lcSAxIF0gfHwgWyBcXFwiJHNpZ25cXFwiIC1lcSAxIF07IHRoZW5cXG4rXFx0aW5maXg9bGxpbmtlZFxcbitmaVxcbitcXG4raWYgWyBcXFwiJHNpZ25cXFwiIC1lcSAxIF0gXFx1MDAyNlxcdTAwMjYgeyBbIC16IFxcXCIke1BSSVZBVEVfS0VZLX1cXFwiIF0gfHwgWyAteiBcXFwiJHtWRVJJRklDQVRJT05fQ0VSVC19XFxcIiBdOyB9OyB0aGVuXFxuK1xcdGVjaG8gXFxcIiQwOiAtLXNpZ24gcmVxdWlyZXMgUFJJVkFURV9LRVkgYW5kIFZFUklGSUNBVElPTl9DRVJUIGluIHRoZSBlbnZpcm9ubWVudFxcXCIgXFx1MDAzZVxcdTAwMjYyXFxuK1xcdGV4aXQgMVxcbitmaVxcbitcXG4rYmFzZT0ke3NrZWwlLnNrZWwuaH1cXG4rYmFzZT0ke2Jhc2UlLmxza2VsLmh9XFxuK3QxPSRiYXNlLiR7aW5maXh9MS5vXFxuK3QyPSRiYXNlLiR7aW5maXh9Mi5vXFxuK3QzPSRiYXNlLiR7aW5maXh9My5vXFxuK1xcbitmYWlsKCkge1xcbitcXHRybSAtZiBcXFwiJHNrZWxcXFwiICR7c3Vic2tlbDorXFxcIiRzdWJza2VsXFxcIn0gXFxcIiR0MVxcXCIgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCJcXG4rXFx0ZXhpdCAxXFxuK31cXG4rXFxuK1xcXCIkYnBmdG9vbFxcXCIgZ2VuIG9iamVjdCBcXFwiJHQxXFxcIiBcXFwiJEBcXFwiIHx8IGZhaWxcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDJcXFwiIFxcXCIkdDFcXFwiIHx8IGZhaWxcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gb2JqZWN0IFxcXCIkdDNcXFwiIFxcXCIkdDJcXFwiIHx8IGZhaWxcXG4raWYgISBjbXAgLXMgXFxcIiR0MlxcXCIgXFxcIiR0M1xcXCI7IHRoZW5cXG4rXFx0ZWNobyBcXFwiJDA6IGJwZnRvb2wgZ2VuIG9iamVjdCBpcyBub3QgZGV0ZXJtaW5pc3RpYyBmb3IgJHNrZWxcXFwiIFxcdTAwM2VcXHUwMDI2MlxcbitcXHRmYWlsXFxuK2ZpXFxuK1xcbithcmdzPSgpXFxuK2lmIFsgXFxcIiRzaWduXFxcIiAtZXEgMSBdOyB0aGVuXFxuK1xcdGFyZ3MrPSgtUyAtayBcXFwiJFBSSVZBVEVfS0VZXFxcIiAtaSBcXFwiJFZFUklGSUNBVElPTl9DRVJUXFxcIilcXG4rZmlcXG4raWYgWyBcXFwiJGxza2VsXFxcIiAtZXEgMSBdOyB0aGVuXFxuK1xcdGFyZ3MrPSgtTClcXG4rZmlcXG4rXFxcIiRicGZ0b29sXFxcIiBnZW4gc2tlbGV0b24gJHthcmdzW0BdK1xcXCIke2FyZ3NbQF19XFxcIn0gXFxcIiR0M1xcXCIgbmFtZSBcXFwiJG5hbWVcXFwiIFxcdTAwM2UgXFxcIiRza2VsXFxcIiB8fCBmYWlsXFxuK1xcbitpZiBbIC1uIFxcXCIkc3Vic2tlbFxcXCIgXTsgdGhlblxcbitcXHRcXFwiJGJwZnRvb2xcXFwiIGdlbiBzdWJza2VsZXRvbiBcXFwiJHQzXFxcIiBuYW1lIFxcXCIkbmFtZVxcXCIgXFx1MDAzZSBcXFwiJHN1YnNrZWxcXFwiIHx8IGZhaWxcXG4rZmlcXG4rXFxuK3JtIC1mIFxcXCIkdDFcXFwiIFxcXCIkdDJcXFwiIFxcXCIkdDNcXFwiXFxuK2V4aXQgMFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xcbmluZGV4IDJiYjU3NzNkNmY5OTMuLmVhMzQyODU5ZDZjZTEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmNcXG5AQCAtNDY1LDcgKzQ2NSw3IEBAIHN0cnVjdCBleHBvc2VkX2hvb2sge1xcbiBcXHRcXHQuZXhwZWN0ZWRfZXJyID0gRVhQRUNURURfRVJSLCBcXFxcXFxuIFxcdH0sXFxuIFxcbi0jaW5jbHVkZSBcXFwiY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcXFwiXFxuIFxcbiAjdW5kZWYgQlBGX1JFVFZBTF9IT09LXFxuIH07XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcXG5zaW1pbGFyaXR5IGluZGV4IDEwMCVcXG5yZW5hbWUgZnJvbSB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcbnJlbmFtZSB0byB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QyMDoxNDozNi43MDA5NzU3MjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MDI1MDE5NjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZGFmZTJiOTYxZDEzYmM0MzljYWMxYzQyYjk5NjVjMzQ4YWM0NGQ5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMjMgMjA6MTQ6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbmluZGV4IDVmMWEzYmZjMDU2OWYuLjliOTkwNTYxMDA3MGQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuQEAgLTQsOTMgKzQsMTkgQEAgaW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbiBpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuIFxuIENYWCA/PSAkKENST1NTX0NPTVBJTEUpZysrXG4tT0JKQ09QWSA/PSAkKENST1NTX0NPTVBJTEUpb2JqY29weVxuLVxuLUNVUkRJUiA6PSAkKGFic3BhdGggLilcbi1UT09MU0RJUiA6PSAkKGFic3BhdGggLi4vLi4vLi4pXG4tTElCRElSIDo9ICQoVE9PTFNESVIpL2xpYlxuLUJQRkRJUiA6PSAkKExJQkRJUikvYnBmXG4tVE9PTFNJTkNESVIgOj0gJChUT09MU0RJUikvaW5jbHVkZVxuLVRPT0xTQVJDSElOQ0RJUiA6PSAkKFRPT0xTRElSKS9hcmNoLyQoU1JDQVJDSCkvaW5jbHVkZVxuLUJQRlRPT0xESVIgOj0gJChUT09MU0RJUikvYnBmL2JwZnRvb2xcbi1BUElESVIgOj0gJChUT09MU0lOQ0RJUikvdWFwaVxuLWlmbmVxICgkKE8pLClcbi1HRU5ESVIgOj0gJChPKS9pbmNsdWRlL2dlbmVyYXRlZFxuLWVsc2Vcbi1HRU5ESVIgOj0gJChhYnNwYXRoIC4uLy4uLy4uLy4uL2luY2x1ZGUvZ2VuZXJhdGVkKVxuLWVuZGlmXG4tR0VOSERSIDo9ICQoR0VORElSKS9hdXRvY29uZi5oXG4tUEtHX0NPTkZJRyA/PSAkKENST1NTX0NPTVBJTEUpcGtnLWNvbmZpZ1xuLVxuLWlmbmVxICgkKHdpbGRjYXJkICQoR0VOSERSKSksKVxuLSAgR0VORkxBR1MgOj0gLURIQVZFX0dFTkhEUlxuLWVuZGlmXG4gXG4gQlBGX0dDQ1x0XHQ/PSAkKHNoZWxsIGNvbW1hbmQgLXYgYnBmLWdjYzspXG4taWZkZWYgQVNBTlxuLVNBTl9DRkxBR1MgXHQ/PSAtZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcbi1lbHNlXG4tU0FOX0NGTEFHU1x0Pz1cbi1lbmRpZlxuLVNBTl9MREZMQUdTXHQ/PSAkKFNBTl9DRkxBR1MpXG4tUkVMRUFTRVx0XHQ/PVxuLU9QVF9GTEFHU1x0Pz0gJChpZiAkKFJFTEVBU0UpLC1PMiwtTzApXG4tXG4tTElCRUxGX0NGTEFHU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWNmbGFncyAyXHUwMDNlL2Rldi9udWxsKVxuLUxJQkVMRl9MSUJTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgbGliZWxmIC0tbGlicyAyXHUwMDNlL2Rldi9udWxsIHx8IGVjaG8gLWxlbGYpXG4gXG4gU0tJUF9ET0NTXHQ/PVxuIFNLSVBfTExWTVx0Pz1cbiBTS0lQX0xJQkJGRFx0Pz1cbiBTS0lQX0NSWVBUT1x0Pz1cbiBcbi0jIFdoZW4gQlBGX1NUUklDVF9CVUlMRCBpcyAxLCBhbnkgQlBGIG9iamVjdCwgc2tlbGV0b24sIHRlc3Qgb2JqZWN0LCBvclxuLSMgYmVuY2htYXJrIGNvbXBpbGF0aW9uIGZhaWx1cmUgaXMgZmF0YWwuIFNldCB0byAwIHRvIHRvbGVyYXRlIGZhaWx1cmVzXG4tIyBhbmQgY29udGludWUgYnVpbGRpbmcgdGhlIHJlbWFpbmluZyB0ZXN0cy5cbi1CUEZfU1RSSUNUX0JVSUxEID89IDFcbi1QRVJNSVNTSVZFIDo9ICQoZmlsdGVyIDAsJChCUEZfU1RSSUNUX0JVSUxEKSlcbi1cbi1pZmVxICgkKHNyY3RyZWUpLClcbi1zcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKENVUkRJUikpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLXNyY3RyZWUgOj0gJChwYXRzdWJzdCAlLywlLCQoZGlyICQoc3JjdHJlZSkpKVxuLWVuZGlmXG4tXG4tQ09NTU9OX0NGTEFHUyA9IC1nICQoT1BUX0ZMQUdTKSAtcmR5bmFtaWMgLXN0ZD1nbnUxMVx0XHRcdFx0XFxcbi1cdCAgLVdhbGwgLVdlcnJvciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlclx0XHRcdFx0XFxcbi1cdCAgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZVx0XHRcdFx0XHRcXFxuLVx0ICAkKEdFTkZMQUdTKSAkKFNBTl9DRkxBR1MpICQoTElCRUxGX0NGTEFHUylcdFx0XHRcXFxuLVx0ICAtSSQoQ1VSRElSKSAtSSQoSU5DTFVERV9ESVIpIC1JJChHRU5ESVIpIC1JJChMSUJESVIpXHRcdFxcXG4tXHQgIC1JJChUT09MU0lOQ0RJUikgLUkkKFRPT0xTQVJDSElOQ0RJUikgLUkkKEFQSURJUikgLUkkKE9VVFBVVClcdFxcXG4tXHQgIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcbi1MREZMQUdTICs9ICQoU0FOX0xERkxBR1MpXG4tTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxuLVxuLVBDQVBfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIFwiLURUUkFGRklDX01PTklUT1I9MVwiKVxuLVBDQVBfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwpXG4tTERMSUJTICs9ICQoUENBUF9MSUJTKVxuLUNGTEFHUyArPSAkKENPTU1PTl9DRkxBR1MpICQoUENBUF9DRkxBR1MpXG4tXG4tIyBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIHVzZSBMTFZNIGxpYnJhcmllc1xuLWppdF9kaXNhc21faGVscGVycy5jLUNGTEFHUyA9ICQoTExWTV9DRkxBR1MpXG4tXG4taWZuZXEgKCQoTExWTSksKVxuLSMgU2lsZW5jZSBzb21lIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCBjbGFuZ1xuLUNGTEFHUyArPSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnRcbi1lbmRpZlxuLVxuICMgQ2hlY2sgd2hldGhlciBicGYgY3B1PXY0IGlzIHN1cHBvcnRlZCBvciBub3QgYnkgY2xhbmdcbiBpZm5lcSAoJChzaGVsbCAkKENMQU5HKSAtLXRhcmdldD1icGYgLW1jcHU9aGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgJ3Y0JyksKVxuIENMQU5HX0NQVVY0IDo9IDFcbiBlbmRpZlxuIFxuLSMgQ2hlY2sgd2hldGhlciBjbGFuZyBzdXBwb3J0cyBCUEYgYWRkcmVzcyBzYW5pdGl6ZXIgKHJlcXVpcmVzIExMVk0gMjIrKVxuLUNMQU5HX0hBU19BUkVOQV9BU0FOIDo9ICQoc2hlbGwgZWNobyAnaW50IHg7JyB8IFxcXG4tXHQkKENMQU5HKSAtLXRhcmdldD1icGYgLWZzYW5pdGl6ZT1rZXJuZWwtYWRkcmVzcyBcXFxuLVx0LW1sbHZtIC1hc2FuLXNoYWRvdy1hZGRyLXNwYWNlPTEgXFxcbi1cdC14IGMgLWMgLSAtbyAvZGV2L251bGwgMlx1MDAzZS9kZXYvbnVsbCBcdTAwMjZcdTAwMjYgZWNobyAxKVxuLVxuICMgT3JkZXIgY29ycmVzcG9uZCB0byAnbWFrZSBydW5fdGVzdHMnIG9yZGVyXG4gVEVTVF9HRU5fUFJPR1MgPSB0ZXN0X3ZlcmlmaWVyIHRlc3RfdGFnIHRlc3RfbWFwcyB0ZXN0X2xydV9tYXAgdGVzdF9wcm9ncyBcXFxuIFx0dGVzdF9zb2NrbWFwIFxcXG5AQCAtMTAyLDE2ICsyOCw2IEBAIFRFU1RfSU5TVF9TVUJESVJTIDo9IG5vX2FsdTMyXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuIFRFU1RfR0VOX1BST0dTICs9IHRlc3RfcHJvZ3MtYnBmX2djY1xuIFRFU1RfSU5TVF9TVUJESVJTICs9IGJwZl9nY2Ncbi1cbi0jIFRoZSBmb2xsb3dpbmcgdGVzdHMgY29udGFpbiBDIGNvZGUgdGhhdCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgbGVnYWwsXG4tIyB0cmlnZ2VycyBHQ0Mgd2FybmluZ3MgdGhhdCBjYW5ub3QgYmUgZGlzYWJsZWQ6IGRlY2xhcmF0aW9uIG9mXG4tIyBhbm9ueW1vdXMgc3RydWN0IHR5cGVzIGluIGZ1bmN0aW9uIHBhcmFtZXRlciBsaXN0cy5cbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfYml0ZmllbGRzLmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLXByb2dzL2J0Zl9kdW1wX3Rlc3RfY2FzZV9uYW1lc3BhY2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFja2luZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfcGFkZGluZy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbi1wcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2Vfc3ludGF4LmMtYnBmX2djYy1DRkxBR1MgOj0gLVduby1lcnJvclxuLVxuIGVuZGlmXG4gXG4gaWZuZXEgKCQoQ0xBTkdfQ1BVVjQpLClcbkBAIC0xNjgsNyArODQsMjEgQEAgb3ZlcnJpZGUgZGVmaW5lIENMRUFOXG4gXHQkKFEpJChNQUtFKSBkb2NzLWNsZWFuXG4gZW5kZWZcbiBcbisjIC4uL2xpYi5tayBhcHBlbmRzIHRvIHRoZSBmbGFncyBpbmhlcml0ZWQgZnJvbSB0aGUgZW52aXJvbm1lbnQ7XG4rIyBNYWtlZmlsZS5idWlsZHZhcnMgcmVidWlsZHMgQ0ZMQUdTIGFuZCBMREZMQUdTIGFyb3VuZCB0aGVzZSBzbmFwc2hvdHNcbisjIHNvIHRoYXQgaXRzIG93biBhZGRpdGlvbnMgcHJlY2VkZSBsaWIubWsncywgYXMgdGhleSBkaWQgd2hlbiB0aGV5XG4rIyB3ZXJlIGRlZmluZWQgYWJvdmUgdGhlIGluY2x1ZGUuXG4rSU5IRVJJVEVEX0NGTEFHUyA6PSAkKENGTEFHUylcbitJTkhFUklURURfTERGTEFHUyA6PSAkKExERkxBR1MpXG4gaW5jbHVkZSAuLi9saWIubWtcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuK1xuKyMgRGVmaW5pdGlvbnMgb25seSB0aGlzIE1ha2VmaWxlIGNvbnN1bWVzOyBwbGFjZWQgYWZ0ZXIgdGhlIGluY2x1ZGVcbisjIGJlY2F1c2Ugc29tZSBvZiB0aGVtIGRlcml2ZSBmcm9tIE1ha2VmaWxlLmJ1aWxkdmFycyB2YWx1ZXMuXG4rQlBGVE9PTERJUiA6PSAkKFRPT0xTRElSKS9icGYvYnBmdG9vbFxuK0hPU1RfQlBGT0JKIDo9ICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZi9saWJicGYuYVxuK0JQRl9UQVJHRVRfRU5ESUFOOj0kKGlmICQoSVNfTElUVExFX0VORElBTiksLS10YXJnZXQ9YnBmZWwsLS10YXJnZXQ9YnBmZWIpXG4rQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4gXG4gTk9OX0NIRUNLX0ZFQVRfVEFSR0VUUyA6PSBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHNcbiBDSEVDS19GRUFUIDo9ICQoZmlsdGVyLW91dCAkKE5PTl9DSEVDS19GRUFUX1RBUkdFVFMpLCQob3IgJChNQUtFQ01ER09BTFMpLCBcIm5vbmVcIikpXG5AQCAtMjEzLDIxICsxNDMsOSBAQCBpZmVxICgkKGZlYXR1cmUtbGx2bSksMSlcbiBlbmRpZlxuIGVuZGlmXG4gXG4tU0NSQVRDSF9ESVIgOj0gJChPVVRQVVQpL3Rvb2xzXG4tQlVJTERfRElSIDo9ICQoU0NSQVRDSF9ESVIpL2J1aWxkXG4tSU5DTFVERV9ESVIgOj0gJChTQ1JBVENIX0RJUikvaW5jbHVkZVxuLUJQRk9CSiA6PSAkKEJVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuLUhPU1RfQlVJTERfRElSXHRcdDo9ICQoQlVJTERfRElSKS9ob3N0XG4tSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChPVVRQVVQpL2hvc3QtdG9vbHNcbi1IT1NUX0lOQ0xVREVfRElSXHQ6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL2luY2x1ZGVcbi1lbHNlXG4tSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpXG4tSE9TVF9TQ1JBVENIX0RJUlx0Oj0gJChTQ1JBVENIX0RJUilcbi1IT1NUX0lOQ0xVREVfRElSXHQ6PSAkKElOQ0xVREVfRElSKVxuLWVuZGlmXG4tSE9TVF9CUEZPQkogOj0gJChIT1NUX0JVSUxEX0RJUikvbGliYnBmL2xpYmJwZi5hXG4tUkVTT0xWRV9CVEZJRFMgOj0gJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvcmVzb2x2ZV9idGZpZHNcbisjIFNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdXNlIExMVk0gbGlicmFyaWVzXG4rJChPVVRQVVQpL2ppdF9kaXNhc21faGVscGVycy5vOiBDRkxBR1MgKz0gJChMTFZNX0NGTEFHUylcbitcbiBWTUxJTlVYX0JURl9QQVRIUyA/PSAkKGlmICQoTyksJChPKS92bWxpbnV4KVx0XHRcdFx0XFxcbiBcdFx0ICAgICAkKGlmICQoS0JVSUxEX09VVFBVVCksJChLQlVJTERfT1VUUFVUKS92bWxpbnV4KVx0XFxcbiBcdFx0ICAgICAuLi8uLi8uLi8uLi92bWxpbnV4XHRcdFx0XHRcXFxuQEAgLTI0Niw3ICsxNjQsNyBAQCAkKG5vdGRpciAkKFRFU1RfR0VOX1BST0dTKSAkKFRFU1RfS01PRFMpXHRcdFx0XHRcXFxuIFx0ICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpKTogJTogJChPVVRQVVQpLyUgO1xuIFxuICMgc29ydCByZW1vdmVzIGxpYmJwZiBkdXBsaWNhdGVzIHdoZW4gbm90IGNyb3NzLWJ1aWxkaW5nXG4tTUFLRV9ESVJTIDo9ICQoc29ydCAkKEJVSUxEX0RJUikvbGliYnBmICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZlx0XFxcbitNQUtFX0RJUlMgOj0gJChzb3J0ICQoT1VUUFVUKSAkKEJVSUxEX0RJUikvbGliYnBmICQoSE9TVF9CVUlMRF9ESVIpL2xpYmJwZiBcXFxuIFx0ICAgICAgICQoQlVJTERfRElSKS9icGZ0b29sICQoSE9TVF9CVUlMRF9ESVIpL2JwZnRvb2xcdFx0XFxcbiBcdCAgICAgICAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkc1x0XHRcdFx0XFxcbiBcdCAgICAgICAkKElOQ0xVREVfRElSKSlcbkBAIC0yNTgsOSArMTc2LDEyIEBAICQoT1VUUFVUKS8lLm86ICUuY1xuIFx0JChjYWxsIG1zZyxDQywsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpIC1jICQoZmlsdGVyICUuYywkXikgJChMRExJQlMpIC1vICRAXG4gXG4rIyBIZWFkZXJzIG1heSBhcHBlYXIgYW1vbmcgdGhlIHByZXJlcXVpc2l0ZXMgZm9yIGRlcGVuZGVuY3kgdHJhY2tpbmc7XG4rIyB0aGV5IG11c3Qgbm90IHJlYWNoIHRoZSBjbGFuZy9nY2MgY29tbWFuZCBsaW5lIChjbGFuZyB0cmVhdHMgYSBiYXJlIC5oXG4rIyBhcmd1bWVudCBhcyBhIHByZWNvbXBpbGVkLWhlYWRlciBqb2IgYW5kIHJlZnVzZXMgLW8pLlxuICQoT1VUUFVUKS8lOiUuY1xuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoTElOSy5jKSAkXiAkKExETElCUykgLW8gJEBcbitcdCQoUSkkKExJTksuYykgJChmaWx0ZXItb3V0ICUuaCwkXikgJChMRExJQlMpIC1vICRAXG4gXG4gIyBMTFZNJ3MgbGQubGxkIGRvZXNuJ3Qgc3VwcG9ydCBhbGwgdGhlIGFyY2hpdGVjdHVyZXMsIHNvIHVzZSBpdCBvbmx5IG9uIHg4NlxuIGlmZXEgKCQoU1JDQVJDSCksJChmaWx0ZXIgJChTUkNBUkNIKSx4ODYgcmlzY3YpKVxuQEAgLTMxMywxNyArMjM0LDYgQEAgJChURVNUX0tNT0RfVEFSR0VUUyk6ICQoYWRkcHJlZml4IHRlc3Rfa21vZHMvLCQoVEVTVF9LTU9EUykpXG4gXHQkKGNhbGwgbXNnLE1PRCwsJEApXG4gXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgLWYgdGVzdF9rbW9kcy8kKEBGKSBdOyB0aGVuICljcCB0ZXN0X2ttb2RzLyQoQEYpICRAJChpZiAkKFBFUk1JU1NJVkUpLDsgZmkpXG4gXG4tXG4tREVGQVVMVF9CUEZUT09MIDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXG4taWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuLUNST1NTX0JQRlRPT0wgOj0gJChTQ1JBVENIX0RJUikvc2Jpbi9icGZ0b29sXG4tVFJVTk5FUl9CUEZUT09MIDo9ICQoQ1JPU1NfQlBGVE9PTClcbi1VU0VfQk9PVFNUUkFQIDo9IFwiXCJcbi1lbHNlXG4tVFJVTk5FUl9CUEZUT09MIDo9ICQoREVGQVVMVF9CUEZUT09MKVxuLVVTRV9CT09UU1RSQVAgOj0gXCJib290c3RyYXAvXCJcbi1lbmRpZlxuLVxuICQoVEVTVF9HRU5fUFJPR1MpICQoVEVTVF9HRU5fUFJPR1NfRVhURU5ERUQpOiAkKEJQRk9CSilcbiBcbiBURVNUSU5HX0hFTFBFUlNcdDo9ICQoT1VUUFVUKS90ZXN0aW5nX2hlbHBlcnMub1xuQEAgLTMzOSwxMiArMjQ5LDMzIEBAICQoT1VUUFVUKS90ZXN0X3RjcG5vdGlmeV91c2VyOiAkKENHUk9VUF9IRUxQRVJTKSAkKFRFU1RJTkdfSEVMUEVSUykgJChUUkFDRV9IRUxQXG4gJChPVVRQVVQpL3Rlc3Rfc29ja19maWVsZHM6ICQoQ0dST1VQX0hFTFBFUlMpICQoVEVTVElOR19IRUxQRVJTKVxuICQoT1VUUFVUKS90ZXN0X3RhZzogJChURVNUSU5HX0hFTFBFUlMpXG4gJChPVVRQVVQpL3Rlc3RfbGlyY19tb2RlMl91c2VyOiAkKFRFU1RJTkdfSEVMUEVSUylcbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZDogJChURVNUSU5HX0hFTFBFUlMpXG4tJChPVVRQVVQpL3Rlc3RfbWFwczogJChURVNUSU5HX0hFTFBFUlMpXG4rJChPVVRQVVQpL2Zsb3dfZGlzc2VjdG9yX2xvYWQ6ICQoVEVTVElOR19IRUxQRVJTKSBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcbiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogJChURVNUSU5HX0hFTFBFUlMpICQoQ0FQX0hFTFBFUlMpICQoVU5QUklWX0hFTFBFUlMpXG4tJChPVVRQVVQpL3hzay5vOiAkKEJQRk9CSilcbiBcbi1CUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuKyMgRGVmaW5lZCBhaGVhZCBvZiB0aGUgZmlyc3QgcnVsZSB0aGF0IGxpc3RzIGl0IGFzIGEgcHJlcmVxdWlzaXRlLlxuK1ZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0LmhcbitcbisjIFRoZSB1c2Vyc3BhY2Ugb2JqZWN0cyB0aGUgcnVubmVyIGluc3RhbmNlcyBsaW5rIChSVU5ORVJfT0JKUywgc2VlXG4rIyBNYWtlZmlsZS5idWlsZHZhcnMpIGFyZSBidWlsdCBoZXJlLCBvbmNlLCBzbyB0aGF0IG5vIHJ1bm5lciBzdWItbWFrZVxuKyMgZXZlciB3cml0ZXMgYSBmaWxlIHRoaXMgTWFrZWZpbGUgYWxzbyBidWlsZHMuXG4rI1xuKyMgJChUUlVOTkVSX0JQRlRPT0wpIGlzIGEgcHJlcmVxdWlzaXRlIGJlY2F1c2UgaXRzIHN1Yi1tYWtlIGlzIHdoYXRcbisjIGluc3RhbGxzIGxpYmJwZidzIGludGVybmFsIGhlYWRlcnMgKGJwZi9oYXNobWFwLmgsIGJwZi9saWJicGZfaW50ZXJuYWwuaClcbisjIGludG8gJChJTkNMVURFX0RJUikgLSB0aGUgY3Jvc3MtY29tcGlsZWQgYnBmdG9vbCdzIHdoZW4gY3Jvc3MtY29tcGlsaW5nO1xuKyMgd2l0aG91dCBpdCwgdHJhY2VfaGVscGVycy5jIHJhY2VzIHRoZSBpbnN0YWxsIGFuZCBjYW4gc2lsZW50bHkgcGljayB1cFxuKyMgdGhlIHNvdXJjZS10cmVlIGNvcGllcyBpbnN0ZWFkLlxuK1JVTk5FUl9PQkpTIDo9ICQoc29ydCAkKFJVTk5FUl9PQkpTLXRlc3RfcHJvZ3MpICQoUlVOTkVSX09CSlMtdGVzdF9tYXBzKVxcXG4rXHRcdCAgICAgICQoUlVOTkVSX0xJQl9PQkpTLXRlc3RfcHJvZ3MpKVxuKyQoUlVOTkVSX09CSlMpOiAkKFZFUklGWV9TSUdfSERSKSAkKEJQRk9CSikgJChUUlVOTkVSX0JQRlRPT0wpXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MubzogcHJvZ190ZXN0cy90ZXN0cy5oXG4rJChPVVRQVVQpL3Rlc3RfbWFwcy5vOiBtYXBfdGVzdHMvdGVzdHMuaFxuK1xuKyMgZmluZF9iaXQuYyBpcyB0aGUgb25seSBydW5uZXIgc291cmNlIG91dHNpZGUgdGhpcyBkaXJlY3RvcnksXG4rIyBzbyBpdCBuZWVkcyBhIHJ1bGUgb2YgaXRzIG93bi5cbiskKE9VVFBVVCkvZmluZF9iaXQubzogJChUT09MU0RJUikvbGliL2ZpbmRfYml0LmNcbitcdCQoY2FsbCBtc2csQ0MsLCRAKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtYyAkXHUwMDNjICQoTERMSUJTKSAtbyAkQFxuK1xuICQoREVGQVVMVF9CUEZUT09MKTogJCh3aWxkY2FyZCAkKEJQRlRPT0xESVIpLyouW2NoXSAkKEJQRlRPT0xESVIpL01ha2VmaWxlKSAgICBcXFxuIFx0XHQgICAgJChIT1NUX0JQRk9CSikgfCAkKEhPU1RfQlVJTERfRElSKS9icGZ0b29sXG4gXHQkKFEpJChNQUtFKSAkKHN1Ym1ha2VfZXh0cmFzKSAgLUMgJChCUEZUT09MRElSKVx0XHRcdCAgICAgICBcXFxuQEAgLTQxMiw3ICszNDMsNyBAQCBlbmRpZlxuIFxuICMgdm1saW51eC5oIGlzIGZpcnN0IGR1bXBlZCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCB0aGVuIGNvbXBhcmVkIHRvXG4gIyB0aGUgcHJldmlvdXMgdmVyc2lvbi4gVGhpcyBoZWxwcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1idWlsZHMgb2Zcbi0jICQoVFJVTk5FUl9CUEZfT0JKUylcbisjIEJQRiBvYmplY3RzLlxuICQoSU5DTFVERV9ESVIpL3ZtbGludXguaDogJChWTUxJTlVYX0JURikgJChCUEZUT09MKSB8ICQoSU5DTFVERV9ESVIpXG4gaWZlcSAoJChWTUxJTlVYX0gpLClcbiBcdCQoY2FsbCBtc2csR0VOLCwkQClcbkBAIC00MzcsMzc0ICszNjgsMTIgQEAgJChSRVNPTFZFX0JURklEUyk6ICQoSE9TVF9CUEZPQkopIHwgJChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHNcdFxcXG4gXHRcdEhPU1RQS0dfQ09ORklHPSckKFBLR19DT05GSUcpJyBcXFxuIFx0XHRPVVRQVVQ9JChIT1NUX0JVSUxEX0RJUikvcmVzb2x2ZV9idGZpZHMvIEJQRk9CSj0kKEhPU1RfQlBGT0JKKVxuIFxuLSMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XG4tIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcIm1pc3NpbmdcIiBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbi0jIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cbi0jXG4tIyBVc2UgJy1pZGlyYWZ0ZXInOiBEb24ndCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4tIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxuLWRlZmluZSBnZXRfc3lzX2luY2x1ZGVzXG4tJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbi1cdHwgc2VkIC1uICcvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfScpIFxcXG4tJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXCItRF9fcmlzY3ZfeGxlbj0lZCAtRF9fQklUU19QRVJfTE9ORz0lZFwiLCAkJDMsICQkMyl9JykgXFxcbi0kKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX2xvb25nYXJjaF9ncmxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzKX0nKSBcXFxuLSQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXCItRCVzPSVzIFwiLCAkJDIsICQkMyl9Jylcbi1lbmRlZlxuLVxuLSMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuLUlTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBcXFxuLVx0XHRcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXG4tTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4tQlBGX1RBUkdFVF9FTkRJQU46PSQoaWYgJChJU19MSVRUTEVfRU5ESUFOKSwtLXRhcmdldD1icGZlbCwtLXRhcmdldD1icGZlYilcbi1cbi1pZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4tQ0xBTkdfVEFSR0VUX0FSQ0ggPSAtLXRhcmdldD0kKG5vdGRpciAkKENST1NTX0NPTVBJTEU6JS09JSkpXG4tZW5kaWZcbi1cbi1DTEFOR19TWVNfSU5DTFVERVMgPSAkKGNhbGwgZ2V0X3N5c19pbmNsdWRlcywkKENMQU5HKSwkKENMQU5HX1RBUkdFVF9BUkNIKSlcbi1CUEZfQ0ZMQUdTID0gLWcgLVdhbGwgLVdlcnJvciAtRF9fVEFSR0VUX0FSQ0hfJChTUkNBUkNIKSAkKE1FTkRJQU4pXHRcXFxuLVx0ICAgICAtSSQoSU5DTFVERV9ESVIpIC1JJChDVVJESVIpIC1JJChBUElESVIpXHRcdFx0XFxcbi1cdCAgICAgLUkkKFRPT0xTSU5DRElSKSAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXHRcdFxcXG4tXHQgICAgIC1JJChhYnNwYXRoICQoT1VUUFVUKS8uLi91c3IvaW5jbHVkZSlcdFx0XHRcXFxuLVx0ICAgICAtc3RkPWdudTExXHRcdCBcdFx0XHRcdFx0XFxcbi1cdCAgICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tbWljcm9zb2Z0LWFub24tdGFnXHRcdFx0XHRcdFxcXG4tXHQgICAgIC1mbXMtZXh0ZW5zaW9uc1x0XHRcdFx0XHRcdFxcXG4tXHQgICAgIC1Xbm8tY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzXHRcdFx0XFxcbi1cdCAgICAgLVduby1pbml0aWFsaXplci1vdmVycmlkZXNcdFx0XHRcdFx0XFxcbi1cdCAgICAgI1xuLSMgVE9ETzogZW5hYmxlIG1lIC1Xc2lnbi1jb21wYXJlXG4tXG4tQ0xBTkdfQ0ZMQUdTID0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4tXG4tJChPVVRQVVQpL3Rlc3RfbDRsYl9ub2lubGluZS5vOiBCUEZfQ0ZMQUdTICs9IC1mbm8taW5saW5lXG4tJChPVVRQVVQpL3Rlc3RfeGRwX25vaW5saW5lLm86IEJQRl9DRkxBR1MgKz0gLWZuby1pbmxpbmVcbi1cbi0kKE9VVFBVVCkvZmxvd19kaXNzZWN0b3JfbG9hZC5vOiBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcbi0kKE9VVFBVVCkvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MubzogY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxuLVxuLSMgQnVpbGQgQlBGIG9iamVjdCB1c2luZyBDbGFuZ1xuLSMgJDEgLSBpbnB1dCAuYyBmaWxlXG4tIyAkMiAtIG91dHB1dCAubyBmaWxlXG4tIyAkMyAtIENGTEFHU1xuLSMgJDQgLSBiaW5hcnkgbmFtZVxuLWRlZmluZSBDTEFOR19CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djMgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggZGlzYWJsZWQgYWx1MzJcbi1kZWZpbmUgQ0xBTkdfTk9BTFUzMl9CUEZfQlVJTERfUlVMRVxuLVx0JChjYWxsIG1zZyxDTE5HLUJQRiwkNCwkMilcbi1cdCQoUSkkKENMQU5HKSAkMyAtTzIgJChCUEZfVEFSR0VUX0VORElBTikgLWMgJDEgLW1jcHU9djIgLW8gJDIgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkMjsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CUEYnICckKG5vdGRpciAkMiknIDFcdTAwM2VcdTAwMjYyKSlcbi1lbmRlZlxuLSMgU2ltaWxhciB0byBDTEFOR19CUEZfQlVJTERfUlVMRSwgYnV0IHdpdGggY3B1LXY0XG4tZGVmaW5lIENMQU5HX0NQVVY0X0JQRl9CVUlMRF9SVUxFXG4tXHQkKGNhbGwgbXNnLENMTkctQlBGLCQ0LCQyKVxuLVx0JChRKSQoQ0xBTkcpICQzIC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtYyAkMSAtbWNwdT12NCAtbyAkMiAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICQyOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUJQRicgJyQobm90ZGlyICQyKScgMVx1MDAzZVx1MDAyNjIpKVxuLWVuZGVmXG4tIyBCdWlsZCBCUEYgb2JqZWN0IHVzaW5nIEdDQ1xuLWRlZmluZSBHQ0NfQlBGX0JVSUxEX1JVTEVcbi1cdCQoY2FsbCBtc2csR0NDLUJQRiwkNCwkMilcbi1cdCQoUSkkKEJQRl9HQ0MpICQzIC1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yIC1jICQxIC1vICQyICQoaWYgJChQRVJNSVNTSVZFKSx8fCBcXFxuLVx0XHQoJChSTSkgJDI7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtQlBGJyAnJChub3RkaXIgJDIpJyAxXHUwMDNlXHUwMDI2MikpXG4tZW5kZWZcbi1cbi1TS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jXG4tXG4tTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaFx0XHRcXFxuLVx0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIFx0XHRcdFxcXG4tXHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbi1cdFx0dGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaFx0XHRcdFxcXG4tXHRcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFx0XHRcdFx0XFxcbi1cdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuLVx0XHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXG4tXG4tTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIFx0XFxcbi1cdGNvcmVfa2Vybi5jIGNvcmVfa2Vybl9vdmVyZmxvdy5jIHRlc3RfcmluZ2J1Zi5jXHRcdFx0XFxcbi1cdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuLVx0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXG4tXG4tTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbi1cbi0jIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2Vcbi1MU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuLVx0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYyB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXG4tU0tFTF9CTEFDS0xJU1QgKz0gJCQoTFNLRUxTKSAkJChMU0tFTFNfU0lHTkVEKVxuLVxuLXRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmgtZGVwcyA6PSB0ZXN0X3N0YXRpY19saW5rZWQxLmJwZi5vIHRlc3Rfc3RhdGljX2xpbmtlZDIuYnBmLm9cbi1saW5rZWRfZnVuY3Muc2tlbC5oLWRlcHMgOj0gbGlua2VkX2Z1bmNzMS5icGYubyBsaW5rZWRfZnVuY3MyLmJwZi5vXG4tbGlua2VkX3ZhcnMuc2tlbC5oLWRlcHMgOj0gbGlua2VkX3ZhcnMxLmJwZi5vIGxpbmtlZF92YXJzMi5icGYub1xuLWxpbmtlZF9tYXBzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9tYXBzMS5icGYubyBsaW5rZWRfbWFwczIuYnBmLm9cbi0jIEluIHRoZSBzdWJza2VsZXRvbiBjYXNlLCB3ZSB3YW50IHRoZSB0ZXN0X3N1YnNrZWxldG9uX2xpYi5zdWJza2VsLmggZmlsZVxuLSMgYnV0IHRoYXQncyBjcmVhdGVkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgdGhlIHNrZWwuaCBnZW5lcmF0aW9uLlxuLXRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b24uYnBmLm9cbi10ZXN0X3N1YnNrZWxldG9uX2xpYi5za2VsLmgtZGVwcyA6PSB0ZXN0X3N1YnNrZWxldG9uX2xpYjIuYnBmLm8gdGVzdF9zdWJza2VsZXRvbl9saWIuYnBmLm9cbi10ZXN0X3VzZHQuc2tlbC5oLWRlcHMgOj0gdGVzdF91c2R0LmJwZi5vIHRlc3RfdXNkdF9tdWx0aXNwZWMuYnBmLm9cbi14c2tfeGRwX3Byb2dzLnNrZWwuaC1kZXBzIDo9IHhza194ZHBfcHJvZ3MuYnBmLm9cbi14ZHBfaHdfbWV0YWRhdGEuc2tlbC5oLWRlcHMgOj0geGRwX2h3X21ldGFkYXRhLmJwZi5vXG4teGRwX2ZlYXR1cmVzLnNrZWwuaC1kZXBzIDo9IHhkcF9mZWF0dXJlcy5icGYub1xuLXRyYWNpbmdfbXVsdGkuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuLXRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaC1kZXBzIDo9IHRyYWNpbmdfbXVsdGlfYXR0YWNoX21vZHVsZS5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tdHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9pbnRlcnNlY3RfYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbi10cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9zZXNzaW9uX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4tXG4tTElOS0VEX0JQRl9PQkpTIDo9ICQoZm9yZWFjaCBza2VsLCQoTElOS0VEX1NLRUxTKSwkKCQoc2tlbCktZGVwcykpXG4tTElOS0VEX0JQRl9TUkNTIDo9ICQocGF0c3Vic3QgJS5icGYubywlLmMsJChMSU5LRURfQlBGX09CSlMpKVxuLVxuLUhFQURFUlNfRk9SX0JQRl9PQkpTIDo9ICQod2lsZGNhcmQgJChCUEZESVIpLyouYnBmLmgpXHRcdFxcXG4tXHRcdFx0JCh3aWxkY2FyZCAkKENVUkRJUikvbGliYXJlbmEvaW5jbHVkZS8qLltjaF0pXHRcXFxuLVx0XHRcdCQoYWRkcHJlZml4ICQoQlBGRElSKS8sXHRicGZfY29yZV9yZWFkLmhcdFxcXG4tXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX2VuZGlhbi5oXHRcXFxuLVx0XHRcdFx0XHRcdGJwZl9oZWxwZXJzLmhcdFxcXG4tXHRcdFx0ICAgICAgICAgICAgICAgICAgICAgICAgYnBmX3RyYWNpbmcuaClcbi1cbi0jIFNldCB1cCBleHRyYSBUUlVOTkVSX1hYWCBcInRlbXBvcmFyeVwiIHZhcmlhYmxlcyBpbiB0aGUgZW52aXJvbm1lbnQgKHJlbGllcyBvblxuLSMgJGV2YWwoKSkgYW5kIHBhc3MgY29udHJvbCB0byBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMuXG4tIyBQYXJhbWV0ZXJzOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcImZsYXZvclwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0Yylcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSXG4tXG4tTFNLRUxfU0lHTiA6PSAtUyAtayAkKFBSSVZBVEVfS0VZKSAtaSAkKFZFUklGSUNBVElPTl9DRVJUKVxuLVRSVU5ORVJfT1VUUFVUIDo9ICQoT1VUUFVUKSQoaWYgJDIsLykkMlxuLVRSVU5ORVJfQklOQVJZIDo9ICQxJChpZiAkMiwtKSQyXG4tVFJVTk5FUl9URVNUX09CSlMgOj0gJCQocGF0c3Vic3QgJS5jLCQkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubyxcdFxcXG4tXHRcdFx0XHQgJCQobm90ZGlyICQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUU19ESVIpLyouYykpKVxuLVRSVU5ORVJfRVhUUkFfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcdFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSkpXG4tVFJVTk5FUl9MSUJfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUubyxcdFx0XFxcbi1cdFx0XHRcdCAkJChmaWx0ZXIgJS5jLCQoVFJVTk5FUl9MSUJfU09VUkNFUykpKVxuLVRSVU5ORVJfRVhUUkFfSERSUyA6PSAkJChmaWx0ZXIgJS5oLCQoVFJVTk5FUl9FWFRSQV9TT1VSQ0VTKSlcbi1UUlVOTkVSX1RFU1RTX0hEUiA6PSAkKFRSVU5ORVJfVEVTVFNfRElSKS90ZXN0cy5oXG4tVFJVTk5FUl9CUEZfU1JDUyA6PSAkJChub3RkaXIgJCQod2lsZGNhcmQgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouYykpXG4tVFJVTk5FUl9CUEZfT0JKUyA6PSAkJChwYXRzdWJzdCAlLmMsJCQoVFJVTk5FUl9PVVRQVVQpLyUuYnBmLm8sICQkKFRSVU5ORVJfQlBGX1NSQ1MpKVxuLVRSVU5ORVJfQlBGX1NLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5za2VsLmgsXHRcXFxuLVx0XHRcdFx0ICQkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLFxcXG4tXHRcdFx0XHRcdCAgICAgICAkJChUUlVOTkVSX0JQRl9TUkNTKSkpXG4tVFJVTk5FUl9CUEZfTFNLRUxTIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFMpICQkKExTS0VMU19FWFRSQSkpXG4tVFJVTk5FUl9CUEZfU0tFTFNfTElOS0VEIDo9ICQkKGFkZHByZWZpeCAkJChUUlVOTkVSX09VVFBVVCkvLCQoTElOS0VEX1NLRUxTKSlcbi1UUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEIDo9ICQkKHBhdHN1YnN0ICUuYywkJChUUlVOTkVSX09VVFBVVCkvJS5sc2tlbC5oLCAkJChMU0tFTFNfU0lHTkVEKSlcbi1URVNUX0dFTl9GSUxFUyArPSAkJChUUlVOTkVSX0JQRl9PQkpTKVxuLVxuLSMgRXZhbHVhdGUgcnVsZXMgbm93IHdpdGggZXh0cmEgVFJVTk5FUl9YWFggdmFyaWFibGVzIGFib3ZlIGFscmVhZHkgZGVmaW5lZFxuLSQkKGV2YWwgJCQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVJfUlVMRVMsJDEsJDIpKVxuLVxuLWVuZGVmXG4tXG4tIyBVc2luZyBUUlVOTkVSX1hYWCB2YXJpYWJsZXMsIHByb3ZpZGVkIGJ5IGNhbGxlcnMgb2YgREVGSU5FX1RFU1RfUlVOTkVSIGFuZFxuLSMgc2V0IHVwIGJ5IERFRklORV9URVNUX1JVTk5FUiBpdHNlbGYsIGNyZWF0ZSB0ZXN0IHJ1bm5lciBidWlsZCBydWxlcyB3aXRoOlxuLSMgJDEgLSB0ZXN0IHJ1bm5lciBiYXNlIGJpbmFyeSBuYW1lIChlLmcuLCB0ZXN0X3Byb2dzKVxuLSMgJDIgLSB0ZXN0IHJ1bm5lciBleHRyYSBcImZsYXZvclwiIChlLmcuLCBub19hbHUzMiwgY3B1djQsIGJwZl9nY2MsIGV0Yylcbi1kZWZpbmUgREVGSU5FX1RFU1RfUlVOTkVSX1JVTEVTXG4tXG4tIyBQZXJtaXNzaXZlIGJ1aWxkIGJlaGF2aW91ciAoc2tpcC1vbi1mYWlsdXJlIGNvbXBpbGUsIHBhcnRpYWwtbGluaykgb25seVxuLSMgYXBwbGllcyB0byB0ZXN0X3Byb2dzIGFuZCBpdHMgZmxhdm9yczsgcnVubmVycyB0aGF0IHVzZSBzdHJvbmcgY3Jvc3Mtb2JqZWN0XG4tIyByZWZlcmVuY2VzIChlLmcuIHRlc3RfbWFwcykga2VlcCBzdHJpY3Qgc2VtYW50aWNzIGV2ZW4gd2hlbiBwZXJtaXNzaXZlLlxuLSMgVGhlIGNoZWNrIGlzIGlubGluZWQgcGVyLXJ1bm5lciBzbyAkMSBpcyBzdWJzdGl0dXRlZCBhdCAkKGNhbGwpIHRpbWUgYW5kXG4tIyB0aGUgcmVzdWx0IGlzIGJha2VkIGludG8gZWFjaCBydWxlJ3MgcmVjaXBlLlxuLVxuLWlmZXEgKCQoJChUUlVOTkVSX09VVFBVVCktZGlyKSwpXG4tJChUUlVOTkVSX09VVFBVVCktZGlyIDo9IHlcbi0kKFRSVU5ORVJfT1VUUFVUKTpcbi1cdCQkKGNhbGwgbXNnLE1LRElSLCwkJEApXG4tXHQkKFEpbWtkaXIgLXAgJCRAXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgQlBGIG9iamVjdHMgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZSBmb3IgYSBnaXZlblxuLSMgaW5wdXQvb3V0cHV0IGRpcmVjdG9yeSBjb21iaW5hdGlvblxuLWlmZXEgKCQoJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpJChpZiAkMiwtKSQyLWJwZm9ianMpLClcbi0kKFRSVU5ORVJfQlBGX1BST0dTX0RJUikkKGlmICQyLC0pJDItYnBmb2JqcyA6PSB5XG4tJChUUlVOTkVSX0JQRl9PQkpTKTogJChUUlVOTkVSX09VVFBVVCkvJS5icGYubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyUuY1x0XHRcdFxcXG4tXHRcdCAgICAgJChUUlVOTkVSX0JQRl9QUk9HU19ESVIpLyouaFx0XHRcdFxcXG4tXHRcdCAgICAgJCQoSU5DTFVERV9ESVIpL3ZtbGludXguaFx0XHRcdFx0XFxcbi1cdFx0ICAgICAkKEhFQURFUlNfRk9SX0JQRl9PQkpTKVx0XHRcdFx0XFxcbi1cdFx0ICAgICB8ICQoVFJVTk5FUl9PVVRQVVQpICQkKEJQRk9CSilcbi1cdCQkKGNhbGwgJChUUlVOTkVSX0JQRl9CVUlMRF9SVUxFKSwkJFx1MDAzYywkJEAsXHRcdFx0XFxcbi1cdFx0XHRcdFx0ICAkKFRSVU5ORVJfQlBGX0NGTEFHUykgICAgICAgICBcXFxuLVx0XHRcdFx0XHQgICQkKCQkXHUwMDNjLUNGTEFHUylcdFx0XFxcbi1cdFx0XHRcdFx0ICAkJCgkJFx1MDAzYy0kMi1DRkxBR1MpLCQoVFJVTk5FUl9CSU5BUlkpKVxuLVxuLSQoVFJVTk5FUl9CUEZfU0tFTFMpOiAlLnNrZWwuaDogJS5icGYubyAkKEJQRlRPT0wpIHwgJChUUlVOTkVSX09VVFBVVClcbi1cdCQoUSkkKGlmICQoUEVSTUlTU0lWRSksaWYgWyAhIC1mICQkXHUwMDNjIF07IHRoZW5cdFx0XHRcXFxuLVx0XHQkJChSTSkgJCRAICQkKEA6LnNrZWwuaD0uc3Vic2tlbC5oKTtcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgJCRcdTAwM2MgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGlua2VkMy5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKFx1MDAzYzoubz0ubGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcdFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc2tlbGV0b24gJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKFx1MDAzYzouYnBmLm89KSkgXHUwMDNlICQkQCBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBzdWJza2VsZXRvbiAkJChcdTAwM2M6Lm89LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpOyBcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHR9KSBcdTAwMjZcdTAwMjYgXFxcbi1cdHJtIC1mICQkKFx1MDAzYzoubz0ubGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5saW5rZWQzLm8pXG4tXG4tJChUUlVOTkVSX0JQRl9MU0tFTFMpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uIC1MICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoXHUwMDNjOi5icGYubz1fbHNrZWwpKSBcdTAwM2UgJCRAICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEA7IFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNiBcXFxuLVx0cm0gLWYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMS5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubylcbi1cbi0kKFRSVU5ORVJfQlBGX0xTS0VMU19TSUdORUQpOiAlLmxza2VsLmg6ICUuYnBmLm8gJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGlmIFsgISAtZiAkJFx1MDAzYyBdOyB0aGVuXHRcdFx0XFxcbi1cdFx0JCQoUk0pICQkQDtcdFx0XHRcdFx0XHRcXFxuLVx0XHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLVNLRUwnICckJChub3RkaXIgJCRAKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHRcdGV4aXQgMDtcdFx0XHRcdFx0XHRcdFxcXG4tXHRmaTspXHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdHRU4tU0tFTCcgJ1skKFRSVU5ORVJfQklOQVJZKSAoc2lnbmVkKV0gJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkXHUwMDNjIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIG9iamVjdCAkJChcdTAwM2M6Lm89LmxsaW5rZWQyLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKFx1MDAzYzoubz0ubGxpbmtlZDMubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSBcdTAwMjZcdTAwMjYgXFxcbi1cdGRpZmYgJCQoXHUwMDNjOi5vPS5sbGlua2VkMi5vKSAkJChcdTAwM2M6Lm89LmxsaW5rZWQzLm8pIFx1MDAyNlx1MDAyNlx0XHRcXFxuLVx0JCQoQlBGVE9PTCkgZ2VuIHNrZWxldG9uICQoTFNLRUxfU0lHTikgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKSBuYW1lICQkKG5vdGRpciAkJChcdTAwM2M6LmJwZi5vPV9sc2tlbCkpIFx1MDAzZSAkJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgXFxcbi1cdFx0JCQoUk0pICQkQDsgXFxcbi1cdFx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1TS0VMJyAnJCQobm90ZGlyICQkQCknIDFcdTAwM2VcdTAwMjYyOyBcXFxuLVx0fSkgXHUwMDI2XHUwMDI2IFxcXG4tXHRybSAtZiAkJChcdTAwM2M6Lm89LmxsaW5rZWQxLm8pICQkKFx1MDAzYzoubz0ubGxpbmtlZDIubykgJCQoXHUwMDNjOi5vPS5sbGlua2VkMy5vKVxuLVxuLSQoTElOS0VEX0JQRl9PQkpTKTogJTogJChUUlVOTkVSX09VVFBVVCkvJVxuLVxuLSMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuLS5TRUNPTkRFWFBBTlNJT046XG4tJChUUlVOTkVSX0JQRl9TS0VMU19MSU5LRUQpOiAkKFRSVU5ORVJfT1VUUFVUKS8lOiAkJCQkKCUtZGVwcykgJChCUEZUT09MKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4tXHQkKFEpJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQkKGFkZHByZWZpeCAkKFRSVU5ORVJfT1VUUFVUKS8sJCQoJCQoQEYpLWRlcHMpKTsgZG8gXFxcbi1cdFx0aWYgWyAhIC1mICQkJCRmIF07IHRoZW5cdFx0XHRcdFx0XHRcXFxuLVx0XHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcXFxuLVx0XHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdFx0XHRleGl0IDA7XHRcdFx0XHRcdFx0XHRcXFxuLVx0XHRmaTtcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGRvbmU7KVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRwcmludGYgJyAgJS0xMnMgJXNcXG4nICdMSU5LLUJQRicgJ1skKFRSVU5ORVJfQklOQVJZKV0gJCQobm90ZGlyICQkKEA6LnNrZWwuaD0uYnBmLm8pKScgMVx1MDAzZVx1MDAyNjI7IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMS5vKSAkJChhZGRwcmVmaXggJChUUlVOTkVSX09VVFBVVCkvLCQkKCQkKEBGKS1kZXBzKSkgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gb2JqZWN0ICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDIubykgXHUwMDI2XHUwMDI2IFxcXG4tXHRkaWZmICQkKEA6LnNrZWwuaD0ubGlua2VkMi5vKSAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgXHUwMDI2XHUwMDI2XHRcXFxuLVx0cHJpbnRmICcgICUtMTJzICVzXFxuJyAnR0VOLVNLRUwnICdbJChUUlVOTkVSX0JJTkFSWSldICQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MiBcdTAwMjZcdTAwMjYgXFxcbi1cdCQkKEJQRlRPT0wpIGdlbiBza2VsZXRvbiAkJChAOi5za2VsLmg9LmxpbmtlZDMubykgbmFtZSAkJChub3RkaXIgJCQoQDouc2tlbC5oPSkpIFx1MDAzZSAkJEAgXHUwMDI2XHUwMDI2IFxcXG4tXHQkJChCUEZUT09MKSBnZW4gc3Vic2tlbGV0b24gJCQoQDouc2tlbC5oPS5saW5rZWQzLm8pIG5hbWUgJCQobm90ZGlyICQkKEA6LnNrZWwuaD0pKSBcdTAwM2UgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpICQoaWYgJChQRVJNSVNTSVZFKSx8fCB7IFxcXG4tXHRcdCQkKFJNKSAkJEAgJCQoQDouc2tlbC5oPS5zdWJza2VsLmgpO1x0XHRcdFxcXG4tXHRcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtU0tFTCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MjsgXFxcbi1cdH0pIFx1MDAyNlx1MDAyNlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRybSAtZiAkJChAOi5za2VsLmg9LmxpbmtlZDEubykgJCQoQDouc2tlbC5oPS5saW5rZWQyLm8pICQkKEA6LnNrZWwuaD0ubGlua2VkMy5vKVxuLVxuLSMgV2hlbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgJS5kIGZpbGUsIG9ubHkgc2tlbCBiYXNlbmFtZXMgKG5vdFxuLSMgZnVsbCBwYXRocykgYXJlIHNwZWNpZmllZCBhcyBwcmVyZXF1aXNpdGVzIGZvciBjb3JyZXNwb25kaW5nICUub1xuLSMgZmlsZS4gdnBhdGggZGlyZWN0aXZlcyBiZWxvdyBpbnN0cnVjdCBtYWtlIHRvIHNlYXJjaCBmb3Igc2tlbCBmaWxlc1xuLSMgaW4gVFJVTk5FUl9PVVRQVVQsIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbi12cGF0aCAlLnNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUubHNrZWwuaCAkKFRSVU5ORVJfT1VUUFVUKVxuLXZwYXRoICUuc3Vic2tlbC5oICQoVFJVTk5FUl9PVVRQVVQpXG4tXG4tZW5kaWZcbi1cbi0jIGVuc3VyZSB3ZSBzZXQgdXAgdGVzdHMuaCBoZWFkZXIgZ2VuZXJhdGlvbiBydWxlIGp1c3Qgb25jZVxuLWlmZXEgKCQoJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyKSwpXG4tJChUUlVOTkVSX1RFU1RTX0RJUiktdGVzdHMtaGRyIDo9IHlcbi0kKFRSVU5ORVJfVEVTVFNfSERSKTogJChUUlVOTkVSX1RFU1RTX0RJUikvKi5jXG4tXHQkJChjYWxsIG1zZyxURVNULUhEUiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkJChzaGVsbCAoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1x0XHRcdFx0XHRcXFxuLVx0XHQgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJ1x0XFxcbi1cdFx0XHQkKFRSVU5ORVJfVEVTVFNfRElSKS8qLmMgfCBzb3J0IDtcdFxcXG4tXHRcdCApIFx1MDAzZSAkJEApXG4tZW5kaWZcbi1cbi0kKFRSVU5ORVJfT1VUUFVUKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86ICQoUkVTT0xWRV9CVEZJRFMpICQoVFJVTk5FUl9PVVRQVVQpL2J0Zl9kYXRhLmJwZi5vXG4tJChUUlVOTkVSX09VVFBVVCkvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiBwcml2YXRlIFRFU1RfTkVFRFNfQlRGSURTID0gMVxuLVxuLSMgY29tcGlsZSBpbmRpdmlkdWFsIHRlc3QgZmlsZXNcbi0jIE5vdGU6IHdlIGNkIGludG8gb3V0cHV0IGRpcmVjdG9yeSB0byBlbnN1cmUgZW1iZWRkZWQgQlBGIG9iamVjdCBpcyBmb3VuZFxuLSQoVFJVTk5FUl9URVNUX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLnRlc3QubzpcdFx0XHRcXFxuLVx0XHQgICAgICAkKFRSVU5ORVJfVEVTVFNfRElSKS8lLmNcdFx0XHRcdFxcXG4tXHRcdCAgICAgIHwgJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmRcbi1cdCQkKGNhbGwgbXNnLFRFU1QtT0JKLCQoVFJVTk5FUl9CSU5BUlkpLCQkQClcbi1cdCQoUSkoY2QgJCQoQEQpIFx1MDAyNlx1MDAyNiAkJChDQykgLUkuICQkKENGTEFHUykgLU1NRCAtTVQgJCRAIC1jICQoQ1VSRElSKS8kJFx1MDAzYyAkJChMRExJQlMpIC1vICQkKEBGKSkgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkJEA7IHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtVEVTVCcgJyQkKG5vdGRpciAkJEApJyAxXHUwMDNlXHUwMDI2MikpKVxuLVx0JCQoaWYgJCQoVEVTVF9ORUVEU19CVEZJRFMpLFx0XHRcdFx0XHRcdFxcXG4tXHRcdCQoUSlpZiBbIC1mICQkQCBdOyB0aGVuXHRcdFx0XHRcdFx0XFxcbi1cdFx0JChpZiAkKGZpbHRlciAxLCQoVikpLHRydWUscHJpbnRmICcgICUtOHMlcyAlc1xcbicgXCJCVEZJRFNcIiBcIiBbJChUUlVOTkVSX0JJTkFSWSldXCIgXCIkJChub3RkaXIgJCRAKVwiKTsgXFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChUUlVOTkVSX09VVFBVVCkvYnRmX2RhdGEuYnBmLm8gJCRAO1x0XFxcbi1cdFx0JChSRVNPTFZFX0JURklEUykgLS1wYXRjaF9idGZpZHMgJCRALkJURl9pZHMgJCRAO1x0XHRcXFxuLVx0XHRmaSlcbi1cbi0kKFRSVU5ORVJfVEVTVF9PQkpTOi5vPS5kKTogJChUUlVOTkVSX09VVFBVVCkvJS50ZXN0LmQ6XHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX1RFU1RTX0RJUikvJS5jXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJCQoQlBGT0JKKSB8ICQoVFJVTk5FUl9PVVRQVVQpXHRcdFxcXG4tXHRcdFx0ICAgICQoVFJVTk5FUl9CUEZfU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFMpXHRcdFx0XFxcbi1cdFx0XHQgICAgJChUUlVOTkVSX0JQRl9MU0tFTFNfU0lHTkVEKVx0XHRcXFxuLVx0XHRcdCAgICAkKFRSVU5ORVJfQlBGX1NLRUxTX0xJTktFRClcbi1cbi1pZmVxICgkKGZpbHRlciBjbGVhbiBkb2NzLWNsZWFuIGVtaXRfdGVzdHMsJChNQUtFQ01ER09BTFMpKSwpXG4taW5jbHVkZSAkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlM6Lm89LmQpKVxuLWVuZGlmXG4tXG4tIyBhZGQgcGVyIGV4dHJhIG9iaiBDRkdMQUdTIGRlZmluaXRpb25zXG4tJChmb3JlYWNoIE4sJChwYXRzdWJzdCAkKFRSVU5ORVJfT1VUUFVUKS8lLm8sJSwkKFRSVU5ORVJfRVhUUkFfT0JKUykpLFx0XFxcbi1cdCQoZXZhbCAkKFRSVU5ORVJfT1VUUFVUKS8kKE4pLm86IENGTEFHUyArPSAkKCQoTikuYy1DRkxBR1MpKSlcbi1cbi0kKFRSVU5ORVJfRVhUUkFfT0JKUyk6ICQoVFJVTk5FUl9PVVRQVVQpLyUubzpcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAlLmNcdFx0XHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChUUlVOTkVSX0VYVFJBX0hEUlMpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChWRVJJRllfU0lHX0hEUilcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFRSVU5ORVJfVEVTVFNfSERSKVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQkKEJQRk9CSikgfCAkKFRSVU5ORVJfT1VUUFVUKVxuLVx0JCQoY2FsbCBtc2csRVhULU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0kKFRSVU5ORVJfTElCX09CSlMpOiAkKFRSVU5ORVJfT1VUUFVUKS8lLm86JChUT09MU0RJUikvbGliLyUuY1xuLVx0JCQoY2FsbCBtc2csTElCLU9CSiwkKFRSVU5ORVJfQklOQVJZKSwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgLWMgJCRcdTAwM2MgJCQoTERMSUJTKSAtbyAkJEBcbi1cbi0jIG5vbi1mbGF2b3JlZCBpbi1zcmN0cmVlIGJ1aWxkcyByZWNlaXZlIHNwZWNpYWwgdHJlYXRtZW50LCBpbiBwYXJ0aWN1bGFyLCB3ZVxuLSMgZG8gbm90IG5lZWQgdG8gY29weSBleHRyYSByZXNvdXJjZXMgKHNlZSBlLmcuIHRlc3RfYnRmX2R1bXBfY2FzZSgpKVxuLSQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhczogJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSB8ICQoVFJVTk5FUl9PVVRQVVQpXG4taWZuZXEgKCQyOiQoT1VUUFVUKSw6JChzaGVsbCBwd2QpKVxuLVx0JCQoY2FsbCBtc2csRVhULUNPUFksJChUUlVOTkVSX0JJTkFSWSksJChUUlVOTkVSX0VYVFJBX0ZJTEVTKSlcbi1cdCQoUSlyc3luYyAtYXEgJChpZiAkKFBFUk1JU1NJVkUpLC0taWdub3JlLW1pc3NpbmctYXJncykgJCReICQoVFJVTk5FUl9PVVRQVVQpL1xuLWVuZGlmXG4tXG4tIyBzb21lIFgudGVzdC5vIGZpbGVzIGhhdmUgcnVudGltZSBkZXBlbmRlbmNpZXMgb24gWS5icGYubyBmaWxlc1xuLSQoT1VUUFVUKS8kKFRSVU5ORVJfQklOQVJZKTogfCAkKFRSVU5ORVJfQlBGX09CSlMpXG4tXG4tJChPVVRQVVQpLyQoVFJVTk5FUl9CSU5BUlkpOiAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJCQod2lsZGNhcmQgJChUUlVOTkVSX1RFU1RfT0JKUykpLCQoVFJVTk5FUl9URVNUX09CSlMpKSwkKFRSVU5ORVJfVEVTVF9PQkpTKSlcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfRVhUUkFfT0JKUykgJCQoQlBGT0JKKVx0XHRcXFxuLVx0XHRcdCAgICAgJChUUlVOTkVSX0xJQl9PQkpTKVx0XHRcdFxcXG4tXHRcdFx0ICAgICAkKFRSVU5ORVJfQlBGVE9PTClcdFx0XHRcdFxcXG4tXHRcdFx0ICAgICAkKE9VVFBVVCkvdmVyaXN0YXRcdFx0XHRcdFxcXG4tXHRcdFx0ICAgICB8ICQoVFJVTk5FUl9CSU5BUlkpLWV4dHJhc1x0XHRcdFxcXG4tXHRcdFx0ICAgICAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MlLCQxKSwkKGlmICQoUEVSTUlTU0lWRSksJChUUlVOTkVSX1RFU1RfT0JKUykpKVxuLVx0JCQoY2FsbCBtc2csQklOQVJZLCwkJEApXG4tXHQkKFEpJCQoQ0MpICQkKENGTEFHUykgJChpZiAkKGZpbHRlciB0ZXN0X3Byb2dzJSwkMSksJChpZiAkKFBFUk1JU1NJVkUpLCQkKGZpbHRlciAlLmEgJS5vLCQkKHdpbGRjYXJkICQoVFJVTk5FUl9URVNUX09CSlMpKSAkJChmaWx0ZXItb3V0ICQoVFJVTk5FUl9URVNUX09CSlMpLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpLCQkKGZpbHRlciAlLmEgJS5vLCQkXikpICQkKExETElCUykgJCQoTExWTV9MRExJQlMpICQkKExERkxBR1MpICQkKExMVk1fTERGTEFHUykgLW8gJCRAXG4tXHQkKFEpbG4gLXNmICQoaWYgJDIsLi4sLikvdG9vbHMvYnVpbGQvYnBmdG9vbC8kKFVTRV9CT09UU1RSQVApYnBmdG9vbCBcXFxuLVx0XHQgICAkKE9VVFBVVCkvJChpZiAkMiwkMi8pYnBmdG9vbFxuLVxuLWVuZGVmXG4tXG4tVkVSSUZZX1NJR19TRVRVUCA6PSAkKENVUkRJUikvdmVyaWZ5X3NpZ19zZXR1cC5zaFxuLVZFUklGWV9TSUdfSERSIDo9IHZlcmlmaWNhdGlvbl9jZXJ0Lmhcbi1WRVJJRklDQVRJT05fQ0VSVCAgIDo9ICQoQlVJTERfRElSKS9zaWduaW5nX2tleS5kZXJcbi1QUklWQVRFX0tFWSA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkucGVtXG4tXG4tJChWRVJJRklDQVRJT05fQ0VSVCkgJChQUklWQVRFX0tFWSk6ICQoVkVSSUZZX1NJR19TRVRVUClcbisjIE9uZSBnZW5rZXkgcnVuIHByb2R1Y2VzIGJvdGggZmlsZXMuIEEgcGxhaW4gdHdvLXRhcmdldCBydWxlIGlzIG5vdFxuKyMgZ3JvdXBlZCAtIGlmIGJvdGggZmlsZXMgYXJlIHN0YWxlIG1ha2Ugd291bGQgcnVuIGdlbmtleSB0d2ljZSwgdW5kZXJcbisjIC1qIGNvbmN1cnJlbnRseSwgYW5kIHRoZSBvcGVuc3NsIGludm9jYXRpb25zIHJhY2U7IHRoZSBwYXR0ZXJuIGZvcm1cbisjIGlzIGltcGxpY2l0bHkgZ3JvdXBlZCBldmVuIHdpdGggbWFrZSBcdTAwM2MgNC4zLiBUaGUgc3RlbSBvbmx5IHN0YW5kcyBpblxuKyMgZm9yICdzaWduaW5nJyBzbyB0aGF0IG5vIG90aGVyIC5wZW0vLmRlciB1bmRlciAkKEJVSUxEX0RJUikgbWF0Y2hlcy5cbiskKEJVSUxEX0RJUikvJV9rZXkucGVtICQoQlVJTERfRElSKS8lX2tleS5kZXI6ICQoVkVSSUZZX1NJR19TRVRVUClcbiBcdCQoUSlta2RpciAtcCAkKEJVSUxEX0RJUilcbiBcdCQoUSkkKFZFUklGWV9TSUdfU0VUVVApIGdlbmtleSAkKEJVSUxEX0RJUilcbiBcbkBAIC04MzMsNyArNDAyLDYgQEAgTElCQVJFTkFfQ09NTU9OX0RFUFMgOj0gJCh3aWxkY2FyZCBsaWJhcmVuYS9NYWtlZmlsZVx0XHRcXFxuIExJQkFSRU5BX0JQRl9ERVBTIDo9ICQoTElCQVJFTkFfQ09NTU9OX0RFUFMpICQod2lsZGNhcmQgbGliYXJlbmEvc2VsZnRlc3RzLyopXG4gTElCQVJFTkFfQkVOQ0hfQlBGX0RFUFMgOj0gJChMSUJBUkVOQV9DT01NT05fREVQUykgJCh3aWxkY2FyZCBsaWJhcmVuYS9iZW5jaHMvKilcbiBcbi1MSUJBUkVOQV9TS0VMIDo9IGxpYmFyZW5hL2xpYmFyZW5hLnNrZWwuaFxuIExJQkFSRU5BX0JFTkNIX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYmVuY2guc2tlbC5oXG4gXG4gJChMSUJBUkVOQV9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxuQEAgLTg0Myw5NSArNDExLDEyNiBAQCAkKExJQkFSRU5BX0JFTkNIX1NLRUwpOiAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoTElCQVJFTkFfQkVOQ0hfQlBGX1xuIFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgYmVuY2htYXJrcyAkKExJQkFSRU5BX01BS0VfQVJHUylcbiBcbiBpZm5lcSAoJChDTEFOR19IQVNfQVJFTkFfQVNBTiksKVxuLUxJQkFSRU5BX0FTQU5fU0tFTCA6PSBsaWJhcmVuYS9saWJhcmVuYV9hc2FuLnNrZWwuaFxuLUNGTEFHUyArPSAtREhBU19CUEZfQVJFTkFfQVNBTlxuIFxuICQoTElCQVJFTkFfQVNBTl9TS0VMKTogJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoQlBGT0JKKSAkKExJQkFSRU5BX0JQRl9ERVBTKVxuIFx0KyQoTUFLRSkgLUMgbGliYXJlbmEgbGliYXJlbmFfYXNhbi5za2VsLmggJChMSUJBUkVOQV9NQUtFX0FSR1MpXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IHByb2dfdGVzdHNcbi1UUlVOTkVSX0JQRl9QUk9HU19ESVIgOj0gcHJvZ3Ncbi1UUlVOTkVSX0VYVFJBX1NPVVJDRVMgOj0gdGVzdF9wcm9ncy5jXHRcdFxcXG4tXHRcdFx0IGNncm91cF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRyYWNlX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgbmV0d29ya19oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IHRlc3RpbmdfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBidGZfaGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IGNhcF9oZWxwZXJzLmNcdFx0XFxcbi1cdFx0XHQgdW5wcml2X2hlbHBlcnMuYyBcdFxcXG4tXHRcdFx0IHN5c2N0bF9oZWxwZXJzLmNcdFxcXG4tXHRcdFx0IG5ldGxpbmtfaGVscGVycy5jXHRcXFxuLVx0XHRcdCBqaXRfZGlzYXNtX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgaW9faGVscGVycy5jXHRcdFxcXG4tXHRcdFx0IHRlc3RfbG9hZGVyLmNcdFx0XFxcbi1cdFx0XHQgeHNrLmNcdFx0XHRcXFxuLVx0XHRcdCBkaXNhc20uY1x0XHRcXFxuLVx0XHRcdCBkaXNhc21faGVscGVycy5jXHRcXFxuLVx0XHRcdCBqc29uX3dyaXRlci5jIFx0XHRcXFxuLVx0XHRcdCAkKFZFUklGWV9TSUdfSERSKVx0XHRcXFxuLVx0XHRcdCBmbG93X2Rpc3NlY3Rvcl9sb2FkLmhcdFxcXG4tXHRcdFx0IGlwX2NoZWNrX2RlZnJhZ19mcmFncy5oXHRcXFxuLVx0XHRcdCBicGZ0b29sX2hlbHBlcnMuY1x0XFxcbi1cdFx0XHQgdXNkdF8xLmMgdXNkdF8yLmNcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfU0tFTClcdFxcXG4tXHRcdFx0ICQoTElCQVJFTkFfQVNBTl9TS0VMKVxuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj0gZmluZF9iaXQuY1xuLVRSVU5ORVJfRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9saWJ1cmFuZG9tX3JlYWQuc29cdFx0XHRcXFxuLVx0XHQgICAgICAgJChPVVRQVVQpL3hkcF9zeW5wcm94eVx0XHRcdFx0XFxcbi1cdFx0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKE9VVFBVVCkvdXByb2JlX211bHRpXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJChURVNUX0tNT0RfVEFSR0VUUylcdFx0XHRcdFxcXG4tXHRcdCAgICAgICBpbWFfc2V0dXAuc2ggXHRcdFx0XHRcdFxcXG4tXHRcdCAgICAgICAkKFZFUklGWV9TSUdfU0VUVVApXHRcdFx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcXFxuLVx0XHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy8qLmJwZi5vKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gQ0xBTkdfQlBGX0JVSUxEX1JVTEVcbi1UUlVOTkVSX0JQRl9DRkxBR1MgOj0gJChCUEZfQ0ZMQUdTKSAkKENMQU5HX0NGTEFHUykgLURFTkFCTEVfQVRPTUlDU19URVNUU1xuLSQoZXZhbCAkKGNhbGwgREVGSU5FX1RFU1RfUlVOTkVSLHRlc3RfcHJvZ3MpKVxuLVxuLSMgRGVmaW5lIHRlc3RfcHJvZ3Mtbm9fYWx1MzIgdGVzdCBydW5uZXIuXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19OT0FMVTMyX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChDTEFOR19DRkxBR1MpXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxub19hbHUzMikpXG4tXG4tIyBEZWZpbmUgdGVzdF9wcm9ncy1jcHV2NCB0ZXN0IHJ1bm5lci5cbisjIEdlbmVyYXRlZCB0ZXN0IGxpc3QgaGVhZGVyc1xuK1xuK2RlZmluZSBnZW5fdGVzdHNfaGRyXG4rXHQkKGNhbGwgbXNnLFRFU1QtSERSLCwkQClcbitcdCQoUSkoZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nO1x0XHRcXFxuK1x0XHQgIHNlZCAtbiAtRSAncy9edm9pZCAoc2VyaWFsXyk/dGVzdF8oW2EtekEtWjAtOV9dKylcXCgodm9pZCk/XFwpLiovREVGSU5FX1RFU1QoXFwyKS9wJ1x0XFxcbitcdFx0JChARCkvKi5jIHwgc29ydCkgXHUwMDNlICRAXG4rZW5kZWZcbitcbitwcm9nX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgcHJvZ190ZXN0cy8qLmMpXG4rXHQkKGdlbl90ZXN0c19oZHIpXG4rXG4rbWFwX3Rlc3RzL3Rlc3RzLmg6ICQod2lsZGNhcmQgbWFwX3Rlc3RzLyouYylcbitcdCQoZ2VuX3Rlc3RzX2hkcilcbitcbisjIFRlc3QgcnVubmVyIGluc3RhbmNlcywgb25lIHN1Yi1tYWtlIGVhY2ggKHNlZSBNYWtlZmlsZS5ydW5uZXIpLlxuK1xuKyMgVGhlIExMVk0gZmVhdHVyZS1wcm9iZSByZXN1bHRzIGFuZCBURVNUX0tNT0RTIGFyZSBleHBvcnRlZFxuKyMgdG8gdGhlIHJ1bm5lciBzdWItbWFrZXMuIENDIGlzIHBhc3NlZCBleHBsaWNpdGx5IGluc3RlYWQ6IGV4cG9ydGluZyBpdFxuKyMgd291bGQgYWxzbyBsZWFrIGxpYi5taydzIENDIGludG8gdGhlIGxpYmJwZiBzdWItYnVpbGQsIHdoaWNoIGNvbXB1dGVzXG4rIyBpdHMgb3duLiAoJ2V4cG9ydCBOQU1FJyBvbiBhbiB1bmRlZmluZWRcbisjIHZhcmlhYmxlIGNyZWF0ZXMgYW4gZW1wdHkgb25lLCBzbyB0aGVzZSBzdGF5IGJlbG93IHRoZSBkZWZpbml0aW9ucy4pXG4rZXhwb3J0IExMVk1fTERMSUJTIExMVk1fTERGTEFHUyBURVNUX0tNT0RTXG4rZXhwb3J0IElOSEVSSVRFRF9DRkxBR1MgSU5IRVJJVEVEX0xERkxBR1NcbitcbitSVU5ORVJfTUFLRSA6PSAkKE1BS0UpIC1mIE1ha2VmaWxlLnJ1bm5lciBPVVRQVVQ9JChPVVRQVVQpIENDPSckKENDKSdcdFxcXG4rXHQgICAgICAgQ0xBTkc9JyQoQ0xBTkcpJ1xuK1xuKyMgRXZlcnl0aGluZyBhIHJ1bm5lciBpbnN0YW5jZSByZWZlcmVuY2VzIGJ1dCBkb2VzIG5vdCBrbm93IGhvdyB0byBidWlsZC5cbitSVU5ORVJfUFJFUkVRUyA6PSAkKElOQ0xVREVfRElSKS92bWxpbnV4LmggJChCUEZPQkopICQoQlBGVE9PTClcdFx0XFxcbitcdFx0ICAkKFRSVU5ORVJfQlBGVE9PTCkgJChSRVNPTFZFX0JURklEUylcdFx0XHRcXFxuK1x0XHQgICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcdFx0XHRcXFxuK1x0XHQgICQoVkVSSUZZX1NJR19IRFIpICQoUFJJVkFURV9LRVkpICQoVkVSSUZJQ0FUSU9OX0NFUlQpXHRcXFxuK1x0XHQgICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXHRcdFxcXG4rXHRcdCAgcHJvZ190ZXN0cy90ZXN0cy5oIG1hcF90ZXN0cy90ZXN0cy5oXHRcdFx0XFxcbitcdFx0ICAkKFJVTk5FUl9PQkpTKVx0XHRcdFx0XHRcXFxuK1x0XHQgICQoT1VUUFVUKS91cmFuZG9tX3JlYWQgJChPVVRQVVQpL2xpYnVyYW5kb21fcmVhZC5zb1x0XFxcbitcdFx0ICAkKE9VVFBVVCkveGRwX3N5bnByb3h5ICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XFxcbitcdFx0ICAkKE9VVFBVVCkvdXByb2JlX211bHRpICQoVEVTVF9LTU9EX1RBUkdFVFMpXG4rXG4rIyBUaGUgbWFpbiBNYWtlZmlsZSBjYW5ub3QgdGVsbCB3aGV0aGVyICQoT1VUUFVUKS90ZXN0X3Byb2dzIGlzIHN0YWxlIC1cbisjIG9ubHkgdGhlIHJ1bm5lciBzdWItbWFrZSBrbm93cyBpdHMgZnVsbCBkZXBlbmRlbmN5IGdyYXBoLiBGT1JDRSBtYWtlc1xuKyMgdGhlIGRlbGVnYXRpbmcgcnVsZXMgYmVsb3cgYWx3YXlzIHJ1bjsgdGhlaXIgZGVwZW5kZW50cyBzdGlsbCByZWJ1aWxkXG4rIyBvbiBtdGltZSBvbmx5LlxuK0ZPUkNFOlxuK1xuKyMgVGhlIGRlZmF1bHQgZmxhdm9yJ3MgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9ucyBhcmUgY29uc3VtZWQgaGVyZSBhc1xuKyMgd2VsbCBhcyBpbnNpZGUgdGhlIHJ1bm5lciBzdWItbWFrZXM6IGJlbmNoLCB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmRcbisjIHRlc3RfY3BwIGRlcGVuZCBvbiBpbmRpdmlkdWFsIHNrZWxldG9ucywgYW5kIGxpYi5taydzXG4rIyBpbnN0YWxsIHJ1bGUgY29waWVzIHRoZSBCUEYgb2JqZWN0cy4gSW5zdGFudGlhdGUgdGhlIHNoYXJlZCBydWxlc1xuKyMgKE1ha2VmaWxlLnNrZWwpIGZvciB0aGUgZGVmYXVsdCBmbGF2b3IsIHNvIHRob3NlIGNvbnN1bWVycyBkZXBlbmQgb25cbisjIGV4YWN0bHkgdGhlIGZpbGVzIHRoZXkgdXNlOyB0aGUgdW5mbGF2b3JlZCBydW5uZXJzJyBkZWxlZ2F0aW9uIHJ1bGVzXG4rIyBiZWxvdyBsaXN0IHRoZSB3aG9sZSBzZXQgYXMgcHJlcmVxdWlzaXRlcywgc28gdGhvc2Ugc3ViLW1ha2VzIGZpbmQgdGhlXG4rIyBmaWxlcyB0aGlzIE1ha2VmaWxlIG93bnMgdXAgdG8gZGF0ZS5cbitSRElSIDo9ICQoT1VUUFVUKVxuK0ZMQVZPUiA6PVxuK0JJTkFSWSA6PSB0ZXN0X3Byb2dzXG4rQlBGX0NDIDo9ICQoQ0xBTkcpXG4rQlBGX0NDX01TRyA6PSBDTE5HLUJQRlxuK0JQRl9TWVNfSU5DTFVERVMgOj0gJChDTEFOR19TWVNfSU5DTFVERVMpXG4rQlBGX0NDX0ZMQUdTIDo9IC1PMiAkKEJQRl9UQVJHRVRfRU5ESUFOKSAtbWNwdT12M1xuK0JQRl9ERUZJTkVTIDo9IC1ERU5BQkxFX0FUT01JQ1NfVEVTVFNcbitpbmNsdWRlIE1ha2VmaWxlLnNrZWxcbitcbitERUZBVUxUX1JVTk5FUl9BUkdTIDo9IFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj0gVEVTVFNfRElSPXByb2dfdGVzdHNcdFxcXG4rXHRCUEZfQ0M9JyQoQlBGX0NDKScgQlBGX0NDX01TRz0kKEJQRl9DQ19NU0cpXHRcdFx0XFxcbitcdEJQRl9TWVNfSU5DTFVERVM9JyQoQlBGX1NZU19JTkNMVURFUyknXHRcdFx0XHRcXFxuK1x0QlBGX0NDX0ZMQUdTPSckKEJQRl9DQ19GTEFHUyknIEJQRl9ERUZJTkVTPSQoQlBGX0RFRklORVMpXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3M6ICQoUlVOTkVSX1BSRVJFUVMpICQoQlBGX09CSlMpICQoQUxMX1NLRUxTKSBGT1JDRVxuK1x0KyQoUSkkKFJVTk5FUl9NQUtFKSAkKERFRkFVTFRfUlVOTkVSX0FSR1MpXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3Mtbm9fYWx1MzI6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1ub19hbHUzMiBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXYyJ1xuK1xuIGlmbmVxICgkKENMQU5HX0NQVVY0KSwpXG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSBDTEFOR19DUFVWNF9CUEZfQlVJTERfUlVMRVxuLVRSVU5ORVJfQlBGX0NGTEFHUyA6PSAkKEJQRl9DRkxBR1MpICQoQ0xBTkdfQ0ZMQUdTKSAtREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9wcm9ncyxjcHV2NCkpXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtY3B1djQ6ICQoUlVOTkVSX1BSRVJFUVMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X3Byb2dzIEZMQVZPUj1jcHV2NCBURVNUU19ESVI9cHJvZ190ZXN0cyBcXFxuK1x0XHRCUEZfQ0M9JyQoQ0xBTkcpJyBCUEZfQ0NfTVNHPUNMTkctQlBGIEJQRl9TWVNfSU5DTFVERVM9JyQoQ0xBTkdfU1lTX0lOQ0xVREVTKSdcdFxcXG4rXHRcdEJQRl9DQ19GTEFHUz0nLU8yICQoQlBGX1RBUkdFVF9FTkRJQU4pIC1tY3B1PXY0J1x0XHRcXFxuK1x0XHRCUEZfREVGSU5FUz0tREVOQUJMRV9BVE9NSUNTX1RFU1RTXG4gZW5kaWZcbiBcbi0jIERlZmluZSB0ZXN0X3Byb2dzIEJQRi1HQ0MtZmxhdm9yZWQgdGVzdCBydW5uZXIuXG4gaWZuZXEgKCQoQlBGX0dDQyksKVxuLVRSVU5ORVJfQlBGX0JVSUxEX1JVTEUgOj0gR0NDX0JQRl9CVUlMRF9SVUxFXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9ICQoQlBGX0NGTEFHUykgJChjYWxsIGdldF9zeXNfaW5jbHVkZXMsZ2NjLClcbi0kKGV2YWwgJChjYWxsIERFRklORV9URVNUX1JVTk5FUix0ZXN0X3Byb2dzLGJwZl9nY2MpKVxuKyMgU3lzIGluY2x1ZGVzIGNvbWUgZnJvbSB0aGUgKmhvc3QqIGdjYywgbm90ICQoQlBGX0dDQyksIGFzIHRoZSBydWxlXG4rIyB0aGlzIHJlcGxhY2VzIGhhZCBpdC5cbitHQ0NfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLGdjYywpXG4rXG4rJChPVVRQVVQpL3Rlc3RfcHJvZ3MtYnBmX2djYzogJChSVU5ORVJfUFJFUkVRUykgRk9SQ0VcbitcdCskKFEpJChSVU5ORVJfTUFLRSkgUlVOTkVSPXRlc3RfcHJvZ3MgRkxBVk9SPWJwZl9nY2MgVEVTVFNfRElSPXByb2dfdGVzdHMgXFxcbitcdFx0QlBGX0NDPSckKEJQRl9HQ0MpJyBCUEZfQ0NfTVNHPUdDQy1CUEZcdFx0XHRcdFxcXG4rXHRcdEJQRl9TWVNfSU5DTFVERVM9JyQoR0NDX1NZU19JTkNMVURFUyknXHRcdFx0XHRcXFxuK1x0XHRCUEZfQ0NfRkxBR1M9Jy1EQlBGX05PX1BSRVNFUlZFX0FDQ0VTU19JTkRFWCAtV25vLWF0dHJpYnV0ZXMgLU8yJ1xuIGVuZGlmXG4gXG4tIyBEZWZpbmUgdGVzdF9tYXBzIHRlc3QgcnVubmVyLlxuLVRSVU5ORVJfVEVTVFNfRElSIDo9IG1hcF90ZXN0c1xuLVRSVU5ORVJfQlBGX1BST0dTX0RJUiA6PSBwcm9nc1xuLVRSVU5ORVJfRVhUUkFfU09VUkNFUyA6PSB0ZXN0X21hcHMuY1xuLVRSVU5ORVJfTElCX1NPVVJDRVMgOj1cbi1UUlVOTkVSX0VYVFJBX0ZJTEVTIDo9XG4tVFJVTk5FUl9CUEZfQlVJTERfUlVMRSA6PSAkJChlcnJvciBubyBCUEYgb2JqZWN0cyBzaG91bGQgYmUgYnVpbHQpXG4tVFJVTk5FUl9CUEZfQ0ZMQUdTIDo9XG4tJChldmFsICQoY2FsbCBERUZJTkVfVEVTVF9SVU5ORVIsdGVzdF9tYXBzKSlcbisjIHRlc3RfbWFwcyBjb21waWxlcyBtYXBfdGVzdHMvKi5jIGFnYWluc3QgdGhlIGRlZmF1bHQgZmxhdm9yJ3Mgc2tlbGV0b25zXG4rJChPVVRQVVQpL3Rlc3RfbWFwczogJChSVU5ORVJfUFJFUkVRUykgJChCUEZfT0JKUylcdFxcXG4rXHRcdCAgICAgJChBTExfU0tFTFMpIEZPUkNFXG4rXHQrJChRKSQoUlVOTkVSX01BS0UpIFJVTk5FUj10ZXN0X21hcHMgRkxBVk9SPSBURVNUU19ESVI9bWFwX3Rlc3RzXG4rXG4rVEVTVF9HRU5fRklMRVMgKz0gJChCUEZfT0JKUylcbiBcbiAjIERlZmluZSB0ZXN0X3ZlcmlmaWVyIHRlc3QgcnVubmVyLlxuICMgSXQgaXMgbXVjaCBzaW1wbGVyIHRoYW4gdGVzdF9tYXBzL3Rlc3RfcHJvZ3MgYW5kIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgZnJvbVxuICMgdGhlbSAoZS5nLiwgdGVzdC5oIGlzIHVzaW5nIGNvbXBsZXRlbHkgcGF0dGVybiksIHRoYXQgaXQncyB3b3J0aCBqdXN0XG4gIyBleHBsaWNpdGx5IGRlZmluaW5nIGFsbCB0aGUgcnVsZXMgZXhwbGljaXRseS5cbiB2ZXJpZmllci90ZXN0cy5oOiB2ZXJpZmllci8qLmNcbi1cdCQoc2hlbGwgKCBjZCB2ZXJpZmllci87IFxcXG4rXHQkKFEpKCBjZCB2ZXJpZmllci87IFxcXG4gXHRcdCAgZWNobyAnLyogR2VuZXJhdGVkIGhlYWRlciwgZG8gbm90IGVkaXQgKi8nOyBcXFxuIFx0XHQgIGVjaG8gJyNpZmRlZiBGSUxMX0FSUkFZJzsgXFxcbiBcdFx0ICBscyAqLmMgMlx1MDAzZSAvZGV2L251bGwgfCBzZWQgLWUgJ3NAXFwoLipcXClAI2luY2x1ZGUgXFxcIlxcMVxcXCJAJzsgXFxcbiBcdFx0ICBlY2hvICcjZW5kaWYnIFxcXG4tXHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmgpXG4rXHRcdCkgXHUwMDNlIHZlcmlmaWVyL3Rlc3RzLmhcbiAkKE9VVFBVVCkvdGVzdF92ZXJpZmllcjogdGVzdF92ZXJpZmllci5jIHZlcmlmaWVyL3Rlc3RzLmggJChCUEZPQkopIHwgJChPVVRQVVQpXG4gXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4gXHQkKFEpJChDQykgJChDRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jLCReKSAkKExETElCUykgLW8gJEBcbkBAIC05NjcsMTEgKzU2NiwxMSBAQCAkKE9VVFBVVCkvdGVzdF9jcHA6IHRlc3RfY3BwLmNwcCAkKE9VVFBVVCkvdGVzdF9jb3JlX2V4dGVybi5za2VsLmggJChCUEZPQkopXG4gXHQkKGNhbGwgbXNnLENYWCwsJEApXG4gXHQkKFEpJChDWFgpICQoQ1hYRkxBR1MpICQoZmlsdGVyICUuYSAlLm8gJS5jcHAsJF4pICQoTERMSUJTKSAtbyAkQFxuIFxuLSMgQmVuY2htYXJrIHJ1bm5lclxuKyMgQmVuY2htYXJrIHJ1bm5lci4gRXZlcnkgYmVuY2hzL2JlbmNoXyouYyBpcyBjb21waWxlZCBhbmQgbGlua2VkIGluLlxuK0JFTkNIX09CSlMgOj0gJChzb3J0ICQocGF0c3Vic3QgYmVuY2hzLyUuYywkKE9VVFBVVCkvJS5vLCQod2lsZGNhcmQgYmVuY2hzL2JlbmNoXyouYykpKVxuICQoT1VUUFVUKS9iZW5jaF8lLm86IGJlbmNocy9iZW5jaF8lLmMgYmVuY2guaCAkKEJQRk9CSilcbiBcdCQoY2FsbCBtc2csQ0MsLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChpZiAkKFBFUk1JU1NJVkUpLHx8IFxcXG4tXHRcdCgkKFJNKSAkQDsgcHJpbnRmICcgICUtMTJzICVzXFxuJyAnU0tJUC1CRU5DSCcgJyQobm90ZGlyICRAKScgMVx1MDAzZVx1MDAyNjIpKVxuK1x0JChRKSQoQ0MpICQoQ0ZMQUdTKSAtTzIgLWMgJChmaWx0ZXIgJS5jLCReKSAkKExETElCUykgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCRU5DSClcbiAkKE9VVFBVVCkvYmVuY2hfcmVuYW1lLm86ICQoT1VUUFVUKS90ZXN0X292ZXJoZWFkLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF90cmlnZ2VyLm86ICQoT1VUUFVUKS90cmlnZ2VyX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9yaW5nYnVmcy5vOiAkKE9VVFBVVCkvcmluZ2J1Zl9iZW5jaC5za2VsLmggXFxcbkBAIC05OTksMzMgKzU5OCwxMSBAQCAkKE9VVFBVVCkvYmVuY2g6ICQoT1VUUFVUKS9iZW5jaC5vIFxcXG4gXHRcdCAkKFRFU1RJTkdfSEVMUEVSUykgXFxcbiBcdFx0ICQoVFJBQ0VfSEVMUEVSUykgXFxcbiBcdFx0ICQoQ0dST1VQX0hFTFBFUlMpIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfY291bnQubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3JlbmFtZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfdHJpZ2dlci5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfcmluZ2J1ZnMubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2Jsb29tX2ZpbHRlcl9tYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9sb29wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfZm9yLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9zdHJuY21wLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfaGFzaG1hcF9mdWxsX3VwZGF0ZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9yY3VfdGFza3NfdHJhY2UubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9oYXNobWFwX2xvb2t1cC5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbG9jYWxfc3RvcmFnZV9jcmVhdGUubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2h0YWJfbWVtLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm8gXFxcbi1cdFx0ICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl90aW1pbmcubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9ub3AubyBcXFxuLVx0XHQgJChPVVRQVVQpL2JlbmNoX3hkcF9sYi5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvYmVuY2hfbGliYXJlbmEubyBcXFxuK1x0XHQgJChCRU5DSF9PQkpTKSBcXFxuIFx0XHQgJChPVVRQVVQpL3VzZHRfMS5vIFxcXG4tXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcbi1cdFx0ICNcbitcdFx0ICQoT1VUUFVUKS91c2R0XzIub1xuIFx0JChjYWxsIG1zZyxCSU5BUlksLCRAKVxuLVx0JChRKSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpICQoZmlsdGVyICUuYSAlLm8sJF4pICQoTERMSUJTKSAtbyAkQCAkKGlmICQoUEVSTUlTU0lWRSksfHwgXFxcbi1cdFx0KCQoUk0pICRAOyBwcmludGYgJyAgJS0xMnMgJXNcXG4nICdTS0lQLUxJTksnICckKG5vdGRpciAkQCkgKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpJyAxXHUwMDNlXHUwMDI2MikpXG4rXHQkKFEpJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgJChmaWx0ZXIgJS5hICUubywkXikgJChMRExJQlMpIC1vICRAICQoY2FsbCBza2lwX29uX2ZhaWwsTElOSywsKHNvbWUgYmVuY2htYXJrcyBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpKVxuIFxuICMgVGhpcyB3b3JrcyBhcm91bmQgR0NDIHdhcm5pbmcgYWJvdXQgc25wcmludGYgdHJ1bmNhdGluZyBzdHJpbmdzIGxpa2U6XG4gI1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5idWlsZHZhcnMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuYnVpbGR2YXJzXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNWM2YzE0N2QwM2M3NFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLmJ1aWxkdmFyc1xuQEAgLTAsMCArMSwxOTYgQEBcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgU2hhcmVkIHRvb2xjaGFpbiwgcGF0aCBhbmQgZmxhZyBkZWZpbml0aW9ucyBmb3IgdGhlIEJQRiBzZWxmdGVzdHNcbisjIGJ1aWxkLCBpbmNsdWRlZCBieSBib3RoIE1ha2VmaWxlIGFuZCBNYWtlZmlsZS5ydW5uZXIuIERlZmluaXRpb25zXG4rIyBmb2xsb3cgdGhlIG9yZGVyIHRoZXkgaGFkIGluIHRoZSBNYWtlZmlsZSBiZWZvcmUgdGhlIHNwbGl0LlxuK1xuK1RPT0xTRElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLilcbitMSUJESVIgOj0gJChUT09MU0RJUikvbGliXG4rQlBGRElSIDo9ICQoTElCRElSKS9icGZcbitUT09MU0lOQ0RJUiA6PSAkKFRPT0xTRElSKS9pbmNsdWRlXG4rVE9PTFNBUkNISU5DRElSIDo9ICQoVE9PTFNESVIpL2FyY2gvJChTUkNBUkNIKS9pbmNsdWRlXG4rQVBJRElSIDo9ICQoVE9PTFNJTkNESVIpL3VhcGlcbitpZm5lcSAoJChPKSwpXG4rR0VORElSIDo9ICQoTykvaW5jbHVkZS9nZW5lcmF0ZWRcbitlbHNlXG4rR0VORElSIDo9ICQoYWJzcGF0aCAuLi8uLi8uLi8uLi9pbmNsdWRlL2dlbmVyYXRlZClcbitlbmRpZlxuK0dFTkhEUiA6PSAkKEdFTkRJUikvYXV0b2NvbmYuaFxuK1BLR19DT05GSUcgPz0gJChDUk9TU19DT01QSUxFKXBrZy1jb25maWdcbitcbitpZm5lcSAoJCh3aWxkY2FyZCAkKEdFTkhEUikpLClcbisgIEdFTkZMQUdTIDo9IC1ESEFWRV9HRU5IRFJcbitlbmRpZlxuK1xuK2lmZGVmIEFTQU5cbitTQU5fQ0ZMQUdTIFx0Pz0gLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyXG4rZWxzZVxuK1NBTl9DRkxBR1NcdD89XG4rZW5kaWZcbitTQU5fTERGTEFHU1x0Pz0gJChTQU5fQ0ZMQUdTKVxuK1JFTEVBU0VcdFx0Pz1cbitPUFRfRkxBR1NcdD89ICQoaWYgJChSRUxFQVNFKSwtTzIsLU8wKVxuK1xuK0xJQkVMRl9DRkxBR1NcdDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSBsaWJlbGYgLS1jZmxhZ3MgMlx1MDAzZS9kZXYvbnVsbClcbitMSUJFTEZfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIGxpYmVsZiAtLWxpYnMgMlx1MDAzZS9kZXYvbnVsbCB8fCBlY2hvIC1sZWxmKVxuK1xuKyMgV2hlbiBCUEZfU1RSSUNUX0JVSUxEIGlzIDEsIGFueSBCUEYgb2JqZWN0LCBza2VsZXRvbiwgdGVzdCBvYmplY3QsIG9yXG4rIyBiZW5jaG1hcmsgY29tcGlsYXRpb24gZmFpbHVyZSBpcyBmYXRhbC4gU2V0IHRvIDAgdG8gdG9sZXJhdGUgZmFpbHVyZXNcbisjIGFuZCBjb250aW51ZSBidWlsZGluZyB0aGUgcmVtYWluaW5nIHRlc3RzLlxuK0JQRl9TVFJJQ1RfQlVJTEQgPz0gMVxuK1BFUk1JU1NJVkUgOj0gJChmaWx0ZXIgMCwkKEJQRl9TVFJJQ1RfQlVJTEQpKVxuK1xuKyMgUGVybWlzc2l2ZS1tb2RlIHJlY2lwZSBzdWZmaXg6IG9uIGZhaWx1cmUsIHJlbW92ZSB0aGUgdGFyZ2V0LCBlbWl0IGFcbisjIFNLSVAgbWFya2VyIGFuZCByZXBvcnQgc3VjY2VzcyBzbyB0aGUgcmVzdCBvZiB0aGUgYnVpbGQgY29udGludWVzLlxuKyMgJCgxKSAtIFNLSVAgdGFnIChCUEYsIFRFU1QsIEJFTkNILCBTS0VMLCBMSU5LLCAuLi4pXG4rIyAkKDIpIC0gb3B0aW9uYWwgZXh0cmEgZmlsZXMgdG8gcmVtb3ZlIGFsb25nc2lkZSB0aGUgdGFyZ2V0XG4rIyAkKDMpIC0gb3B0aW9uYWwgbm90ZSBhcHBlbmRlZCB0byB0aGUgU0tJUCBtZXNzYWdlXG4rc2tpcF9vbl9mYWlsID0gJChpZiAkKFBFUk1JU1NJVkUpLHx8IHsgJChSTSkgJEAgJCgyKTsgXFxcbitcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKSQoaWYgJCgzKSwgJCgzKSknIDFcdTAwM2VcdTAwMjYyOyB9KVxuK1xuKyMgUGVybWlzc2l2ZS1tb2RlIHJlY2lwZSBwcmVmaXg6IHdoZW4gYSBwcmVyZXF1aXNpdGUgb2JqZWN0IGlzIG1pc3NpbmdcbisjIChpdHMgY29tcGlsZSBmYWlsZWQgYW5kIHdhcyBza2lwcGVkKSwgcmVtb3ZlIHRoZSB0YXJnZXQgYW5kICQoMyksXG4rIyBlbWl0IGEgU0tJUCBtYXJrZXIgYW5kIHJlcG9ydCBzdWNjZXNzIHdpdGhvdXQgcnVubmluZyB0aGUgcmVzdCBvZlxuKyMgdGhlIHJlY2lwZS5cbisjICQoMSkgLSBTS0lQIHRhZ1xuKyMgJCgyKSAtIGlucHV0IGZpbGVzIHRvIGNoZWNrXG4rIyAkKDMpIC0gb3B0aW9uYWwgZXh0cmEgZmlsZXMgdG8gcmVtb3ZlIGFsb25nc2lkZSB0aGUgdGFyZ2V0XG4rc2tpcF9pZl9taXNzaW5nID0gJChpZiAkKFBFUk1JU1NJVkUpLGZvciBmIGluICQoMik7IGRvIFsgLWYgJCRmIF0gfHwgeyBcXFxuK1x0JChSTSkgJEAgJCgzKTsgXFxcbitcdHByaW50ZiAnICAlLTEycyAlc1xcbicgJ1NLSVAtJCgxKScgJyQobm90ZGlyICRAKScgMVx1MDAzZVx1MDAyNjI7IGV4aXQgMDsgfTsgZG9uZTspXG4rXG4raWZlcSAoJChzcmN0cmVlKSwpXG4rc3JjdHJlZSA6PSAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJChDVVJESVIpKSlcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbitzcmN0cmVlIDo9ICQocGF0c3Vic3QgJS8sJSwkKGRpciAkKHNyY3RyZWUpKSlcbitlbmRpZlxuK1xuK0NPTU1PTl9DRkxBR1MgPSAtZyAkKE9QVF9GTEFHUykgLXJkeW5hbWljIC1zdGQ9Z251MTFcdFx0XHRcdFxcXG4rXHQgIC1XYWxsIC1XZXJyb3IgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXJcdFx0XHRcdFxcXG4rXHQgIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGVcdFx0XHRcdFx0XFxcbitcdCAgJChHRU5GTEFHUykgJChTQU5fQ0ZMQUdTKSAkKExJQkVMRl9DRkxBR1MpXHRcdFx0XFxcbitcdCAgLUkkKENVUkRJUikgLUkkKElOQ0xVREVfRElSKSAtSSQoR0VORElSKSAtSSQoTElCRElSKVx0XHRcXFxuK1x0ICAtSSQoVE9PTFNJTkNESVIpIC1JJChUT09MU0FSQ0hJTkNESVIpIC1JJChBUElESVIpIC1JJChPVVRQVVQpXHRcXFxuK1x0ICAtSSQoQ1VSRElSKS9saWJhcmVuYS9pbmNsdWRlXG4rTERMSUJTICs9ICQoTElCRUxGX0xJQlMpIC1seiAtbHJ0IC1scHRocmVhZFxuK1xuK1BDQVBfQ0ZMQUdTXHQ6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlicGNhcCAyXHUwMDNlL2Rldi9udWxsIFx1MDAyNlx1MDAyNiBlY2hvIFwiLURUUkFGRklDX01PTklUT1I9MVwiKVxuK1BDQVBfTElCU1x0Oj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBsaWJwY2FwIDJcdTAwM2UvZGV2L251bGwpXG4rTERMSUJTICs9ICQoUENBUF9MSUJTKVxuK1xuK2lmbmVxICgkKExMVk0pLClcbisjIFNpbGVuY2Ugc29tZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGVkIHdpdGggY2xhbmdcbitDTEFOR19XQVJOX0NGTEFHUyA6PSAtV25vLXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnRcbitlbmRpZlxuK1xuKyMgQmVmb3JlIHRoZSBzcGxpdCB0aGVzZSBkZWZpbml0aW9ucyBzYXQgYWJvdmUgdGhlIC4uL2xpYi5tayBpbmNsdWRlOlxuKyMgdGhleSBhcHBlbmRlZCB0byB0aGUgZmxhZ3MgaW5oZXJpdGVkIGZyb20gdGhlIGVudmlyb25tZW50LCBhbmRcbisjIGxpYi5taydzIGFkZGl0aW9ucyAoVVNFUkNGTEFHUy9VU0VSTERGTEFHUyBhbW9uZyB0aGVtKSBjYW1lIGxhc3QuXG4rIyBUaGlzIGZpbGUgaXMgcGFyc2VkIGFmdGVyIGxpYi5tayBhdCB0aGUgdG9wIGxldmVsIGFuZCBpbiBpdHMgcGxhY2VcbisjIGluIHRoZSBydW5uZXIgc3ViLW1ha2VzLCBzbyB0aGUgc2FtZSBvcmRlciBpcyByZWJ1aWx0IGhlcmUuIFRoZVxuKyMgaW5jbHVkZXIgc25hcHNob3RzIHRoZSBpbmhlcml0ZWQgZmxhZ3MgaW4gSU5IRVJJVEVEX0NGTEFHUyBhbmRcbisjIElOSEVSSVRFRF9MREZMQUdTIGJlZm9yZSBsaWIubWsgcnVuczsgd2hhdGV2ZXIgbGliLm1rIGFwcGVuZGVkIHNpbmNlXG4rIyBpcyB0aGUgdGFpbCBvZiB0aGUgY3VycmVudCB2YWx1ZS5cbitsaWJfbWtfYWRkZWQgPSAkKHdvcmRsaXN0ICQod29yZHMgeCAkKElOSEVSSVRFRF8kKDEpKSksJCh3b3JkcyAkKCQoMSkpKSwkKCQoMSkpKVxuK0xJQl9NS19DRkxBR1MgOj0gJChjYWxsIGxpYl9ta19hZGRlZCxDRkxBR1MpXG4rTElCX01LX0xERkxBR1MgOj0gJChjYWxsIGxpYl9ta19hZGRlZCxMREZMQUdTKVxuK0NGTEFHUyA9ICQoSU5IRVJJVEVEX0NGTEFHUykgJChDT01NT05fQ0ZMQUdTKSAkKFBDQVBfQ0ZMQUdTKVx0XHRcXFxuK1x0ICQoQ0xBTkdfV0FSTl9DRkxBR1MpICQoTElCX01LX0NGTEFHUylcbitMREZMQUdTID0gJChJTkhFUklURURfTERGTEFHUykgJChTQU5fTERGTEFHUykgJChMSUJfTUtfTERGTEFHUylcbitcbisjIENoZWNrIHdoZXRoZXIgY2xhbmcgc3VwcG9ydHMgQlBGIGFkZHJlc3Mgc2FuaXRpemVyIChyZXF1aXJlcyBMTFZNIDIyKykuXG4rIyBUaGlzIHJ1bnMgYWZ0ZXIgLi4vbGliLm1rIGhhcyByZXNvbHZlZCBDTEFORyBmcm9tIExMVk09XHUwMDNjc3VmZml4IG9yIHBhdGhcdTAwM2UsXG4rIyBzbyBpdCBwcm9iZXMgdGhlIGNvbXBpbGVyIHRoYXQgYnVpbGRzIHRoZSBCUEYgb2JqZWN0cy5cbitDTEFOR19IQVNfQVJFTkFfQVNBTiA6PSAkKHNoZWxsIGVjaG8gJ2ludCB4OycgfCBcXFxuK1x0JChDTEFORykgLS10YXJnZXQ9YnBmIC1mc2FuaXRpemU9a2VybmVsLWFkZHJlc3MgXFxcbitcdC1tbGx2bSAtYXNhbi1zaGFkb3ctYWRkci1zcGFjZT0xIFxcXG4rXHQteCBjIC1jIC0gLW8gL2Rldi9udWxsIDJcdTAwM2UvZGV2L251bGwgXHUwMDI2XHUwMDI2IGVjaG8gMSlcbitcbitTQ1JBVENIX0RJUiA6PSAkKE9VVFBVVCkvdG9vbHNcbitCVUlMRF9ESVIgOj0gJChTQ1JBVENIX0RJUikvYnVpbGRcbitJTkNMVURFX0RJUiA6PSAkKFNDUkFUQ0hfRElSKS9pbmNsdWRlXG4rQlBGT0JKIDo9ICQoQlVJTERfRElSKS9saWJicGYvbGliYnBmLmFcbitpZm5lcSAoJChDUk9TU19DT01QSUxFKSwpXG4rSE9TVF9CVUlMRF9ESVJcdFx0Oj0gJChCVUlMRF9ESVIpL2hvc3RcbitIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKE9VVFBVVCkvaG9zdC10b29sc1xuK0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSE9TVF9TQ1JBVENIX0RJUikvaW5jbHVkZVxuK2Vsc2VcbitIT1NUX0JVSUxEX0RJUlx0XHQ6PSAkKEJVSUxEX0RJUilcbitIT1NUX1NDUkFUQ0hfRElSXHQ6PSAkKFNDUkFUQ0hfRElSKVxuK0hPU1RfSU5DTFVERV9ESVJcdDo9ICQoSU5DTFVERV9ESVIpXG4rZW5kaWZcbitSRVNPTFZFX0JURklEUyA6PSAkKEhPU1RfQlVJTERfRElSKS9yZXNvbHZlX2J0Zmlkcy9yZXNvbHZlX2J0Zmlkc1xuK1xuK0RFRkFVTFRfQlBGVE9PTCA6PSAkKEhPU1RfU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuK2lmbmVxICgkKENST1NTX0NPTVBJTEUpLClcbitDUk9TU19CUEZUT09MIDo9ICQoU0NSQVRDSF9ESVIpL3NiaW4vYnBmdG9vbFxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKENST1NTX0JQRlRPT0wpXG4rVVNFX0JPT1RTVFJBUCA6PSBcIlwiXG4rZWxzZVxuK1RSVU5ORVJfQlBGVE9PTCA6PSAkKERFRkFVTFRfQlBGVE9PTClcbitVU0VfQk9PVFNUUkFQIDo9IFwiYm9vdHN0cmFwL1wiXG4rZW5kaWZcbitcbitCUEZUT09MID89ICQoREVGQVVMVF9CUEZUT09MKVxuK1xuKyMgR2V0IENsYW5nJ3MgZGVmYXVsdCBpbmNsdWRlcyBvbiB0aGlzIHN5c3RlbSwgYXMgb3Bwb3NlZCB0byB0aG9zZSBzZWVuIGJ5XG4rIyAnLS10YXJnZXQ9YnBmJy4gVGhpcyBmaXhlcyBcIm1pc3NpbmdcIiBmaWxlcyBvbiBzb21lIGFyY2hpdGVjdHVyZXMvZGlzdHJvcyxcbisjIHN1Y2ggYXMgYXNtL2J5dGVvcmRlci5oLCBhc20vc29ja2V0LmgsIGFzbS9zb2NraW9zLmgsIHN5cy9jZGVmcy5oIGV0Yy5cbisjXG4rIyBVc2UgJy1pZGlyYWZ0ZXInOiBEb24ndCBpbnRlcmZlcmUgd2l0aCBpbmNsdWRlIG1lY2hhbmljcyBleGNlcHQgd2hlcmUgdGhlXG4rIyBidWlsZCB3b3VsZCBoYXZlIGZhaWxlZCBhbnl3YXlzLlxuK2RlZmluZSBnZXRfc3lzX2luY2x1ZGVzXG4rJChzaGVsbCAkKDEpICQoMikgLXYgLUUgLSBcdTAwM2MvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgXFxcbitcdHwgc2VkIC1uICcvXHUwMDNjLi4uXHUwMDNlIHNlYXJjaCBzdGFydHMgaGVyZTovLC9FbmQgb2Ygc2VhcmNoIGxpc3QuL3sgc3wgXFwoLy4qXFwpfC1pZGlyYWZ0ZXIgXFwxfHAgfScpIFxcXG4rJChzaGVsbCAkKDEpICQoMikgLWRNIC1FIC0gXHUwMDNjL2Rldi9udWxsIHwgZ3JlcCAnX19yaXNjdl94bGVuICcgfCBhd2sgJ3twcmludGYoXCItRF9fcmlzY3ZfeGxlbj0lZCAtRF9fQklUU19QRVJfTE9ORz0lZFwiLCAkJDMsICQkMyl9JykgXFxcbiskKHNoZWxsICQoMSkgJCgyKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBncmVwICdfX2xvb25nYXJjaF9ncmxlbiAnIHwgYXdrICd7cHJpbnRmKFwiLURfX0JJVFNfUEVSX0xPTkc9JWRcIiwgJCQzKX0nKSBcXFxuKyQoc2hlbGwgJCgxKSAkKDIpIC1kTSAtRSAtIFx1MDAzYy9kZXYvbnVsbCB8IGdyZXAgLUUgJ01JUFMoRUx8RUIpfF9NSVBTX1NaKFBUUnxMT05HKSB8X01JUFNfU0lNIHxfQUJJKE8zMnxOMzJ8NjQpICcgfCBhd2sgJ3twcmludGYoXCItRCVzPSVzIFwiLCAkJDIsICQkMyl9JylcbitlbmRlZlxuK1xuKyMgRGV0ZXJtaW5lIHRhcmdldCBlbmRpYW5uZXNzLlxuK0lTX0xJVFRMRV9FTkRJQU4gOj0gJChzaGVsbCAkKENDKSAtZE0gLUUgLSBcdTAwM2MvZGV2L251bGwgfCBcXFxuK1x0XHRcdGdyZXAgJ2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9FTkRJQU5fXycpXG4rTUVORElBTjo9JChpZiAkKElTX0xJVFRMRV9FTkRJQU4pLC1tbGl0dGxlLWVuZGlhbiwtbWJpZy1lbmRpYW4pXG4rXG4raWZuZXEgKCQoQ1JPU1NfQ09NUElMRSksKVxuK0NMQU5HX1RBUkdFVF9BUkNIID0gLS10YXJnZXQ9JChub3RkaXIgJChDUk9TU19DT01QSUxFOiUtPSUpKVxuK2VuZGlmXG4rXG4rIyBJbW1lZGlhdGUgb24gcHVycG9zZTogZXhwYW5kaW5nIGdldF9zeXNfaW5jbHVkZXMgZm9ya3Mgc2V2ZXJhbCBzaGVsbHMuXG4rQ0xBTkdfU1lTX0lOQ0xVREVTIDo9ICQoY2FsbCBnZXRfc3lzX2luY2x1ZGVzLCQoQ0xBTkcpLCQoQ0xBTkdfVEFSR0VUX0FSQ0gpKVxuK0JQRl9DRkxBR1MgPSAtZyAtV2FsbCAtV2Vycm9yIC1EX19UQVJHRVRfQVJDSF8kKFNSQ0FSQ0gpICQoTUVORElBTilcdFxcXG4rXHQgICAgIC1JJChJTkNMVURFX0RJUikgLUkkKENVUkRJUikgLUkkKEFQSURJUilcdFx0XHRcXFxuK1x0ICAgICAtSSQoVE9PTFNJTkNESVIpIC1JJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGVcdFx0XFxcbitcdCAgICAgLUkkKGFic3BhdGggJChPVVRQVVQpLy4uL3Vzci9pbmNsdWRlKVx0XHRcdFxcXG4rXHQgICAgIC1zdGQ9Z251MTFcdFx0IFx0XHRcdFx0XHRcXFxuK1x0ICAgICAtZm5vLXN0cmljdC1hbGlhc2luZyBcdFx0XHRcdFx0XFxcbitcdCAgICAgLVduby1taWNyb3NvZnQtYW5vbi10YWdcdFx0XHRcdFx0XFxcbitcdCAgICAgLWZtcy1leHRlbnNpb25zXHRcdFx0XHRcdFx0XFxcbitcdCAgICAgLVduby1jb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcdFx0XHRcXFxuK1x0ICAgICAtV25vLWluaXRpYWxpemVyLW92ZXJyaWRlc1x0XHRcdFx0XHRcXFxuK1x0ICAgICAjXG4rIyBUT0RPOiBlbmFibGUgbWUgLVdzaWduLWNvbXBhcmVcbitcbitWRVJJRllfU0lHX1NFVFVQIDo9ICQoQ1VSRElSKS92ZXJpZnlfc2lnX3NldHVwLnNoXG4rVkVSSUZJQ0FUSU9OX0NFUlQgICA6PSAkKEJVSUxEX0RJUikvc2lnbmluZ19rZXkuZGVyXG4rUFJJVkFURV9LRVkgOj0gJChCVUlMRF9ESVIpL3NpZ25pbmdfa2V5LnBlbVxuK1xuK0xJQkFSRU5BX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmEuc2tlbC5oXG4rXG4raWZuZXEgKCQoQ0xBTkdfSEFTX0FSRU5BX0FTQU4pLClcbitMSUJBUkVOQV9BU0FOX1NLRUwgOj0gbGliYXJlbmEvbGliYXJlbmFfYXNhbi5za2VsLmhcbitDRkxBR1MgKz0gLURIQVNfQlBGX0FSRU5BX0FTQU5cbitlbmRpZlxuK1xuK1JVTk5FUl9PQkpTLXRlc3RfcHJvZ3MgOj0gJChhZGRwcmVmaXggJChPVVRQVVQpLyxcdFx0XHRcXFxuK1x0dGVzdF9wcm9ncy5vIGNncm91cF9oZWxwZXJzLm8gdHJhY2VfaGVscGVycy5vXHRcdFx0XFxcbitcdG5ldHdvcmtfaGVscGVycy5vIHRlc3RpbmdfaGVscGVycy5vIGJ0Zl9oZWxwZXJzLm9cdFx0XFxcbitcdGNhcF9oZWxwZXJzLm8gdW5wcml2X2hlbHBlcnMubyBzeXNjdGxfaGVscGVycy5vXHRcdFx0XFxcbitcdG5ldGxpbmtfaGVscGVycy5vIGppdF9kaXNhc21faGVscGVycy5vIGlvX2hlbHBlcnMub1x0XHRcXFxuK1x0dGVzdF9sb2FkZXIubyB4c2subyBkaXNhc20ubyBkaXNhc21faGVscGVycy5vXHRcdFx0XFxcbitcdGpzb25fd3JpdGVyLm8gYnBmdG9vbF9oZWxwZXJzLm8gdXNkdF8xLm8gdXNkdF8yLm8pXG4rUlVOTkVSX09CSlMtdGVzdF9tYXBzIDo9ICQoYWRkcHJlZml4ICQoT1VUUFVUKS8sXHRcdFx0XFxcbitcdHRlc3RfbWFwcy5vIHRlc3RpbmdfaGVscGVycy5vKVxuK1xuK1JVTk5FUl9MSUJfT0JKUy10ZXN0X3Byb2dzIDo9ICQoT1VUUFVUKS9maW5kX2JpdC5vXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnJ1bm5lciBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5ydW5uZXJcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi43MzYxZmY3ZGUzMzBjXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUucnVubmVyXG5AQCAtMCwwICsxLDE5OSBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBCdWlsZCBvbmUgQlBGIHRlc3QtcnVubmVyIGluc3RhbmNlOiB0ZXN0X3Byb2dzLCBvbmUgb2YgaXRzIGZsYXZvcnNcbisjIChub19hbHUzMiwgY3B1djQsIGJwZl9nY2MpLCBvciB0ZXN0X21hcHMuXG4rI1xuKyMgRWFjaCBpbnN0YW5jZSBpcyBhbiBpbmRlcGVuZGVudCBzdWItbWFrZSAtIHRoZSBmbGF2b3JlZCBvbmVzIHdpdGggdGhlaXJcbisjIG93biBvdXRwdXQgZGlyZWN0b3J5LCB0aGUgdW5mbGF2b3JlZCBvbmVzIHNoYXJpbmcgJChPVVRQVVQpIHdpdGggdGhlXG4rIyBtYWluIE1ha2VmaWxlIC0gc28gZXZlcnl0aGluZyBoZXJlIGlzIHdyaXR0ZW4gaW4gcGxhaW4gbWFrZTogbm9cbisjIGRlZmluZS9ldmFsIGxheWVyLCBubyBwZXItZmxhdm9yIGd1YXJkcy4gVGhpcyBmaWxlIGlzIGFsd2F5c1xuKyMgaW52b2tlZCBieSB0aGUgbWFpbiBNYWtlZmlsZSwgbmV2ZXIgZGlyZWN0bHk6IGFsbCBzaGFyZWRcbisjIHByZXJlcXVpc2l0ZXMgKGxpYmJwZiwgYnBmdG9vbCxcbisjIHJlc29sdmVfYnRmaWRzLCB2bWxpbnV4LmgsIHZlcmlzdGF0LCB1c2Vyc3BhY2Ugb2JqZWN0cywgc2lnbmluZyBrZXksXG4rIyBsaWJhcmVuYSBza2VsZXRvbnMsIGV4dHJhIGJpbmFyaWVzIGFuZCAtIGZvciB0aGVcbisjIHVuZmxhdm9yZWQgaW5zdGFuY2VzIC0gdGhlIGRlZmF1bHQgZmxhdm9yJ3MgQlBGIG9iamVjdHMgYW5kXG4rIyBza2VsZXRvbnMpIGFyZSBidWlsdCBieSB0aGUgbWFpbiBNYWtlZmlsZSAqYmVmb3JlKiB0aGlzIG9uZSBydW5zIGFuZFxuKyMgYXJlIHJlZmVyZW5jZWQgYmVsb3cgYXMgcGxhaW4gZmlsZXMuXG4rI1xuKyMgUGFyYW1ldGVycywgcGFzc2VkIG9uIHRoZSBzdWItbWFrZSBjb21tYW5kIGxpbmU6XG4rIyAgIE9VVFBVVCAgICAgIHRoZSBzZWxmdGVzdHMgb3V0cHV0IGRpcmVjdG9yeSwgYXMgbGliLm1rIHJlc29sdmVkIGl0XG4rIyAgIFJVTk5FUiAgICAgIGJhc2UgYmluYXJ5IG5hbWU6IHRlc3RfcHJvZ3MgfCB0ZXN0X21hcHNcbisjICAgRkxBVk9SICAgICAgZmxhdm9yIHN1ZmZpeDogZW1wdHkgfCBub19hbHUzMiB8IGNwdXY0IHwgYnBmX2djY1xuKyMgICBURVNUU19ESVIgICBkaXJlY3Rvcnkgd2l0aCB0aGUgdGVzdCBzb3VyY2VzOiBwcm9nX3Rlc3RzIHwgbWFwX3Rlc3RzXG4rIyAgIEJQRl9DQyAgICAgIGNvbXBpbGVyIGZvciBwcm9ncy8qLmMgQlBGIG9iamVjdHMgKCQoQ0xBTkcpIG9yXG4rIyAgICAgICAgICAgICAgICQoQlBGX0dDQykpOyBlbXB0eSBmb3IgdGVzdF9tYXBzLCB3aGljaCBidWlsZHMgbm9uZVxuKyMgICBCUEZfQ0NfTVNHICBidWlsZC1sb2cgdGFnOiBDTE5HLUJQRiB8IEdDQy1CUEZcbisjICAgQlBGX0NDX0ZMQUdTXG4rIyAgICAgICAgICAgICAgIGNvbXBpbGVyLXNwZWNpZmljIGZsYWdzICgtTzIsIHRhcmdldC8tbWNwdSBvciBnY2Mga25vYnMpXG4rIyAgIEJQRl9TWVNfSU5DTFVERVNcbisjICAgICAgICAgICAgICAgc3lzdGVtIGluY2x1ZGUgZmxhZ3MgbWF0Y2hpbmcgQlBGX0NDXG4rIyAgIEJQRl9ERUZJTkVTIGV4dHJhIGRlZmluZXMgZm9yIEJQRiBvYmplY3RzIChlLmcuIC1ERU5BQkxFX0FUT01JQ1NfVEVTVFMpXG4rIyAgIENDLCBDTEFORyAgIEMgY29tcGlsZXIgYW5kIGNsYW5nIChhcyByZXNvbHZlZCBieSBsaWIubWsgaW4gdGhlIG1haW5cbisjICAgICAgICAgICAgICAgTWFrZWZpbGU7IGNsYW5nIGFsc28gZHJpdmVzIHRoZSBmZWF0dXJlIHByb2JlcyBpblxuKyMgICAgICAgICAgICAgICBNYWtlZmlsZS5idWlsZHZhcnMpXG4rI1xuKyMgRnJvbSB0aGUgZW52aXJvbm1lbnQsIGV4cG9ydGVkIGJ5IHRoZSBtYWluIE1ha2VmaWxlOlxuKyMgICBMTFZNX0xETElCUy9MTFZNX0xERkxBR1NcbisjICAgICAgICAgICAgICAgcmVzdWx0cyBvZiB0aGUgdG9wLWxldmVsIExMVk0gZmVhdHVyZSBwcm9iZVxuKyMgICBURVNUX0tNT0RTICB0aGUga2VybmVsIHRlc3QgbW9kdWxlcyB0byBjb3B5IGludG8gYSBmbGF2b3IgZGlyZWN0b3J5XG4rIyAgIElOSEVSSVRFRF9DRkxBR1MvSU5IRVJJVEVEX0xERkxBR1NcbisjICAgICAgICAgICAgICAgdGhlIGZsYWdzIHRoZSBtYWluIE1ha2VmaWxlIGluaGVyaXRlZCBmcm9tIGl0cyBvd25cbisjICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHNlZSBNYWtlZmlsZS5idWlsZHZhcnMpXG4rXG4raW5jbHVkZSAuLi8uLi8uLi9idWlsZC9CdWlsZC5pbmNsdWRlXG4raW5jbHVkZSAuLi8uLi8uLi9zY3JpcHRzL01ha2VmaWxlLmFyY2hcbitpbmNsdWRlIC4uLy4uLy4uL3NjcmlwdHMvTWFrZWZpbGUuaW5jbHVkZVxuK1xuKyMgU2FtZSBtZXNzYWdlIGhlbHBlcnMgYXMgLi4vbGliLm1rLCB3aGljaCBvbmx5IHRoZSB0b3AgbGV2ZWwgaW5jbHVkZXMuXG4raWZlcSAoJChWKSwxKVxuK1EgPVxuK21zZyA9XG4rZWxzZVxuK1EgPSBAXG4rbXNnID0gQHByaW50ZiAnICAlLThzJXMgJXMlc1xcbicgXCIkKDEpXCIgXCIkKGlmICQoMiksIFskKDIpXSlcIiBcIiQobm90ZGlyICQoMykpXCIgXCIkKGlmICQoNCksICQoNCkpXCI7XG4rTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5XG4rZW5kaWZcbitcbisjIFRoZSB0b3AgTWFrZWZpbGUgaGFuZHMgZG93biB0aGUgZmxhZ3MgaXQgaW5oZXJpdGVkIGZyb20gdGhlXG4rIyBlbnZpcm9ubWVudCBpbiBJTkhFUklURURfQ0ZMQUdTL0lOSEVSSVRFRF9MREZMQUdTOyBzdGFydCBmcm9tIHRob3NlXG4rIyByYXRoZXIgdGhhbiBmcm9tIGl0cyBhc3NlbWJsZWQgQ0ZMQUdTL0xERkxBR1MsIHdoaWNoIG1ha2UgZXhwb3J0c1xuKyMgYWxvbmdzaWRlIHdoZW5ldmVyIHRoZXkgY2FtZSBmcm9tIHRoZSBlbnZpcm9ubWVudC5cbitDRkxBR1MgOj0gJChJTkhFUklURURfQ0ZMQUdTKVxuK0xERkxBR1MgOj0gJChJTkhFUklURURfTERGTEFHUylcbitcbitpbmNsdWRlIE1ha2VmaWxlLmJ1aWxkdmFyc1xuK1xuKyMgS2VlcCBpbiBzeW5jIHdpdGggdGhlIENGTEFHUy9MREZMQUdTIGFkZGl0aW9ucyBpbiAuLi9saWIubWssIGluIGl0c1xuKyMgb3JkZXIgKHRoZSBzZWxmdGVzdHMgaW5jbHVkZSBwYXRoIGlzIHNwZWxsZWQgZnJvbSBzcmN0cmVlIGhlcmU7IGxpYi5ta1xuKyMgc3BlbGxzIGl0IGZyb20gaXRzIG93biBkaXJlY3RvcnkpLlxuK2lmbmVxICgkKExMVk0pLClcbitDRkxBR1MgKz0gLVduby1hZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXJcbitDRkxBR1MgKz0gLVduby1nbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXG4rZW5kaWZcbitDRkxBR1MgKz0gLURfR05VX1NPVVJDRT1cbitDRkxBR1MgKz0gLUkkKHNyY3RyZWUpL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzXG4rQ0ZMQUdTICs9ICQoVVNFUkNGTEFHUylcbitMREZMQUdTICs9ICQoVVNFUkxERkxBR1MpXG4rXG4rQklOQVJZIDo9ICQoUlVOTkVSKSQoaWYgJChGTEFWT1IpLC0kKEZMQVZPUikpXG4rUkRJUiAgIDo9ICQoT1VUUFVUKSQoaWYgJChGTEFWT1IpLC8kKEZMQVZPUikpXG4rXG4rYWxsOiAkKE9VVFBVVCkvJChCSU5BUlkpXG4rLlBIT05ZOiBhbGxcbitcbisjIERlbGV0ZSBwYXJ0aWFsbHkgdXBkYXRlZCAoY29ycnVwdGVkKSBmaWxlcyBvbiBlcnJvclxuKy5ERUxFVEVfT05fRVJST1I6XG4rXG4rIyBObyBidWlsdC1pbiBydWxlczogZXZlcnkgZmlsZSBidWlsdCBoZXJlIGhhcyBhbiBleHBsaWNpdCBydWxlLCBhbmQgdGhlXG4rIyBvYmplY3RzIHRoYXQgY29tZSBmcm9tIHRoZSBtYWluIE1ha2VmaWxlIGhhdmUgdG8gYmUgYW4gZXJyb3Igd2hlblxuKyMgbWlzc2luZyByYXRoZXIgdGhhbiBhIHNpbGVudCByZWJ1aWxkIGJ5IHRoZSBidWlsdC1pbiAlLm8gcmVjaXBlcy5cbitNQUtFRkxBR1MgKz0gLXJcbitcbisjIFBlcm1pc3NpdmUgYnVpbGQgYmVoYXZpb3VyIChza2lwLW9uLWZhaWx1cmUgY29tcGlsZSwgcGFydGlhbC1saW5rKSBvbmx5XG4rIyBhcHBsaWVzIHRvIHRlc3RfcHJvZ3MgYW5kIGl0cyBmbGF2b3JzOyBydW5uZXJzIHRoYXQgdXNlIHN0cm9uZyBjcm9zcy1vYmplY3RcbisjIHJlZmVyZW5jZXMgKGUuZy4gdGVzdF9tYXBzKSBrZWVwIHN0cmljdCBzZW1hbnRpY3MgZXZlbiB3aGVuIHBlcm1pc3NpdmUuXG4rUEVSTUlTU0lWRV9URVNUUyA6PSAkKGlmICQoZmlsdGVyIHRlc3RfcHJvZ3MsJChSVU5ORVIpKSwkKFBFUk1JU1NJVkUpKVxuK1xuKyQoUkRJUik6XG4rXHQkKGNhbGwgbXNnLE1LRElSLCwkQClcbitcdCQoUSlta2RpciAtcCAkQFxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBQZXItcnVubmVyIHNvdXJjZXNcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuK2lmZXEgKCQoUlVOTkVSKSx0ZXN0X3Byb2dzKVxuK0dFTkVSQVRFRF9IRFJTIDo9ICQoTElCQVJFTkFfU0tFTCkgJChMSUJBUkVOQV9BU0FOX1NLRUwpXG4rRVhUUkFfRklMRVMgOj0gJChPVVRQVVQpL3VyYW5kb21fcmVhZFx0XHRcdFx0XFxcbitcdCAgICAgICAkKE9VVFBVVCkvbGlidXJhbmRvbV9yZWFkLnNvXHRcdFx0XFxcbitcdCAgICAgICAkKE9VVFBVVCkveGRwX3N5bnByb3h5XHRcdFx0XHRcXFxuK1x0ICAgICAgICQoT1VUUFVUKS9zaWduLWZpbGVcdFx0XHRcdFxcXG4rXHQgICAgICAgJChPVVRQVVQpL3Vwcm9iZV9tdWx0aVx0XHRcdFx0XFxcbitcdCAgICAgICAkKGFkZHByZWZpeCAkKE9VVFBVVCkvLCQoVEVTVF9LTU9EUykpXHRcdFxcXG4rXHQgICAgICAgaW1hX3NldHVwLnNoIFx0XHRcdFx0XHRcXFxuK1x0ICAgICAgICQoVkVSSUZZX1NJR19TRVRVUClcdFx0XHRcdFxcXG4rXHQgICAgICAgJCh3aWxkY2FyZCBwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfKi5jKVx0XHRcXFxuK1x0ICAgICAgICQod2lsZGNhcmQgcHJvZ3MvKi5icGYubylcbitlbmRpZlxuK1xuK1RFU1RfU1JDUyAgOj0gJChub3RkaXIgJCh3aWxkY2FyZCAkKFRFU1RTX0RJUikvKi5jKSlcbitURVNUX09CSlMgIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS50ZXN0Lm8sJChURVNUX1NSQ1MpKVxuK1RFU1RfREVQUyAgOj0gJChURVNUX09CSlM6Lm89LmQpXG4rXG4rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbisjIEJQRiBvYmplY3RzIGFuZCBza2VsZXRvbnMgLSBydWxlcyBzaGFyZWQgd2l0aCB0aGUgbWFpbiBNYWtlZmlsZVxuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4raW5jbHVkZSBNYWtlZmlsZS5za2VsXG4rXG4rIyBXaGVuIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgYSAlLmQgZmlsZSwgb25seSBza2VsIGJhc2VuYW1lcyAobm90XG4rIyBmdWxsIHBhdGhzKSBhcmUgc3BlY2lmaWVkIGFzIHByZXJlcXVpc2l0ZXMgZm9yIGNvcnJlc3BvbmRpbmcgJS5vXG4rIyBmaWxlLiB2cGF0aCBkaXJlY3RpdmVzIGJlbG93IGluc3RydWN0IG1ha2UgdG8gc2VhcmNoIGZvciBza2VsIGZpbGVzXG4rIyBpbiAkKFJESVIpLCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4rdnBhdGggJS5za2VsLmggJChSRElSKVxuK3ZwYXRoICUubHNrZWwuaCAkKFJESVIpXG4rdnBhdGggJS5zdWJza2VsLmggJChSRElSKVxuK1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rIyBUZXN0IG9iamVjdHMgYW5kIHJ1bm5lciBiaW5hcnlcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuK1xuKyQoUkRJUikvcmVzb2x2ZV9idGZpZHMudGVzdC5vOiAkKFJFU09MVkVfQlRGSURTKSAkKFJESVIpL2J0Zl9kYXRhLmJwZi5vXG4rJChSRElSKS9yZXNvbHZlX2J0Zmlkcy50ZXN0Lm86IHByaXZhdGUgVEVTVF9ORUVEU19CVEZJRFMgPSAxXG4rXG4rIyBjb21waWxlIGluZGl2aWR1YWwgdGVzdCBmaWxlc1xuKyMgTm90ZTogd2UgY2QgaW50byBvdXRwdXQgZGlyZWN0b3J5IHRvIGVuc3VyZSBlbWJlZGRlZCBCUEYgb2JqZWN0IGlzIGZvdW5kXG4rIyBUaGUgJS50ZXN0LmQgZGVwZW5kZW5jeSBmaWxlcyBhcmUgYSBzaWRlIGVmZmVjdCBvZiB0aGUgLU1NRCBiZWxvdzsgdGhlXG4rIyBzZXBhcmF0ZSBuby1yZWNpcGUgcnVsZSBmb3IgdGhlbSBvcmRlcnMgdGhlIGZpcnN0IGNvbXBpbGF0aW9uIGFmdGVyXG4rIyBza2VsZXRvbiBnZW5lcmF0aW9uIGFuZCByZS1vcmRlcnMgdGVzdCBvYmplY3QgY29tcGlsYXRpb24gd2hlbiBoZWFkZXJzXG4rIyBjaGFuZ2UuXG4rJChURVNUX09CSlMpOiAkKFJESVIpLyUudGVzdC5vOiAkKFRFU1RTX0RJUikvJS5jIHwgJChSRElSKS8lLnRlc3QuZFxuK1x0JChjYWxsIG1zZyxURVNULU9CSiwkKEJJTkFSWSksJEApXG4rXHQkKFEpKGNkICQoQEQpIFx1MDAyNlx1MDAyNiAkKENDKSAtSS4gJChDRkxBR1MpIC1NTUQgLU1UICRAIC1jICQoQ1VSRElSKS8kXHUwMDNjICQoTERMSUJTKSAtbyAkKEBGKSkgXFxcbitcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQoY2FsbCBza2lwX29uX2ZhaWwsVEVTVCkpXG4rXHQkKGlmICQoVEVTVF9ORUVEU19CVEZJRFMpLFx0XHRcdFx0XHRcXFxuK1x0XHQkKFEpaWYgWyAtZiAkQCBdOyB0aGVuXHRcdFx0XHRcdFxcXG4rXHRcdCQoaWYgJChmaWx0ZXIgMSwkKFYpKSx0cnVlLHByaW50ZiAnICAlLThzJXMgJXNcXG4nIFwiQlRGSURTXCIgXCIgWyQoQklOQVJZKV1cIiBcIiQobm90ZGlyICRAKVwiKTsgXFxcbitcdFx0JChSRVNPTFZFX0JURklEUykgLS1idGYgJChSRElSKS9idGZfZGF0YS5icGYubyAkQDtcdFxcXG4rXHRcdCQoUkVTT0xWRV9CVEZJRFMpIC0tcGF0Y2hfYnRmaWRzICRALkJURl9pZHMgJEA7XHRcdFxcXG4rXHRcdGZpKVxuK1xuKyQoVEVTVF9ERVBTKTogJChSRElSKS8lLnRlc3QuZDogJChURVNUU19ESVIpLyUuYyAkKEdFTkVSQVRFRF9IRFJTKSAkKEJQRk9CSikgXFxcbitcdCAgICAgIHwgJChSRElSKSAkKEFMTF9TS0VMUylcbitcbitpbmNsdWRlICQod2lsZGNhcmQgJChURVNUX0RFUFMpKVxuK1xuKyMgbm9uLWZsYXZvcmVkIGluLXNyY3RyZWUgYnVpbGRzIHJlY2VpdmUgc3BlY2lhbCB0cmVhdG1lbnQsIGluIHBhcnRpY3VsYXIsIHdlXG4rIyBkbyBub3QgbmVlZCB0byBjb3B5IGV4dHJhIHJlc291cmNlcyAoc2VlIGUuZy4gdGVzdF9idGZfZHVtcF9jYXNlKCkpXG4rLlBIT05ZOiBleHRyYXNcbitleHRyYXM6ICQoaWYgJChQRVJNSVNTSVZFKSwkKHdpbGRjYXJkICQoRVhUUkFfRklMRVMpKSwkKEVYVFJBX0ZJTEVTKSkgfCAkKFJESVIpXG4raWZuZXEgKCQoRkxBVk9SKTokKHJlYWxwYXRoICQoT1VUUFVUKSksOiQoQ1VSRElSKSlcbitpZm5lcSAoJChzdHJpcCAkKEVYVFJBX0ZJTEVTKSksKVxuK1x0JChjYWxsIG1zZyxFWFQtQ09QWSwkKEJJTkFSWSksJChFWFRSQV9GSUxFUykpXG4rXHQkKFEpcnN5bmMgLWFxICQoaWYgJChQRVJNSVNTSVZFKSwtLWlnbm9yZS1taXNzaW5nLWFyZ3MpICQoRVhUUkFfRklMRVMpICQoUkRJUikvXG4rZW5kaWZcbitlbmRpZlxuK1xuKyMgc29tZSBYLnRlc3QubyBmaWxlcyBoYXZlIHJ1bnRpbWUgZGVwZW5kZW5jaWVzIG9uIFkuYnBmLm8gZmlsZXNcbisjIEluIHBlcm1pc3NpdmUgbW9kZSwgbGluayB3aGF0ZXZlciB0ZXN0IG9iamVjdHMgd2VyZSBzdWNjZXNzZnVsbHkgYnVpbHRcbisjICh0aGVpciBjb21waWxhdGlvbiBtYXkgaGF2ZSBiZWVuIHNraXBwZWQpOiB0aGUgb2JqZWN0cyBleGlzdGluZyBhdFxuKyMgcGFyc2UgdGltZSBhcmUgbm9ybWFsIHByZXJlcXVpc2l0ZXMgLSBzbyBlZGl0aW5nIGEgdGVzdCBzb3VyY2Ugc3RpbGxcbisjIHJlbGlua3MgdGhlIHJ1bm5lciAtIHdoaWxlIHRoZSBmdWxsIHNldCBzdGF5cyBvcmRlci1vbmx5IHRvIGRyaXZlIHRoZVxuKyMgYnVpbGQgYXR0ZW1wdHMsIGFuZCB0aGUgd2lsZGNhcmQgaW4gdGhlIHJlY2lwZSBwaWNrcyB1cCB0aGUgc3Vydml2b3JzXG4rIyBhdCBsaW5rIHRpbWUuXG4rIyBQcmVyZXF1aXNpdGUgb3JkZXIgaXMgYWxzbyBsaW5rIG9yZGVyICh0ZXN0IG9iamVjdHMsIHJ1bm5lciBvYmplY3RzLFxuKyMgbGliYnBmLCBsaWIgb2JqZWN0cykuXG4rJChPVVRQVVQpLyQoQklOQVJZKTogJChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKSwkKFRFU1RfT0JKUykpIFxcXG4rXHRcdCAgICAgJChSVU5ORVJfT0JKUy0kKFJVTk5FUikpICQoQlBGT0JKKVx0XHRcdFxcXG4rXHRcdCAgICAgJChSVU5ORVJfTElCX09CSlMtJChSVU5ORVIpKVx0XHRcdFxcXG4rXHRcdCAgICAgJChUUlVOTkVSX0JQRlRPT0wpICQoT1VUUFVUKS92ZXJpc3RhdFx0XHRcXFxuK1x0XHQgICAgIHwgZXh0cmFzICQoQlBGX09CSlMpXHRcdFx0XHRcXFxuK1x0XHQgICAgICQoaWYgJChQRVJNSVNTSVZFX1RFU1RTKSwkKFRFU1RfT0JKUykpXG4rXHQkKGNhbGwgbXNnLEJJTkFSWSwsJEApXG4rXHQkKFEpJChDQykgJChDRkxBR1MpXHRcdFx0XHRcdFx0XFxcbitcdFx0JChpZiAkKFBFUk1JU1NJVkVfVEVTVFMpLCQod2lsZGNhcmQgJChURVNUX09CSlMpKVx0XFxcbitcdFx0XHQkKGZpbHRlci1vdXQgJChURVNUX09CSlMpLCQoZmlsdGVyICUuYSAlLm8sJF4pKSxcXFxuK1x0XHRcdCQoZmlsdGVyICUuYSAlLm8sJF4pKVx0XHRcdFx0XFxcbitcdFx0JChMRExJQlMpICQoTExWTV9MRExJQlMpICQoTERGTEFHUykgJChMTFZNX0xERkxBR1MpIC1vICRAXG4rXHQkKFEpbG4gLXNmICQoaWYgJChGTEFWT1IpLC4uLC4pL3Rvb2xzL2J1aWxkL2JwZnRvb2wvJChVU0VfQk9PVFNUUkFQKWJwZnRvb2wgXFxcbitcdFx0ICAgJChSRElSKS9icGZ0b29sXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlLnNrZWwgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUuc2tlbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmE4NzFlYTc2ODE3ZGZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZS5za2VsXG5AQCAtMCwwICsxLDE0MSBAQFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjIFJ1bGVzIHRvIGJ1aWxkIHRoZSBCUEYgb2JqZWN0cyBhbmQgc2tlbGV0b25zIG9mIG9uZSBidWlsZCBmbGF2b3IsXG4rIyBzaGFyZWQgYnkgdGhlIG1haW4gTWFrZWZpbGUgKHdoaWNoIGluc3RhbnRpYXRlcyB0aGVtIGZvciB0aGUgZGVmYXVsdFxuKyMgZmxhdm9yLCBzbyB0aGF0IGJlbmNoLCB4c2t4Y2VpdmVyLCB4ZHBfKiBhbmQgdGVzdF9jcHAgY2FuIGRlcGVuZCBvblxuKyMgdGhlIGV4YWN0IHNrZWxldG9ucyB0aGV5IGNvbnN1bWUpIGFuZCBieSBNYWtlZmlsZS5ydW5uZXIgKHdoaWNoXG4rIyBpbnN0YW50aWF0ZXMgdGhlbSBmb3IgZWFjaCBydW5uZXIgaW5zdGFuY2UgdGhhdCBidWlsZHMgQlBGIG9iamVjdHM6XG4rIyB0aGUgZmxhdm9yZWQgb25lcyBpbiB0aGVpciBvd24gb3V0cHV0IGRpcmVjdG9yaWVzLCB0aGUgdW5mbGF2b3JlZFxuKyMgdGVzdF9wcm9ncyBvbmUgaW4gJChPVVRQVVQpLCB3aGVyZSBpdCBmaW5kcyB0aGVtIGFscmVhZHkgYnVpbHQpLlxuKyNcbisjIFBhcmFtZXRlcnMgKHZhcmlhYmxlcyBkZWZpbmVkIGJ5IHRoZSBpbmNsdWRlcik6XG4rIyAgIFJESVIgICAgICAgICAgICAgb3V0cHV0IGRpcmVjdG9yeSBvZiB0aGlzIGZsYXZvclxuKyMgICBGTEFWT1IgICAgICAgICAgIGZsYXZvciBuYW1lLCBlbXB0eSBmb3IgdGhlIGRlZmF1bHRcbisjICAgQklOQVJZICAgICAgICAgICBydW5uZXIgYmluYXJ5IG5hbWUsIGZvciBidWlsZC1sb2cgbWVzc2FnZXNcbisjICAgQlBGX0NDICAgICAgICAgICBCUEYgY29tcGlsZXJcbisjICAgQlBGX0NDX01TRyAgICAgICBidWlsZC1sb2cgdGFnIChDTE5HLUJQRi9HQ0MtQlBGKVxuKyMgICBCUEZfQ0NfRkxBR1MgICAgIHBlci1mbGF2b3IgY29tcGlsZXIgZmxhZ3NcbisjICAgQlBGX1NZU19JTkNMVURFUyBzeXN0ZW0gaW5jbHVkZSBmbGFncyBmb3IgJChCUEZfQ0MpXG4rIyAgIEJQRl9ERUZJTkVTICAgICAgZXh0cmEgZGVmaW5lcyAoLURFTkFCTEVfQVRPTUlDU19URVNUUylcbisjXG4rIyBUaGUgZGVmYXVsdCBmbGF2b3IncyBydWxlcyBhcmUgaW5zdGFudGlhdGVkIGlkZW50aWNhbGx5IGJ5IHRoZSBtYWluXG4rIyBNYWtlZmlsZSBhbmQgYnkgdGhlIHVuZmxhdm9yZWQgdGVzdF9wcm9ncyBzdWItbWFrZTsgdGhlIG1haW4gTWFrZWZpbGVcbisjIGxpc3RzIGV2ZXJ5IHNrZWxldG9uIGFuZCBCUEYgb2JqZWN0IGFzIGEgcHJlcmVxdWlzaXRlIG9mIHRoZSB1bmZsYXZvcmVkXG4rIyBydW5uZXJzJyBkZWxlZ2F0aW9uIHJ1bGVzLCBzbyB0aGUgZmlsZXMgYXJlIGFsd2F5cyBmcmVzaCBieSB0aGUgdGltZVxuKyMgdGhhdCBzdWItbWFrZSByZS1ldmFsdWF0ZXMgdGhlbS5cbitcbisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKyMgQlBGIG9iamVjdHMgYW5kIHNrZWxldG9uc1xuKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4rXG4raWZuZXEgKCQoQlBGX0NDKSwpXG4rXG4rQlBGX1NSQ1MgOj0gJChub3RkaXIgJCh3aWxkY2FyZCBwcm9ncy8qLmMpKVxuK0JQRl9PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCQoUkRJUikvJS5icGYubywkKEJQRl9TUkNTKSlcbitcbitTS0VMX0JMQUNLTElTVCA6PSBidGZfXyUgdGVzdF9waW5uaW5nX2ludmFsaWQuYyB0ZXN0X3NrX2Fzc2lnbi5jXG4rXG4rTElOS0VEX1NLRUxTIDo9IHRlc3Rfc3RhdGljX2xpbmtlZC5za2VsLmggbGlua2VkX2Z1bmNzLnNrZWwuaFx0XHRcXFxuK1x0XHRsaW5rZWRfdmFycy5za2VsLmggbGlua2VkX21hcHMuc2tlbC5oIFx0XHRcdFxcXG4rXHRcdHRlc3Rfc3Vic2tlbGV0b24uc2tlbC5oIHRlc3Rfc3Vic2tlbGV0b25fbGliLnNrZWwuaFx0XFxcbitcdFx0dGVzdF91c2R0LnNrZWwuaCB0cmFjaW5nX211bHRpLnNrZWwuaFx0XHRcdFxcXG4rXHRcdHRyYWNpbmdfbXVsdGlfbW9kdWxlLnNrZWwuaFx0XHRcdFx0XFxcbitcdFx0dHJhY2luZ19tdWx0aV9pbnRlcnNlY3Quc2tlbC5oXHRcdFx0XHRcXFxuK1x0XHR0cmFjaW5nX211bHRpX3Nlc3Npb24uc2tlbC5oXG4rXG4rTFNLRUxTIDo9IGZleGl0X3NsZWVwLmMgdHJhY2VfcHJpbnRrLmMgdHJhY2VfdnByaW50ay5jIG1hcF9wdHJfa2Vybi5jIFx0XFxcbitcdGNvcmVfa2Vybi5jIGNvcmVfa2Vybl9vdmVyZmxvdy5jIHRlc3RfcmluZ2J1Zi5jXHRcdFx0XFxcbitcdHRlc3RfcmluZ2J1Zl9uLmMgdGVzdF9yaW5nYnVmX21hcF9rZXkuYyB0ZXN0X3JpbmdidWZfd3JpdGUuYyAgICBcXFxuK1x0dGVzdF9yaW5nYnVmX292ZXJ3cml0ZS5jXG4rXG4rTFNLRUxTX1NJR05FRCA6PSBmZW50cnlfdGVzdC5jIGZleGl0X3Rlc3QuYyBhdG9taWNzLmNcbitcbisjIEdlbmVyYXRlIGJvdGggbGlnaHQgc2tlbGV0b24gYW5kIGxpYmJwZiBza2VsZXRvbiBmb3IgdGhlc2VcbitMU0tFTFNfRVhUUkEgOj0gdGVzdF9rc3ltc19tb2R1bGUuYyB0ZXN0X2tzeW1zX3dlYWsuYyBrZnVuY19jYWxsX3Rlc3QuYyBcXFxuK1x0a2Z1bmNfY2FsbF90ZXN0X3N1YnByb2cuYyB0ZXN0X2dsb2JhbF9wZXJjcHVfZGF0YS5jXG4rU0tFTF9CTEFDS0xJU1QgKz0gJChMU0tFTFMpICQoTFNLRUxTX1NJR05FRClcbitcbit0ZXN0X3N0YXRpY19saW5rZWQuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdGF0aWNfbGlua2VkMS5icGYubyB0ZXN0X3N0YXRpY19saW5rZWQyLmJwZi5vXG4rbGlua2VkX2Z1bmNzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF9mdW5jczEuYnBmLm8gbGlua2VkX2Z1bmNzMi5icGYub1xuK2xpbmtlZF92YXJzLnNrZWwuaC1kZXBzIDo9IGxpbmtlZF92YXJzMS5icGYubyBsaW5rZWRfdmFyczIuYnBmLm9cbitsaW5rZWRfbWFwcy5za2VsLmgtZGVwcyA6PSBsaW5rZWRfbWFwczEuYnBmLm8gbGlua2VkX21hcHMyLmJwZi5vXG4rIyBJbiB0aGUgc3Vic2tlbGV0b24gY2FzZSwgd2Ugd2FudCB0aGUgdGVzdF9zdWJza2VsZXRvbl9saWIuc3Vic2tlbC5oIGZpbGVcbisjIGJ1dCB0aGF0J3MgY3JlYXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHRoZSBza2VsLmggZ2VuZXJhdGlvbi5cbit0ZXN0X3N1YnNrZWxldG9uLnNrZWwuaC1kZXBzIDo9IHRlc3Rfc3Vic2tlbGV0b25fbGliMi5icGYubyB0ZXN0X3N1YnNrZWxldG9uX2xpYi5icGYubyB0ZXN0X3N1YnNrZWxldG9uLmJwZi5vXG4rdGVzdF9zdWJza2VsZXRvbl9saWIuc2tlbC5oLWRlcHMgOj0gdGVzdF9zdWJza2VsZXRvbl9saWIyLmJwZi5vIHRlc3Rfc3Vic2tlbGV0b25fbGliLmJwZi5vXG4rdGVzdF91c2R0LnNrZWwuaC1kZXBzIDo9IHRlc3RfdXNkdC5icGYubyB0ZXN0X3VzZHRfbXVsdGlzcGVjLmJwZi5vXG4rdHJhY2luZ19tdWx0aS5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2F0dGFjaC5icGYubyB0cmFjaW5nX211bHRpX2NoZWNrLmJwZi5vXG4rdHJhY2luZ19tdWx0aV9tb2R1bGUuc2tlbC5oLWRlcHMgOj0gdHJhY2luZ19tdWx0aV9hdHRhY2hfbW9kdWxlLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbit0cmFjaW5nX211bHRpX2ludGVyc2VjdC5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX2ludGVyc2VjdF9hdHRhY2guYnBmLm8gdHJhY2luZ19tdWx0aV9jaGVjay5icGYub1xuK3RyYWNpbmdfbXVsdGlfc2Vzc2lvbi5za2VsLmgtZGVwcyA6PSB0cmFjaW5nX211bHRpX3Nlc3Npb25fYXR0YWNoLmJwZi5vIHRyYWNpbmdfbXVsdGlfY2hlY2suYnBmLm9cbitcbitMSU5LRURfQlBGX09CSlMgOj0gJChmb3JlYWNoIHNrZWwsJChMSU5LRURfU0tFTFMpLCQoJChza2VsKS1kZXBzKSlcbitMSU5LRURfQlBGX1NSQ1MgOj0gJChwYXRzdWJzdCAlLmJwZi5vLCUuYywkKExJTktFRF9CUEZfT0JKUykpXG4rXG4rU0tFTFMgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLnNrZWwuaCxcdFx0XHRcdFxcXG4rXHQgICAkKGZpbHRlci1vdXQgJChTS0VMX0JMQUNLTElTVCkgJChMSU5LRURfQlBGX1NSQ1MpLCQoQlBGX1NSQ1MpKSlcbitMU0tFTFNfSCAgICAgICAgOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmxza2VsLmgsJChMU0tFTFMpICQoTFNLRUxTX0VYVFJBKSlcbitMU0tFTFNfU0lHTkVEX0ggOj0gJChwYXRzdWJzdCAlLmMsJChSRElSKS8lLmxza2VsLmgsJChMU0tFTFNfU0lHTkVEKSlcbitMSU5LRURfU0tFTFNfSCAgOj0gJChhZGRwcmVmaXggJChSRElSKS8sJChMSU5LRURfU0tFTFMpKVxuK0FMTF9TS0VMUyA6PSAkKFNLRUxTKSAkKExTS0VMU19IKSAkKExTS0VMU19TSUdORURfSCkgJChMSU5LRURfU0tFTFNfSClcbitcbitIRUFERVJTX0ZPUl9CUEZfT0JKUyA6PSAkKHdpbGRjYXJkICQoQlBGRElSKS8qLmJwZi5oKVx0XHRcXFxuK1x0XHRcdCQod2lsZGNhcmQgJChDVVJESVIpL2xpYmFyZW5hL2luY2x1ZGUvKi5bY2hdKVx0XFxcbitcdFx0XHQkKGFkZHByZWZpeCAkKEJQRkRJUikvLFx0YnBmX2NvcmVfcmVhZC5oXHRcXFxuK1x0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl9lbmRpYW4uaFx0XFxcbitcdFx0XHRcdFx0XHRicGZfaGVscGVycy5oXHRcXFxuK1x0XHRcdCAgICAgICAgICAgICAgICAgICAgICAgIGJwZl90cmFjaW5nLmgpXG4rXG4rIyBUaGUgZm9sbG93aW5nIHRlc3RzIGNvbnRhaW4gQyBjb2RlIHRoYXQsIGFsdGhvdWdoIHRlY2huaWNhbGx5IGxlZ2FsLFxuKyMgdHJpZ2dlcnMgR0NDIHdhcm5pbmdzIHRoYXQgY2Fubm90IGJlIGRpc2FibGVkOiBkZWNsYXJhdGlvbiBvZlxuKyMgYW5vbnltb3VzIHN0cnVjdCB0eXBlcyBpbiBmdW5jdGlvbiBwYXJhbWV0ZXIgbGlzdHMuXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX2JpdGZpZWxkcy5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3Jcbitwcm9ncy9idGZfZHVtcF90ZXN0X2Nhc2VfbmFtZXNwYWNpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhY2tpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3BhZGRpbmcuYy1icGZfZ2NjLUNGTEFHUyA6PSAtV25vLWVycm9yXG4rcHJvZ3MvYnRmX2R1bXBfdGVzdF9jYXNlX3N5bnRheC5jLWJwZl9nY2MtQ0ZMQUdTIDo9IC1Xbm8tZXJyb3JcbitcbiskKEJQRl9PQkpTKTogJChSRElSKS8lLmJwZi5vOiBwcm9ncy8lLmMgcHJvZ3MvKi5oXHRcdFx0XFxcbitcdCAgICAgJChJTkNMVURFX0RJUikvdm1saW51eC5oICQoSEVBREVSU19GT1JfQlBGX09CSlMpXHRcdFxcXG4rXHQgICAgIHwgJChSRElSKSAkKEJQRk9CSilcbitcdCQoY2FsbCBtc2csJChCUEZfQ0NfTVNHKSwkKEJJTkFSWSksJEApXG4rXHQkKFEpJChCUEZfQ0MpICQoQlBGX0NGTEFHUykgJChCUEZfU1lTX0lOQ0xVREVTKSAkKEJQRl9ERUZJTkVTKVx0XFxcbitcdFx0JCgkXHUwMDNjLUNGTEFHUykgJCgkXHUwMDNjLSQoRkxBVk9SKS1DRkxBR1MpXHRcdFx0XFxcbitcdFx0JChCUEZfQ0NfRkxBR1MpIC1jICRcdTAwM2MgLW8gJEAgJChjYWxsIHNraXBfb25fZmFpbCxCUEYpXG4rXG4rR0VOX1NLRUwgOj0gLi9nZW5fYnBmX3NrZWwuc2hcbitcbiskKFNLRUxTKTogJChSRElSKS8lLnNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXG4rXHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MsJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpXHRcXFxuK1x0cHJpbnRmICcgICUtOHMlcyAlc1xcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJEApJzsgXFxcbitcdEJQRlRPT0w9JChCUEZUT09MKSAkKEdFTl9TS0VMKSAtLW5hbWUgJCpcdFx0XHRcdFx0XHRcXFxuK1x0XHQtLXNrZWwgJEAgLS1zdWJza2VsICQoQDouc2tlbC5oPS5zdWJza2VsLmgpICRcdTAwM2NcdFx0XFxcbitcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuK1xuKyQoTFNLRUxTX0gpOiAkKFJESVIpLyUubHNrZWwuaDogJChSRElSKS8lLmJwZi5vICQoQlBGVE9PTCkgJChHRU5fU0tFTCkgfCAkKFJESVIpXG4rXHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MpXHRcdFx0XHRcXFxuK1x0cHJpbnRmICcgICUtOHMlcyAlc1xcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSldJyAnJChub3RkaXIgJEApJzsgXFxcbitcdEJQRlRPT0w9JChCUEZUT09MKSAkKEdFTl9TS0VMKSAtLW5hbWUgJCpfbHNrZWwgLS1sc2tlbFx0XHRcdFx0XFxcbitcdFx0LS1za2VsICRAICRcdTAwM2MgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKVxuK1xuKyQoTFNLRUxTX1NJR05FRF9IKTogJChSRElSKS8lLmxza2VsLmg6ICQoUkRJUikvJS5icGYubyAkKEJQRlRPT0wpXHRcXFxuK1x0XHQgICAgJChHRU5fU0tFTCkgJChQUklWQVRFX0tFWSkgJChWRVJJRklDQVRJT05fQ0VSVCkgfCAkKFJESVIpXG4rXHQkKFEpJChjYWxsIHNraXBfaWZfbWlzc2luZyxTS0VMLCRcdTAwM2MpXHRcdFx0XHRcXFxuK1x0cHJpbnRmICcgICUtOHMlcyAlc1xcbicgJ0dFTi1TS0VMJyAnIFskKEJJTkFSWSkgKHNpZ25lZCldJyAnJChub3RkaXIgJEApJzsgXFxcbitcdEJQRlRPT0w9JChCUEZUT09MKSBQUklWQVRFX0tFWT0kKFBSSVZBVEVfS0VZKVx0XHRcdFx0XFxcbitcdFx0VkVSSUZJQ0FUSU9OX0NFUlQ9JChWRVJJRklDQVRJT05fQ0VSVClcdFx0XHRcXFxuK1x0XHQkKEdFTl9TS0VMKSAtLXNpZ24gLS1uYW1lICQqX2xza2VsXHRcdFx0XFxcbitcdFx0LS1za2VsICRAICRcdTAwM2MgJChjYWxsIHNraXBfb25fZmFpbCxTS0VMKVxuK1xuKyMgLlNFQ09OREVYUEFOU0lPTiBoZXJlIGFsbG93cyB0byBjb3JyZWN0bHkgZXhwYW5kICUtZGVwcyB2YXJpYWJsZXMgYXMgcHJlcmVxdWlzaXRlc1xuKy5TRUNPTkRFWFBBTlNJT046XG4rJChMSU5LRURfU0tFTFNfSCk6ICQoUkRJUikvJS5za2VsLmg6ICQkKGFkZHByZWZpeCAkKFJESVIpLywkJCgkJCouc2tlbC5oLWRlcHMpKSBcXFxuK1x0XHQgICAkKEJQRlRPT0wpICQoR0VOX1NLRUwpIHwgJChSRElSKVxuK1x0JChRKSQoY2FsbCBza2lwX2lmX21pc3NpbmcsU0tFTCwkKGFkZHByZWZpeCAkKFJESVIpLywkKCQqLnNrZWwuaC1kZXBzKSksJChAOi5za2VsLmg9LnN1YnNrZWwuaCkpIFxcXG4rXHRwcmludGYgJyAgJS04cyVzICVzXFxuJyAnTElOSy1CUEYnICcgWyQoQklOQVJZKV0nICckKG5vdGRpciAkKEA6LnNrZWwuaD0uYnBmLm8pKSc7IFxcXG4rXHRwcmludGYgJyAgJS04cyVzICVzXFxuJyAnR0VOLVNLRUwnICcgWyQoQklOQVJZKV0nICckKG5vdGRpciAkQCknOyBcXFxuK1x0QlBGVE9PTD0kKEJQRlRPT0wpICQoR0VOX1NLRUwpIC0tbmFtZSAkKlx0XHRcdFx0XHRcdFxcXG4rXHRcdC0tc2tlbCAkQCAtLXN1YnNrZWwgJChAOi5za2VsLmg9LnN1YnNrZWwuaClcdFx0XFxcbitcdFx0JChhZGRwcmVmaXggJChSRElSKS8sJCgkKi5za2VsLmgtZGVwcykpXHRcdFx0XFxcbitcdFx0JChjYWxsIHNraXBfb25fZmFpbCxTS0VMLCQoQDouc2tlbC5oPS5zdWJza2VsLmgpKVxuK1xuK2VuZGlmICMgQlBGX0NDXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2dlbl9icGZfc2tlbC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9nZW5fYnBmX3NrZWwuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5lNDNjY2YwOTU1NzU2XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvZ2VuX2JwZl9za2VsLnNoXG5AQCAtMCwwICsxLDk5IEBAXG4rIyEvYmluL2Jhc2hcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI1xuKyMgTGluayBCUEYgb2JqZWN0IGZpbGUocykgd2l0aCBcImJwZnRvb2wgZ2VuIG9iamVjdFwiIGFuZCBnZW5lcmF0ZSBhXG4rIyBza2VsZXRvbiAob3IgbGlnaHQgc2tlbGV0b24pIGhlYWRlciBmcm9tIHRoZSByZXN1bHQuXG4rI1xuKyMgVXNhZ2U6XG4rIyAgIEJQRlRPT0w9XHUwMDNjYnBmdG9vbFx1MDAzZSBnZW5fYnBmX3NrZWwuc2ggLS1uYW1lIE5BTUUgLS1za2VsIE9VVCBbb3B0aW9uc10gT0JKLi4uXG4rI1xuKyMgICAtLW5hbWUgTkFNRSAgICAgICBza2VsZXRvbiBvYmplY3QgbmFtZSAoXCJuYW1lIE5BTUVcIiBmb3IgYnBmdG9vbClcbisjICAgLS1za2VsIE9VVCAgICAgICAgb3V0cHV0IGhlYWRlciAoXCJmb28uc2tlbC5oXCIgb3IgXCJmb28ubHNrZWwuaFwiKVxuKyMgICAtLXN1YnNrZWwgT1VUICAgICBhbHNvIGdlbmVyYXRlIGEgc3Vic2tlbGV0b24gaGVhZGVyIGludG8gT1VUXG4rIyAgIC0tbHNrZWwgICAgICAgICAgIGdlbmVyYXRlIGEgbGlnaHQgc2tlbGV0b24gKGJwZnRvb2wgZ2VuIHNrZWxldG9uIC1MKVxuKyMgICAtLXNpZ24gICAgICAgICAgICBzaWduIHRoZSAobGlnaHQpIHNrZWxldG9uLCB3aXRoIHRoZSBrZXkgYW5kXG4rIyAgICAgICAgICAgICAgICAgICAgIGNlcnRpZmljYXRlIHRha2VuIGZyb20gJFBSSVZBVEVfS0VZIGFuZFxuKyMgICAgICAgICAgICAgICAgICAgICAkVkVSSUZJQ0FUSU9OX0NFUlRcbisjXG4rIyBUaGUgaW5wdXRzIGFyZSBsaW5rZWQgdGhyZWUgdGltZXMgYW5kIHRoZSAybmQgYW5kIDNyZCByZXN1bHRzXG4rIyBjb21wYXJlZCwgYXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBkZXRlcm1pbmlzbSBvZiBcImJwZnRvb2wgZ2VuXG4rIyBvYmplY3RcIi5cbisjXG4rIyBJbnRlcm1lZGlhdGUgZmlsZXMgYXJlIG5hbWVkIGFmdGVyIHRoZSBvdXRwdXQgaGVhZGVyIHdpdGggYSBcImxpbmtlZFwiXG4rIyBpbmZpeCAtIFwibGxpbmtlZFwiIGZvciBsaWdodCBvciBzaWduZWQgc2tlbGV0b25zLCBzbyBnZW5lcmF0aW5nIGFcbisjIC5za2VsLmggYW5kIGEgLmxza2VsLmggZnJvbSB0aGUgc2FtZSAuYnBmLm8gaW4gcGFyYWxsZWwgbmV2ZXIgcmFjZXNcbisjIG9uIHRoZSBpbnRlcm1lZGlhdGVzLlxuKyNcbisjIFRoZSBicGZ0b29sIGJpbmFyeSBpcyB0YWtlbiBmcm9tICRCUEZUT09MIChkZWZhdWx0OiBicGZ0b29sIGZyb20gUEFUSCkuXG4rIyBPbiBmYWlsdXJlIGFsbCBvdXRwdXRzIGFuZCBpbnRlcm1lZGlhdGVzIGFyZSByZW1vdmVkIGFuZCB0aGUgc2NyaXB0XG4rIyBleGl0cyBub24temVybzsgcGVybWlzc2l2ZS1tb2RlIHNraXBwaW5nIGlzIHRoZSBjYWxsZXIncyBidXNpbmVzc1xuKyMgKHNlZSBza2lwX29uX2ZhaWwgaW4gdGhlIE1ha2VmaWxlKS5cbitcbitzZXQgLXVcbitcbiticGZ0b29sPSR7QlBGVE9PTDotYnBmdG9vbH1cbituYW1lPScnIHNrZWw9Jycgc3Vic2tlbD0nJ1xuK2xza2VsPTAgc2lnbj0wXG4rXG4rd2hpbGUgWyAkIyAtZ3QgMCBdOyBkb1xuK1x0Y2FzZSBcIiQxXCIgaW5cbitcdC0tbmFtZSlcdFx0bmFtZT0kMjsgc2hpZnQgMiA7O1xuK1x0LS1za2VsKVx0XHRza2VsPSQyOyBzaGlmdCAyIDs7XG4rXHQtLXN1YnNrZWwpXHRzdWJza2VsPSQyOyBzaGlmdCAyIDs7XG4rXHQtLWxza2VsKVx0bHNrZWw9MTsgc2hpZnQgOztcbitcdC0tc2lnbilcdFx0c2lnbj0xOyBzaGlmdCA7O1xuK1x0LS0pXHRcdHNoaWZ0OyBicmVhayA7O1xuK1x0LSopXHRcdGVjaG8gXCIkMDogdW5rbm93biBvcHRpb246ICQxXCIgXHUwMDNlXHUwMDI2MjsgZXhpdCAxIDs7XG4rXHQqKVx0XHRicmVhayA7O1xuK1x0ZXNhY1xuK2RvbmVcbitcbitpZiBbIC16IFwiJG5hbWVcIiBdIHx8IFsgLXogXCIkc2tlbFwiIF0gfHwgWyAkIyAtZXEgMCBdOyB0aGVuXG4rXHRlY2hvIFwidXNhZ2U6ICQwIC0tbmFtZSBOQU1FIC0tc2tlbCBPVVQgW29wdGlvbnNdIE9CSi4uLlwiIFx1MDAzZVx1MDAyNjJcbitcdGV4aXQgMVxuK2ZpXG4rXG4raW5maXg9bGlua2VkXG4raWYgWyBcIiRsc2tlbFwiIC1lcSAxIF0gfHwgWyBcIiRzaWduXCIgLWVxIDEgXTsgdGhlblxuK1x0aW5maXg9bGxpbmtlZFxuK2ZpXG4rXG4raWYgWyBcIiRzaWduXCIgLWVxIDEgXSBcdTAwMjZcdTAwMjYgeyBbIC16IFwiJHtQUklWQVRFX0tFWS19XCIgXSB8fCBbIC16IFwiJHtWRVJJRklDQVRJT05fQ0VSVC19XCIgXTsgfTsgdGhlblxuK1x0ZWNobyBcIiQwOiAtLXNpZ24gcmVxdWlyZXMgUFJJVkFURV9LRVkgYW5kIFZFUklGSUNBVElPTl9DRVJUIGluIHRoZSBlbnZpcm9ubWVudFwiIFx1MDAzZVx1MDAyNjJcbitcdGV4aXQgMVxuK2ZpXG4rXG4rYmFzZT0ke3NrZWwlLnNrZWwuaH1cbitiYXNlPSR7YmFzZSUubHNrZWwuaH1cbit0MT0kYmFzZS4ke2luZml4fTEub1xuK3QyPSRiYXNlLiR7aW5maXh9Mi5vXG4rdDM9JGJhc2UuJHtpbmZpeH0zLm9cbitcbitmYWlsKCkge1xuK1x0cm0gLWYgXCIkc2tlbFwiICR7c3Vic2tlbDorXCIkc3Vic2tlbFwifSBcIiR0MVwiIFwiJHQyXCIgXCIkdDNcIlxuK1x0ZXhpdCAxXG4rfVxuK1xuK1wiJGJwZnRvb2xcIiBnZW4gb2JqZWN0IFwiJHQxXCIgXCIkQFwiIHx8IGZhaWxcbitcIiRicGZ0b29sXCIgZ2VuIG9iamVjdCBcIiR0MlwiIFwiJHQxXCIgfHwgZmFpbFxuK1wiJGJwZnRvb2xcIiBnZW4gb2JqZWN0IFwiJHQzXCIgXCIkdDJcIiB8fCBmYWlsXG4raWYgISBjbXAgLXMgXCIkdDJcIiBcIiR0M1wiOyB0aGVuXG4rXHRlY2hvIFwiJDA6IGJwZnRvb2wgZ2VuIG9iamVjdCBpcyBub3QgZGV0ZXJtaW5pc3RpYyBmb3IgJHNrZWxcIiBcdTAwM2VcdTAwMjYyXG4rXHRmYWlsXG4rZmlcbitcbithcmdzPSgpXG4raWYgWyBcIiRzaWduXCIgLWVxIDEgXTsgdGhlblxuK1x0YXJncys9KC1TIC1rIFwiJFBSSVZBVEVfS0VZXCIgLWkgXCIkVkVSSUZJQ0FUSU9OX0NFUlRcIilcbitmaVxuK2lmIFsgXCIkbHNrZWxcIiAtZXEgMSBdOyB0aGVuXG4rXHRhcmdzKz0oLUwpXG4rZmlcbitcIiRicGZ0b29sXCIgZ2VuIHNrZWxldG9uICR7YXJnc1tAXStcIiR7YXJnc1tAXX1cIn0gXCIkdDNcIiBuYW1lIFwiJG5hbWVcIiBcdTAwM2UgXCIkc2tlbFwiIHx8IGZhaWxcbitcbitpZiBbIC1uIFwiJHN1YnNrZWxcIiBdOyB0aGVuXG4rXHRcIiRicGZ0b29sXCIgZ2VuIHN1YnNrZWxldG9uIFwiJHQzXCIgbmFtZSBcIiRuYW1lXCIgXHUwMDNlIFwiJHN1YnNrZWxcIiB8fCBmYWlsXG4rZmlcbitcbitybSAtZiBcIiR0MVwiIFwiJHQyXCIgXCIkdDNcIlxuK2V4aXQgMFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9jZ3JvdXBfZ2V0c2V0X3JldHZhbC5jXG5pbmRleCAyYmI1NzczZDZmOTkzLi5lYTM0Mjg1OWQ2Y2UxIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvY2dyb3VwX2dldHNldF9yZXR2YWwuY1xuQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdHJ1Y3QgZXhwb3NlZF9ob29rIHtcbiBcdFx0LmV4cGVjdGVkX2VyciA9IEVYUEVDVEVEX0VSUiwgXFxcbiBcdH0sXG4gXG4tI2luY2x1ZGUgXCJjZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oXCJcbisjaW5jbHVkZSBcInByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcIlxuIFxuICN1bmRlZiBCUEZfUkVUVkFMX0hPT0tcbiB9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jZ3JvdXBfZ2V0c2V0X3JldHZhbF9ob29rcy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbnNpbWlsYXJpdHkgaW5kZXggMTAwJVxucmVuYW1lIGZyb20gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhcbnJlbmFtZSB0byB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMjA6MTQ6MzYuNzAwOTc4Njc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAyNDk5NDY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBUaGlzIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIHBhdGNoIGludHJvZHVjZXMgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZiB0aGF0ICpyZXF1aXJlKiBmdXp6aW5nLiBJIHNlZSBhIHNlcmllcyBvZiBtb2RpZmljYXRpb25zLCBhbGwgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIFNwZWNpZmljYWxseSwgSSdtIG5vdGljaW5nIGFkZGl0aW9ucyBvZiBuZXcgTWFrZWZpbGVzOiBgTWFrZWZpbGUuYnVpbGR2YXJzYCwgYE1ha2VmaWxlLnJ1bm5lcmAsIGBNYWtlZmlsZS5za2VsYCwgYW5kIGBnZW5fYnBmX3NrZWwuc2hgLiBUaGVyZSdzIGFsc28gYSByZW5hbWUgZnJvbSBgY2dyb3VwX2dldHNldF9yZXR2YWxfaG9va3MuaGAgdG8gYHByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhgLCBhbmQgYW4gaW5jbHVkZSB1cGRhdGUgaW4gYGNncm91cF9nZXRzZXRfcmV0dmFsLmNgLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2VzIGFyZSBhbGwgaXNvbGF0ZWQgdG8gdGhlIHNlbGZ0ZXN0cyBpbmZyYXN0cnVjdHVyZSB3aXRoaW4gdGhlIEJQRiBzdWJzeXN0ZW0uIEkgZG9uJ3Qgc2VlIGFueXRoaW5nIGRpcmVjdGx5IHRvdWNoaW5nIGNvcmUga2VybmVsIGNvZGUsIGp1c3QgdGhlIHRlc3RpbmcgaGFybmVzcy5cblxuVG8gYmUgZXh0cmEgc3VyZSwgbGV0J3MgcXVpY2tseSByZS1leGFtaW5lIHRob3NlIGZpbGVzOiBgTWFrZWZpbGVgLCBgTWFrZWZpbGUuYnVpbGR2YXJzYCwgYE1ha2VmaWxlLnJ1bm5lcmAsIGBNYWtlZmlsZS5za2VsYCwgYGdlbl9icGZfc2tlbC5zaGAsIGBwcm9nX3Rlc3RzL2Nncm91cF9nZXRzZXRfcmV0dmFsLmNgLCBhbmQgYHByb2dzL2Nncm91cF9nZXRzZXRfcmV0dmFsX2hvb2tzLmhgLiBZZXAsIHN0aWxsIG5vIGtlcm5lbCBzb3VyY2UgY29kZSBiZWluZyBkaXJlY3RseSBtb2RpZmllZC5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBrZXJuZWwtbGV2ZWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBUaGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjE1LCJPdXRwdXRUb2tlbnMiOjY5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMjA6MTQ6NDMuNzI1OTc2MzcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzcyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgYnVpbGQgc3lzdGVtIChNYWtlZmlsZXMgYW5kIHNjcmlwdHMpIGFuZCByZW5hbWVzIGEgdGVzdCBoZWFkZXIgZmlsZS4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QyMDoxNDo0My43MjU5OTc0ODFaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowlx7jh[1] Phase: Running StartedAt: 2026-08-23 20:15:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlx7jh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-23 20:15:07 +0000 UTC FinishedAt: 2026-08-23 20:15:11 +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,}