From: cecco beppe Date: 2010-09-09T06:03:13+09:00 Subject: [ruby-core:32175] [Ruby 1.9-Bug#3806][Open] bug report --mimepart_4c87fa0ed539a_eed58900c65982 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #3806: bug report http://redmine.ruby-lang.org/issues/show/3806 Author: cecco beppe Status: Open, Priority: Normal ruby -v: 1.9.2 >rubyw piramideMenu20100515.rbw piramideMenu20100515.rbw: [BUG] Segmentation fault ruby 1.9.2p0 (2010-08-18) [i386-mingw32] -- control frame ---------- c:0001 p:0000 s:0002 b:0002 l:000f2c d:000f2c TOP = --------------------------- I make this little program on Ruby 1.8.xxx, o.s. is windows xp, gui is fx= ruby, database mysql. I installed Ruby 1.9.2 and running my program by Ruby 1.9.2 I have the fo= llowing warning: [NOTE] You may have encountered a bug in the Ruby interpreter or extension libra= ries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport_html This application has requested the Runtime to terminate it in an unusual = way. Please contact the application's support team for more information. >Exit code: 3 Can you help me? ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4c87fa0ed539a_eed58900c65982 Content-Type: application/octet-stream; name=piramideMenu20100515.rbw Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=piramideMenu20100515.rbw IyEvdXNyL2Jpbi9lbnYgcnVieQ0KDQpyZXF1aXJlICdydWJ5Z2VtcycNCnJl cXVpcmUgJ2ZveDE2Jw0KcmVxdWlyZSAnbXlzcWwnDQppbmNsdWRlIEZveA0K DQpjbGFzcyBGaW5lc3RyYTAgPCBGWE1haW5XaW5kb3cNCgkkdmFyID0gW10N CglkZWYgaW5pdGlhbGl6ZShhcHApDQoJCSMgSW5pdGlhbGl6ZSBiYXNlIGNs YXNzDQoJCXN1cGVyKGFwcCwgIlBST0dSQU1NQSBQSVJBTUlERSIsIDpvcHRz ID0+IERFQ09SX0FMTCwgOnggPT4gMjAsIDp5ID0+IDIwLCA6d2lkdGggPT4g NjAwLCA6aGVpZ2h0ID0+IDQwMCkNCgkJIyBNZW51YmFyDQoJCW1lbnViYXIg PSBGWE1lbnVCYXIubmV3KHNlbGYsIExBWU9VVF9TSURFX1RPUHxMQVlPVVRf RklMTF9YKQ0KCQkjIEZpbGUgbWVudQ0KCQlmaWxlbWVudSA9IEZYTWVudVBh bmUubmV3KHNlbGYpDQoJCWFyY2hpdml0YWJlbGxlbWVudSA9IEZYTWVudVBh bmUubmV3KHNlbGYpDQoNCgkJRlhNZW51Q29tbWFuZC5uZXcoZmlsZW1lbnUs ICJBcmNoaXZpIGUgVGFiZWxsZSIpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsN CgkJCWZpbmVzdHJhID0gRmluZXN0cmExLm5ldyhzZWxmKQ0KCQkJZmluZXN0 cmEuZXhlY3V0ZShQTEFDRU1FTlRfQ1VSU09SKQ0KCQkJfQ0KCQlGWE1lbnVD b21tYW5kLm5ldyhmaWxlbWVudSwgIkdlc3Rpb25lIGRlZ2xpIEFjcXVpc3Rp IikNCgkJRlhNZW51Q29tbWFuZC5uZXcoZmlsZW1lbnUsICJHZXN0aW9uZSBk ZWwgTWFnYXp6aW5vIikNCgkJRlhNZW51Q29tbWFuZC5uZXcoZmlsZW1lbnUs ICJHZXN0aW9uZSBkZWkgQ2VzcGl0aSBBbW1vcnRpenphYmlsaSIpDQoJCUZY TWVudUNvbW1hbmQubmV3KGZpbGVtZW51LCAiR2VzdGlvbmUgZGVsbGEgUHJv ZHV6aW9uZSIpDQoJCUZYTWVudUNvbW1hbmQubmV3KGZpbGVtZW51LCAiR2Vz dGlvbmUgZGVsIFBlcnNvbmFsZSBEaXBlbmRlbnRlIGUgQ29sbGFib3JhdG9y aSIpDQoJCUZYTWVudUNvbW1hbmQubmV3KGZpbGVtZW51LCAiR2VzdGlvbmUg ZGVsbGUgVmVuZGl0ZSIpDQoNCgkJRlhNZW51Q29tbWFuZC5uZXcoZmlsZW1l bnUsICJHZXN0aW9uZSBkZWxsXCdBbW1pbmlzdHJhemlvbmUiKS5jb25uZWN0 KFNFTF9DT01NQU5EKSB7DQoJCQlmaW5lc3RyYSA9IEZpbmVzdHJhOC5uZXco c2VsZikNCgkJCWZpbmVzdHJhLmV4ZWN1dGUoUExBQ0VNRU5UX0NVUlNPUikN CgkJCX0NCgkJRlhNZW51U2VwYXJhdG9yLm5ldyhmaWxlbWVudSkJCQ0KCQlG WE1lbnVDb21tYW5kLm5ldyhmaWxlbWVudSwgIkNvbmZpZ3VyYXppb25lIGFt YmllbnRlIG9wZXJhdGl2byIpDQoJCUZYTWVudUNvbW1hbmQubmV3KGZpbGVt ZW51LCAiSW5mb3JtYXppb25pIikuY29ubmVjdChTRUxfQ09NTUFORCkgew0K CQlGWE1lc3NhZ2VCb3guaW5mb3JtYXRpb24oc2VsZiwgTUJPWF9PSywNCiJQ cm9ncmFtbWEgUElSQU1JREUiLA0KInZlcnNpb25lIDIwMTAuMDMuMzANCmF1 dG9yZTogR3VlcnJhIEFudG9uaW8NCmRhdGE6IG1hcnpvIDIwMTAiKQ0KCQl9 DQoJCUZYTWVudVNlcGFyYXRvci5uZXcoZmlsZW1lbnUpCQkNCgkJRlhNZW51 Q29tbWFuZC5uZXcoZmlsZW1lbnUsICJGaW5lIGxhdm9yb1x0Q3RsLVoiLCBu aWwsIGdldEFwcCgpLCBGWEFwcDo6SURfUVVJVCkNCgkJRlhNZW51VGl0bGUu bmV3KG1lbnViYXIsICJNZW51IFByaW5jaXBhbGUiLCBuaWwsIDpwb3B1cE1l bnUgPT4gZmlsZW1lbnUpDQoJCUZYSG9yaXpvbnRhbFNlcGFyYXRvci5uZXco c2VsZiwgTEFZT1VUX1NJREVfVE9QfFNFUEFSQVRPUl9HUk9PVkV8TEFZT1VU X0ZJTExfWCkNCgllbmQNCgkjIFF1aXQNCglkZWYgb25DbWRRdWl0KHNlbmRl ciwgc2VsLCBwdHIpDQoJCWdldEFwcC5leGl0KDApDQoJZW5kDQoNCgkjIFN0 YXJ0DQoJZGVmIGNyZWF0ZQ0KCQkjIENyZWF0ZSB3aW5kb3cNCgkJc3VwZXIN CgkJIyBTaG93IHRoZSBtYWluIHdpbmRvdw0KCQlzaG93KFBMQUNFTUVOVF9T Q1JFRU4pDQoJZW5kDQplbmQNCg0KY2xhc3MgRmluZXN0cmExIDwgRlhEaWFs b2dCb3gNCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0KCWRlZiBpbml0aWFsaXpl KGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJc3VwZXIoYXBw LCAiUFJPR1JBTU1BIFBJUkFNSURFIiwgOm9wdHMgPT4gREVDT1JfQUxMLCA6 eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9PiA2MDAsIDpoZWlnaHQgPT4g NDAwKQ0KCQkjIE1lbnViYXINCgkJbWVudWJhcjEgPSBGWE1lbnVCYXIubmV3 KHNlbGYsIExBWU9VVF9TSURFX1RPUHxMQVlPVVRfRklMTF9YKQ0KCQkjIEZp bGUgbWVudQ0KCQlmaWxlbWVudTEgPSBGWE1lbnVQYW5lLm5ldyhzZWxmKQ0K CQlhcmNoaXZpdGFiZWxsZW1lbnUxID0gRlhNZW51UGFuZS5uZXcoc2VsZikN CgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRhYmVsbGVtZW51MSwgIkFy Y2hpdmkgZSBUYWJlbGxlIENvbXVuaSIpDQoJCUZYTWVudUNvbW1hbmQubmV3 KGFyY2hpdml0YWJlbGxlbWVudTEsICJBcmNoaXZpIGUgVGFiZWxsZSBkZWds aSBBY3F1aXN0aSIpDQoJCUZYTWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJl bGxlbWVudTEsICJBcmNoaXZpIGUgVGFiZWxsZSBkZWwgTWFnYXp6aW5vIikN CgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRhYmVsbGVtZW51MSwgIkFy Y2hpdmkgZSBUYWJlbGxlIGRlaSBDZXNwaXRpIEFtbW9ydGl6emFiaWxpIikN CgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRhYmVsbGVtZW51MSwgIkFy Y2hpdmkgZSBUYWJlbGxlIGRlbGxhIFByb2R1emlvbmUiKQ0KCQlGWE1lbnVD b21tYW5kLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUxLCAiQXJjaGl2aSBlIFRh YmVsbGUgZGkgRGlwZW5lbnRpIGUgQ29sbGFib3JhdG9yaSIpDQoJCUZYTWVu dUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVudTEsICJBcmNoaXZpIGUg VGFiZWxsZSBkZWxsZSBWZW5kaXRlIikNCgkJRlhNZW51Q29tbWFuZC5uZXco YXJjaGl2aXRhYmVsbGVtZW51MSwgIkFyY2hpdmkgZSBUYWJlbGxlIGRlbGxc J0FtbWluaXN0cmF6aW9uZSIpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsNCgkJ CWZpbmVzdHJhID0gRmluZXN0cmExMDgubmV3KHNlbGYpDQoJCQlmaW5lc3Ry YS5leGVjdXRlKFBMQUNFTUVOVF9DVVJTT1IpDQoJCQl9DQoJCUZYTWVudVRp dGxlLm5ldyhtZW51YmFyMSwgIkFyY2hpdmkgZSBUYWJlbGxlIiwgOnBvcHVw TWVudSA9PiBhcmNoaXZpdGFiZWxsZW1lbnUxKQ0KCWVuZA0KZW5kDQoNCmNs YXNzIEZpbmVzdHJhMTA4IDwgRlhEaWFsb2dCb3gNCgkjZGVmIGluaXRpYWxp emUoYXBwKQ0KCWRlZiBpbml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXpl IGJhc2UgY2xhc3MNCgkJc3VwZXIoYXBwLCAiUFJPR1JBTU1BIFBJUkFNSURF IiwgOm9wdHMgPT4gREVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3 aWR0aCA9PiA2MDAsIDpoZWlnaHQgPT4gNDAwKQ0KCQkjIE1lbnViYXINCgkJ bWVudWJhciA9IEZYTWVudUJhci5uZXcoc2VsZiwgTEFZT1VUX1NJREVfVE9Q fExBWU9VVF9GSUxMX1gpDQoJCSMgRmlsZSBtZW51DQoJCWZpbGVtZW51ID0g RlhNZW51UGFuZS5uZXcoc2VsZikNCgkJYXJjaGl2aXRhYmVsbGVtZW51ID0g RlhNZW51UGFuZS5uZXcoc2VsZikNCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJj aGl2aXRhYmVsbGVtZW51LCAiQXJjaGl2aW8gZGVsIHBpYW5vIGRlaSBjb250 aSIpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsNCgkJCWZpbmVzdHJhID0gRmlu ZXN0cmExMDgwMS5uZXcoc2VsZikNCgkJCWZpbmVzdHJhLmV4ZWN1dGUoUExB Q0VNRU5UX0NVUlNPUikNCgkJCX0NCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJj aGl2aXRhYmVsbGVtZW51LCAiQXJjaGl2aW8gZGVpIGNsaWVudGkiKS5jb25u ZWN0KFNFTF9DT01NQU5EKSB7DQoJCQkjZmluZXN0cmEgPSBGaW5lc3RyYTEw ODAyLm5ldyhzZWxmKQ0KCQkJZmluZXN0cmEgPSBGaW5lc3RyYTAwMDAxLm5l dyhzZWxmKQ0KCQkJZmluZXN0cmEuZXhlY3V0ZShQTEFDRU1FTlRfQ1VSU09S KQ0KCQkJfQ0KCQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFiZWxsZW1l bnUsICJBcmNoaXZpbyBkZWkgZm9ybml0b3JpIikuY29ubmVjdChTRUxfQ09N TUFORCkgew0KCQkJZmluZXN0cmEgPSBGaW5lc3RyYTEwODAzLm5ldyhzZWxm KQ0KCQkJZmluZXN0cmEuZXhlY3V0ZShQTEFDRU1FTlRfQ1VSU09SKQ0KCQkJ fQ0KCQlGWE1lbnVTZXBhcmF0b3IubmV3KGFyY2hpdml0YWJlbGxlbWVudSkJ CQ0KCQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUsICJU YWJlbGxhIGRlbGxlIGNvbmRpemlvbmkgZGkgcGFnYW1lbnRvIikuY29ubmVj dChTRUxfQ09NTUFORCkgew0KCQkJZmluZXN0cmEgPSBGaW5lc3RyYTEwODA0 Lm5ldyhzZWxmKQ0KCQkJZmluZXN0cmEuZXhlY3V0ZShQTEFDRU1FTlRfQ1VS U09SKQ0KCQkJfQ0KCQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFiZWxs ZW1lbnUsICJUYWJlbGxhIGRlbGxlIGNhdXNhbGkgZGkgY29udGFiaWxpdGFc JyBnZW5lcmFsZSIpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsNCgkJCWZpbmVz dHJhID0gRmluZXN0cmExMDgwNS5uZXcoc2VsZikNCgkJCWZpbmVzdHJhLmV4 ZWN1dGUoUExBQ0VNRU5UX0NVUlNPUikNCgkJCX0NCgkJRlhNZW51Q29tbWFu ZC5uZXcoYXJjaGl2aXRhYmVsbGVtZW51LCAiVGFiZWxsYSBkZWxsZSBjYXVz YWxpIGl2YSIpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsNCgkJCWZpbmVzdHJh ID0gRmluZXN0cmExMDgwNi5uZXcoc2VsZikNCgkJCWZpbmVzdHJhLmV4ZWN1 dGUoUExBQ0VNRU5UX0NVUlNPUikNCgkJCX0NCgkJRlhNZW51Q29tbWFuZC5u ZXcoYXJjaGl2aXRhYmVsbGVtZW51LCAiVGFiZWxsYSBkZWkgbGlicmkgY29u dGFiaWxpIikuY29ubmVjdChTRUxfQ09NTUFORCkgew0KCQkJZmluZXN0cmEg PSBGaW5lc3RyYTEwODA3Lm5ldyhzZWxmKQ0KCQkJZmluZXN0cmEuZXhlY3V0 ZShQTEFDRU1FTlRfQ1VSU09SKQ0KCQkJfQ0KCQlGWE1lbnVDb21tYW5kLm5l dyhhcmNoaXZpdGFiZWxsZW1lbnUsICJUYWJlbGxhIGRlaSB0aXBpIGRpIGRv Y3VtZW50aSBpdmEiKS5jb25uZWN0KFNFTF9DT01NQU5EKSB7DQoJCQlmaW5l c3RyYSA9IEZpbmVzdHJhMTA4MDkubmV3KHNlbGYpDQoJCQlmaW5lc3RyYS5l eGVjdXRlKFBMQUNFTUVOVF9DVVJTT1IpDQoJCQl9DQoNCgkJRlhNZW51VGl0 bGUubmV3KG1lbnViYXIsICJBcmNoaXZpIGUgVGFiZWxsZSBkZWxsXCdBbW1p bmlzdHJhemlvbmUiLCA6cG9wdXBNZW51ID0+IGFyY2hpdml0YWJlbGxlbWVu dSkNCgllbmQNCmVuZA0KDQpjbGFzcyBGaW5lc3RyYTEwODAxIDwgRlhEaWFs b2dCb3ggICNmaW5lc3RyYSBwZXIgbCdpbnNlcmltZW50byBkZWkgY29udGkg ZGVsIHBpYW5vIGRlaSBjb250aQ0KCWRlZiBpbml0aWFsaXplKGFwcCkNCgkJ IyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJQGNvbnRhdG9yZSA9IDANCgkJ QHJpZ2EgPSBuaWwNCiNjYXJpY2EgaW4gbWVtb3JpYSB0dXR0byBpbCBwaWFu byBkZWkgY29udGkNCgkJY2FyaWNhX2RhdGkNCiNkaXNlZ25hIGxhIGZpbmVz dHJhICAgIA0KCQlzdXBlcihhcHAsICJQUk9HUkFNTUEgUElSQU1JREUiLCA6 b3B0cyA9PiBERUNPUl9BTEwsIDp4ID0+IDIwLCA6eSA9PiAyMCwgOndpZHRo ID0+IDgwMCwgOmhlaWdodCA9PiA0MDApDQoNCgkJYXJlYSA9IEZYUGFja2Vy Lm5ldyhzZWxmLCA6b3B0cyA9PiBMQVlPVVRfRklMTCwgOnZTcGFjaW5nID0+ IDMwLCA6aFNwYWNpbmcgPT4gNTApDQoNCgkJZ3J1cHBvMSA9IEZYR3JvdXBC b3gubmV3KGFyZWEsICIiLCA6dlNwYWNpbmcgPT4gMCkNCgkJDQoJCXZUZXN0 YTAgPSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMSwgOm9wdHMgPT4g TEFZT1VUX1NJREVfVE9QfFBBQ0tfVU5JRk9STV9XSURUSCwgOnBhZEJvdHRv bSA9PiAxMCkNCgkJRlhMYWJlbC5uZXcodlRlc3RhMCwgIkdFU1RJT05FIERF TCBQSUFOTyBERUkgQ09OVEkiLCBuaWwsIEpVU1RJRllfQ0VOVEVSX1h8TEFZ T1VUX0ZJTExfUk9XLCA6cGFkUmlnaHQgPT4gMTI4KQ0KDQoJCXZUZXN0YTEg PSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMSwgOm9wdHMgPT4gTEFZ T1VUX1NJREVfVE9QfFBBQ0tfVU5JRk9STV9XSURUSCkNCgkJRlhCdXR0b24u bmV3KHZUZXN0YTEsICdQcmltbyByZWNvcmQnLCA6cGFkTGVmdCA9PiA1LCA6 cGFkUmlnaHQgPT4gNSkuY29ubmVjdChTRUxfQ09NTUFORCkge3ByaW1vX3Jl Y29yZCB9DQoJCUZYQnV0dG9uLm5ldyh2VGVzdGExLCAnUmVjb3JkIHByZWNl ZGVudGUnLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSkuY29ubmVj dChTRUxfQ09NTUFORCkge3ByZWNlZGVudGVfcmVjb3JkfQ0KCQlGWEJ1dHRv bi5uZXcodlRlc3RhMSwgJ1JlY29yZCBzdWNjZXNzaXZvJywgOnBhZExlZnQg PT4gNSwgOnBhZFJpZ2h0ID0+IDUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHtz dWNjZXNzaXZvX3JlY29yZH0NCgkJRlhCdXR0b24ubmV3KHZUZXN0YTEsICdV bHRpbW8gcmVjb3JkJywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUp LmNvbm5lY3QoU0VMX0NPTU1BTkQpIHt1bHRpbW9fcmVjb3JkfQ0KCQlGWEJ1 dHRvbi5uZXcodlRlc3RhMSwgJ051b3ZvIHJlY29yZCcsIDpwYWRMZWZ0ID0+ IDUsIDpwYWRSaWdodCA9PiA1KS5jb25uZWN0KFNFTF9DT01NQU5EKSB7bnVv dm9fcmVjb3JkfQ0KDQoJCWdydXBwbzIgPSBGWEdyb3VwQm94Lm5ldyhhcmVh LCAiIiwgOnZTcGFjaW5nID0+IDApDQoJCXZMaW5lYTEgPSBGWEhvcml6b250 YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9Q LCA6dlNwYWNpbmcgPT4gMCkNCgkJQGNvZGljZVRpcG9Db250byA9IEZYRGF0 YVRhcmdldC5uZXcoMCkNCgkJRlhCdXR0b24ubmV3KHZMaW5lYTEsICc/Jywg OnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUsIDpwYWRUb3AgPT4wLCA6 cGFkQm90dG9tID0+IDApLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsNCgkJCSR2 YXIgPSBbXQ0KCQkJcmljZXJjYSA9IEZpbmVzdHJhOTAwMDEubmV3KHNlbGYp DQoJCQlyaWNlcmNhLmV4ZWN1dGUoUExBQ0VNRU5UX0NVUlNPUikNCgkJCUBj b2RpY2VUaXBvQ29udG8udmFsdWUgPSAkdmFyWzBdDQoJCQlAZGVzY3Jpemlv bmVUaXBvQ29udG8udmFsdWUgPSAkdmFyWzFdDQoJCQkkdmFyID0gW10NCgkJ CX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhMSwgIkNvZGljZSB0aXBvIGNvbnRv IiwgbmlsLCBKVVNUSUZZX1JJR0hUfExBWU9VVF9GSUxMX1JPVywgOnBhZFJp Z2h0ID0+IDEyOCkNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTEsIDEsIDp0 YXJnZXQgPT4gQGNvZGljZVRpcG9Db250bywgOnNlbGVjdG9yID0+IEZYRGF0 YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFN RV9USElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8VEVY VEZJRUxEX0lOVEVHRVIpDQoJCUBkZXNjcml6aW9uZVRpcG9Db250byA9IEZY RGF0YVRhcmdldC5uZXcoIiIpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWEx LCAzMCwgOnRhcmdldCA9PiBAZGVzY3JpemlvbmVUaXBvQ29udG8sIDpzZWxl Y3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBURVhU RklFTERfUkVBRE9OTFl8VEVYVEZJRUxEX09WRVJTVFJJS0UpDQoNCgkJdkxp bmVhMiA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0cyA9 PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAY29kaWNl R3J1cHBvID0gRlhEYXRhVGFyZ2V0Lm5ldygwKQ0KCQlGWEJ1dHRvbi5uZXco dkxpbmVhMiwgJz8nLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSwg OnBhZFRvcCA9PjAsIDpwYWRCb3R0b20gPT4gMCkuY29ubmVjdChTRUxfQ09N TUFORCkgew0KCQkJJHZhciA9IFtdDQoJCQlyaWNlcmNhID0gRmluZXN0cmE5 MDAwMy5uZXcoc2VsZikNCgkJCXJpY2VyY2EuZXhlY3V0ZShQTEFDRU1FTlRf Q1VSU09SKQ0KCQkJQGNvZGljZUdydXBwby52YWx1ZSA9ICR2YXJbMF0NCgkJ CUBkZXNjcml6aW9uZUdydXBwby52YWx1ZSA9ICR2YXJbMV0NCgkJCSR2YXIg PSBbXQ0KCQkJdmFpX2FfcmVjb3JkDQoJCQl9DQoJCUZYTGFiZWwubmV3KHZM aW5lYTIsICJDb2RpY2UgZ3J1cHBvIiwgbmlsLCBKVVNUSUZZX1JJR0hUfExB WU9VVF9GSUxMX1JPVywgOnBhZFJpZ2h0ID0+IDEzMCkNCgkJZ3J1cHBvID0g RlhUZXh0RmllbGQubmV3KHZMaW5lYTIsIDMsIDp0YXJnZXQgPT4gQGNvZGlj ZUdydXBwbywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUs IDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklM TF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8VEVYVEZJRUxEX0lOVEVHRVJ8SlVT VElGWV9SSUdIVCkNCgkJQGRlc2NyaXppb25lR3J1cHBvID0gRlhEYXRhVGFy Z2V0Lm5ldygiIikNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTIsIDMwLCA6 dGFyZ2V0ID0+IEBkZXNjcml6aW9uZUdydXBwbywgOnNlbGVjdG9yID0+IEZY RGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IFRFWFRGSUVMRF9SRUFE T05MWXxURVhURklFTERfT1ZFUlNUUklLRSkNCg0KCQl2TGluZWEzID0gRlhI b3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+IExBWU9VVF9T SURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBjb2RpY2VDb250byA9IEZY RGF0YVRhcmdldC5uZXcoMCkNCgkJQGRlc2NyaXppb25lQ29udG8gPSBGWERh dGFUYXJnZXQubmV3KCIiKQ0KCQlGWEJ1dHRvbi5uZXcodkxpbmVhMywgJz8n LCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSwgOnBhZFRvcCA9PjAs IDpwYWRCb3R0b20gPT4gMCkuY29ubmVjdChTRUxfQ09NTUFORCkgew0KCQkJ JHZhciA9IFtdDQoJCQkkdmFyID0gQGNvZGljZUdydXBwbw0KCQkJcmljZXJj YSA9IEZpbmVzdHJhOTAwMDQubmV3KHNlbGYpDQoJCQlyaWNlcmNhLmV4ZWN1 dGUoUExBQ0VNRU5UX0NVUlNPUikNCgkJCUBjb2RpY2VDb250by52YWx1ZSA9 ICR2YXJbMF0NCgkJCUBkZXNjcml6aW9uZUNvbnRvLnZhbHVlID0gJHZhclsx XQ0KCQkJJHZhciA9IFtdDQoJCQl2YWlfYV9yZWNvcmQNCgkJCX0NCgkJRlhM YWJlbC5uZXcodkxpbmVhMywgIkNvZGljZSBjb250byIsIG5pbCwgSlVTVElG WV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRSaWdodCA9PiAxMzgpDQoJ CUZYVGV4dEZpZWxkLm5ldyh2TGluZWEzLCAzLCA6dGFyZ2V0ID0+IEBjb2Rp Y2VDb250bywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUs IDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklM TF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8VEVYVEZJRUxEX0lOVEVHRVJ8SlVT VElGWV9SSUdIVCkNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTMsIDMwLCA6 dGFyZ2V0ID0+IEBkZXNjcml6aW9uZUNvbnRvLCA6c2VsZWN0b3IgPT4gRlhE YXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gVEVYVEZJRUxEX1JFQURP TkxZfFRFWFRGSUVMRF9PVkVSU1RSSUtFKQ0KDQoJCXZMaW5lYTQgPSBGWEhv cml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJ REVfVE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGNvZGljZVNvdHRvY29udG8g PSBGWERhdGFUYXJnZXQubmV3KDApDQoJCUZYQnV0dG9uLm5ldyh2TGluZWE0 LCAnPycsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1LCA6cGFkVG9w ID0+MCwgOnBhZEJvdHRvbSA9PiAwKS5jb25uZWN0KFNFTF9DT01NQU5EKSB7 DQoJCQkkdmFyID0gW10NCgkJCSR2YXJbMF0gPSBAY29kaWNlR3J1cHBvDQoJ CQkkdmFyWzFdID0gQGNvZGljZUNvbnRvDQoJCQlyaWNlcmNhID0gRmluZXN0 cmE5MDAwNS5uZXcoc2VsZikNCgkJCXJpY2VyY2EuZXhlY3V0ZShQTEFDRU1F TlRfQ1VSU09SKQ0KCQkJQGNvZGljZVNvdHRvY29udG8udmFsdWUgICAgICA9 ICR2YXJbMF0NCgkJCUBkZW5vbWluYXppb25lQ29udG8udmFsdWUgICA9ICR2 YXJbMV0NCgkJCUBjb2RpY2VOYXR1cmFDb250by52YWx1ZSAgICAgPSAkdmFy WzJdDQoJCQlAaW5kaWNlLnZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9 ICR2YXJbM10NCgkJCSR2YXIgPSBbXQ0KCQkJdmFpX2FfcmVjb3JkDQoJCQl9 DQoJCUZYTGFiZWwubmV3KHZMaW5lYTQsICJDb2RpY2Ugc290dG9jb250byIs IG5pbCwgSlVTVElGWV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRSaWdo dCA9PiA5NSkNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTQsIDYsIDp0YXJn ZXQgPT4gQGNvZGljZVNvdHRvY29udG8sIDpzZWxlY3RvciA9PiBGWERhdGFU YXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5LRU58RlJBTUVf VEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVMRF9MSU1JVEVEfFRFWFRG SUVMRF9JTlRFR0VSfEpVU1RJRllfUklHSFQpDQoNCgkJdkxpbmVhNSA9IEZY SG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0cyA9PiBMQVlPVVRf U0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlGWEJ1dHRvbi5uZXcodkxp bmVhNSwgJz8nLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSwgOnBh ZFRvcCA9PjAsIDpwYWRCb3R0b20gPT4gMCkuY29ubmVjdChTRUxfQ09NTUFO RCkgew0KCQkJJHZhciA9IFtdDQoJCQlpZiAkdmFyWzBdICE9IG5pbA0KCQkJ CSR2YXJbMF0gPSBAZGVub21pbmF6aW9uZUNvbnRvLnZhbHVlLmdzdWIoL1xX LywgJycpLnVwY2FzZQ0KCQkJCXJpY2VyY2EgPSBGaW5lc3RyYTkwMDA2Lm5l dyhzZWxmKQ0KCQkJCXJpY2VyY2EuZXhlY3V0ZShQTEFDRU1FTlRfQ1VSU09S KQ0KCQkJCUBpbmRpY2UudmFsdWUgPSAkdmFyWzBdDQoJCQkJJHZhciA9IFtd DQoJCQkJaWYgQGluZGljZS52YWx1ZSAhPSBuaWwNCgkJCQkJaWYgQGluZGlj ZS52YWx1ZSA+ICIwIg0KCQkJCQkJQGNvbnRhdG9yZSA9IDANCgkJCQkJCUBy aWdhID0gQHNjZWx0YS5kYXRhX3NlZWsoQGNvbnRhdG9yZSkNCgkJCQkJCUBy aWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCg0KCQkJCQkJdW50aWwgQGluZGlj ZS52YWx1ZSA9PSBAcmlnYVs3XQ0KCQkJCQkJCUByaWdhID0gQHNjZWx0YS5k YXRhX3NlZWsoQGNvbnRhdG9yZSkNCgkJCQkJCQlAcmlnYSA9IEBzY2VsdGEu ZmV0Y2hfcm93DQoJCQkJCQkJQGNvbnRhdG9yZSA9IEBjb250YXRvcmUgKyAx DQoJCQkJCQllbmQNCgkJCQkJCUBjb250YXRvcmUgPSBAY29udGF0b3JlIC0g MQ0KCQkJCQkJYXNzZWduYV92YXJpYWJpbGkNCgkJCQkJZW5kDQoJCQkJZW5k DQoJCQllbmQNCgkJCX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhNSwgIkRlbm9t aW5hemlvbmUgY29udG8iLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJ TExfUk9XLCA6cGFkUmlnaHQgPT4gMTIyKQ0KCQlAZGVub21pbmF6aW9uZUNv bnRvID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhUZXh0RmllbGQubmV3 KHZMaW5lYTUsIDMwLCA6dGFyZ2V0ID0+IEBkZW5vbWluYXppb25lQ29udG8s IDpzZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9 PiBGUkFNRV9TVU5LRU58RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRF WFRGSUVMRF9MSU1JVEVEKQ0KDQoJCXZMaW5lYTYgPSBGWEhvcml6b250YWxG cmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6 dlNwYWNpbmcgPT4gMCkNCgkJRlhMYWJlbC5uZXcodkxpbmVhNiwgIkNvc3Rh bnRlIGRlbCBjb250byIsIG5pbCwgSlVTVElGWV9SSUdIVHxMQVlPVVRfRklM TF9ST1csIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmlnaHQgPT4gMTIwKQ0KCQlA Y29zdGFudGVDb250byA9IEZYRGF0YVRhcmdldC5uZXcoIkEiKQ0KCQlGWFRl eHRGaWVsZC5uZXcodkxpbmVhNiwgMSwgOnRhcmdldCA9PiBAY29zdGFudGVD b250bywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpv cHRzID0+IFRFWFRGSUVMRF9SRUFET05MWXxURVhURklFTERfT1ZFUlNUUklL RSkNCg0KCQl2TGluZWE3ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBw bzIsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDAp DQoJCUBjb2RpY2VOYXR1cmFDb250byA9IEZYRGF0YVRhcmdldC5uZXcoMCkN CgkJQGRlc2NyaXppb25lTmF0dXJhQ29udG8gPSBGWERhdGFUYXJnZXQubmV3 KCIiKQ0KCQlGWEJ1dHRvbi5uZXcodkxpbmVhNywgJz8nLCA6cGFkTGVmdCA9 PiA1LCA6cGFkUmlnaHQgPT4gNSwgOnBhZFRvcCA9PjAsIDpwYWRCb3R0b20g PT4gMCkuY29ubmVjdChTRUxfQ09NTUFORCkgew0KCQkJJHZhciA9IFtdDQoJ CQlyaWNlcmNhID0gRmluZXN0cmE5MDAwMi5uZXcoc2VsZikNCgkJCXJpY2Vy Y2EuZXhlY3V0ZShQTEFDRU1FTlRfQ1VSU09SKQ0KCQkJQGNvZGljZU5hdHVy YUNvbnRvLnZhbHVlICAgICAgID0gJHZhclswXQ0KCQkJQGRlc2NyaXppb25l TmF0dXJhQ29udG8udmFsdWUgPSAkdmFyWzFdDQoJCQkkdmFyID0gW10NCgkJ CX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhNywgIkNvZGljZSBuYXR1cmEgY29u dG8iLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFk UmlnaHQgPT4gMTE1KQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhNywgMSwg OnRhcmdldCA9PiBAY29kaWNlTmF0dXJhQ29udG8sIDpzZWxlY3RvciA9PiBG WERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5LRU58 RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVMRF9MSU1JVEVE fFRFWFRGSUVMRF9JTlRFR0VSKQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVh NywgMzAsIDp0YXJnZXQgPT4gQGRlc2NyaXppb25lTmF0dXJhQ29udG8sIDpz ZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBU RVhURklFTERfUkVBRE9OTFl8VEVYVEZJRUxEX09WRVJTVFJJS0UpDQoNCgkJ QGluZGljZSA9IEZYRGF0YVRhcmdldC5uZXcoIiIpDQoNCgkJZ3J1cHBvNCA9 IEZYR3JvdXBCb3gubmV3KGFyZWEsICIiLCA6dlNwYWNpbmcgPT4gMCkNCgkJ dkZvbmRvID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzQsIDpvcHRz ID0+IExBWU9VVF9TSURFX0JPVFRPTXxQQUNLX1VOSUZPUk1fV0lEVEgpDQoJ CUZYQnV0dG9uLm5ldyh2Rm9uZG8sICdDYW5jZWxsYScsIDpwYWRMZWZ0ID0+ IDI1LCA6cGFkUmlnaHQgPT4gMjUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHtj YW5jZWxsYV9yZWNvcmR9DQoJCUZYQnV0dG9uLm5ldyh2Rm9uZG8sICdBbm51 bGxhJywgOnBhZExlZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAyNSkuY29ubmVj dChTRUxfQ09NTUFORCkge2F6emVyYV92YXJpYWJpbGl9DQoJCUZYQnV0dG9u Lm5ldyh2Rm9uZG8sICdSZWdpc3RyYScsIDpwYWRMZWZ0ID0+IDI1LCA6cGFk UmlnaHQgPT4gMjUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHtyZWdpc3RyYX0N CgkJRlhCdXR0b24ubmV3KHZGb25kbywgJ0VzY2knLCA6dGFyZ2V0ID0+IHNl bGYsIDpzZWxlY3RvciA9PiBGWERpYWxvZ0JveDo6SURfQ0FOQ0VMLCA6cGFk TGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDI1KQ0KCQlhenplcmFfdmFyaWFi aWxpDQoJZW5kDQoNCglkZWYgcHJpbW9fcmVjb3JkDQoJCUBjb250YXRvcmUg PSAwDQoJCUBzY2VsdGEubnVtX3Jvd3MgPT0gMCA/IGF6emVyYV92YXJpYWJp bGkgOiBhc3NlZ25hX3ZhcmlhYmlsaQ0KCWVuZA0KDQoJZGVmIHByZWNlZGVu dGVfcmVjb3JkDQoJCWlmIEBzY2VsdGEubnVtX3Jvd3MgPT0gMCB0aGVuCQkN CgkJCUBjb250YXRvcmUgPSAwDQoJCQlhenplcmFfdmFyaWFiaWxpDQoJCWVs c2UNCgkJCUBjb250YXRvcmUgLSAxIDwwID8gQGNvbnRhdG9yZSA9IDAgOiBA Y29udGF0b3JlID0gQGNvbnRhdG9yZSAtMQ0KCQkJYXNzZWduYV92YXJpYWJp bGkNCgkJZW5kDQoJZW5kDQoNCglkZWYgc3VjY2Vzc2l2b19yZWNvcmQNCgkJ aWYgQHNjZWx0YS5udW1fcm93cyA9PSAwIHRoZW4JCQ0KCQkJQGNvbnRhdG9y ZSA9IDANCgkJCWF6emVyYV92YXJpYWJpbGkNCgkJZWxzZQ0KCQkJQGNvbnRh dG9yZSA+PSAoIiN7QHNjZWx0YS5udW1fcm93c30iLnRvX2kgLSAxKSA/IEBj b250YXRvcmUgPSAoIiN7QHNjZWx0YS5udW1fcm93c30iLnRvX2kgLSAxKSA6 IEBjb250YXRvcmUgPSBAY29udGF0b3JlICsgMQ0KCQkJYXNzZWduYV92YXJp YWJpbGkNCgkJZW5kDQoJZW5kDQoNCglkZWYgdWx0aW1vX3JlY29yZA0KCQlp ZiBAc2NlbHRhLm51bV9yb3dzID09IDAgdGhlbgkJDQoJCQlAY29udGF0b3Jl ID0gMA0KCQkJYXp6ZXJhX3ZhcmlhYmlsaQ0KCQllbHNlDQoJCQlAY29udGF0 b3JlID0gKCIje0BzY2VsdGEubnVtX3Jvd3N9Ii50b19pIC0gMSkNCgkJCWFz c2VnbmFfdmFyaWFiaWxpDQoJCWVuZA0KCWVuZA0KDQoJZGVmIG51b3ZvX3Jl Y29yZA0KCQlhenplcmFfdmFyaWFiaWxpDQoJCUBpbmRpY2UudmFsdWUgPSAw DQoJZW5kDQoNCglkZWYgdmFpX2FfcmVjb3JkDQoJCWNvZGljZUdydXBwbyA9 IEBjb2RpY2VHcnVwcG8udmFsdWUudG9faQ0KCQljb2RpY2VDb250byA9IEBj b2RpY2VDb250by52YWx1ZS50b19pDQoJCWNvZGljZVNvdHRvY29udG8gPSBA Y29kaWNlU290dG9jb250by52YWx1ZS50b19pDQoJCUBpbmRpY2UudmFsdWUg PSAoY29kaWNlR3J1cHBvICogMTAwMDAwMDAwMCArIGNvZGljZUNvbnRvICog MTAwMDAwMCArIGNvZGljZVNvdHRvY29udG8pLnRvX3MNCg0KCQlpZiBAaW5k aWNlLnZhbHVlID4gIjAiDQoJCQlAY29udGF0b3JlID0gMA0KCQkJQHJpZ2Eg PSBAc2NlbHRhLmRhdGFfc2VlayhAY29udGF0b3JlKQ0KCQkJQHJpZ2EgPSBA c2NlbHRhLmZldGNoX3Jvdw0KDQoJCQl1bnRpbCBAaW5kaWNlLnZhbHVlID09 IEByaWdhWzddDQoJCQkJQHJpZ2EgPSBAc2NlbHRhLmRhdGFfc2VlayhAY29u dGF0b3JlKQ0KCQkJCUByaWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJCQlA Y29udGF0b3JlID0gQGNvbnRhdG9yZSArIDENCgkJCWVuZA0KCQkJQGNvbnRh dG9yZSA9IEBjb250YXRvcmUgLSAxIGlmIEBjb250YXRvcmUgPjANCgkJCWFz c2VnbmFfdmFyaWFiaWxpDQoJCWVuZA0KCWVuZA0KDQoJZGVmIHJlZ2lzdHJh DQoJCXJlZ2lzdHJhID0gdHJ1ZQ0KDQoJCWlmIEBjb2RpY2VUaXBvQ29udG8u dmFsdWUudG9faSA8IDEgb3IgQGNvZGljZVRpcG9Db250by52YWx1ZS50b19p ID4gNA0KCQkJcmVnaXN0cmEgPSBmYWxzZQ0KCQkJRlhNZXNzYWdlQm94Lndh cm5pbmcoc2VsZiwgTUJPWF9PSywgIkNvZGljZSBUaXBvIENvbnRvIiwgInZh bG9yZSAnI3tAY29kaWNlVGlwb0NvbnRvLnZhbHVlfScgbm9uIGFtbWVzc28g cGVyIHF1ZXN0byBjYW1wbyIpDQoJCWVuZA0KDQoJCWlmIEBjb2RpY2VUaXBv Q29udG8udmFsdWUudG9faSA9PSAxIGFuZCAoQGNvZGljZUdydXBwby52YWx1 ZS50b19pID09IDAgb3IgQGNvZGljZUNvbnRvLnZhbHVlLnRvX2kgIT0gMCBv ciBAY29kaWNlU290dG9jb250by52YWx1ZS50b19pICE9IDApDQoJCQkJcmVn aXN0cmEgPSBmYWxzZQ0KCQkJCUZYTWVzc2FnZUJveC53YXJuaW5nKHNlbGYs IE1CT1hfT0ssICJDb2RpY2UgVGlwbyBDb250byIsICJjb2RpY2kgY29udG8g ZSBzb3R0b2NvbnRvIG5vbiBjb3JyZXR0aSIpDQoJCWVuZA0KDQoJCWlmIEBj b2RpY2VUaXBvQ29udG8udmFsdWUudG9faSA9PSAyIGFuZCAoQGNvZGljZUdy dXBwby52YWx1ZS50b19pID09IDAgb3IgQGNvZGljZUNvbnRvLnZhbHVlLnRv X2kgPT0gMCBvciBAY29kaWNlU290dG9jb250by52YWx1ZS50b19pICE9IDAp DQoJCQkJcmVnaXN0cmEgPSBmYWxzZQ0KCQkJCUZYTWVzc2FnZUJveC53YXJu aW5nKHNlbGYsIE1CT1hfT0ssICJDb2RpY2UgVGlwbyBDb250byIsICJjb2Rp Y2kgY29udG8gZSBzb3R0b2NvbnRvIG5vbiBjb3JyZXR0aSIpDQoJCWVuZA0K DQoJCWlmIEBjb2RpY2VUaXBvQ29udG8udmFsdWUudG9faSA9PSAzIGFuZCAo QGNvZGljZUdydXBwby52YWx1ZS50b19pID09IDAgb3IgQGNvZGljZUNvbnRv LnZhbHVlLnRvX2kgPT0gMCBvciBAY29kaWNlU290dG9jb250by52YWx1ZS50 b19pID09IDApDQoJCQkJcmVnaXN0cmEgPSBmYWxzZQ0KCQkJCUZYTWVzc2Fn ZUJveC53YXJuaW5nKHNlbGYsIE1CT1hfT0ssICJDb2RpY2UgVGlwbyBDb250 byIsICJjb2RpY2kgY29udG8gZSBzb3R0b2NvbnRvIG5vbiBjb3JyZXR0aSIp DQoJCWVuZA0KDQoJCWlmIEBjb2RpY2VOYXR1cmFDb250by52YWx1ZS50b19p IDwgMSBvciBAY29kaWNlTmF0dXJhQ29udG8udmFsdWUudG9faSA+IDQNCgkJ CUZYTWVzc2FnZUJveC53YXJuaW5nKHNlbGYsIE1CT1hfT0ssICJDb2RpY2Ug TmF0dXJhIENvbnRvIiwgInZhbG9yZSAnI3tAY29kaWNlTmF0dXJhQ29udG8u dmFsdWV9JyBub24gY29ycmV0dG8gcGVyIHF1ZXN0byBjYW1wbyIpDQoJCQly ZWdpc3RyYSA9IGZhbHNlDQoJCWVuZA0KDQoJCWlmIHJlZ2lzdHJhID09IHRy dWUNCgkJCWluZGljZSA9IChAY29kaWNlR3J1cHBvLnZhbHVlLnRvX2kgKiAx MDAwMDAwMDAwICsgQGNvZGljZUNvbnRvLnZhbHVlLnRvX2kgKiAxMDAwMDAw ICsgQGNvZGljZVNvdHRvY29udG8udmFsdWUudG9faSkudG9fcw0KCQkJQGRl bm9taW5hemlvbmVDb250by52YWx1ZSA9IEBjb25uLmVzY2FwZV9zdHJpbmco QGRlbm9taW5hemlvbmVDb250by52YWx1ZSkudXBjYXNlDQoJCQlzaWdsYSA9 IEBkZW5vbWluYXppb25lQ29udG8udmFsdWUuZ3N1YigvXFcvLCAnJykudXBj YXNlDQoJCQliZWdpbg0KCQkJCUBjb25uID0gTXlzcWwubmV3KCJsb2NhbGhv c3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJwaXJhbWlkZSIpDQoJCQkJQGNv bm4uYXV0b2NvbW1pdCgwKQ0KCQkJCUBjb25uLnF1ZXJ5KCJSRVBMQUNFIHBp YW5vX2RlaV9jb250aSBWQUxVRVMgKCcje0Bjb2RpY2VUaXBvQ29udG8udmFs dWUudG9fc30nLCcje0Bjb2RpY2VHcnVwcG8udmFsdWUudG9fc30nLCcje0Bj b2RpY2VDb250by52YWx1ZS50b19zfScsJyN7QGNvZGljZVNvdHRvY29udG8u dmFsdWUudG9fc30nLCcje0Bjb3N0YW50ZUNvbnRvLnZhbHVlfScsJyN7QGRl bm9taW5hemlvbmVDb250by52YWx1ZX0nLCcje0Bjb2RpY2VOYXR1cmFDb250 by52YWx1ZS50b19zfScsICcje2luZGljZX0nLCAnI3tzaWdsYX0nKSIpDQoJ CQkJQGNvbm4uY29tbWl0DQoJCQkJQGNvbm4uY2xvc2UNCgkJCXJlc2N1ZSBN eXNxbEVycm9yID0+IGUNCgkJCQlAY29ubi5yb2xsYmFjaw0KCQkJCUBjb25u LmNsb3NlDQoJCQkJcHJpbnQgImVycm9yIGNvZGU6ICIsIGUuZXJybm8sICJc biINCgkJCQlwcmludCAiZXJyb3IgbWVzc2FnZTogIiwgZS5lcnJvciwgIlxu Ig0KCQkJZW5kDQoJCQljYXJpY2FfZGF0aQ0KCQkJYXp6ZXJhX3ZhcmlhYmls aQ0KCQllbmQNCgllbmQNCg0KCWRlZiBjYW5jZWxsYV9yZWNvcmQNCgkJaWYg KEBjb250YXRvcmUgPD0gKCIje0BzY2VsdGEubnVtX3Jvd3N9Ii50b19pIC0g MSkpIHRoZW4NCgkJCW1lc3NhZ2dpbyA9IEZYTWVzc2FnZUJveC5xdWVzdGlv bigNCgkJCQlzZWxmLA0KCQkJCU1CT1hfWUVTX05PLA0KCQkJCSJBdHRlbnpp b25lICEhISIsDQoJCQkJIlNpIHN0YW5ubyBjYW5jZWxsYW5kbyBkZWkgZGF0 aTogY29uZmVybWFyZSBsXCdvcGVyYXppb25lID8iKQ0KCQkJaWYgbWVzc2Fn Z2lvID09IE1CT1hfQ0xJQ0tFRF9ZRVMNCgkJCQlAY29ubiA9IE15c3FsLm5l dygibG9jYWxob3N0IiwgInJvb3QiLCAieGNvbGlicmkiLCAicGlyYW1pZGUi KQ0KCQkJCUBjb25uLmF1dG9jb21taXQoMCkNCgkJCQlAY29ubi5xdWVyeSgi REVMRVRFIEZST00gcGlhbm9fZGVpX2NvbnRpIFdIRVJFIGluZGljZSA9ICcj e0BpbmRpY2UudmFsdWV9JyIpDQoJCQkJQGNvbm4uY29tbWl0DQoJCQkJQGNv bm4uY2xvc2UNCgkJCQljYXJpY2FfZGF0aQ0KCQkJCWF6emVyYV92YXJpYWJp bGkNCgkJCWVuZA0KCQllbmQNCgllbmQNCg0KCWRlZiBhenplcmFfdmFyaWFi aWxpDQoJCUBjb250YXRvcmUgPSAwDQoJCWluZGljZSA9IDANCgkJQGNvZGlj ZVRpcG9Db250by52YWx1ZSA9IDANCgkJQGRlc2NyaXppb25lVGlwb0NvbnRv LnZhbHVlID0gIiINCgkJQGNvZGljZUdydXBwby52YWx1ZSA9IDANCgkJQGRl c2NyaXppb25lR3J1cHBvLnZhbHVlID0gIiINCgkJQGNvZGljZUNvbnRvLnZh bHVlID0gMA0KCQlAZGVzY3JpemlvbmVDb250by52YWx1ZSA9ICIiDQoJCUBj b2RpY2VTb3R0b2NvbnRvLnZhbHVlID0gMA0KCQlAY29zdGFudGVDb250by52 YWx1ZSA9ICJBIg0KCQlAZGVub21pbmF6aW9uZUNvbnRvLnZhbHVlID0gIiIN CgkJQGNvZGljZU5hdHVyYUNvbnRvLnZhbHVlID0gMA0KCQlAZGVzY3Jpemlv bmVOYXR1cmFDb250by52YWx1ZSA9ICIiDQoJCUBpbmRpY2UgPSBGWERhdGFU YXJnZXQubmV3KCIiKQ0KCWVuZA0KDQoJZGVmIGFzc2VnbmFfdmFyaWFiaWxp DQoJCUByaWdhID0gQHNjZWx0YS5kYXRhX3NlZWsoQGNvbnRhdG9yZSkNCgkJ QHJpZ2EgPSBAc2NlbHRhLmZldGNoX3Jvdw0KCQlAY29kaWNlVGlwb0NvbnRv LnZhbHVlID0gQHJpZ2FbMF0udG9faSAgICAgIA0KCQlAY29kaWNlR3J1cHBv LnZhbHVlID0gQHJpZ2FbMV0udG9faQ0KCQlAY29kaWNlQ29udG8udmFsdWUg PSBAcmlnYVsyXS50b19pDQoJCUBjb2RpY2VTb3R0b2NvbnRvLnZhbHVlID0g QHJpZ2FbM10udG9faQ0KCQlAY29zdGFudGVDb250by52YWx1ZSA9IEByaWdh WzRdDQoJCUBkZW5vbWluYXppb25lQ29udG8udmFsdWUgPSBAcmlnYVs1XQ0K CQlAY29kaWNlTmF0dXJhQ29udG8udmFsdWUgPSBAcmlnYVs2XS50b19pDQoJ CUBpbmRpY2UudmFsdWUgPSBAcmlnYVs3XQ0KDQoJCXRpcG9Db250byA9IFsw LCJHUlVQUE8iLCJDT05UTyIsIlNPVFRPQ09OVE8iXQ0KCQlAZGVzY3Jpemlv bmVUaXBvQ29udG8udmFsdWUgPSB0aXBvQ29udG9bQGNvZGljZVRpcG9Db250 by52YWx1ZS50b19pXQ0KCQluYXR1cmFDb250byA9IFswLCJDT05UTyBESSBS RURESVRPIiwiQ09OVE8gUEFUUklNT05JQUxFIiwiQ09OVE8gRFwnT1JESU5F IiwiQ09OVE8gUklFUElMT0dBVElWTyJdDQoJCUBkZXNjcml6aW9uZU5hdHVy YUNvbnRvLnZhbHVlID0gbmF0dXJhQ29udG9bQGNvZGljZU5hdHVyYUNvbnRv LnZhbHVlLnRvX2ldDQogICAgDQoJCUBjb25uID0gTXlzcWwubmV3KCJsb2Nh bGhvc3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJwaXJhbWlkZSIpDQoJCXNj ZWx0YSA9IEBjb25uLnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHBpYW5vX2RlaV9j b250aSBXSEVSRSBpbmRpY2UgPSAoJyN7QGNvZGljZUdydXBwby52YWx1ZX0n KjEwMDAwMDAwMDApIikNCgkJc2NlbHRhMSA9IEBjb25uLnF1ZXJ5KCJTRUxF Q1QgKiBGUk9NIHBpYW5vX2RlaV9jb250aSBXSEVSRSBpbmRpY2UgPSAoJyN7 QGNvZGljZUdydXBwby52YWx1ZX0nKjEwMDAwMDAwMDAgKyAnI3tAY29kaWNl Q29udG8udmFsdWV9JyoxMDAwMDAwKSIpCQkNCgkJDQoJCUBjb25uLmNsb3Nl DQoNCgkJQGRlc2NyaXppb25lR3J1cHBvLnZhbHVlID0gIiINCgkJQGRlc2Ny aXppb25lQ29udG8udmFsdWUgPSAiIg0KCQlpZiAiI3tzY2VsdGEubnVtX3Jv d3N9Ii50b19pID4gMA0KCQkJcmlnYSA9IHNjZWx0YS5kYXRhX3NlZWsoMCkN CgkJCXJpZ2EgPSBzY2VsdGEuZmV0Y2hfcm93DQoJCQlAZGVzY3JpemlvbmVH cnVwcG8udmFsdWUgPSByaWdhWzVdDQoJCWVuZA0KDQoJCUBkZXNjcml6aW9u ZUNvbnRvLnZhbHVlID0gJycNCgkJaWYgQGNvZGljZUNvbnRvLnZhbHVlICE9 ICIiDQoJCQlyaWdhID0gc2NlbHRhMS5kYXRhX3NlZWsoMCkNCgkJCXJpZ2Eg PSBzY2VsdGExLmZldGNoX3Jvdw0KCQkJQGRlc2NyaXppb25lQ29udG8udmFs dWUgPSByaWdhWzVdDQoJCWVuZA0KCWVuZA0KCQ0KCWRlZiBjYXJpY2FfZGF0 aQ0KCQliZWdpbg0KCQkJQGNvbm4gPSBNeXNxbC5uZXcoImxvY2FsaG9zdCIs ICJyb290IiwgInhjb2xpYnJpIiwgInBpcmFtaWRlIikNCgkJCUBzY2VsdGEg PSBAY29ubi5xdWVyeSgiU0VMRUNUICogRlJPTSBwaWFub19kZWlfY29udGki KQ0KCQkJQGNvbnRhdG9yZSA9ICIje0BzY2VsdGEubnVtX3Jvd3N9Ii50b19p DQoJCQlAY29ubi5jbG9zZQ0KCQlyZXNjdWUNCgkJCUBjb25uLmNsb3NlDQoJ CQlwcmludCAiZXJyb3IgY29kZTogIiwgZS5lcnJubywgIi9uIg0KCQkJcHJp bnQgIkVycm9yIG1lc3NhZ2U6ICIsIGUuZXJyb3IsICIvbiINCgkJZW5kDQoJ ZW5kDQplbmQNCg0KY2xhc3MgRmluZXN0cmExMDgwMiA8IEZYRGlhbG9nQm94 DQoJI2RlZiBpbml0aWFsaXplKGFwcCkNCglkZWYgaW5pdGlhbGl6ZShhcHAp DQoJCSMgSW5pdGlhbGl6ZSBiYXNlIGNsYXNzDQoJCXN1cGVyKGFwcCwgIlBS T0dSQU1NQSBQSVJBTUlERSIsIDpvcHRzID0+IERFQ09SX0FMTCwgOnggPT4g MjAsIDp5ID0+IDIwLCA6d2lkdGggPT4gNjAwLCA6aGVpZ2h0ID0+IDQwMCkN CgllbmQNCmVuZA0KDQpjbGFzcyBGaW5lc3RyYTEwODAzIDwgRlhEaWFsb2dC b3gNCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0KCWRlZiBpbml0aWFsaXplKGFw cCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJc3VwZXIoYXBwLCAi UFJPR1JBTU1BIFBJUkFNSURFIiwgOm9wdHMgPT4gREVDT1JfQUxMLCA6eCA9 PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9PiA2MDAsIDpoZWlnaHQgPT4gNDAw KQ0KCWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJhMTA4MDQgPCBGWERpYWxv Z0JveA0KCSNkZWYgaW5pdGlhbGl6ZShhcHApDQoJZGVmIGluaXRpYWxpemUo YXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBjbGFzcw0KCQlzdXBlcihhcHAs ICJQUk9HUkFNTUEgUElSQU1JREUiLCA6b3B0cyA9PiBERUNPUl9BTEwsIDp4 ID0+IDIwLCA6eSA9PiAyMCwgOndpZHRoID0+IDYwMCwgOmhlaWdodCA9PiA0 MDApDQoJZW5kDQplbmQNCg0KY2xhc3MgRmluZXN0cmExMDgwNSA8IEZYRGlh bG9nQm94ICNjcmVhIGxhIGZpbmVzdHJhIHBlciBnZXN0aXJlIGxlIGNhdXNh bGkgZGkgY29udGFiaWxpdGEnIGdlbmVyYWxlDQoJZGVmIGluaXRpYWxpemUo YXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBjbGFzcw0KCQlAY29udGF0b3Jl ID0gMA0KCQlAcmlnYSA9IG5pbA0KI2NhcmljYSBpbiBtZW1vcmlhIHR1dHRh IGxhIHRhYmVsbGEgZGVsbGUgY2F1c2FsaSBkaSBjb250YWJpbGl0YScNCgkJ Y2FyaWNhX2RhdGkNCiNkaXNlZ25hIGxhIGZpbmVzdHJhICAgIA0KCQlzdXBl cihhcHAsICJQUk9HUkFNTUEgUElSQU1JREUiLCA6b3B0cyA9PiBERUNPUl9B TEwsIDp4ID0+IDIwLCA6eSA9PiAyMCwgOndpZHRoID0+IDgwMCwgOmhlaWdo dCA9PiA0NjApDQoNCgkJYXJlYSA9IEZYUGFja2VyLm5ldyhzZWxmLCA6b3B0 cyA9PiBMQVlPVVRfRklMTCwgOnZTcGFjaW5nID0+IDMwLCA6aFNwYWNpbmcg PT4gNTApDQoNCgkJZ3J1cHBvMSA9IEZYR3JvdXBCb3gubmV3KGFyZWEsICIi LCA6dlNwYWNpbmcgPT4gMCkNCgkJDQoJCXZUZXN0YTAgPSBGWEhvcml6b250 YWxGcmFtZS5uZXcoZ3J1cHBvMSwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9Q fFBBQ0tfVU5JRk9STV9XSURUSCwgOnBhZEJvdHRvbSA9PiAxMCkNCgkJRlhM YWJlbC5uZXcodlRlc3RhMCwgIkdFU1RJT05FIERFTExFIENBVVNBTEkgREkg Q09OVEFCSUxJVEFcJyBHRU5FUkFMRSIsIG5pbCwgSlVTVElGWV9DRU5URVJf WHxMQVlPVVRfRklMTF9ST1csIDpwYWRSaWdodCA9PiAxMjgpDQoNCgkJdlRl c3RhMSA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8xLCA6b3B0cyA9 PiBMQVlPVVRfU0lERV9UT1B8UEFDS19VTklGT1JNX1dJRFRIKQ0KCQlGWEJ1 dHRvbi5uZXcodlRlc3RhMSwgJ1ByaW1vIHJlY29yZCcsIDpwYWRMZWZ0ID0+ IDUsIDpwYWRSaWdodCA9PiA1KS5jb25uZWN0KFNFTF9DT01NQU5EKSB7cHJp bW9fcmVjb3JkIH0NCgkJRlhCdXR0b24ubmV3KHZUZXN0YTEsICdSZWNvcmQg cHJlY2VkZW50ZScsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1KS5j b25uZWN0KFNFTF9DT01NQU5EKSB7cHJlY2VkZW50ZV9yZWNvcmR9DQoJCUZY QnV0dG9uLm5ldyh2VGVzdGExLCAnUmVjb3JkIHN1Y2Nlc3Npdm8nLCA6cGFk TGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSkuY29ubmVjdChTRUxfQ09NTUFO RCkge3N1Y2Nlc3Npdm9fcmVjb3JkfQ0KCQlGWEJ1dHRvbi5uZXcodlRlc3Rh MSwgJ1VsdGltbyByZWNvcmQnLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQg PT4gNSkuY29ubmVjdChTRUxfQ09NTUFORCkge3VsdGltb19yZWNvcmR9DQoJ CUZYQnV0dG9uLm5ldyh2VGVzdGExLCAnVmFpIGFsIHJlY29yZC4uLicsIDpw YWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1KS5jb25uZWN0KFNFTF9DT01N QU5EKSB7dmFpX2FfcmVjb3JkfQ0KCQlGWEJ1dHRvbi5uZXcodlRlc3RhMSwg J051b3ZvIHJlY29yZCcsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1 KS5jb25uZWN0KFNFTF9DT01NQU5EKSB7bnVvdm9fcmVjb3JkfQ0KDQoJCWdy dXBwbzIgPSBGWEdyb3VwQm94Lm5ldyhhcmVhLCAiIiwgOnZTcGFjaW5nID0+ IDApDQoNCgkJdkxpbmVhMSA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVw cG8yLCA6b3B0cyA9PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAw KQ0KCQlAY29kaWNlID0gRlhEYXRhVGFyZ2V0Lm5ldygwKQ0KCQlGWEJ1dHRv bi5uZXcodkxpbmVhMSwgJz8nLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQg PT4gNSwgOnBhZFRvcCA9PjAsIDpwYWRCb3R0b20gPT4gMCkuY29ubmVjdChT RUxfQ09NTUFORCkgew0KCQkJJHZhciA9IFtdDQoJCQlyaWNlcmNhID0gRmlu ZXN0cmE5MDAxMS5uZXcoc2VsZikNCgkJCXJpY2VyY2EuZXhlY3V0ZShQTEFD RU1FTlRfQ1VSU09SKQ0KCQkJQGNvZGljZS52YWx1ZSA9ICR2YXJbMF0NCgkJ CXZhaV9hX3JlY29yZA0KCQkJY2VyY2FfZGVzY3JpemlvbmkNCgkJCSR2YXIg PSBbXQ0KCQkJfQ0KDQoJCUZYTGFiZWwubmV3KHZMaW5lYTEsICJDb2RpY2Ug Y2F1c2FsZSIsIG5pbCwgSlVTVElGWV9SSUdIVHxMQVlPVVRfRklMTF9ST1cs IDpwYWRSaWdodCA9PiAxNTApDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWEx LCAzLCA6dGFyZ2V0ID0+IEBjb2RpY2UsIDpzZWxlY3RvciA9PiBGWERhdGFU YXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5LRU58RlJBTUVf VEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVMRF9MSU1JVEVEfFRFWFRG SUVMRF9JTlRFR0VSfEpVU1RJRllfUklHSFQpDQoNCgkJdkxpbmVhMiA9IEZY SG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0cyA9PiBMQVlPVVRf U0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAZGVzY3JpemlvbmVDYXVz YWxlID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhCdXR0b24ubmV3KHZM aW5lYTIsICc/JywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUsIDpw YWRUb3AgPT4wLCA6cGFkQm90dG9tID0+IDApLmNvbm5lY3QoU0VMX0NPTU1B TkQpIHsNCgkJCSR2YXIgPSBbXQ0KCQkJJHZhclswXSA9IEBkZXNjcml6aW9u ZUNhdXNhbGUudmFsdWUuZ3N1YigvXFcvLCAnJykudXBjYXNlDQoJCQlyaWNl cmNhID0gRmluZXN0cmE5MDAxMi5uZXcoc2VsZikNCgkJCXJpY2VyY2EuZXhl Y3V0ZShQTEFDRU1FTlRfQ1VSU09SKQ0KCQkJQGNvZGljZS52YWx1ZSA9ICR2 YXJbMF0NCgkJCXZhaV9hX3JlY29yZA0KCQkJY2VyY2FfZGVzY3JpemlvbmkN CgkJCSR2YXIgPSBbXQ0KCQkJfQ0KCQlGWExhYmVsLm5ldyh2TGluZWEyLCAi RGVzY3JpemlvbmUgZGVsbGEgY2F1c2FsZSIsIG5pbCwgSlVTVElGWV9SSUdI VHxMQVlPVVRfRklMTF9ST1csIDpwYWRSaWdodCA9PiAxMDMpDQoJCUZYVGV4 dEZpZWxkLm5ldyh2TGluZWEyLCAyNSwgOnRhcmdldCA9PiBAZGVzY3Jpemlv bmVDYXVzYWxlLCA6c2VsZWN0b3IgPT4gRlhEYXRhVGFyZ2V0OjpJRF9WQUxV RSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VOfEZSQU1FX1RISUNLfExBWU9VVF9G SUxMX1JPV3xURVhURklFTERfTElNSVRFRHxKVVNUSUZZX0xFRlQpDQoNCgkJ dkxpbmVhMyA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0 cyA9PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAc2Vn bm8gPSBGWERhdGFUYXJnZXQubmV3KCIiKQ0KCQlGWExhYmVsLm5ldyh2TGlu ZWEzLCAiU2Vnbm8gZGVsIG1vdmltZW50byAoRCwgQSwgJyAnKSIsIG5pbCwg SlVTVElGWV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+IDI0 LCA6cGFkUmlnaHQgPT4gNzMpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWEz LCAxLCA6dGFyZ2V0ID0+IEBzZWdubywgOnNlbGVjdG9yID0+IEZYRGF0YVRh cmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9U SElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8SlVTVElG WV9SSUdIVCkNCg0KCQl2TGluZWE0ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3 KGdydXBwbzIsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5n ID0+IDApDQoJCUBjb2RpY2VMaWJybyA9IEZYRGF0YVRhcmdldC5uZXcoMCkN CgkJQGRlc2NyaXppb25lTGlicm8gPSBGWERhdGFUYXJnZXQubmV3KCIiKQ0K CQlGWEJ1dHRvbi5uZXcodkxpbmVhNCwgJz8nLCA6cGFkTGVmdCA9PiA1LCA6 cGFkUmlnaHQgPT4gNSwgOnBhZFRvcCA9PjAsIDpwYWRCb3R0b20gPT4gMCku Y29ubmVjdChTRUxfQ09NTUFORCkgew0KCQkJJHZhciA9IFtdDQoJCQkkdmFy WzBdID0gQGNvZGljZUxpYnJvLnZhbHVlDQoJCQlyaWNlcmNhID0gRmluZXN0 cmE5MDAxMy5uZXcoc2VsZikNCgkJCXJpY2VyY2EuZXhlY3V0ZShQTEFDRU1F TlRfQ1VSU09SKQ0KCQkJQGNvZGljZUxpYnJvLnZhbHVlID0gJHZhclswXQ0K CQkJQGRlc2NyaXppb25lTGlicm8udmFsdWUgPSAkdmFyWzFdDQoJCQkkdmFy ID0gW10NCgkJCX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhNCwgIkNvZGljZSBk ZWwgbGlicm8gZ2lvcm5hbGUiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VU X0ZJTExfUk9XLCA6cGFkUmlnaHQgPT4gMTA3KQ0KCQlGWFRleHRGaWVsZC5u ZXcodkxpbmVhNCwgMywgOnRhcmdldCA9PiBAY29kaWNlTGlicm8sIDpzZWxl Y3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFN RV9TVU5LRU58RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVM RF9MSU1JVEVEfFRFWFRGSUVMRF9JTlRFR0VSfEpVU1RJRllfUklHSFQpDQoJ CUZYVGV4dEZpZWxkLm5ldyh2TGluZWE0LCA4MCwgOnRhcmdldCA9PiBAZGVz Y3JpemlvbmVMaWJybywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURf VkFMVUUsIDpvcHRzID0+IFRFWFRGSUVMRF9SRUFET05MWXxURVhURklFTERf T1ZFUlNUUklLRSkNCg0KCQl2TGluZWE3ID0gRlhIb3Jpem9udGFsRnJhbWUu bmV3KGdydXBwbzIsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFj aW5nID0+IDApDQoJCUBwYXJ0aXRlID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikN CgkJRlhMYWJlbC5uZXcodkxpbmVhNywgIkdlc3Rpb25lIGRlbGxlIHBhcnRp dGUgKFMvTikiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9X LCA6cGFkTGVmdCA9PiAyNCwgOnBhZFJpZ2h0ID0+IDg5KQ0KCQlGWFRleHRG aWVsZC5uZXcodkxpbmVhNywgMSwgOnRhcmdldCA9PiBAcGFydGl0ZSwgOnNl bGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZS QU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJ RUxEX0xJTUlURUR8SlVTVElGWV9SSUdIVCkNCg0KCQl2TGluZWE4ID0gRlhI b3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+IExBWU9VVF9T SURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBmaXNjYWxlID0gRlhEYXRh VGFyZ2V0Lm5ldygiIikNCgkJRlhMYWJlbC5uZXcodkxpbmVhOCwgIkdlc3Rp b25lIGRlbGxlIHJpdGVudXRlIGZpc2NhbGkgKFMvTikiLCBuaWwsIEpVU1RJ RllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkTGVmdCA9PiAyNCwgOnBh ZFJpZ2h0ID0+IDU0KQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhOCwgMSwg OnRhcmdldCA9PiBAZmlzY2FsZSwgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdl dDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElD S3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8SlVTVElGWV9S SUdIVCkNCg0KCQl2TGluZWE5ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdy dXBwbzIsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+ IDApDQoJCUBzb2NpYWxlID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhM YWJlbC5uZXcodkxpbmVhOSwgIkdlc3Rpb25lIGRlbGxlIHJpdGVudXRlIHNv Y2lhbGkgKFMvTikiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExf Uk9XLCA6cGFkTGVmdCA9PiAyNCwgOnBhZFJpZ2h0ID0+IDUyKQ0KCQlGWFRl eHRGaWVsZC5uZXcodkxpbmVhOSwgMSwgOnRhcmdldCA9PiBAc29jaWFsZSwg OnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+ IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1d8VEVY VEZJRUxEX0xJTUlURUR8SlVTVElGWV9SSUdIVCkNCg0KCQl2TGluZWExMCA9 IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0cyA9PiBMQVlP VVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAcmV2ZXJzZUNoYXJn ZSA9IEZYRGF0YVRhcmdldC5uZXcoIiIpDQoJCUZYTGFiZWwubmV3KHZMaW5l YTEwLCAiUmVnaXN0cmF6aW9uZSByZXZlcnNlIGNoYXJnZSAoUy9OKSIsIG5p bCwgSlVTVElGWV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+ IDI0LCA6cGFkUmlnaHQgPT4gNTApDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGlu ZWExMCwgMSwgOnRhcmdldCA9PiBAcmV2ZXJzZUNoYXJnZSwgOnNlbGVjdG9y ID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NV TktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJ TUlURUR8SlVTVElGWV9SSUdIVCkNCg0KCQl2TGluZWExMSA9IEZYSG9yaXpv bnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0cyA9PiBMQVlPVVRfU0lERV9U T1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAc29sb0l2YSA9IEZYRGF0YVRhcmdl dC5uZXcoIiIpDQoJCUZYTGFiZWwubmV3KHZMaW5lYTExLCAiUmVnaXN0cmF6 aW9uZSBzb2xvIHN1IHJlZ2lzdHJvIGl2YSAoUy9OKSIsIG5pbCwgSlVTVElG WV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+IDI0LCA6cGFk UmlnaHQgPT4gMzIpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWExMSwgMSwg OnRhcmdldCA9PiBAc29sb0l2YSwgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdl dDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElD S3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8SlVTVElGWV9S SUdIVCkNCg0KCQlncnVwcG80ID0gRlhHcm91cEJveC5uZXcoYXJlYSwgIiIs IDp2U3BhY2luZyA9PiAwKQ0KCQl2Rm9uZG8gPSBGWEhvcml6b250YWxGcmFt ZS5uZXcoZ3J1cHBvNCwgOm9wdHMgPT4gTEFZT1VUX1NJREVfQk9UVE9NfFBB Q0tfVU5JRk9STV9XSURUSCkNCgkJRlhCdXR0b24ubmV3KHZGb25kbywgJ0Nh bmNlbGxhJywgOnBhZExlZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAyNSkuY29u bmVjdChTRUxfQ09NTUFORCkge2NhbmNlbGxhX3JlY29yZH0NCgkJRlhCdXR0 b24ubmV3KHZGb25kbywgJ0FubnVsbGEnLCA6cGFkTGVmdCA9PiAyNSwgOnBh ZFJpZ2h0ID0+IDI1KS5jb25uZWN0KFNFTF9DT01NQU5EKSB7YXp6ZXJhX3Zh cmlhYmlsaX0NCgkJRlhCdXR0b24ubmV3KHZGb25kbywgJ1JlZ2lzdHJhJywg OnBhZExlZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAyNSkuY29ubmVjdChTRUxf Q09NTUFORCkge3JlZ2lzdHJhfQ0KCQlGWEJ1dHRvbi5uZXcodkZvbmRvLCAn RXNjaScsIDp0YXJnZXQgPT4gc2VsZiwgOnNlbGVjdG9yID0+IEZYRGlhbG9n Qm94OjpJRF9DQU5DRUwsIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmlnaHQgPT4g NDUpDQoJCWF6emVyYV92YXJpYWJpbGkNCgllbmQNCg0KCWRlZiBwcmltb19y ZWNvcmQNCgkJQGNvbnRhdG9yZSA9IDANCgkJQHNjZWx0YS5udW1fcm93cyA9 PSAwID8gYXp6ZXJhX3ZhcmlhYmlsaSA6IGFzc2VnbmFfdmFyaWFiaWxpDQoJ ZW5kDQoNCglkZWYgcHJlY2VkZW50ZV9yZWNvcmQNCgkJaWYgQHNjZWx0YS5u dW1fcm93cyA9PSAwIHRoZW4JCQ0KCQkJQGNvbnRhdG9yZSA9IDANCgkJCWF6 emVyYV92YXJpYWJpbGkNCgkJZWxzZQ0KCQkJQGNvbnRhdG9yZSAtIDEgPDAg PyBAY29udGF0b3JlID0gMCA6IEBjb250YXRvcmUgPSBAY29udGF0b3JlIC0x DQoJCQlhc3NlZ25hX3ZhcmlhYmlsaQ0KCQllbmQNCgllbmQNCg0KCWRlZiBz dWNjZXNzaXZvX3JlY29yZA0KCQlpZiBAc2NlbHRhLm51bV9yb3dzID09IDAg dGhlbgkJDQoJCQlAY29udGF0b3JlID0gMA0KCQkJYXp6ZXJhX3ZhcmlhYmls aQ0KCQllbHNlDQoJCQlAY29udGF0b3JlID49ICgiI3tAc2NlbHRhLm51bV9y b3dzfSIudG9faSAtIDEpID8gQGNvbnRhdG9yZSA9ICgiI3tAc2NlbHRhLm51 bV9yb3dzfSIudG9faSAtIDEpIDogQGNvbnRhdG9yZSA9IEBjb250YXRvcmUg KyAxDQoJCQlhc3NlZ25hX3ZhcmlhYmlsaQ0KCQllbmQNCgllbmQNCg0KCWRl ZiB1bHRpbW9fcmVjb3JkDQoJCWlmIEBzY2VsdGEubnVtX3Jvd3MgPT0gMCB0 aGVuCQkNCgkJCUBjb250YXRvcmUgPSAwDQoJCQlhenplcmFfdmFyaWFiaWxp DQoJCWVsc2UNCgkJCUBjb250YXRvcmUgPSAoIiN7QHNjZWx0YS5udW1fcm93 c30iLnRvX2kgLSAxKQ0KCQkJYXNzZWduYV92YXJpYWJpbGkNCgkJZW5kDQoJ ZW5kDQoNCglkZWYgbnVvdm9fcmVjb3JkDQoJCWF6emVyYV92YXJpYWJpbGkN CgkJQGNvZGljZS52YWx1ZSA9IDANCgllbmQNCg0KCWRlZiB2YWlfYV9yZWNv cmQNCgkJaWYgQGNvZGljZS52YWx1ZS50b19pID4gMA0KCQkJQGNvbnRhdG9y ZSA9IDANCgkJCUByaWdhID0gQHNjZWx0YS5kYXRhX3NlZWsoQGNvbnRhdG9y ZSkNCgkJCUByaWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJCXVudGlsIEBj b2RpY2UudmFsdWUgPT0gQHJpZ2FbMF0NCgkJCQlAcmlnYSA9IEBzY2VsdGEu ZGF0YV9zZWVrKEBjb250YXRvcmUpDQoJCQkJQHJpZ2EgPSBAc2NlbHRhLmZl dGNoX3Jvdw0KCQkJCUBjb250YXRvcmUgPSBAY29udGF0b3JlICsgMQ0KCQkJ ZW5kDQoJCQlAY29udGF0b3JlID0gQGNvbnRhdG9yZSAtIDEgaWYgQGNvbnRh dG9yZSA+MA0KCQkJYXNzZWduYV92YXJpYWJpbGkNCgkJCSNlbmQNCgkJZW5k DQoJZW5kDQoNCg0KCWRlZiByZWdpc3RyYQ0KI34gYWxsYSB2YXJpYWJpbGUg cmVnaXN0cmEgc2kgYXNzZWduYSBpbCB2YWxvcmUgdmVyby4NCiN+IFVuIHJp c3VsdGF0byBmYWxzbyBkaSB1biBxdWFsc2lhc2kgdGVzdCBuZSBjYW1iaWVy YScgaWwgdmFsb3JlIGluIGZhbHNvLCBpbXBlZGVuZG8gbGEgcmVnaXN0cmF6 aW9uZSBkZWkgZGF0aSBpbiBtZW1vcmlhLg0KCQlyZWdpc3RyYSA9IHRydWUN CgkJQHNlZ25vLnZhbHVlID0gQHNlZ25vLnZhbHVlLnVwY2FzZQ0KCQlAZGVz Y3JpemlvbmVDYXVzYWxlLnZhbHVlID0gQGNvbm4uZXNjYXBlX3N0cmluZyhA ZGVzY3JpemlvbmVDYXVzYWxlLnZhbHVlKS51cGNhc2UNCgkJc2lnbGEgPSBA ZGVzY3JpemlvbmVDYXVzYWxlLnZhbHVlLmdzdWIoL1xXLywgJycpLnVwY2Fz ZQ0KCQlAcGFydGl0ZS52YWx1ZSA9IEBwYXJ0aXRlLnZhbHVlLnRvX3MudXBj YXNlDQoJCUBmaXNjYWxlLnZhbHVlID0gQGZpc2NhbGUudmFsdWUudG9fcy51 cGNhc2UNCgkJQHNvY2lhbGUudmFsdWUgPSBAc29jaWFsZS52YWx1ZS50b19z LnVwY2FzZQ0KCQlAcmV2ZXJzZUNoYXJnZS52YWx1ZSA9IEByZXZlcnNlQ2hh cmdlLnZhbHVlLnRvX3MudXBjYXNlDQoJCUBzb2xvSXZhLnZhbHVlID0gQHNv bG9JdmEudmFsdWUudG9fcy51cGNhc2UNCgkJQHBhcnRpdGUudmFsdWUgPT0g J1MnID8gQHBhcnRpdGUudmFsdWUgPSAxIDogQHBhcnRpdGUudmFsdWUgPSAw DQoJCUBmaXNjYWxlLnZhbHVlID09ICdTJyA/IEBmaXNjYWxlLnZhbHVlID0g MTogQGZpc2NhbGUudmFsdWUgPSAwDQoJCUBzb2NpYWxlLnZhbHVlID09ICdT JyA/IEBzb2NpYWxlLnZhbHVlID0gMTogQHNvY2lhbGUudmFsdWUgPSAwDQoJ CUByZXZlcnNlQ2hhcmdlLnZhbHVlID09ICdTJyA/IEByZXZlcnNlQ2hhcmdl LnZhbHVlID0gMTogQHJldmVyc2VDaGFyZ2UudmFsdWUgPSAwDQoJCUBzb2xv SXZhLnZhbHVlID09ICdTJyA/IEBzb2xvSXZhLnZhbHVlID0gMTogQHNvbG9J dmEudmFsdWUgPSAwDQoNCgkJaWYgQGNvZGljZS52YWx1ZS50b19pID09IDAN CgkJCXJlZ2lzdHJhID0gZmFsc2UNCgkJCUZYTWVzc2FnZUJveC53YXJuaW5n KHNlbGYsIE1CT1hfT0ssICJDb2RpY2UgY2F1c2FsZSIsICJ2YWxvcmUgJyN7 QGNvZGljZS52YWx1ZX0nIG5vbiBhbW1lc3NvIHBlciBxdWVzdG8gY2FtcG8i KQ0KCQllbmQNCgkJaWYgQGRlc2NyaXppb25lQ2F1c2FsZS52YWx1ZSA9PSAi Ig0KCQkJcmVnaXN0cmEgPSBmYWxzZQ0KCQkJRlhNZXNzYWdlQm94Lndhcm5p bmcoc2VsZiwgTUJPWF9PSywgIkRlc2NyaXppb25lIGNhdXNhbGUiLCAiTWFu Y2EgbGEgZGVzY3JpemlvbmUgZGVsbGEgY2F1c2FsZSIpDQoJCWVuZA0KDQoJ CWlmIChAc2Vnbm8udmFsdWUgIT0gIkQiIGFuZCBAc2Vnbm8udmFsdWUgIT0g IkEiIGFuZCBAc2Vnbm8udmFsdWUgIT0gIiIpDQoJCQlyZWdpc3RyYSA9IGZh bHNlDQoJCQlGWE1lc3NhZ2VCb3gud2FybmluZyhzZWxmLCBNQk9YX09LLCAi U2Vnbm8gZGVsIG1vdmltZW50byIsICJJbCB2YWxvcmUgJyN7QHNlZ25vLnZh bHVlfScgbm9uIGUnIGFtbWVzc28iKQ0KCQllbmQNCg0KCQlpZiByZWdpc3Ry YSA9PSB0cnVlDQoJCQliZWdpbg0KCQkJCUBjb25uID0gTXlzcWwubmV3KCJs b2NhbGhvc3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJwaXJhbWlkZSIpDQoJ CQkJQGNvbm4uYXV0b2NvbW1pdCgwKQ0KCQkJCSN+IEBjb25uLnF1ZXJ5KCJS RVBMQUNFIGNhdXNhbGlfY29nZSBWQUxVRVMgKCcje0Bjb2RpY2UudmFsdWUu dG9fc30nLCcje0BkZXNjcml6aW9uZUNhdXNhbGUudmFsdWV9JywnI3tAc2Vn bm8udmFsdWV9JywnI3tAY29kaWNlTGlicm8udmFsdWUudG9fc30nLCcje0Bj b2RpY2VMaWJyb0l2YS52YWx1ZS50b19zfScsJyN7QGNvZGljZURvY3VtZW50 by52YWx1ZS50b19zfScsICcje0BwYXJ0aXRlLnZhbHVlfScsICcje0BmaXNj YWxlLnZhbHVlfScsICcje0Bzb2NpYWxlLnZhbHVlfScsJyN7QHJldmVyc2VD aGFyZ2UudmFsdWV9JywnI3tAc29sb0l2YS52YWx1ZX0nLCcje3NpZ2xhfScp IikNCgkJCQlAY29ubi5xdWVyeSgiUkVQTEFDRSBjYXVzYWxpX2NvZ2UgVkFM VUVTICgnI3tAY29kaWNlLnZhbHVlLnRvX3N9JywnI3tAZGVzY3JpemlvbmVD YXVzYWxlLnZhbHVlfScsJyN7QHNlZ25vLnZhbHVlfScsJyN7QGNvZGljZUxp YnJvLnZhbHVlLnRvX3N9JywgJyN7QHBhcnRpdGUudmFsdWV9JywgJyN7QGZp c2NhbGUudmFsdWV9JywgJyN7QHNvY2lhbGUudmFsdWV9JywnI3tAcmV2ZXJz ZUNoYXJnZS52YWx1ZX0nLCcje0Bzb2xvSXZhLnZhbHVlfScsJyN7c2lnbGF9 JykiKQ0KCQkJCUBjb25uLmNvbW1pdA0KCQkJCUBjb25uLmNsb3NlDQoJCQly ZXNjdWUgTXlzcWxFcnJvciA9PiBlDQoJCQkJQGNvbm4ucm9sbGJhY2sNCgkJ CQlAY29ubi5jbG9zZQ0KCQkJCXByaW50ICJlcnJvciBjb2RlOiAiLCBlLmVy cm5vLCAiXG4iDQoJCQkJcHJpbnQgImVycm9yIG1lc3NhZ2U6ICIsIGUuZXJy b3IsICJcbiINCgkJCWVuZA0KCQkJY2FyaWNhX2RhdGkNCgkJCWF6emVyYV92 YXJpYWJpbGkNCgkJZW5kDQoJZW5kDQoNCglkZWYgY2FuY2VsbGFfcmVjb3Jk DQoJCWlmIChAY29udGF0b3JlIDw9ICgiI3tAc2NlbHRhLm51bV9yb3dzfSIu dG9faSAtIDEpKQ0KCQkJbWVzc2FnZ2lvID0gRlhNZXNzYWdlQm94LnF1ZXN0 aW9uKA0KCQkJCXNlbGYsDQoJCQkJTUJPWF9ZRVNfTk8sDQoJCQkJIkF0dGVu emlvbmUgISEhIiwNCgkJCQkiU2kgc3Rhbm5vIGNhbmNlbGxhbmRvIGRlaSBk YXRpOiBjb25mZXJtYXJlIGxcJ29wZXJhemlvbmUgPyIpDQoJCQlpZiBtZXNz YWdnaW8gPT0gTUJPWF9DTElDS0VEX1lFUw0KCQkJCUBjb25uID0gTXlzcWwu bmV3KCJsb2NhbGhvc3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJwaXJhbWlk ZSIpDQoJCQkJQGNvbm4uYXV0b2NvbW1pdCgwKQ0KCQkJCUBjb25uLnF1ZXJ5 KCJERUxFVEUgRlJPTSBjYXVzYWxpX2NvZ2UgV0hFUkUgY29kaWNlID0gJyN7 QGNvZGljZS52YWx1ZX0nIikNCgkJCQlAY29ubi5jb21taXQNCgkJCQlAY29u bi5jbG9zZQ0KCQkJCWNhcmljYV9kYXRpDQoJCQkJYXp6ZXJhX3ZhcmlhYmls aQ0KCQkJZW5kDQoJCWVuZA0KCWVuZA0KDQoJZGVmIGF6emVyYV92YXJpYWJp bGkNCgkJQGNvbnRhdG9yZSA9IDANCgkJQGNvZGljZS52YWx1ZSA9IDANCgkJ QGRlc2NyaXppb25lQ2F1c2FsZS52YWx1ZSA9ICIiDQoJCUBzZWduby52YWx1 ZSA9ICIiDQoJCUBjb2RpY2VMaWJyby52YWx1ZSA9IDANCgkJQGRlc2NyaXpp b25lTGlicm8udmFsdWUgPSAiIg0KCQlAcGFydGl0ZS52YWx1ZSA9ICJOIg0K CQlAZmlzY2FsZS52YWx1ZSA9ICJOIg0KCQlAc29jaWFsZS52YWx1ZSA9ICJO Ig0KCQlAcmV2ZXJzZUNoYXJnZS52YWx1ZSA9ICJOIg0KCQlAc29sb0l2YS52 YWx1ZSA9ICJOIg0KCWVuZA0KDQoJZGVmIGFzc2VnbmFfdmFyaWFiaWxpDQoJ CUByaWdhID0gQHNjZWx0YS5kYXRhX3NlZWsoQGNvbnRhdG9yZSkNCgkJQHJp Z2EgPSBAc2NlbHRhLmZldGNoX3Jvdw0KCQlAY29kaWNlLnZhbHVlID0gQHJp Z2FbMF0udG9faQ0KCQlAZGVzY3JpemlvbmVDYXVzYWxlLnZhbHVlID0gQHJp Z2FbMV0gDQoJCUBzZWduby52YWx1ZSA9IEByaWdhWzJdIA0KCQlAY29kaWNl TGlicm8udmFsdWUgPSBAcmlnYVszXS50b19pDQoJCUByaWdhWzRdID09ICcw JyA/IEBwYXJ0aXRlLnZhbHVlID0gJ04nIDogQHBhcnRpdGUudmFsdWUgPSAn UycgDQoJCUByaWdhWzVdID09ICcwJyA/IEBmaXNjYWxlLnZhbHVlID0gJ04n IDogQGZpc2NhbGUudmFsdWUgPSAnUycNCgkJQHJpZ2FbNl0gPyBAc29jaWFs ZS52YWx1ZSA9ICdOJyA6IEBzb2NpYWxlLnZhbHVlID0gJ1MnDQoJCUByaWdh WzddID8gQHJldmVyc2VDaGFyZ2UudmFsdWUgPSAnTicgOiBAcmV2ZXJzZUNo YXJnZS52YWx1ZSA9ICdTJw0KCQlAcmlnYVs4XSA/IEBzb2xvSXZhLnZhbHVl ID0gJ04nIDogQHNvbG9JdmEudmFsdWUgPSAnUycNCgkJY2VyY2FfZGVzY3Jp emlvbmkNCgllbmQNCg0KCWRlZiBjZXJjYV9kZXNjcml6aW9uaQ0KCQlAY29u biA9IE15c3FsLm5ldygibG9jYWxob3N0IiwgInJvb3QiLCAieGNvbGlicmki LCAicGlyYW1pZGUiKQ0KCQlzY2VsdGEgPSBAY29ubi5xdWVyeSgiU0VMRUNU ICogRlJPTSBsaWJyb19jb250YWJpbGUgV0hFUkUgY29kaWNlID0gJyN7QGNv ZGljZUxpYnJvLnZhbHVlfSciKQ0KCQlAY29ubi5jbG9zZQ0KDQoJCWlmICIj e3NjZWx0YS5udW1fcm93c30iID4gJzAnDQoJCQlyaWdhID0gc2NlbHRhLmRh dGFfc2VlaygwKQ0KCQkJcmlnYSA9IHNjZWx0YS5mZXRjaF9yb3cNCgkJCUBk ZXNjcml6aW9uZUxpYnJvLnZhbHVlID0gcmlnYVsxXQ0KCQllbHNlDQoJCQlA ZGVzY3JpemlvbmVMaWJyby52YWx1ZSA9ICIiDQoJCWVuZA0KCWVuZA0KDQoJ ZGVmIGNhcmljYV9kYXRpDQoJCWJlZ2luDQoJCQlAY29ubiA9IE15c3FsLm5l dygibG9jYWxob3N0IiwgInJvb3QiLCAieGNvbGlicmkiLCAicGlyYW1pZGUi KQ0KCQkJQHNjZWx0YSA9IEBjb25uLnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGNh dXNhbGlfY29nZSIpDQoJCQlAY29udGF0b3JlID0gIiN7QHNjZWx0YS5udW1f cm93c30iLnRvX2kNCgkJCUBjb25uLmNsb3NlDQoJCXJlc2N1ZSBNeXNxbEVy cm9yID0+IGUNCgkJCUBjb25uLmNsb3NlDQoJCQlwcmludCAiZXJyb3IgY29k ZTogIiwgZS5lcnJubywgIi9uIg0KCQkJcHJpbnQgIkVycm9yIG1lc3NhZ2U6 ICIsIGUuZXJyb3IsICIvbiINCgkJZW5kDQoJZW5kDQplbmQNCg0KY2xhc3Mg RmluZXN0cmExMDgwNiA8IEZYRGlhbG9nQm94ICNmaW5lc3RyYSBwZXIgbCdp bnNlcmltZW50byBkZWxsZSBjYXVzYWxpIGl2YQ0KCWRlZiBpbml0aWFsaXpl KGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJQGNvbnRhdG9y ZSA9IDANCgkJQHJpZ2EgPSBuaWwNCiN+ICNjYXJpY2EgaW4gbWVtb3JpYSB0 dXR0byBpbCBwaWFubyBkZWkgY29udGkNCgkJY2FyaWNhX2RhdGkNCiN+ICNk aXNlZ25hIGxhIGZpbmVzdHJhICAgIA0KCQlzdXBlcihhcHAsICJQUk9HUkFN TUEgUElSQU1JREUiLCA6b3B0cyA9PiBERUNPUl9BTEwsIDp4ID0+IDIwLCA6 eSA9PiAyMCwgOndpZHRoID0+IDgwMCwgOmhlaWdodCA9PiA0NTApDQoNCgkJ YXJlYSA9IEZYUGFja2VyLm5ldyhzZWxmLCA6b3B0cyA9PiBMQVlPVVRfRklM TCwgOnZTcGFjaW5nID0+IDMwLCA6aFNwYWNpbmcgPT4gNTApDQoNCgkJZ3J1 cHBvMSA9IEZYR3JvdXBCb3gubmV3KGFyZWEsICIiLCA6dlNwYWNpbmcgPT4g MCkNCgkJDQoJCXZUZXN0YTAgPSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1 cHBvMSwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QfFBBQ0tfVU5JRk9STV9X SURUSCwgOnBhZEJvdHRvbSA9PiAxMCkNCgkJRlhMYWJlbC5uZXcodlRlc3Rh MCwgIkdFU1RJT05FIFRBQkVMTEEgREVMTEUgQ0FVU0FMSSBJVkEiLCBuaWws IEpVU1RJRllfQ0VOVEVSX1h8TEFZT1VUX0ZJTExfUk9XLCA6cGFkUmlnaHQg PT4gMTI4KQ0KDQoJCXZUZXN0YTEgPSBGWEhvcml6b250YWxGcmFtZS5uZXco Z3J1cHBvMSwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QfFBBQ0tfVU5JRk9S TV9XSURUSCkNCgkJRlhCdXR0b24ubmV3KHZUZXN0YTEsICdQcmltbyByZWNv cmQnLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSkuY29ubmVjdChT RUxfQ09NTUFORCkge3ByaW1vX3JlY29yZCB9DQoJCUZYQnV0dG9uLm5ldyh2 VGVzdGExLCAnUmVjb3JkIHByZWNlZGVudGUnLCA6cGFkTGVmdCA9PiA1LCA6 cGFkUmlnaHQgPT4gNSkuY29ubmVjdChTRUxfQ09NTUFORCkge3ByZWNlZGVu dGVfcmVjb3JkfQ0KCQlGWEJ1dHRvbi5uZXcodlRlc3RhMSwgJ1JlY29yZCBz dWNjZXNzaXZvJywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUpLmNv bm5lY3QoU0VMX0NPTU1BTkQpIHtzdWNjZXNzaXZvX3JlY29yZH0NCgkJRlhC dXR0b24ubmV3KHZUZXN0YTEsICdVbHRpbW8gcmVjb3JkJywgOnBhZExlZnQg PT4gNSwgOnBhZFJpZ2h0ID0+IDUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHt1 bHRpbW9fcmVjb3JkfQ0KCQlGWEJ1dHRvbi5uZXcodlRlc3RhMSwgJ051b3Zv IHJlY29yZCcsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1KS5jb25u ZWN0KFNFTF9DT01NQU5EKSB7bnVvdm9fcmVjb3JkfQ0KDQoJCWdydXBwbzIg PSBGWEdyb3VwQm94Lm5ldyhhcmVhLCAiIiwgOnZTcGFjaW5nID0+IDApDQoJ CXZMaW5lYTEgPSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9w dHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGNv ZGljZSA9IEZYRGF0YVRhcmdldC5uZXcoMCkNCgkJRlhCdXR0b24ubmV3KHZM aW5lYTEsICc/JywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUsIDpw YWRUb3AgPT4wLCA6cGFkQm90dG9tID0+IDApLmNvbm5lY3QoU0VMX0NPTU1B TkQpIHsNCgkJCSR2YXIgPSBbXQ0KCQkJcmljZXJjYSA9IEZpbmVzdHJhOTAw MTkubmV3KHNlbGYpDQoJCQlyaWNlcmNhLmV4ZWN1dGUoUExBQ0VNRU5UX0NV UlNPUikNCgkJCUBjb2RpY2UudmFsdWUgPSAkdmFyWzBdDQoJCQlAZGVzY3Jp emlvbmUudmFsdWUgPSAkdmFyWzFdDQoJCQkkdmFyID0gW10NCgkJCXZhaV9h X3JlY29yZA0KCQkJfQ0KCQlGWExhYmVsLm5ldyh2TGluZWExLCAiQ29kaWNl IGNhdXNhbGUiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9X LCA6cGFkUmlnaHQgPT4gMTI1KQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVh MSwgMywgOnRhcmdldCA9PiBAY29kaWNlLCA6c2VsZWN0b3IgPT4gRlhEYXRh VGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VOfEZSQU1F X1RISUNLfExBWU9VVF9GSUxMX1JPV3xURVhURklFTERfTElNSVRFRHxURVhU RklFTERfSU5URUdFUnxKVVNUSUZZX1JJR0hUKQ0KDQoJCXZMaW5lYTIgPSBG WEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VU X1NJREVfVE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGRlc2NyaXppb25lID0g RlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhCdXR0b24ubmV3KHZMaW5lYTIs ICc/JywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUsIDpwYWRUb3Ag PT4wLCA6cGFkQm90dG9tID0+IDApLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsN CgkJCSR2YXIgPSBbXQ0KCQkJcmljZXJjYSA9IEZpbmVzdHJhOTAwMjAubmV3 KHNlbGYpDQoJCQlyaWNlcmNhLmV4ZWN1dGUoUExBQ0VNRU5UX0NVUlNPUikN CgkJCUBjb2RpY2UudmFsdWUgPSAkdmFyWzBdDQoJCQlAZGVzY3JpemlvbmUu dmFsdWUgPSAkdmFyWzFdDQoJCQkkdmFyID0gW10NCgkJCXZhaV9hX3JlY29y ZA0KCQkJfQ0KCQlGWExhYmVsLm5ldyh2TGluZWEyLCAiRGVzY3JpemlvbmUg ZGVsbGEgY2F1c2FsZSBpdmEiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VU X0ZJTExfUk9XLCA6cGFkUmlnaHQgPT4gNjIpIyA6cGFkTGVmdCA9PiAyNiwg OnBhZFJpZ2h0ID0+IDM4KQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhMiwg MjAsIDp0YXJnZXQgPT4gQGRlc2NyaXppb25lLCA6c2VsZWN0b3IgPT4gRlhE YXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VOfEZS QU1FX1RISUNLfExBWU9VVF9GSUxMX1JPV3xURVhURklFTERfTElNSVRFRCkN Cg0KCQl2TGluZWEzID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIs IDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJ CUBsaWJyb0l2YSA9IEZYRGF0YVRhcmdldC5uZXcoMCkNCgkJRlhCdXR0b24u bmV3KHZMaW5lYTMsICc/JywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+ IDUsIDpwYWRUb3AgPT4wLCA6cGFkQm90dG9tID0+IDApLmNvbm5lY3QoU0VM X0NPTU1BTkQpIHsNCgkJCSR2YXIgPSBbXQ0KCQkJcmljZXJjYSA9IEZpbmVz dHJhOTAwMTYubmV3KHNlbGYpDQoJCQlyaWNlcmNhLmV4ZWN1dGUoUExBQ0VN RU5UX0NVUlNPUikNCgkJCUBsaWJyb0l2YS52YWx1ZSA9ICR2YXJbMF0NCgkJ CSR2YXIgPSBbXQ0KCQkJfQ0KCQlGWExhYmVsLm5ldyh2TGluZWEzLCAiQ29k aWNlIGxpYnJvIGl2YSIsIG5pbCwgSlVTVElGWV9SSUdIVHxMQVlPVVRfRklM TF9ST1csIDpwYWRSaWdodCA9PiAxMjQpDQoJCUZYVGV4dEZpZWxkLm5ldyh2 TGluZWEzLCAzLCA6dGFyZ2V0ID0+IEBsaWJyb0l2YSwgOnNlbGVjdG9yID0+ IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktF TnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJTUlU RUR8VEVYVEZJRUxEX0lOVEVHRVJ8SlVTVElGWV9SSUdIVCkNCg0KCQl2TGlu ZWE0ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+ IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBkb2N1bWVu dG9JdmEgPSBGWERhdGFUYXJnZXQubmV3KDApDQoJCUZYQnV0dG9uLm5ldyh2 TGluZWE0LCAnPycsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1LCA6 cGFkVG9wID0+MCwgOnBhZEJvdHRvbSA9PiAwKS5jb25uZWN0KFNFTF9DT01N QU5EKSB7DQoJCQkkdmFyID0gW10NCgkJCXJpY2VyY2EgPSBGaW5lc3RyYTkw MDE3Lm5ldyhzZWxmKQ0KCQkJcmljZXJjYS5leGVjdXRlKFBMQUNFTUVOVF9D VVJTT1IpDQoJCQlAZG9jdW1lbnRvSXZhLnZhbHVlID0gJHZhclswXQ0KCQkJ JHZhciA9IFtdDQoJCQl9DQoJCUZYTGFiZWwubmV3KHZMaW5lYTQsICJDb2Rp Y2UgZGVsIGRvY3VtZW50byBpdmEiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZ T1VUX0ZJTExfUk9XLCA6cGFkUmlnaHQgPT4gNzMpDQoJCUZYVGV4dEZpZWxk Lm5ldyh2TGluZWE0LCAzLCA6dGFyZ2V0ID0+IEBkb2N1bWVudG9JdmEsIDpz ZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBG UkFNRV9TVU5LRU58RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRG SUVMRF9MSU1JVEVEfFRFWFRGSUVMRF9JTlRFR0VSfEpVU1RJRllfUklHSFQp DQoNCgkJdkxpbmVhNSA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8y LCA6b3B0cyA9PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0K CQlAY29kaWNlT3BlcmF6aW9uZSA9IEZYRGF0YVRhcmdldC5uZXcoMCkNCgkJ RlhCdXR0b24ubmV3KHZMaW5lYTUsICc/JywgOnBhZExlZnQgPT4gNSwgOnBh ZFJpZ2h0ID0+IDUsIDpwYWRUb3AgPT4wLCA6cGFkQm90dG9tID0+IDApLmNv bm5lY3QoU0VMX0NPTU1BTkQpIHsNCgkJCSR2YXIgPSBbXQ0KCQkJcmljZXJj YSA9IEZpbmVzdHJhOTAwMTgubmV3KHNlbGYpDQoJCQlyaWNlcmNhLmV4ZWN1 dGUoUExBQ0VNRU5UX0NVUlNPUikNCgkJCUBjb2RpY2VPcGVyYXppb25lLnZh bHVlID0gJHZhclswXQ0KCQkJJHZhciA9IFtdDQoJCQl9DQoJCUZYTGFiZWwu bmV3KHZMaW5lYTUsICJDb2RpY2UgZGVsbGEgb3BlcmF6aW9uZSBpdmEiLCBu aWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkUmlnaHQg PT4gNjUpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWE1LCAzLCA6dGFyZ2V0 ID0+IEBjb2RpY2VPcGVyYXppb25lLCA6c2VsZWN0b3IgPT4gRlhEYXRhVGFy Z2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VOfEZSQU1FX1RI SUNLfExBWU9VVF9GSUxMX1JPV3xURVhURklFTERfTElNSVRFRHxURVhURklF TERfSU5URUdFUnxKVVNUSUZZX1JJR0hUKQ0KDQoJCXZMaW5lYTYgPSBGWEhv cml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJ REVfVE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGFsaXF1b3RhSXZhID0gRlhE YXRhVGFyZ2V0Lm5ldygwLjAwKQ0KCQlGWExhYmVsLm5ldyh2TGluZWE2LCAi QWxpcXVvdGEgaXZhIiwgbmlsLCBKVVNUSUZZX1JJR0hUfExBWU9VVF9GSUxM X1JPVywgOnBhZExlZnQgPT4gMjYsIDpwYWRSaWdodCA9PiAxMzgpDQoJCUZY VGV4dEZpZWxkLm5ldyh2TGluZWE2LCA1LCA6dGFyZ2V0ID0+IEBhbGlxdW90 YUl2YSwgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpv cHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9S T1d8VEVYVEZJRUxEX1JFQUx8SlVTVElGWV9SSUdIVCkNCg0KCQl2TGluZWE3 ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+IExB WU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBpdmFJbmRlZHVj aWJpbGUgPSBGWERhdGFUYXJnZXQubmV3KDAuMDApDQoJCUZYTGFiZWwubmV3 KHZMaW5lYTcsICJQZXJjZW50dWFsZSBkaSBpdmEgbm9uIGRlZHVjaWJpbGUi LCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkTGVm dCA9PiAyNiwgOnBhZFJpZ2h0ID0+IDM3KQ0KCQlGWFRleHRGaWVsZC5uZXco dkxpbmVhNywgNSwgOnRhcmdldCA9PiBAaXZhSW5kZWR1Y2liaWxlLCA6c2Vs ZWN0b3IgPT4gRlhEYXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJB TUVfU1VOS0VOfEZSQU1FX1RISUNLfExBWU9VVF9GSUxMX1JPV3xURVhURklF TERfUkVBTHxKVVNUSUZZX1JJR0hUKQ0KDQoJCXZMaW5lYTggPSBGWEhvcml6 b250YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVf VE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGNhbGNvbG9QbGFmb25kID0gRlhE YXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhMYWJlbC5uZXcodkxpbmVhOCwgIkNh bGNvbG8gcGxhZm9uZCAoUy9OKSIsIG5pbCwgSlVTVElGWV9SSUdIVHxMQVlP VVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+IDI0LCA6cGFkUmlnaHQgPT4gMzIp DQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWE4LCAxLCA6dGFyZ2V0ID0+IEBj YWxjb2xvUGxhZm9uZCwgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURf VkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlP VVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8SlVTVElGWV9SSUdIVCkN Cg0KDQoJCWdydXBwbzQgPSBGWEdyb3VwQm94Lm5ldyhhcmVhLCAiIiwgOnZT cGFjaW5nID0+IDApDQoJCXZGb25kbyA9IEZYSG9yaXpvbnRhbEZyYW1lLm5l dyhncnVwcG80LCA6b3B0cyA9PiBMQVlPVVRfU0lERV9CT1RUT018UEFDS19V TklGT1JNX1dJRFRIKQ0KCQlGWEJ1dHRvbi5uZXcodkZvbmRvLCAnQ2FuY2Vs bGEnLCA6cGFkTGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDI1KS5jb25uZWN0 KFNFTF9DT01NQU5EKSB7Y2FuY2VsbGFfcmVjb3JkfQ0KCQlGWEJ1dHRvbi5u ZXcodkZvbmRvLCAnQW5udWxsYScsIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmln aHQgPT4gMjUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHthenplcmFfdmFyaWFi aWxpfQ0KCQlGWEJ1dHRvbi5uZXcodkZvbmRvLCAnUmVnaXN0cmEnLCA6cGFk TGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDI1KS5jb25uZWN0KFNFTF9DT01N QU5EKSB7cmVnaXN0cmF9DQoJCUZYQnV0dG9uLm5ldyh2Rm9uZG8sICdFc2Np JywgOnRhcmdldCA9PiBzZWxmLCA6c2VsZWN0b3IgPT4gRlhEaWFsb2dCb3g6 OklEX0NBTkNFTCwgOnBhZExlZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAyNSkN CgkJYXp6ZXJhX3ZhcmlhYmlsaQ0KCWVuZA0KDQoJZGVmIHByaW1vX3JlY29y ZA0KCQlAY29udGF0b3JlID0gMA0KCQlAc2NlbHRhLm51bV9yb3dzID09IDAg PyBhenplcmFfdmFyaWFiaWxpIDogYXNzZWduYV92YXJpYWJpbGkNCgllbmQN Cg0KCWRlZiBwcmVjZWRlbnRlX3JlY29yZA0KCQlpZiBAc2NlbHRhLm51bV9y b3dzID09IDAgdGhlbgkJDQoJCQlAY29udGF0b3JlID0gMA0KCQkJYXp6ZXJh X3ZhcmlhYmlsaQ0KCQllbHNlDQoJCQlAY29udGF0b3JlIC0gMSA8MCA/IEBj b250YXRvcmUgPSAwIDogQGNvbnRhdG9yZSA9IEBjb250YXRvcmUgLTENCgkJ CWFzc2VnbmFfdmFyaWFiaWxpDQoJCWVuZA0KCWVuZA0KDQoJZGVmIHN1Y2Nl c3Npdm9fcmVjb3JkDQoJCWlmIEBzY2VsdGEubnVtX3Jvd3MgPT0gMCB0aGVu CQkNCgkJCUBjb250YXRvcmUgPSAwDQoJCQlhenplcmFfdmFyaWFiaWxpDQoJ CWVsc2UNCgkJCUBjb250YXRvcmUgPj0gKCIje0BzY2VsdGEubnVtX3Jvd3N9 Ii50b19pIC0gMSkgPyBAY29udGF0b3JlID0gKCIje0BzY2VsdGEubnVtX3Jv d3N9Ii50b19pIC0gMSkgOiBAY29udGF0b3JlID0gQGNvbnRhdG9yZSArIDEN CgkJCWFzc2VnbmFfdmFyaWFiaWxpDQoJCWVuZA0KCWVuZA0KDQoJZGVmIHVs dGltb19yZWNvcmQNCgkJaWYgQHNjZWx0YS5udW1fcm93cyA9PSAwIHRoZW4J CQ0KCQkJQGNvbnRhdG9yZSA9IDANCgkJCWF6emVyYV92YXJpYWJpbGkNCgkJ ZWxzZQ0KCQkJQGNvbnRhdG9yZSA9ICgiI3tAc2NlbHRhLm51bV9yb3dzfSIu dG9faSAtIDEpDQoJCQlhc3NlZ25hX3ZhcmlhYmlsaQ0KCQllbmQNCgllbmQN Cg0KCWRlZiBudW92b19yZWNvcmQNCgkJYXp6ZXJhX3ZhcmlhYmlsaQ0KCWVu ZA0KDQoJZGVmIHZhaV9hX3JlY29yZA0KCQlpZiBAY29kaWNlLnZhbHVlLnRv X2kgICE9IDANCgkJCUBjb250YXRvcmUgPSAwDQoJCQlAcmlnYSA9IEBzY2Vs dGEuZGF0YV9zZWVrKEBjb250YXRvcmUpDQoJCQlAcmlnYSA9IEBzY2VsdGEu ZmV0Y2hfcm93DQoNCgkJCXVudGlsIEBjb2RpY2UudmFsdWUgPT0gQHJpZ2Fb MF0NCgkJCQlAcmlnYSA9IEBzY2VsdGEuZGF0YV9zZWVrKEBjb250YXRvcmUp DQoJCQkJQHJpZ2EgPSBAc2NlbHRhLmZldGNoX3Jvdw0KCQkJCUBjb250YXRv cmUgPSBAY29udGF0b3JlICsgMQ0KCQkJZW5kDQoJCQlAY29udGF0b3JlID0g QGNvbnRhdG9yZSAtIDEgaWYgQGNvbnRhdG9yZSA+MA0KCQkJYXNzZWduYV92 YXJpYWJpbGkNCgkJZW5kDQoJZW5kDQoNCg0KCWRlZiByZWdpc3RyYQ0KI34g YWxsYSB2YXJpYWJpbGUgcmVnaXN0cmEgc2kgYXNzZWduYSBpbCB2YWxvcmUg dmVyby4NCiN+IFVuIHJpc3VsdGF0byBmYWxzbyBkaSB1biBxdWFsc2lhc2kg dGVzdCBuZSBjYW1iaWVyYScgaWwgdmFsb3JlIGluIGZhbHNvLCBpbXBlZGVu ZG8gbGEgcmVnaXN0cmF6aW9uZSBkZWkgZGF0aSBpbiBtZW1vcmlhLg0KCQlA ZGVzY3JpemlvbmUudmFsdWUgPSBAZGVzY3JpemlvbmUudmFsdWUudG9fcy51 cGNhc2UNCgkJQGNhbGNvbG9QbGFmb25kLnZhbHVlID0gQGNhbGNvbG9QbGFm b25kLnZhbHVlLnRvX3MudXBjYXNlDQoJCUBjYWxjb2xvUGxhZm9uZC52YWx1 ZSA9PSAnUycgPyBAY2FsY29sb1BsYWZvbmQudmFsdWUgPSAxIDogQGNhbGNv bG9QbGFmb25kLnZhbHVlID0gMA0KCQkNCgkJcmVnaXN0cmEgPSB0cnVlDQoJ CWlmIEBjb2RpY2UudmFsdWUudG9faSA9PSAwIA0KCQkJcmVnaXN0cmEgPSBm YWxzZQ0KCQkJRlhNZXNzYWdlQm94Lndhcm5pbmcoc2VsZiwgTUJPWF9PSywg IkNvZGljZSBjYXVzYWxlIGl2YSIsICJ2YWxvcmUgJyN7QGNvZGljZS52YWx1 ZX0nIG5vbiBhbW1lc3NvIHBlciBxdWVzdG8gY2FtcG8iKQ0KCQllbmQNCg0K CQlpZiByZWdpc3RyYSA9PSB0cnVlDQoJCQliZWdpbg0KCQkJCUBjb25uID0g TXlzcWwubmV3KCJsb2NhbGhvc3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJw aXJhbWlkZSIpDQoJCQkJQGNvbm4uYXV0b2NvbW1pdCgwKQ0KCQkJCUBjb25u LnF1ZXJ5KCJSRVBMQUNFIGNhdXNhbGlfaXZhIFZBTFVFUyAoJyN7QGNvZGlj ZS52YWx1ZS50b19zfScsJyN7QGRlc2NyaXppb25lLnZhbHVlfScsJyN7QGxp YnJvSXZhLnZhbHVlLnRvX3N9JywnI3tAZG9jdW1lbnRvSXZhLnZhbHVlLnRv X3N9JywnI3tAY29kaWNlT3BlcmF6aW9uZS52YWx1ZS50b19zfScsJyN7QGFs aXF1b3RhSXZhLnZhbHVlfScsICcje0BpdmFJbmRlZHVjaWJpbGUudmFsdWV9 JywgJyN7QGNhbGNvbG9QbGFmb25kLnZhbHVlfScpIikNCgkJCQlAY29ubi5j b21taXQNCgkJCQlAY29ubi5jbG9zZQ0KCQkJIHJlc2N1ZSBNeXNxbEVycm9y ID0+IGUNCgkJCQlAY29ubi5yb2xsYmFjaw0KCQkJCUBjb25uLmNsb3NlDQoJ CQkJcHJpbnQgImVycm9yIGNvZGU6ICIsIGUuZXJybm8sICJcbiINCgkJCQlw cmludCAiZXJyb3IgbWVzc2FnZTogIiwgZS5lcnJvciwgIlxuIg0KCQkJZW5k DQoJCQljYXJpY2FfZGF0aQ0KCQkJYXp6ZXJhX3ZhcmlhYmlsaQ0KCQllbmQN CgllbmQNCg0KCWRlZiBjYW5jZWxsYV9yZWNvcmQNCgkJaWYgKEBjb250YXRv cmUgPD0gKCIje0BzY2VsdGEubnVtX3Jvd3N9Ii50b19pIC0gMSkpDQoJCQlt ZXNzYWdnaW8gPSBGWE1lc3NhZ2VCb3gucXVlc3Rpb24oDQoJCQkJc2VsZiwN CgkJCQlNQk9YX1lFU19OTywNCgkJCQkiQXR0ZW56aW9uZSAhISEiLA0KCQkJ CSJTaSBzdGFubm8gY2FuY2VsbGFuZG8gZGVpIGRhdGk6IGNvbmZlcm1hcmUg bFwnb3BlcmF6aW9uZSA/IikNCgkJCWlmIG1lc3NhZ2dpbyA9PSBNQk9YX0NM SUNLRURfWUVTDQoJCQkJQGNvbm4gPSBNeXNxbC5uZXcoImxvY2FsaG9zdCIs ICJyb290IiwgInhjb2xpYnJpIiwgInBpcmFtaWRlIikNCgkJCQlAY29ubi5h dXRvY29tbWl0KDApDQoJCQkJQGNvbm4ucXVlcnkoIkRFTEVURSBGUk9NIGxp YnJvX2NvbnRhYmlsZSBXSEVSRSBjb2RpY2UgPSAnI3tAY29kaWNlLnZhbHVl fSciKQ0KCQkJCUBjb25uLmNvbW1pdA0KCQkJCUBjb25uLmNsb3NlDQoJCQkJ Y2FyaWNhX2RhdGkNCgkJCQlhenplcmFfdmFyaWFiaWxpDQoJCQllbmQNCgkJ ZW5kDQoJZW5kDQoNCglkZWYgYXp6ZXJhX3ZhcmlhYmlsaQ0KCQlAY29udGF0 b3JlID0gMA0KCQlAY29kaWNlLnZhbHVlID0gMA0KCQlAZGVzY3JpemlvbmUu dmFsdWUgPSAiIg0KCQlAbGlicm9JdmEudmFsdWUgPSAwDQoJCUBkb2N1bWVu dG9JdmEudmFsdWUgPSAwDQoJCUBjb2RpY2VPcGVyYXppb25lLnZhbHVlID0g MA0KCQlAYWxpcXVvdGFJdmEudmFsdWUgPSAwLjAwDQoJCUBpdmFJbmRlZHVj aWJpbGUudmFsdWUgPSAwLjAwDQoJCUBjYWxjb2xvUGxhZm9uZC52YWx1ZSA9 ICJOIg0KCWVuZA0KDQoJZGVmIGFzc2VnbmFfdmFyaWFiaWxpDQoJCUByaWdh ID0gQHNjZWx0YS5kYXRhX3NlZWsoQGNvbnRhdG9yZSkNCgkJQHJpZ2EgPSBA c2NlbHRhLmZldGNoX3Jvdw0KCQlAY29kaWNlLnZhbHVlID0gQHJpZ2FbMF0u dG9faQ0KCQlAZGVzY3JpemlvbmUudmFsdWUgPSBAcmlnYVsxXQ0KCQlAbGli cm9JdmEudmFsdWUgPSBAcmlnYVsyXS50b19pDQoJCUBkb2N1bWVudG9JdmEu dmFsdWUgPSBAcmlnYVszXS50b19pDQoJCUBjb2RpY2VPcGVyYXppb25lLnZh bHVlID0gQHJpZ2FbNF0udG9faQ0KCQlAYWxpcXVvdGFJdmEudmFsdWUgPSBA cmlnYVs1XQ0KCQlAaXZhSW5kZWR1Y2liaWxlLnZhbHVlID0gQHJpZ2FbNl0u dG9faQ0KCQlAcmlnYVs3XSA9PSAnMCcgPyBAY2FsY29sb1BsYWZvbmQudmFs dWUgPSAnTicgOiBAY2FsY29sb1BsYWZvbmQudmFsdWUgPSAnUycgDQoJZW5k DQoJDQoJZGVmIGNhcmljYV9kYXRpDQoJCWJlZ2luDQoJCQlAY29ubiA9IE15 c3FsLm5ldygibG9jYWxob3N0IiwgInJvb3QiLCAieGNvbGlicmkiLCAicGly YW1pZGUiKQ0KCQkJQHNjZWx0YSA9IEBjb25uLnF1ZXJ5KCJTRUxFQ1QgKiBG Uk9NIGNhdXNhbGlfaXZhIikNCgkJCUBjb250YXRvcmUgPSAiI3tAc2NlbHRh Lm51bV9yb3dzfSIudG9faQ0KCQkJQGNvbm4uY2xvc2UNCgkJcmVzY3VlDQoJ CQlAY29ubi5jbG9zZQ0KCQkJcHJpbnQgImVycm9yIGNvZGU6ICIsIGUuZXJy bm8sICIvbiINCgkJCXByaW50ICJFcnJvciBtZXNzYWdlOiAiLCBlLmVycm9y LCAiL24iDQoJCWVuZA0KCWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJhMTA4 MDcgPCBGWERpYWxvZ0JveCAjZmluZXN0cmEgcGVyIGwnaW5zZXJpbWVudG8g ZGVpIHRpcGkgZGkgbGlicmkgY29udGFiaWxpDQoJZGVmIGluaXRpYWxpemUo YXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBjbGFzcw0KCQlAY29udGF0b3Jl ID0gMA0KCQlAcmlnYSA9IG5pbA0KI2NhcmljYSBpbiBtZW1vcmlhIHR1dHRv IGlsIHBpYW5vIGRlaSBjb250aQ0KCQljYXJpY2FfZGF0aQ0KI2Rpc2VnbmEg bGEgZmluZXN0cmEgICAgDQoJCXN1cGVyKGFwcCwgIlBST0dSQU1NQSBQSVJB TUlERSIsIDpvcHRzID0+IERFQ09SX0FMTCwgOnggPT4gMjAsIDp5ID0+IDIw LCA6d2lkdGggPT4gODAwLCA6aGVpZ2h0ID0+IDQ1MCkNCg0KCQlhcmVhID0g RlhQYWNrZXIubmV3KHNlbGYsIDpvcHRzID0+IExBWU9VVF9GSUxMLCA6dlNw YWNpbmcgPT4gMzAsIDpoU3BhY2luZyA9PiA1MCkNCg0KCQlncnVwcG8xID0g RlhHcm91cEJveC5uZXcoYXJlYSwgIiIsIDp2U3BhY2luZyA9PiAwKQ0KCQkN CgkJdlRlc3RhMCA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8xLCA6 b3B0cyA9PiBMQVlPVVRfU0lERV9UT1B8UEFDS19VTklGT1JNX1dJRFRILCA6 cGFkQm90dG9tID0+IDEwKQ0KCQlGWExhYmVsLm5ldyh2VGVzdGEwLCAiR0VT VElPTkUgVEFCRUxMQSBERUkgTElCUkkgQ09OVEFCSUxJIiwgbmlsLCBKVVNU SUZZX0NFTlRFUl9YfExBWU9VVF9GSUxMX1JPVywgOnBhZFJpZ2h0ID0+IDEy OCkNCg0KCQl2VGVzdGExID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBw bzEsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUHxQQUNLX1VOSUZPUk1fV0lE VEgpDQoJCUZYQnV0dG9uLm5ldyh2VGVzdGExLCAnUHJpbW8gcmVjb3JkJywg OnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUpLmNvbm5lY3QoU0VMX0NP TU1BTkQpIHtwcmltb19yZWNvcmQgfQ0KCQlGWEJ1dHRvbi5uZXcodlRlc3Rh MSwgJ1JlY29yZCBwcmVjZWRlbnRlJywgOnBhZExlZnQgPT4gNSwgOnBhZFJp Z2h0ID0+IDUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHtwcmVjZWRlbnRlX3Jl Y29yZH0NCgkJRlhCdXR0b24ubmV3KHZUZXN0YTEsICdSZWNvcmQgc3VjY2Vz c2l2bycsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1KS5jb25uZWN0 KFNFTF9DT01NQU5EKSB7c3VjY2Vzc2l2b19yZWNvcmR9DQoJCUZYQnV0dG9u Lm5ldyh2VGVzdGExLCAnVWx0aW1vIHJlY29yZCcsIDpwYWRMZWZ0ID0+IDUs IDpwYWRSaWdodCA9PiA1KS5jb25uZWN0KFNFTF9DT01NQU5EKSB7dWx0aW1v X3JlY29yZH0NCgkJRlhCdXR0b24ubmV3KHZUZXN0YTEsICdOdW92byByZWNv cmQnLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSkuY29ubmVjdChT RUxfQ09NTUFORCkge251b3ZvX3JlY29yZH0NCg0KCQlncnVwcG8yID0gRlhH cm91cEJveC5uZXcoYXJlYSwgIiIsIDp2U3BhY2luZyA9PiAwKQ0KCQl2TGlu ZWExID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+ IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBjb2RpY2Ug PSBGWERhdGFUYXJnZXQubmV3KDApDQoJCUZYQnV0dG9uLm5ldyh2TGluZWEx LCAnPycsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1LCA6cGFkVG9w ID0+MCwgOnBhZEJvdHRvbSA9PiAwKS5jb25uZWN0KFNFTF9DT01NQU5EKSB7 DQoJCQkkdmFyID0gW10NCgkJCXJpY2VyY2EgPSBGaW5lc3RyYTkwMDE1Lm5l dyhzZWxmKQ0KCQkJcmljZXJjYS5leGVjdXRlKFBMQUNFTUVOVF9DVVJTT1Ip DQoJCQlAY29kaWNlLnZhbHVlID0gJHZhclswXQ0KCQkJQGRlc2NyaXppb25l LnZhbHVlID0gJHZhclsxXQ0KCQkJJHZhciA9IFtdDQoJCQl2YWlfYV9yZWNv cmQNCgkJCX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhMSwgIkNvZGljZSBkZWwg bGlicm8gY29udGFiaWxlIiwgbmlsLCBKVVNUSUZZX1JJR0hUfExBWU9VVF9G SUxMX1JPVywgOnBhZFJpZ2h0ID0+IDEyOCkNCgkJRlhUZXh0RmllbGQubmV3 KHZMaW5lYTEsIDMsIDp0YXJnZXQgPT4gQGNvZGljZSwgOnNlbGVjdG9yID0+ IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktF TnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJTUlU RUR8VEVYVEZJRUxEX0lOVEVHRVJ8SlVTVElGWV9SSUdIVCkNCg0KCQl2TGlu ZWEyID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+ IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBkZXNjcml6 aW9uZSA9IEZYRGF0YVRhcmdldC5uZXcoIiIpDQoJCUZYTGFiZWwubmV3KHZM aW5lYTIsICJEZXNjcml6aW9uZSBkZWwgbGlicm8gY29udGFiaWxlIiwgbmls LCBKVVNUSUZZX1JJR0hUfExBWU9VVF9GSUxMX1JPVywgOnBhZExlZnQgPT4g MjYsIDpwYWRSaWdodCA9PiAxMDQpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGlu ZWEyLCA4MCwgOnRhcmdldCA9PiBAZGVzY3JpemlvbmUsIDpzZWxlY3RvciA9 PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5L RU58RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVMRF9MSU1J VEVEKQ0KDQoJCXZMaW5lYTMgPSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1 cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6dlNwYWNpbmcgPT4g MCkNCgkJQHRpcG9MaWJybyA9IEZYRGF0YVRhcmdldC5uZXcoMCkNCgkJRlhC dXR0b24ubmV3KHZMaW5lYTMsICc/JywgOnBhZExlZnQgPT4gNSwgOnBhZFJp Z2h0ID0+IDUsIDpwYWRUb3AgPT4wLCA6cGFkQm90dG9tID0+IDApLmNvbm5l Y3QoU0VMX0NPTU1BTkQpIHsNCgkJCSR2YXIgPSBbXQ0KCQkJIHJpY2VyY2Eg PSBGaW5lc3RyYTkwMDE0Lm5ldyhzZWxmKQ0KCQkJcmljZXJjYS5leGVjdXRl KFBMQUNFTUVOVF9DVVJTT1IpDQoJCQlAdGlwb0xpYnJvLnZhbHVlID0gJHZh clswXQ0KCQkJJHZhciA9IFtdDQoJCQl9DQoJCUZYTGFiZWwubmV3KHZMaW5l YTMsICJDb2RpY2UgdGlwbyBsaWJybyBjb250YWJpbGUiLCBuaWwsIEpVU1RJ RllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkUmlnaHQgPT4gMTI0KQ0K CQlGWFRleHRGaWVsZC5uZXcodkxpbmVhMywgMSwgOnRhcmdldCA9PiBAdGlw b0xpYnJvLCA6c2VsZWN0b3IgPT4gRlhEYXRhVGFyZ2V0OjpJRF9WQUxVRSwg Om9wdHMgPT4gRlJBTUVfU1VOS0VOfEZSQU1FX1RISUNLfExBWU9VVF9GSUxM X1JPV3xURVhURklFTERfTElNSVRFRHxURVhURklFTERfSU5URUdFUnxKVVNU SUZZX1JJR0hUKQ0KDQoJCXZMaW5lYTQgPSBGWEhvcml6b250YWxGcmFtZS5u ZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6dlNwYWNp bmcgPT4gMCkNCgkJQGRhdGFVbHRpbWFSZWdpc3RyYXppb25lID0gRlhEYXRh VGFyZ2V0Lm5ldygwKQ0KCQlGWExhYmVsLm5ldyh2TGluZWE0LCAiRGF0YSB1 bHRpbWEgcmVnaXN0cmF6aW9uZSIsIG5pbCwgOm9wdHMgPT4gSlVTVElGWV9S SUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmln aHQgPT4gMTI4KQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhNCwgMTAsIDp0 YXJnZXQgPT4gQGRhdGFVbHRpbWFSZWdpc3RyYXppb25lLCA6c2VsZWN0b3Ig PT4gRlhEYXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gVEVYVEZJRUxE X1JFQURPTkxZfFRFWFRGSUVMRF9PVkVSU1RSSUtFfEpVU1RJRllfUklHSFQp DQoNCgkJdkxpbmVhNSA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8y LCA6b3B0cyA9PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0K CQlAbnVtZXJvVWx0aW1hUmVnaXN0cmF6aW9uZSA9IEZYRGF0YVRhcmdldC5u ZXcoMCkNCgkJRlhMYWJlbC5uZXcodkxpbmVhNSwgIk51bWVybyB1bHRpbWEg cmVnaXN0cmF6aW9uZSIsIG5pbCwgOm9wdHMgPT4gSlVTVElGWV9SSUdIVHxM QVlPVVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmlnaHQgPT4g MTE0KQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhNSwgMTAsIDp0YXJnZXQg PT4gQG51bWVyb1VsdGltYVJlZ2lzdHJhemlvbmUsIDpzZWxlY3RvciA9PiBG WERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBURVhURklFTERfUkVB RE9OTFl8VEVYVEZJRUxEX09WRVJTVFJJS0V8SlVTVElGWV9SSUdIVCkNCg0K CQl2TGluZWE2ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpv cHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBk YXRhVWx0aW1hU3RhbXBhID0gRlhEYXRhVGFyZ2V0Lm5ldygwKQ0KCQlGWExh YmVsLm5ldyh2TGluZWE2LCAiRGF0YSB1bHRpbWEgc3RhbXBhIiwgbmlsLCA6 b3B0cyA9PiBKVVNUSUZZX1JJR0hUfExBWU9VVF9GSUxMX1JPVywgOnBhZExl ZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAxNTQpDQoJCUZYVGV4dEZpZWxkLm5l dyh2TGluZWE2LCAxMCwgOnRhcmdldCA9PiBAZGF0YVVsdGltYVN0YW1wYSwg OnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+ IFRFWFRGSUVMRF9SRUFET05MWXxURVhURklFTERfT1ZFUlNUUklLRXxKVVNU SUZZX1JJR0hUKQ0KDQoJCXZMaW5lYTcgPSBGWEhvcml6b250YWxGcmFtZS5u ZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6dlNwYWNp bmcgPT4gMCkNCgkJQG51bWVyb1VsdGltYVN0YW1wYSA9IEZYRGF0YVRhcmdl dC5uZXcoMCkNCgkJRlhMYWJlbC5uZXcodkxpbmVhNywgIk51bWVybyB1bHRp bWEgc3RhbXBhIiwgbmlsLCA6b3B0cyA9PiBKVVNUSUZZX1JJR0hUfExBWU9V VF9GSUxMX1JPVywgOnBhZExlZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAxNDEp DQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWE3LCAxMCwgOnRhcmdldCA9PiBA bnVtZXJvVWx0aW1hU3RhbXBhLCA6c2VsZWN0b3IgPT4gRlhEYXRhVGFyZ2V0 OjpJRF9WQUxVRSwgOm9wdHMgPT4gVEVYVEZJRUxEX1JFQURPTkxZfFRFWFRG SUVMRF9PVkVSU1RSSUtFfEpVU1RJRllfUklHSFQpDQoNCgkJdkxpbmVhOCA9 IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0cyA9PiBMQVlP VVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAdWx0aW1vTnVtZXJv UHJvZ3Jlc3Npdm8gPSBGWERhdGFUYXJnZXQubmV3KDApDQoJCUZYTGFiZWwu bmV3KHZMaW5lYTgsICJVbHRpbW8gbnVtZXJvIHByb2dyZXNzaXZvIiwgbmls LCA6b3B0cyA9PiBKVVNUSUZZX1JJR0hUfExBWU9VVF9GSUxMX1JPVywgOnBh ZExlZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAxMjApDQoJCUZYVGV4dEZpZWxk Lm5ldyh2TGluZWE4LCAxMCwgOnRhcmdldCA9PiBAdWx0aW1vTnVtZXJvUHJv Z3Jlc3Npdm8sIDpzZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVF LCA6b3B0cyA9PiBURVhURklFTERfUkVBRE9OTFl8VEVYVEZJRUxEX09WRVJT VFJJS0V8SlVTVElGWV9SSUdIVCkNCg0KCQlncnVwcG80ID0gRlhHcm91cEJv eC5uZXcoYXJlYSwgIiIsIDp2U3BhY2luZyA9PiAwKQ0KCQl2Rm9uZG8gPSBG WEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvNCwgOm9wdHMgPT4gTEFZT1VU X1NJREVfQk9UVE9NfFBBQ0tfVU5JRk9STV9XSURUSCkNCgkJRlhCdXR0b24u bmV3KHZGb25kbywgJ0NhbmNlbGxhJywgOnBhZExlZnQgPT4gMjUsIDpwYWRS aWdodCA9PiAyNSkuY29ubmVjdChTRUxfQ09NTUFORCkge2NhbmNlbGxhX3Jl Y29yZH0NCgkJRlhCdXR0b24ubmV3KHZGb25kbywgJ0FubnVsbGEnLCA6cGFk TGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDI1KS5jb25uZWN0KFNFTF9DT01N QU5EKSB7YXp6ZXJhX3ZhcmlhYmlsaX0NCgkJRlhCdXR0b24ubmV3KHZGb25k bywgJ1JlZ2lzdHJhJywgOnBhZExlZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAy NSkuY29ubmVjdChTRUxfQ09NTUFORCkge3JlZ2lzdHJhfQ0KCQlGWEJ1dHRv bi5uZXcodkZvbmRvLCAnRXNjaScsIDp0YXJnZXQgPT4gc2VsZiwgOnNlbGVj dG9yID0+IEZYRGlhbG9nQm94OjpJRF9DQU5DRUwsIDpwYWRMZWZ0ID0+IDI1 LCA6cGFkUmlnaHQgPT4gMjUpDQoJCWF6emVyYV92YXJpYWJpbGkNCgllbmQN Cg0KCWRlZiBwcmltb19yZWNvcmQNCgkJQGNvbnRhdG9yZSA9IDANCgkJQHNj ZWx0YS5udW1fcm93cyA9PSAwID8gYXp6ZXJhX3ZhcmlhYmlsaSA6IGFzc2Vn bmFfdmFyaWFiaWxpDQoJZW5kDQoNCglkZWYgcHJlY2VkZW50ZV9yZWNvcmQN CgkJaWYgQHNjZWx0YS5udW1fcm93cyA9PSAwIHRoZW4JCQ0KCQkJQGNvbnRh dG9yZSA9IDANCgkJCWF6emVyYV92YXJpYWJpbGkNCgkJZWxzZQ0KCQkJQGNv bnRhdG9yZSAtIDEgPDAgPyBAY29udGF0b3JlID0gMCA6IEBjb250YXRvcmUg PSBAY29udGF0b3JlIC0xDQoJCQlhc3NlZ25hX3ZhcmlhYmlsaQ0KCQllbmQN CgllbmQNCg0KCWRlZiBzdWNjZXNzaXZvX3JlY29yZA0KCQlpZiBAc2NlbHRh Lm51bV9yb3dzID09IDAgdGhlbgkJDQoJCQlAY29udGF0b3JlID0gMA0KCQkJ YXp6ZXJhX3ZhcmlhYmlsaQ0KCQllbHNlDQoJCQlAY29udGF0b3JlID49ICgi I3tAc2NlbHRhLm51bV9yb3dzfSIudG9faSAtIDEpID8gQGNvbnRhdG9yZSA9 ICgiI3tAc2NlbHRhLm51bV9yb3dzfSIudG9faSAtIDEpIDogQGNvbnRhdG9y ZSA9IEBjb250YXRvcmUgKyAxDQoJCQlhc3NlZ25hX3ZhcmlhYmlsaQ0KCQll bmQNCgllbmQNCg0KCWRlZiB1bHRpbW9fcmVjb3JkDQoJCWlmIEBzY2VsdGEu bnVtX3Jvd3MgPT0gMCB0aGVuCQkNCgkJCUBjb250YXRvcmUgPSAwDQoJCQlh enplcmFfdmFyaWFiaWxpDQoJCWVsc2UNCgkJCUBjb250YXRvcmUgPSAoIiN7 QHNjZWx0YS5udW1fcm93c30iLnRvX2kgLSAxKQ0KCQkJYXNzZWduYV92YXJp YWJpbGkNCgkJZW5kDQoJZW5kDQoNCglkZWYgbnVvdm9fcmVjb3JkDQoJCWF6 emVyYV92YXJpYWJpbGkNCgllbmQNCg0KCWRlZiB2YWlfYV9yZWNvcmQNCgkJ aWYgQGNvZGljZS52YWx1ZS50b19pICAhPSAwDQoJCQlAY29udGF0b3JlID0g MA0KCQkJQHJpZ2EgPSBAc2NlbHRhLmRhdGFfc2VlayhAY29udGF0b3JlKQ0K CQkJQHJpZ2EgPSBAc2NlbHRhLmZldGNoX3Jvdw0KDQoJCQl1bnRpbCBAY29k aWNlLnZhbHVlID09IEByaWdhWzBdDQoJCQkJQHJpZ2EgPSBAc2NlbHRhLmRh dGFfc2VlayhAY29udGF0b3JlKQ0KCQkJCUByaWdhID0gQHNjZWx0YS5mZXRj aF9yb3cNCgkJCQlAY29udGF0b3JlID0gQGNvbnRhdG9yZSArIDENCgkJCWVu ZA0KCQkJQGNvbnRhdG9yZSA9IEBjb250YXRvcmUgLSAxIGlmIEBjb250YXRv cmUgPjANCgkJCWFzc2VnbmFfdmFyaWFiaWxpDQoJCWVuZA0KCWVuZA0KDQoN CglkZWYgcmVnaXN0cmENCiN+IGFsbGEgdmFyaWFiaWxlIHJlZ2lzdHJhIHNp IGFzc2VnbmEgaWwgdmFsb3JlIHZlcm8uDQojfiBVbiByaXN1bHRhdG8gZmFs c28gZGkgdW4gcXVhbHNpYXNpIHRlc3QgbmUgY2FtYmllcmEnIGlsIHZhbG9y ZSBpbiBmYWxzbywgaW1wZWRlbmRvIGxhIHJlZ2lzdHJhemlvbmUgZGVpIGRh dGkgaW4gbWVtb3JpYS4NCgkJQGRhdGFVbHRpbWFSZWdpc3RyYXppb25lLnZh bHVlID0gQGRhdGFVbHRpbWFSZWdpc3RyYXppb25lLnZhbHVlLnRvX2kgPT0g MCA/IDAgOiBAZGF0YVVsdGltYVJlZ2lzdHJhemlvbmUudmFsdWUNCgkJQG51 bWVyb1VsdGltYVJlZ2lzdHJhemlvbmUudmFsdWUgPSBAbnVtZXJvVWx0aW1h UmVnaXN0cmF6aW9uZS52YWx1ZS50b19zDQoJCUBkYXRhVWx0aW1hU3RhbXBh LnZhbHVlID0gQGRhdGFVbHRpbWFTdGFtcGEudmFsdWUudG9faSA9PSAwID8g MCA6IEBkYXRhVWx0aW1hU3RhbXBhLnZhbHVlDQoJCUBudW1lcm9VbHRpbWFT dGFtcGEudmFsdWUgPSBAbnVtZXJvVWx0aW1hU3RhbXBhLnZhbHVlLnRvX3MN CgkJQHVsdGltb051bWVyb1Byb2dyZXNzaXZvLnZhbHVlID0gQHVsdGltb051 bWVyb1Byb2dyZXNzaXZvLnRvX3MNCgkJQGRlc2NyaXppb25lLnZhbHVlID0g QGRlc2NyaXppb25lLnZhbHVlLnRvX3MudXBjYXNlDQoNCgkJcmVnaXN0cmEg PSB0cnVlDQoJCWlmIEBjb2RpY2UudmFsdWUudG9faSA9PSAwIA0KCQkJcmVn aXN0cmEgPSBmYWxzZQ0KCQkJRlhNZXNzYWdlQm94Lndhcm5pbmcoc2VsZiwg TUJPWF9PSywgIkNvZGljZSBsaWJybyBjb250YWJpbGUiLCAidmFsb3JlICcj e0Bjb2RpY2UudmFsdWV9JyBub24gYW1tZXNzbyBwZXIgcXVlc3RvIGNhbXBv IikNCgkJZW5kDQoNCgkJaWYgQHRpcG9MaWJyby52YWx1ZS50b19pID09IDAg b3IgQHRpcG9MaWJyby52YWx1ZS50b19pID4gMw0KCQkJcmVnaXN0cmEgPSBm YWxzZQ0KCQkJRlhNZXNzYWdlQm94Lndhcm5pbmcoc2VsZiwgTUJPWF9PSywg IkNvZGljZSB0aXBvIGxpYnJvIGNvbnRhYmlsZSIsICJ2YWxvcmUgJyN7QHRp cG9MaWJyby52YWx1ZX0nIG5vbiBhbW1lc3NvIHBlciBxdWVzdG8gY2FtcG8i KQ0KCQllbmQNCg0KCQlpZiByZWdpc3RyYSA9PSB0cnVlDQoJCQliZWdpbg0K CQkJCUBjb25uID0gTXlzcWwubmV3KCJsb2NhbGhvc3QiLCAicm9vdCIsICJ4 Y29saWJyaSIsICJwaXJhbWlkZSIpDQoJCQkJQGNvbm4uYXV0b2NvbW1pdCgw KQ0KCQkJCUBjb25uLnF1ZXJ5KCJSRVBMQUNFIGxpYnJvX2NvbnRhYmlsZSBW QUxVRVMgKCcje0Bjb2RpY2UudmFsdWUudG9fc30nLCcje0BkZXNjcml6aW9u ZS52YWx1ZX0nLCcje0B0aXBvTGlicm8udmFsdWUudG9fc30nLCcje0BkYXRh VWx0aW1hUmVnaXN0cmF6aW9uZS52YWx1ZSA9PSAwID8gJzAwMDAtMDAtMDAn IDogQGRhdGFVbHRpbWFSZWdpc3RyYXppb25lLnZhbHVlfScsJyN7QG51bWVy b1VsdGltYVJlZ2lzdHJhemlvbmUudmFsdWUudG9fc30nLCcje0BkYXRhVWx0 aW1hU3RhbXBhLnZhbHVlID09IDAgPyAnMDAwMC0wMC0wMCcgOiBAZGF0YVVs dGltYVN0YW1wYS52YWx1ZX0nLCcje0BudW1lcm9VbHRpbWFTdGFtcGEudmFs dWUudG9fc30nLCcje0B1bHRpbW9OdW1lcm9Qcm9ncmVzc2l2by52YWx1ZS50 b19zfScpIikNCgkJCQlAY29ubi5jb21taXQNCgkJCQlAY29ubi5jbG9zZQ0K CQkJcmVzY3VlIE15c3FsRXJyb3IgPT4gZQ0KCQkJCUBjb25uLnJvbGxiYWNr DQoJCQkJQGNvbm4uY2xvc2UNCgkJCQlwcmludCAiZXJyb3IgY29kZTogIiwg ZS5lcnJubywgIlxuIg0KCQkJCXByaW50ICJlcnJvciBtZXNzYWdlOiAiLCBl LmVycm9yLCAiXG4iDQoJCQllbmQNCgkJCWNhcmljYV9kYXRpDQoJCQlhenpl cmFfdmFyaWFiaWxpDQoJCWVuZA0KCWVuZA0KDQoJZGVmIGNhbmNlbGxhX3Jl Y29yZA0KCQlpZiAoQGNvbnRhdG9yZSA8PSAoIiN7QHNjZWx0YS5udW1fcm93 c30iLnRvX2kgLSAxKSkNCgkJCW1lc3NhZ2dpbyA9IEZYTWVzc2FnZUJveC5x dWVzdGlvbigNCgkJCQlzZWxmLA0KCQkJCU1CT1hfWUVTX05PLA0KCQkJCSJB dHRlbnppb25lICEhISIsDQoJCQkJIlNpIHN0YW5ubyBjYW5jZWxsYW5kbyBk ZWkgZGF0aTogY29uZmVybWFyZSBsXCdvcGVyYXppb25lID8iKQ0KCQkJaWYg bWVzc2FnZ2lvID09IE1CT1hfQ0xJQ0tFRF9ZRVMNCgkJCQlAY29ubiA9IE15 c3FsLm5ldygibG9jYWxob3N0IiwgInJvb3QiLCAieGNvbGlicmkiLCAicGly YW1pZGUiKQ0KCQkJCUBjb25uLmF1dG9jb21taXQoMCkNCgkJCQlAY29ubi5x dWVyeSgiREVMRVRFIEZST00gbGlicm9fY29udGFiaWxlIFdIRVJFIGNvZGlj ZSA9ICcje0Bjb2RpY2UudmFsdWV9JyIpDQoJCQkJQGNvbm4uY29tbWl0DQoJ CQkJQGNvbm4uY2xvc2UNCgkJCQljYXJpY2FfZGF0aQ0KCQkJCWF6emVyYV92 YXJpYWJpbGkNCgkJCWVuZA0KCQllbmQNCgllbmQNCg0KCWRlZiBhenplcmFf dmFyaWFiaWxpDQoJCUBjb250YXRvcmUgPSAwDQoJCUBjb2RpY2UudmFsdWUg PSAwDQoJCUBkZXNjcml6aW9uZS52YWx1ZSA9ICIiDQoJCUB0aXBvTGlicm8u dmFsdWUgPSAwDQoJCUBkYXRhVWx0aW1hUmVnaXN0cmF6aW9uZS52YWx1ZSA9 IDANCgkJQG51bWVyb1VsdGltYVJlZ2lzdHJhemlvbmUudmFsdWUgPSAwDQoJ CUBkYXRhVWx0aW1hU3RhbXBhLnZhbHVlID0gMA0KCQlAbnVtZXJvVWx0aW1h U3RhbXBhLnZhbHVlID0gMA0KCQlAdWx0aW1vTnVtZXJvUHJvZ3Jlc3Npdm8u dmFsdWUgPSAwDQoJZW5kDQoNCglkZWYgYXNzZWduYV92YXJpYWJpbGkNCgkJ QHJpZ2EgPSBAc2NlbHRhLmRhdGFfc2VlayhAY29udGF0b3JlKQ0KCQlAcmln YSA9IEBzY2VsdGEuZmV0Y2hfcm93DQoJCUBjb2RpY2UudmFsdWUgPSBAcmln YVswXS50b19pDQoJCUBkZXNjcml6aW9uZS52YWx1ZSA9IEByaWdhWzFdDQoJ CUB0aXBvTGlicm8udmFsdWUgPSBAcmlnYVsyXS50b19pDQoJCUBkYXRhVWx0 aW1hUmVnaXN0cmF6aW9uZS52YWx1ZSA9IEByaWdhWzNdDQoJCUBudW1lcm9V bHRpbWFSZWdpc3RyYXppb25lLnZhbHVlID0gQHJpZ2FbNF0udG9faQ0KCQlA ZGF0YVVsdGltYVN0YW1wYS52YWx1ZSA9IEByaWdhWzVdDQoJCUBudW1lcm9V bHRpbWFTdGFtcGEudmFsdWUgPSBAcmlnYVs2XS50b19pDQoJCUB1bHRpbW9O dW1lcm9Qcm9ncmVzc2l2by52YWx1ZSA9IEByaWdhWzddLnRvX2kNCgllbmQN CgkNCglkZWYgY2FyaWNhX2RhdGkNCgkJYmVnaW4NCgkJCUBjb25uID0gTXlz cWwubmV3KCJsb2NhbGhvc3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJwaXJh bWlkZSIpDQoJCQlAc2NlbHRhID0gQGNvbm4ucXVlcnkoIlNFTEVDVCAqIEZS T00gbGlicm9fY29udGFiaWxlIikNCgkJCUBjb250YXRvcmUgPSAiI3tAc2Nl bHRhLm51bV9yb3dzfSIudG9faQ0KCQkJQGNvbm4uY2xvc2UNCgkJcmVzY3Vl DQoJCQlAY29ubi5jbG9zZQ0KCQkJcHJpbnQgImVycm9yIGNvZGU6ICIsIGUu ZXJybm8sICIvbiINCgkJCXByaW50ICJFcnJvciBtZXNzYWdlOiAiLCBlLmVy cm9yLCAiL24iDQoJCWVuZA0KCWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJh MTA4MDkgPCBGWERpYWxvZ0JveCAjZmluZXN0cmEgcGVyIGwnaW5zZXJpbWVu dG8gZGVpIHRpcGkgZGkgZG9jdW1lbnRpIGl2YQ0KCWRlZiBpbml0aWFsaXpl KGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJQGNvbnRhdG9y ZSA9IDANCgkJQHJpZ2EgPSBuaWwNCiNjYXJpY2EgaW4gbWVtb3JpYSB0dXR0 byBpbCBwaWFubyBkZWkgY29udGkNCgkJY2FyaWNhX2RhdGkNCiNkaXNlZ25h IGxhIGZpbmVzdHJhICAgIA0KCQlzdXBlcihhcHAsICJQUk9HUkFNTUEgUElS QU1JREUiLCA6b3B0cyA9PiBERUNPUl9BTEwsIDp4ID0+IDIwLCA6eSA9PiAy MCwgOndpZHRoID0+IDgwMCwgOmhlaWdodCA9PiAyNTApDQoJCWFyZWEgPSBG WFBhY2tlci5uZXcoc2VsZiwgOm9wdHMgPT4gTEFZT1VUX0ZJTEwsIDp2U3Bh Y2luZyA9PiAzMCwgOmhTcGFjaW5nID0+IDUwKQ0KCQlncnVwcG8xID0gRlhH cm91cEJveC5uZXcoYXJlYSwgIiIsIDp2U3BhY2luZyA9PiAwKQ0KCQl2VGVz dGEwID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzEsIDpvcHRzID0+ IExBWU9VVF9TSURFX1RPUHxQQUNLX1VOSUZPUk1fV0lEVEgsIDpwYWRCb3R0 b20gPT4gMTApDQoJCUZYTGFiZWwubmV3KHZUZXN0YTAsICJHRVNUSU9ORSBU QUJFTExBIERFTExFIE9QRVJBWklPTkkgSVZBIiwgbmlsLCBKVVNUSUZZX0NF TlRFUl9YfExBWU9VVF9GSUxMX1JPVywgOnBhZFJpZ2h0ID0+IDEyOCkNCg0K CQl2VGVzdGExID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzEsIDpv cHRzID0+IExBWU9VVF9TSURFX1RPUHxQQUNLX1VOSUZPUk1fV0lEVEgpDQoJ CUZYQnV0dG9uLm5ldyh2VGVzdGExLCAnUHJpbW8gcmVjb3JkJywgOnBhZExl ZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUpLmNvbm5lY3QoU0VMX0NPTU1BTkQp IHtwcmltb19yZWNvcmQgfQ0KCQlGWEJ1dHRvbi5uZXcodlRlc3RhMSwgJ1Jl Y29yZCBwcmVjZWRlbnRlJywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+ IDUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHtwcmVjZWRlbnRlX3JlY29yZH0N CgkJRlhCdXR0b24ubmV3KHZUZXN0YTEsICdSZWNvcmQgc3VjY2Vzc2l2bycs IDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1KS5jb25uZWN0KFNFTF9D T01NQU5EKSB7c3VjY2Vzc2l2b19yZWNvcmR9DQoJCUZYQnV0dG9uLm5ldyh2 VGVzdGExLCAnVWx0aW1vIHJlY29yZCcsIDpwYWRMZWZ0ID0+IDUsIDpwYWRS aWdodCA9PiA1KS5jb25uZWN0KFNFTF9DT01NQU5EKSB7dWx0aW1vX3JlY29y ZH0NCgkJRlhCdXR0b24ubmV3KHZUZXN0YTEsICdOdW92byByZWNvcmQnLCA6 cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSkuY29ubmVjdChTRUxfQ09N TUFORCkge251b3ZvX3JlY29yZH0NCg0KCQlncnVwcG8yID0gRlhHcm91cEJv eC5uZXcoYXJlYSwgIiIsIDp2U3BhY2luZyA9PiAwKQ0KCQl2TGluZWExID0g RlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+IExBWU9V VF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBjb2RpY2UgPSBGWERh dGFUYXJnZXQubmV3KDApDQoJCUZYQnV0dG9uLm5ldyh2TGluZWExLCAnPycs IDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1LCA6cGFkVG9wID0+MCwg OnBhZEJvdHRvbSA9PiAwKS5jb25uZWN0KFNFTF9DT01NQU5EKSB7DQoJCQkk dmFyID0gW10NCgkJCXJpY2VyY2EgPSBGaW5lc3RyYTkwMDE4Lm5ldyhzZWxm KQ0KCQkJcmljZXJjYS5leGVjdXRlKFBMQUNFTUVOVF9DVVJTT1IpDQoJCQlA Y29kaWNlLnZhbHVlID0gJHZhclswXQ0KCQkJQGRlc2NyaXppb25lLnZhbHVl ID0gJHZhclsxXQ0KCQkJJHZhciA9IFtdDQoJCQl2YWlfYV9yZWNvcmQNCgkJ CX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhMSwgIkNvZGljZSBkZWwgdGlwbyBk aSBvcGVyYXppb25lIGl2YSIsIG5pbCwgSlVTVElGWV9SSUdIVHxMQVlPVVRf RklMTF9ST1csIDpwYWRSaWdodCA9PiAxMjgpDQoJCUZYVGV4dEZpZWxkLm5l dyh2TGluZWExLCAzLCA6dGFyZ2V0ID0+IEBjb2RpY2UsIDpzZWxlY3RvciA9 PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5L RU58RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVMRF9MSU1J VEVEfFRFWFRGSUVMRF9JTlRFR0VSfEpVU1RJRllfUklHSFQpDQoNCgkJdkxp bmVhMiA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0cyA9 PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAZGVzY3Jp emlvbmUgPSBGWERhdGFUYXJnZXQubmV3KCIiKQ0KCQlGWExhYmVsLm5ldyh2 TGluZWEyLCAiRGVzY3JpemlvbmUgZGVsIHRpcG8gZGkgb3BlcmF6aW9uZSBp dmEiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFk TGVmdCA9PiAyNiwgOnBhZFJpZ2h0ID0+IDEwNCkNCgkJRlhUZXh0RmllbGQu bmV3KHZMaW5lYTIsIDMwLCA6dGFyZ2V0ID0+IEBkZXNjcml6aW9uZSwgOnNl bGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZS QU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJ RUxEX0xJTUlURUQpDQoNCgkJZ3J1cHBvNCA9IEZYR3JvdXBCb3gubmV3KGFy ZWEsICIiLCA6dlNwYWNpbmcgPT4gMCkNCgkJdkZvbmRvID0gRlhIb3Jpem9u dGFsRnJhbWUubmV3KGdydXBwbzQsIDpvcHRzID0+IExBWU9VVF9TSURFX0JP VFRPTXxQQUNLX1VOSUZPUk1fV0lEVEgpDQoJCUZYQnV0dG9uLm5ldyh2Rm9u ZG8sICdDYW5jZWxsYScsIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmlnaHQgPT4g MjUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHtjYW5jZWxsYV9yZWNvcmR9DQoJ CUZYQnV0dG9uLm5ldyh2Rm9uZG8sICdBbm51bGxhJywgOnBhZExlZnQgPT4g MjUsIDpwYWRSaWdodCA9PiAyNSkuY29ubmVjdChTRUxfQ09NTUFORCkge2F6 emVyYV92YXJpYWJpbGl9DQoJCUZYQnV0dG9uLm5ldyh2Rm9uZG8sICdSZWdp c3RyYScsIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmlnaHQgPT4gMjUpLmNvbm5l Y3QoU0VMX0NPTU1BTkQpIHtyZWdpc3RyYX0NCgkJRlhCdXR0b24ubmV3KHZG b25kbywgJ0VzY2knLCA6dGFyZ2V0ID0+IHNlbGYsIDpzZWxlY3RvciA9PiBG WERpYWxvZ0JveDo6SURfQ0FOQ0VMLCA6cGFkTGVmdCA9PiAyNSwgOnBhZFJp Z2h0ID0+IDI1KQ0KCQlhenplcmFfdmFyaWFiaWxpDQoJZW5kDQoNCglkZWYg cHJpbW9fcmVjb3JkDQoJCUBjb250YXRvcmUgPSAwDQoJCUBzY2VsdGEubnVt X3Jvd3MgPT0gMCA/IGF6emVyYV92YXJpYWJpbGkgOiBhc3NlZ25hX3Zhcmlh YmlsaQ0KCWVuZA0KDQoJZGVmIHByZWNlZGVudGVfcmVjb3JkDQoJCWlmIEBz Y2VsdGEubnVtX3Jvd3MgPT0gMCB0aGVuCQkNCgkJCUBjb250YXRvcmUgPSAw DQoJCQlhenplcmFfdmFyaWFiaWxpDQoJCWVsc2UNCgkJCUBjb250YXRvcmUg LSAxIDwwID8gQGNvbnRhdG9yZSA9IDAgOiBAY29udGF0b3JlID0gQGNvbnRh dG9yZSAtMQ0KCQkJYXNzZWduYV92YXJpYWJpbGkNCgkJZW5kDQoJZW5kDQoN CglkZWYgc3VjY2Vzc2l2b19yZWNvcmQNCgkJaWYgQHNjZWx0YS5udW1fcm93 cyA9PSAwCQkNCgkJCUBjb250YXRvcmUgPSAwDQoJCQlhenplcmFfdmFyaWFi aWxpDQoJCWVsc2UNCgkJCUBjb250YXRvcmUgPj0gKCIje0BzY2VsdGEubnVt X3Jvd3N9Ii50b19pIC0gMSkgPyBAY29udGF0b3JlID0gKCIje0BzY2VsdGEu bnVtX3Jvd3N9Ii50b19pIC0gMSkgOiBAY29udGF0b3JlID0gQGNvbnRhdG9y ZSArIDENCgkJCWFzc2VnbmFfdmFyaWFiaWxpDQoJCWVuZA0KCWVuZA0KDQoJ ZGVmIHVsdGltb19yZWNvcmQNCgkJaWYgQHNjZWx0YS5udW1fcm93cyA9PSAw IHRoZW4JCQ0KCQkJQGNvbnRhdG9yZSA9IDANCgkJCWF6emVyYV92YXJpYWJp bGkNCgkJZWxzZQ0KCQkJQGNvbnRhdG9yZSA9ICgiI3tAc2NlbHRhLm51bV9y b3dzfSIudG9faSAtIDEpDQoJCQlhc3NlZ25hX3ZhcmlhYmlsaQ0KCQllbmQN CgllbmQNCg0KCWRlZiBudW92b19yZWNvcmQNCgkJYXp6ZXJhX3ZhcmlhYmls aQ0KCWVuZA0KDQoJZGVmIHZhaV9hX3JlY29yZA0KCQlpZiBAY29kaWNlLnZh bHVlLnRvX2kgICE9IDANCgkJCUBjb250YXRvcmUgPSAwDQoJCQlAcmlnYSA9 IEBzY2VsdGEuZGF0YV9zZWVrKEBjb250YXRvcmUpDQoJCQlAcmlnYSA9IEBz Y2VsdGEuZmV0Y2hfcm93DQoNCgkJCXVudGlsIEBjb2RpY2UudmFsdWUgPT0g QHJpZ2FbMF0NCgkJCQlAcmlnYSA9IEBzY2VsdGEuZGF0YV9zZWVrKEBjb250 YXRvcmUpDQoJCQkJQHJpZ2EgPSBAc2NlbHRhLmZldGNoX3Jvdw0KCQkJCUBj b250YXRvcmUgPSBAY29udGF0b3JlICsgMQ0KCQkJZW5kDQoJCQlAY29udGF0 b3JlID0gQGNvbnRhdG9yZSAtIDEgaWYgQGNvbnRhdG9yZSA+MA0KCQkJYXNz ZWduYV92YXJpYWJpbGkNCgkJZW5kDQoJZW5kDQoNCglkZWYgcmVnaXN0cmEN CiN+IGFsbGEgdmFyaWFiaWxlIHJlZ2lzdHJhIHNpIGFzc2VnbmEgaWwgdmFs b3JlIHZlcm8uDQojfiBVbiByaXN1bHRhdG8gZmFsc28gZGkgdW4gcXVhbHNp YXNpIHRlc3QgbmUgY2FtYmllcmEnIGlsIHZhbG9yZSBpbiBmYWxzbywgaW1w ZWRlbmRvIGxhIHJlZ2lzdHJhemlvbmUgZGVpIGRhdGkgaW4gbWVtb3JpYS4N CgkJQGRlc2NyaXppb25lLnZhbHVlID0gQGRlc2NyaXppb25lLnZhbHVlLnRv X3MudXBjYXNlDQoNCgkJcmVnaXN0cmEgPSB0cnVlDQoJCWlmIEBjb2RpY2Uu dmFsdWUudG9faSA9PSAwIA0KCQkJcmVnaXN0cmEgPSBmYWxzZQ0KCQkJRlhN ZXNzYWdlQm94Lndhcm5pbmcoc2VsZiwgTUJPWF9PSywgIkNvZGljZSBvcGVy YXppb25lIGl2YSIsICJ2YWxvcmUgJyN7QGNvZGljZS52YWx1ZX0nIG5vbiBh bW1lc3NvIHBlciBxdWVzdG8gY2FtcG8iKQ0KCQllbmQNCg0KCQlpZiByZWdp c3RyYSA9PSB0cnVlDQoJCQliZWdpbg0KCQkJCUBjb25uID0gTXlzcWwubmV3 KCJsb2NhbGhvc3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJwaXJhbWlkZSIp DQoJCQkJQGNvbm4uYXV0b2NvbW1pdCgwKQ0KCQkJCUBjb25uLnF1ZXJ5KCJS RVBMQUNFIG9wZXJhemlvbmVfaXZhIFZBTFVFUyAoJyN7QGNvZGljZS52YWx1 ZS50b19zfScsJyN7QGRlc2NyaXppb25lLnZhbHVlfScpIikNCgkJCQlAY29u bi5jb21taXQNCgkJCQlAY29ubi5jbG9zZQ0KCQkJcmVzY3VlIE15c3FsRXJy b3IgPT4gZQ0KCQkJCUBjb25uLnJvbGxiYWNrDQoJCQkJQGNvbm4uY2xvc2UN CgkJCQlwcmludCAiZXJyb3IgY29kZTogIiwgZS5lcnJubywgIlxuIg0KCQkJ CXByaW50ICJlcnJvciBtZXNzYWdlOiAiLCBlLmVycm9yLCAiXG4iDQoJCQll bmQNCgkJCWNhcmljYV9kYXRpDQoJCQlhenplcmFfdmFyaWFiaWxpDQoJCWVu ZA0KCWVuZA0KDQoJZGVmIGNhbmNlbGxhX3JlY29yZA0KCQlpZiAoQGNvbnRh dG9yZSA8PSAoIiN7QHNjZWx0YS5udW1fcm93c30iLnRvX2kgLSAxKSkNCgkJ CW1lc3NhZ2dpbyA9IEZYTWVzc2FnZUJveC5xdWVzdGlvbigNCgkJCQlzZWxm LA0KCQkJCU1CT1hfWUVTX05PLA0KCQkJCSJBdHRlbnppb25lICEhISIsDQoJ CQkJIlNpIHN0YW5ubyBjYW5jZWxsYW5kbyBkZWkgZGF0aTogY29uZmVybWFy ZSBsXCdvcGVyYXppb25lID8iKQ0KCQkJaWYgbWVzc2FnZ2lvID09IE1CT1hf Q0xJQ0tFRF9ZRVMNCgkJCQlAY29ubiA9IE15c3FsLm5ldygibG9jYWxob3N0 IiwgInJvb3QiLCAieGNvbGlicmkiLCAicGlyYW1pZGUiKQ0KCQkJCUBjb25u LmF1dG9jb21taXQoMCkNCgkJCQlAY29ubi5xdWVyeSgiREVMRVRFIEZST00g b3BlcmF6aW9uZV9pdmEgV0hFUkUgY29kaWNlID0gJyN7QGNvZGljZS52YWx1 ZX0nIikNCgkJCQlAY29ubi5jb21taXQNCgkJCQlAY29ubi5jbG9zZQ0KCQkJ CWNhcmljYV9kYXRpDQoJCQkJYXp6ZXJhX3ZhcmlhYmlsaQ0KCQkJZW5kDQoJ CWVuZA0KCWVuZA0KDQoJZGVmIGF6emVyYV92YXJpYWJpbGkNCgkJQGNvbnRh dG9yZSA9IDANCgkJQGNvZGljZS52YWx1ZSA9IDANCgkJQGRlc2NyaXppb25l LnZhbHVlID0gIiINCgllbmQNCg0KCWRlZiBhc3NlZ25hX3ZhcmlhYmlsaQ0K CQlAcmlnYSA9IEBzY2VsdGEuZGF0YV9zZWVrKEBjb250YXRvcmUpDQoJCUBy aWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJQGNvZGljZS52YWx1ZSA9IEBy aWdhWzBdLnRvX2kNCgkJQGRlc2NyaXppb25lLnZhbHVlID0gQHJpZ2FbMV0N CgllbmQNCgkNCglkZWYgY2FyaWNhX2RhdGkNCgkJYmVnaW4NCgkJCUBjb25u ID0gTXlzcWwubmV3KCJsb2NhbGhvc3QiLCAicm9vdCIsICJ4Y29saWJyaSIs ICJwaXJhbWlkZSIpDQoJCQlAc2NlbHRhID0gQGNvbm4ucXVlcnkoIlNFTEVD VCAqIEZST00gb3BlcmF6aW9uZV9pdmEiKQ0KCQkJQGNvbnRhdG9yZSA9ICIj e0BzY2VsdGEubnVtX3Jvd3N9Ii50b19pDQoJCQlAY29ubi5jbG9zZQ0KCQly ZXNjdWUNCgkJCUBjb25uLmNsb3NlDQoJCQlwcmludCAiZXJyb3IgY29kZTog IiwgZS5lcnJubywgIi9uIg0KCQkJcHJpbnQgIkVycm9yIG1lc3NhZ2U6ICIs IGUuZXJyb3IsICIvbiINCgkJZW5kDQoJZW5kDQplbmQNCg0KY2xhc3MgRmlu ZXN0cmE4IDwgRlhEaWFsb2dCb3gNCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0K CWRlZiBpbml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xh c3MNCgkJc3VwZXIoYXBwLCAiUFJPR1JBTU1BIFBJUkFNSURFIiwgOm9wdHMg PT4gREVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9PiA2 MDAsIDpoZWlnaHQgPT4gNDAwKQ0KCQkjIE1lbnViYXINCgkJbWVudWJhcjEg PSBGWE1lbnVCYXIubmV3KHNlbGYsIExBWU9VVF9TSURFX1RPUHxMQVlPVVRf RklMTF9YKQ0KCQkjIEZpbGUgbWVudQ0KCQlmaWxlbWVudTEgPSBGWE1lbnVQ YW5lLm5ldyhzZWxmKQ0KCQlhcmNoaXZpdGFiZWxsZW1lbnUxID0gRlhNZW51 UGFuZS5uZXcoc2VsZikNCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRh YmVsbGVtZW51MSwgIlNjcml0dHVyZSBkaSBQcmltYSBOb3RhIikuY29ubmVj dChTRUxfQ09NTUFORCkgew0KCQlmaW5lc3RyYSA9IEZpbmVzdHJhODAxLm5l dyhzZWxmKQ0KCQlmaW5lc3RyYS5leGVjdXRlKFBMQUNFTUVOVF9DVVJTT1Ip DQoJCX0NCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRhYmVsbGVtZW51 MSwgIkludGVycm9nYXppb25pIGUgU3RhbXBlIikuY29ubmVjdChTRUxfQ09N TUFORCkgew0KCQkJZmluZXN0cmEgPSBGaW5lc3RyYTgwMi5uZXcoc2VsZikN CgkJCWZpbmVzdHJhLmV4ZWN1dGUoUExBQ0VNRU5UX0NVUlNPUikNCgkJfQ0K CQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUxLCAiQmls YW5jaSBkaSBFc2VyY2l6aW8iKS5jb25uZWN0KFNFTF9DT01NQU5EKSB7DQoJ CQlmaW5lc3RyYSA9IEZpbmVzdHJhODAzLm5ldyhzZWxmKQ0KCQkJZmluZXN0 cmEuZXhlY3V0ZShQTEFDRU1FTlRfQ1VSU09SKQ0KCQl9DQoJCUZYTWVudUNv bW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVudTEsICJTZXJ2aXppIEZpbmFu emlhcmkgZWQgQW1taW5pc3RyYXRpdmkiKS5jb25uZWN0KFNFTF9DT01NQU5E KSB7DQoJCQlmaW5lc3RyYSA9IEZpbmVzdHJhODA0Lm5ldyhzZWxmKQ0KCQkJ ZmluZXN0cmEuZXhlY3V0ZShQTEFDRU1FTlRfQ1VSU09SKQ0KCQl9DQoJCUZY TWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVudTEsICJDaGl1c3Vy YS9BcGVydHVyYSBFc2VyY2l6aSIpLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsN CgkJCWZpbmVzdHJhID0gRmluZXN0cmE4MDUubmV3KHNlbGYpDQoJCQlmaW5l c3RyYS5leGVjdXRlKFBMQUNFTUVOVF9DVVJTT1IpDQoJCX0NCgkJRlhNZW51 VGl0bGUubmV3KG1lbnViYXIxLCAiR2VzdGlvbmUgZGVsbFwnQW1taW5pc3Ry YXppb25lIiwgOnBvcHVwTWVudSA9PiBhcmNoaXZpdGFiZWxsZW1lbnUxKQ0K CQlGWEhvcml6b250YWxTZXBhcmF0b3IubmV3KHNlbGYsIExBWU9VVF9TSURF X1RPUHxTRVBBUkFUT1JfR1JPT1ZFfExBWU9VVF9GSUxMX1gpDQoJZW5kDQpl bmQNCg0KY2xhc3MgRmluZXN0cmE4MDEgPCBGWERpYWxvZ0JveA0KCSNkZWYg aW5pdGlhbGl6ZShhcHApDQoJZGVmIGluaXRpYWxpemUoYXBwKQ0KCQkjIElu aXRpYWxpemUgYmFzZSBjbGFzcw0KCQlzdXBlcihhcHAsICJQUk9HUkFNTUEg UElSQU1JREUiLCA6b3B0cyA9PiBERUNPUl9BTEwsIDp4ID0+IDIwLCA6eSA9 PiAyMCwgOndpZHRoID0+IDYwMCwgOmhlaWdodCA9PiA0MDApDQoJCSMgTWVu dWJhcg0KCQltZW51YmFyID0gRlhNZW51QmFyLm5ldyhzZWxmLCBMQVlPVVRf U0lERV9UT1B8TEFZT1VUX0ZJTExfWCkNCgkJIyBGaWxlIG1lbnUNCgkJZmls ZW1lbnUgPSBGWE1lbnVQYW5lLm5ldyhzZWxmKQ0KCQlhcmNoaXZpdGFiZWxs ZW1lbnUgPSBGWE1lbnVQYW5lLm5ldyhzZWxmKQ0KCQlGWE1lbnVDb21tYW5k Lm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUsICJQcmltYSBOb3RhIGRpIENvbnRh YmlsaXRhXCcgR2VuZXJhbGUiKS5jb25uZWN0KFNFTF9DT01NQU5EKSB7DQoJ CQlmaW5lc3RyYSA9IEZpbmVzdHJhODAxMDEubmV3KHNlbGYpDQoJCQlmaW5l c3RyYS5leGVjdXRlKFBMQUNFTUVOVF9DVVJTT1IpDQoJCQl9DQoJCUZYTWVu dVNlcGFyYXRvci5uZXcoYXJjaGl2aXRhYmVsbGVtZW51KQ0KCQlGWE1lbnVD b21tYW5kLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUsICJQcmltYSBOb3RhIEZv cm5pdG9yaSIpDQoJCUZYTWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxl bWVudSwgIkNvbnRyb2xsbyBGYXR0dXJlIC8gRG9jdW1lbnRpIGRpIFRyYXNw b3J0byIpDQoJCUZYTWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVu dSwgIlBhZ2FtZW50aSBhIEZvcm5pdG9yaSIpDQoJCUZYTWVudUNvbW1hbmQu bmV3KGFyY2hpdml0YWJlbGxlbWVudSwgIkF2dmlzaSBkaSBQYWdhbWVudG8g ZGEgRm9ybml0b3JpIikNCgkJRlhNZW51U2VwYXJhdG9yLm5ldyhhcmNoaXZp dGFiZWxsZW1lbnUpDQoJCUZYTWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJl bGxlbWVudSwgIlByaW1hIE5vdGEgQ2xpZW50aSIpDQoJCUZYTWVudUNvbW1h bmQubmV3KGFyY2hpdml0YWJlbGxlbWVudSwgIkluY2Fzc2kgZGEgQ2xpZW50 aSIpDQoJCUZYTWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVudSwg IkF2dmlzaSBkaSBQYWdhbWVudG8gYSBDbGllbnRpIikNCgkJRlhNZW51U2Vw YXJhdG9yLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUpDQoJCUZYTWVudUNvbW1h bmQubmV3KGFyY2hpdml0YWJlbGxlbWVudSwgIlByaW1hIE5vdGEgRmluYW56 aWFtZW50byBDcmVkaXRpIikNCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2 aXRhYmVsbGVtZW51LCAiUHJpbWEgTm90YSBQb3J0YWZvZ2xpbyBSaS5CYS4i KQ0KCQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUsICJQ cmltYSBOb3RhIEZpZGVpdXNzaW9uaSIpDQoJCUZYTWVudVRpdGxlLm5ldyht ZW51YmFyLCAiUHJpbWUgTm90ZSIsIDpwb3B1cE1lbnUgPT4gYXJjaGl2aXRh YmVsbGVtZW51KQ0KCWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJhODAxMDEg PCBGWERpYWxvZ0JveA0KCSNkZWYgaW5pdGlhbGl6ZShhcHApDQoJZGVmIGlu aXRpYWxpemUoYXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBjbGFzcw0KCQlz dXBlcihhcHAsICJQUk9HUkFNTUEgUElSQU1JREUiLCA6b3B0cyA9PiBERUNP Ul9BTEwsIDp4ID0+IDIwLCA6eSA9PiAyMCwgOndpZHRoID0+IDgwMCwgOmhl aWdodCA9PiA3MDApDQoJICANCgkJYXJlYSA9IEZYUGFja2VyLm5ldyhzZWxm LCA6b3B0cyA9PiBMQVlPVVRfRklMTCwgOnZTcGFjaW5nID0+IDEwLCA6aFNw YWNpbmcgPT4gNTApDQoNCgkJZ3J1cHBvMSA9IEZYR3JvdXBCb3gubmV3KGFy ZWEsICIiLCA6dlNwYWNpbmcgPT4gMCkNCgkJdlRlc3RhID0gRlhIb3Jpem9u dGFsRnJhbWUubmV3KGdydXBwbzEsIDpvcHRzID0+IExBWU9VVF9TSURFX1RP UHxQQUNLX1VOSUZPUk1fV0lEVEgpDQoJCUZYQnV0dG9uLm5ldyh2VGVzdGEs ICdSaWNlcmNhIC4uLicsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1 KQ0KCQlGWEJ1dHRvbi5uZXcodlRlc3RhLCAnUHJpbW8gcmVjb3JkJywgOnBh ZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUpDQoJCUZYQnV0dG9uLm5ldyh2 VGVzdGEsICdSZWNvcmQgcHJlY2VkZW50ZScsIDpwYWRMZWZ0ID0+IDUsIDpw YWRSaWdodCA9PiA1KQ0KCQlGWEJ1dHRvbi5uZXcodlRlc3RhLCAnUmVjb3Jk IHN1Y2Nlc3Npdm8nLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSkN CgkJRlhCdXR0b24ubmV3KHZUZXN0YSwgJ1VsdGltbyByZWNvcmQnLCA6cGFk TGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSkNCgkJRlhCdXR0b24ubmV3KHZU ZXN0YSwgJ051b3ZvIHJlY29yZCcsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdo dCA9PiA1KQ0KDQoJCWdydXBwbzIgPSBGWEdyb3VwQm94Lm5ldyhhcmVhLCAi IiwgOnZTcGFjaW5nID0+IDApDQoJCUBkYXRhUmVnaXN0cmF6aW9uZSA9IEZY RGF0YVRhcmdldC5uZXcoIiIpDQoJCXZMaW5lYTEgPSBGWEhvcml6b250YWxG cmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6 dlNwYWNpbmcgPT4gMCkNCgkJRlhMYWJlbC5uZXcodkxpbmVhMSwgIkRhdGEg ZGkgcmVnaXN0cmF6aW9uZSIsIG5pbCwgOm9wdHMgPT4gSlVTVElGWV9SSUdI VHxMQVlPVVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmlnaHQg PT4gMTAwKQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhMSwgMTAsIDp0YXJn ZXQgPT4gQGRhdGFSZWdpc3RyYXppb25lLCA6c2VsZWN0b3IgPT4gRlhEYXRh VGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VOfEZSQU1F X1RISUNLfExBWU9VVF9GSUxMX1JPV3xURVhURklFTERfTElNSVRFRCkNCg0K CQl2TGluZWEyID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpv cHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBj b2RpY2VDYXVzYWxlLCBAZGVzY3JpemlvbmVDYXVzYWxlID0gRlhEYXRhVGFy Z2V0Lm5ldygiIikNCgkJRlhCdXR0b24ubmV3KHZMaW5lYTIsICc/JywgOnBh ZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUsIDpwYWRUb3AgPT4wLCA6cGFk Qm90dG9tID0+IDApDQoJCUZYTGFiZWwubmV3KHZMaW5lYTIsICJDb2RpY2Ug Y2F1c2FsZSIsIG5pbCwgSlVTVElGWV9SSUdIVHxMQVlPVVRfRklMTF9ST1cs IDpwYWRSaWdodCA9PiAxMjgpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWEy LCAzLCA6dGFyZ2V0ID0+IEBjb2RpY2VDYXVzYWxlLCA6c2VsZWN0b3IgPT4g RlhEYXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT5GUkFNRV9TVU5LRU58 RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVMRF9MSU1JVEVE fFRFWFRGSUVMRF9JTlRFR0VSKQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVh MiwgNTAsIEBkZXNjcml6aW9uZUNhdXNhbGUsIEZYRGF0YVRhcmdldDo6SURf VkFMVUUsIEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9S T1d8VEVYVEZJRUxEX1JFQURPTkxZKQ0KDQoJCXZMaW5lYTMgPSBGWEhvcml6 b250YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVf VE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJRlhMYWJlbC5uZXcodkxpbmVhMywg IkVzdHJlbWkgZGVsIGRvY3VtZW50bzoiLCBuaWwsIEpVU1RJRllfUklHSFR8 TEFZT1VUX0ZJTExfUk9XLCA6cGFkTGVmdCA9PiAyNSkNCg0KCQl2TGluZWE0 ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+IExB WU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBudW1lcm9Eb2N1 bWVudG8gPSBGWERhdGFUYXJnZXQubmV3KCIiKQ0KCQlGWExhYmVsLm5ldyh2 TGluZWE0LCAiTnVtZXJvIiwgbmlsLCBKVVNUSUZZX1JJR0hUfExBWU9VVF9G SUxMX1JPVywgOnBhZExlZnQgPT4gMTA1LCA6cGFkUmlnaHQgPT4gODUpDQoJ CUZYVGV4dEZpZWxkLm5ldyh2TGluZWE0LCAxMCwgOnRhcmdldCA9PiBAbnVt ZXJvRG9jdW1lbnRvLCA6c2VsZWN0b3IgPT4gRlhEYXRhVGFyZ2V0OjpJRF9W QUxVRSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VOfEZSQU1FX1RISUNLfExBWU9V VF9GSUxMX1JPVykNCg0KCQl2TGluZWE1ID0gRlhIb3Jpem9udGFsRnJhbWUu bmV3KGdydXBwbzIsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFj aW5nID0+IDApDQoJCUBkYXRhRG9jdW1lbnRvID0gRlhEYXRhVGFyZ2V0Lm5l dygiIikNCgkJRlhMYWJlbC5uZXcodkxpbmVhNSwgIkRhdGEiLCBuaWwsIEpV U1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkTGVmdCA9PiAxMDUs IDpwYWRSaWdodCA9PiA5OCkNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTUs IDEwLCA6dGFyZ2V0ID0+IEBkYXRhRG9jdW1lbnRvLCA6c2VsZWN0b3IgPT4g RlhEYXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VO fEZSQU1FX1RISUNLfExBWU9VVF9GSUxMX1JPVykNCg0KCQlncnVwcG8zID0g RlhHcm91cEJveC5uZXcoYXJlYSwgIiIsIDp2U3BhY2luZyA9PiAwKQ0KCQl2 TGluZWE2MSA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8zLCA6b3B0 cyA9PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAY29k aWNlR3J1cHBvID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhCdXR0b24u bmV3KHZMaW5lYTYxLCAnPycsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9 PiA1KQ0KCQlGWExhYmVsLm5ldyh2TGluZWE2MSwgIkNvZGljZSBncnVwcG8i LCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkUmln aHQgPT4gMTMyKQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhNjEsIDMsIDp0 YXJnZXQgPT4gQGNvZGljZUdydXBwbywgOnNlbGVjdG9yID0+IEZYRGF0YVRh cmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9U SElDS3xMQVlPVVRfRklMTF9ST1cpDQoNCgkJdkxpbmVhNjIgPSBGWEhvcml6 b250YWxGcmFtZS5uZXcoZ3J1cHBvMywgOm9wdHMgPT4gTEFZT1VUX1NJREVf VE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGNvZGljZUNvbnRvID0gRlhEYXRh VGFyZ2V0Lm5ldygiIikNCgkJRlhMYWJlbC5uZXcodkxpbmVhNjIsICJDb2Rp Y2UgY29udG8iLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9X LCA6cGFkTGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDEzOCkNCgkJRlhUZXh0 RmllbGQubmV3KHZMaW5lYTYyLCAzLCA6dGFyZ2V0ID0+IEBjb2RpY2VDb250 bywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRz ID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1cp DQoNCgkJdkxpbmVhNjMgPSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBv MywgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6dlNwYWNpbmcgPT4gMCkN CgkJQGNvZGljZVNvdHRvY29udG8gPSBGWERhdGFUYXJnZXQubmV3KCIiKQ0K CQlGWExhYmVsLm5ldyh2TGluZWE2MywgIkNvZGljZSBzb3R0b2NvbnRvIiwg bmlsLCBKVVNUSUZZX1JJR0hUfExBWU9VVF9GSUxMX1JPVywgOnBhZExlZnQg PT4gMjUsIDpwYWRSaWdodCA9PiAxMTIpDQoJCUZYVGV4dEZpZWxkLm5ldyh2 TGluZWE2MywgNiwgOnRhcmdldCA9PiBAY29kaWNlU290dG9jb250bywgOnNl bGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZS QU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1cpDQoJCUZY VGV4dEZpZWxkLm5ldyh2TGluZWE2MywgNjAsIDp0YXJnZXQgPT4gQGRlbm9t aW5hemlvbmVDb250bywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURf VkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlP VVRfRklMTF9ST1d8VEVYVEZJRUxEX1JFQURPTkxZKQ0KDQoJCXZMaW5lYTcg PSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMywgOm9wdHMgPT4gTEFZ T1VUX1NJREVfVE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQHNpZ2xhVmFsdXRh LCBAdmFsdXRhID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhCdXR0b24u bmV3KHZMaW5lYTcsICc/JywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+ IDUpDQoJCUZYTGFiZWwubmV3KHZMaW5lYTcsICJTaWdsYSB2YWx1dGEiLCBu aWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkUmlnaHQg PT4gMTQ0KQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhNywgMywgOnRhcmdl dCA9PiBAc2lnbGFWYWx1dGEsIDpzZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6 OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5LRU58RlJBTUVfVEhJQ0t8 TEFZT1VUX0ZJTExfUk9XKQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhNywg NTAsIDp0YXJnZXQgPT4gQHZhbHV0YSwgOnNlbGVjdG9yID0+IEZYRGF0YVRh cmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9U SElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX1JFQURPTkxZKQ0KDQoJ CXZMaW5lYTggPSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMywgOm9w dHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGNh bWJpb05hemlvbmFsZSA9IEZYRGF0YVRhcmdldC5uZXcoIiIpDQoJCUZYTGFi ZWwubmV3KHZMaW5lYTgsICJDYW1iaW86IHZhbHV0YSBuYXppb25hbGUiLCBu aWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkTGVmdCA9 PiAyNSwgOnBhZFJpZ2h0ID0+IDgwKQ0KCQlGWFRleHRGaWVsZC5uZXcodkxp bmVhOCwgMTAsIDp0YXJnZXQgPT4gQGNhbWJpb05hemlvbmFsZSwgOnNlbGVj dG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1F X1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1cpDQoNCgkJdkxp bmVhOSA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8zLCA6b3B0cyA9 PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAY2FtYmlv RXN0ZXJvID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhMYWJlbC5uZXco dkxpbmVhOSwgIkNhbWJpbzogdmFsdXRhIGVzdGVyYSIsIG5pbCwgSlVTVElG WV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+IDI1LCA6cGFk UmlnaHQgPT4gOTQpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWE5LCAxMCwg OnRhcmdldCA9PiBAY2FtYmlvRXN0ZXJvLCA6c2VsZWN0b3IgPT4gRlhEYXRh VGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VOfEZSQU1F X1RISUNLfExBWU9VVF9GSUxMX1JPVykNCgkJdkxpbmVhMTAgPSBGWEhvcml6 b250YWxGcmFtZS5uZXcoZ3J1cHBvMywgOm9wdHMgPT4gTEFZT1VUX1NJREVf VE9QKQ0KCQlGWExhYmVsLm5ldyh2TGluZWExMCwgIkltcG9ydG8gZGVsIG1v dmltZW50byBpbiB2YWx1dGEiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VU X0ZJTExfUk9XLCA6cGFkTGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDM1KQ0K DQoJCXZMaW5lYTExID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzMs IDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJ CUB2YWx1dGFEYXJlID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhMYWJl bC5uZXcodkxpbmVhMTEsICJEQVJFIiwgbmlsLCBKVVNUSUZZX1JJR0hUfExB WU9VVF9GSUxMX1JPVywgOnBhZExlZnQgPT4gMTI1LCA6cGFkUmlnaHQgPT4g NzYpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWExMSwgMTUsIDp0YXJnZXQg PT4gQHZhbHV0YURhcmUsIDpzZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6OklE X1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5LRU58RlJBTUVfVEhJQ0t8TEFZ T1VUX0ZJTExfUk9XKQ0KDQoJCXZMaW5lYTEyID0gRlhIb3Jpem9udGFsRnJh bWUubmV3KGdydXBwbzMsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZT cGFjaW5nID0+IDApDQoJCUB2YWx1dGFBdmVyZSA9IEZYRGF0YVRhcmdldC5u ZXcoIiIpDQoJCUZYTGFiZWwubmV3KHZMaW5lYTEyLCAiQVZFUkUiLCBuaWws IEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6cGFkTGVmdCA9PiAx MjUsIDpwYWRSaWdodCA9PiA3MCkNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5l YTEyLCAxNSwgOnRhcmdldCA9PiBAdmFsdXRhQXZlcmUsIDpzZWxlY3RvciA9 PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5L RU58RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XKQ0KDQoJCXZMaW5lYTEz ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzMsIDpvcHRzID0+IExB WU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUZYTGFiZWwubmV3 KHZMaW5lYTEzLCAiSW1wb3J0byBkZWwgbW92aW1lbnRvIGluIHZhbHV0YSBu YXppb25hbGUiLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9X LCA6cGFkTGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDM1KQ0KCQl2TGluZWEx MyA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhhcmVhLCA6b3B0cyA9PiBMQVlP VVRfU0lERV9UT1ApDQoJICAgDQoJCXZMaW5lYTE0ID0gRlhIb3Jpem9udGFs RnJhbWUubmV3KGdydXBwbzMsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwg OnZTcGFjaW5nID0+IDApDQoJCUB2YWxvcmVEYXJlID0gRlhEYXRhVGFyZ2V0 Lm5ldygiIikNCgkJRlhMYWJlbC5uZXcodkxpbmVhMTQsICJEQVJFIiwgbmls LCBKVVNUSUZZX1JJR0hUfExBWU9VVF9GSUxMX1JPVywgOnBhZFJpZ2h0ID0+ IDUzLCA6cGFkTGVmdCA9PiAxMjUsIDpwYWRSaWdodCA9PiA3NikNCgkJRlhU ZXh0RmllbGQubmV3KHZMaW5lYTE0LCAxNSwgOnRhcmdldCA9PiBAdmFsb3Jl RGFyZSwgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpv cHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRfRklMTF9S T1cpDQoNCgkJdkxpbmVhMTUgPSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1 cHBvMywgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9QLCA6dlNwYWNpbmcgPT4g MCkNCgkJQHZhbG9yZUF2ZXJlID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJ RlhMYWJlbC5uZXcodkxpbmVhMTUsICJBVkVSRSIsIG5pbCwgSlVTVElGWV9S SUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRSaWdodCA9PiA1MiwgOnBhZExl ZnQgPT4gMTI1LCA6cGFkUmlnaHQgPT4gNzApDQoJCUZYVGV4dEZpZWxkLm5l dyh2TGluZWExNSwgMTUsIDp0YXJnZXQgPT4gQHZhbG9yZUF2ZXJlLCA6c2Vs ZWN0b3IgPT4gRlhEYXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJB TUVfU1VOS0VOfEZSQU1FX1RISUNLfExBWU9VVF9GSUxMX1JPVykNCg0KCQl2 TGluZWExNiA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8zLCA6b3B0 cyA9PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAZGVz Y3J6aW9uZSA9IEZYRGF0YVRhcmdldC5uZXcoIiIpDQoJCUZYTGFiZWwubmV3 KHZMaW5lYTE2LCAiRGVzY3JpemlvbmUgYWdnaXVudGl2YSIsIG5pbCwgSlVT VElGWV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRMZWZ0ID0+IDI1LCA6 cGFkUmlnaHQgPT4gOTIpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWExNiwg NTAsIDp0YXJnZXQgPT4gQGRlc2NyaXppb25lLCA6c2VsZWN0b3IgPT4gRlhE YXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gRlJBTUVfU1VOS0VOfEZS QU1FX1RISUNLfExBWU9VVF9GSUxMX1JPVykNCg0KCQlncnVwcG80ID0gRlhH cm91cEJveC5uZXcoYXJlYSwgIiIsIDp2U3BhY2luZyA9PiAwKQ0KCQl2Rm9u ZG8gPSBGWEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvNCwgOm9wdHMgPT4g TEFZT1VUX1NJREVfQk9UVE9NfFBBQ0tfVU5JRk9STV9XSURUSCkNCgkJRlhC dXR0b24ubmV3KHZGb25kbywgJ0NhbmNlbGxhJywgOnBhZExlZnQgPT4gMjUs IDpwYWRSaWdodCA9PiAyNSkNCgkJRlhCdXR0b24ubmV3KHZGb25kbywgJ0Fu bnVsbGEnLCA6cGFkTGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDI1KQ0KCQlG WEJ1dHRvbi5uZXcodkZvbmRvLCAnUmVnaXN0cmEnLCA6cGFkTGVmdCA9PiAy NSwgOnBhZFJpZ2h0ID0+IDI1KQ0KCQlGWEJ1dHRvbi5uZXcodkZvbmRvLCAn RXNjaScsIDp0YXJnZXQgPT4gc2VsZiwgOnNlbGVjdG9yID0+IEZYRGlhbG9n Qm94OjpJRF9DQU5DRUwsIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmlnaHQgPT4g MjUpDQoJZW5kDQplbmQNCg0KY2xhc3MgRmluZXN0cmE4MDIgPCBGWERpYWxv Z0JveA0KCSNkZWYgaW5pdGlhbGl6ZShhcHApDQoJZGVmIGluaXRpYWxpemUo YXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBjbGFzcw0KCQlzdXBlcihhcHAs ICJQUk9HUkFNTUEgUElSQU1JREUiLCA6b3B0cyA9PiBERUNPUl9BTEwsIDp4 ID0+IDIwLCA6eSA9PiAyMCwgOndpZHRoID0+IDYwMCwgOmhlaWdodCA9PiA0 MDApDQoJCSMgTWVudWJhcg0KCQltZW51YmFyID0gRlhNZW51QmFyLm5ldyhz ZWxmLCBMQVlPVVRfU0lERV9UT1B8TEFZT1VUX0ZJTExfWCkNCgkJIyBGaWxl IG1lbnUNCgkJZmlsZW1lbnUgPSBGWE1lbnVQYW5lLm5ldyhzZWxmKQ0KCQlh cmNoaXZpdGFiZWxsZW1lbnUgPSBGWE1lbnVQYW5lLm5ldyhzZWxmKQ0KCQlG WE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUsICJJbnRlcnJv Z2F6aW9uZS9TdGFtcGEgQ29udG8gZGkgTWFzdHJvIikNCgkJRlhNZW51U2Vw YXJhdG9yLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUpDQoJCUZYTWVudUNvbW1h bmQubmV3KGFyY2hpdml0YWJlbGxlbWVudSwgIkludGVycm9nYXppb25lL1N0 YW1wYSBFc3RyYXR0byBDb250byBDbGllbnRpL0Zvcm5pdG9yaSIpDQoJCUZY TWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVudSwgIkludGVycm9n YXppb25lL1N0YW1wYSBTY2FkZW56aWFyaW8iKQ0KCQlGWE1lbnVTZXBhcmF0 b3IubmV3KGFyY2hpdml0YWJlbGxlbWVudSkNCgkJRlhNZW51Q29tbWFuZC5u ZXcoYXJjaGl2aXRhYmVsbGVtZW51LCAiSW50ZXJyb2dhemlvbmUvU3RhbXBh IFByaW1hIE5vdGEiKQ0KCQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFi ZWxsZW1lbnUsICJJbnRlcnJvZ2F6aW9uZS9TdGFtcGEgTGlicm8gR2lvcm5h bGUiKQ0KCQlGWE1lbnVTZXBhcmF0b3IubmV3KGFyY2hpdml0YWJlbGxlbWVu dSkNCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRhYmVsbGVtZW51LCAi SW50ZXJyb2dhemlvbmUvU3RhbXBhIExpYnJpIEl2YSIpDQoJCUZYTWVudUNv bW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVudSwgIkludGVycm9nYXppb25l L1N0YW1wYSBQcm9ncmVzc2l2aSBJdmEiKQ0KCQlGWE1lbnVUaXRsZS5uZXco bWVudWJhciwgIkludGVycm9nYXppb25pIGUgU3RhbXBlIiwgOnBvcHVwTWVu dSA9PiBhcmNoaXZpdGFiZWxsZW1lbnUpDQoJCUZYSG9yaXpvbnRhbFNlcGFy YXRvci5uZXcoc2VsZiwgTEFZT1VUX1NJREVfVE9QfFNFUEFSQVRPUl9HUk9P VkV8TEFZT1VUX0ZJTExfWCkNCgllbmQNCmVuZA0KDQpjbGFzcyBGaW5lc3Ry YTgwMyA8IEZYRGlhbG9nQm94DQoJI2RlZiBpbml0aWFsaXplKGFwcCkNCglk ZWYgaW5pdGlhbGl6ZShhcHApDQoJCSMgSW5pdGlhbGl6ZSBiYXNlIGNsYXNz DQoJCXN1cGVyKGFwcCwgIlBST0dSQU1NQSBQSVJBTUlERSIsIDpvcHRzID0+ IERFQ09SX0FMTCwgOnggPT4gMjAsIDp5ID0+IDIwLCA6d2lkdGggPT4gNjAw LCA6aGVpZ2h0ID0+IDQwMCkNCgkJIyBNZW51YmFyDQoJCW1lbnViYXIgPSBG WE1lbnVCYXIubmV3KHNlbGYsIExBWU9VVF9TSURFX1RPUHxMQVlPVVRfRklM TF9YKQ0KCQkjIEZpbGUgbWVudQ0KCQlmaWxlbWVudSA9IEZYTWVudVBhbmUu bmV3KHNlbGYpDQoJCWFyY2hpdml0YWJlbGxlbWVudSA9IEZYTWVudVBhbmUu bmV3KHNlbGYpDQoJCUZYTWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxl bWVudSwgIkludGVycm9nYXppb25lL1N0YW1wYSBCaWxhbmNpbyBkaSBWZXJp ZmljYSIpDQoJCUZYTWVudUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVu dSwgIkludGVycm9nYXppb25lL1N0YW1wYSBCaWxhbmNpbyBkaSBFc2VyY2l6 aW8iKQ0KCQlGWE1lbnVTZXBhcmF0b3IubmV3KGFyY2hpdml0YWJlbGxlbWVu dSkNCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRhYmVsbGVtZW51LCAi SW50ZXJyb2dhemlvbmUvU3RhbXBhIEJpbGFuY2lvIGRpIFZlcmlmaWNhIGRl bCBDb250cm9sbG8gZGkgR2VzdGlvbmUiKQ0KCQlGWE1lbnVDb21tYW5kLm5l dyhhcmNoaXZpdGFiZWxsZW1lbnUsICJJbnRlcnJvZ2F6aW9uZS9TdGFtcGEg QmlsYW5jaW8gZGkgRXNlcmNpemlvIGRlbCBjb250cm9sbG8gZGkgR2VzdGlv bmUiKQ0KCQlGWE1lbnVUaXRsZS5uZXcobWVudWJhciwgIkJpbGFuY2kgZGkg RXNlcmNpemlvIiwgOnBvcHVwTWVudSA9PiBhcmNoaXZpdGFiZWxsZW1lbnUp DQoJCUZYSG9yaXpvbnRhbFNlcGFyYXRvci5uZXcoc2VsZiwgTEFZT1VUX1NJ REVfVE9QfFNFUEFSQVRPUl9HUk9PVkV8TEFZT1VUX0ZJTExfWCkNCgllbmQN CmVuZA0KDQpjbGFzcyBGaW5lc3RyYTgwNCA8IEZYRGlhbG9nQm94DQoJI2Rl ZiBpbml0aWFsaXplKGFwcCkNCglkZWYgaW5pdGlhbGl6ZShhcHApDQoJCSMg SW5pdGlhbGl6ZSBiYXNlIGNsYXNzDQoJCXN1cGVyKGFwcCwgIlBST0dSQU1N QSBQSVJBTUlERSIsIDpvcHRzID0+IERFQ09SX0FMTCwgOnggPT4gMjAsIDp5 ID0+IDIwLCA6d2lkdGggPT4gNjAwLCA6aGVpZ2h0ID0+IDQwMCkNCgkJIyBN ZW51YmFyDQoJCW1lbnViYXIgPSBGWE1lbnVCYXIubmV3KHNlbGYsIExBWU9V VF9TSURFX1RPUHxMQVlPVVRfRklMTF9YKQ0KCQkjIEZpbGUgbWVudQ0KCQlm aWxlbWVudSA9IEZYTWVudVBhbmUubmV3KHNlbGYpDQoJCWFyY2hpdml0YWJl bGxlbWVudSA9IEZYTWVudVBhbmUubmV3KHNlbGYpDQoJCUZYTWVudUNvbW1h bmQubmV3KGFyY2hpdml0YWJlbGxlbWVudSwgIkdlc3Rpb25lIGRlbCBQb3J0 YWZvZ2xpbyBFZmZldHRpIikNCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2 aXRhYmVsbGVtZW51LCAiR2VzdGlvbmUgZGVpIEZpbmFuemlhbWVudGkiKQ0K CQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFiZWxsZW1lbnUsICJHZXN0 aW9uZSBkZWxsZSBGaWRlaXVzc2lvbmkiKQ0KCQlGWE1lbnVTZXBhcmF0b3Iu bmV3KGFyY2hpdml0YWJlbGxlbWVudSkNCgkJRlhNZW51Q29tbWFuZC5uZXco YXJjaGl2aXRhYmVsbGVtZW51LCAiR2VzdGlvbmUgQ29tdW5pY2F6aW9uaSBJ bnN0cmFzdGF0IikNCgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRhYmVs bGVtZW51LCAiR2VzdGlvbmUgUml0ZW51dGUgRmlzY2FsaSIpDQoJCUZYTWVu dUNvbW1hbmQubmV3KGFyY2hpdml0YWJlbGxlbWVudSwgIkdlc3Rpb25lIFJh dGVpIGUgUmlzY29udGkiKQ0KCQlGWE1lbnVUaXRsZS5uZXcobWVudWJhciwg IlNlcnZpemkgRmluYW56aWFyaSBlZCBBbW1pbmlzdHJhdGl2aSIsIDpwb3B1 cE1lbnUgPT4gYXJjaGl2aXRhYmVsbGVtZW51KQ0KCQlGWEhvcml6b250YWxT ZXBhcmF0b3IubmV3KHNlbGYsIExBWU9VVF9TSURFX1RPUHxTRVBBUkFUT1Jf R1JPT1ZFfExBWU9VVF9GSUxMX1gpDQoJZW5kDQplbmQNCg0KY2xhc3MgRmlu ZXN0cmE4MDUgPCBGWERpYWxvZ0JveA0KCSNkZWYgaW5pdGlhbGl6ZShhcHAp DQoJZGVmIGluaXRpYWxpemUoYXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBj bGFzcw0KCQlzdXBlcihhcHAsICJQUk9HUkFNTUEgUElSQU1JREUiLCA6b3B0 cyA9PiBERUNPUl9BTEwsIDp4ID0+IDIwLCA6eSA9PiAyMCwgOndpZHRoID0+ IDYwMCwgOmhlaWdodCA9PiA0MDApDQoJCSMgTWVudWJhcg0KCQltZW51YmFy ID0gRlhNZW51QmFyLm5ldyhzZWxmLCBMQVlPVVRfU0lERV9UT1B8TEFZT1VU X0ZJTExfWCkNCgkJIyBGaWxlIG1lbnUNCgkJZmlsZW1lbnUgPSBGWE1lbnVQ YW5lLm5ldyhzZWxmKQ0KCQlhcmNoaXZpdGFiZWxsZW1lbnUgPSBGWE1lbnVQ YW5lLm5ldyhzZWxmKQ0KCQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFi ZWxsZW1lbnUsICJJbnNlcmltZW50byBNYW51YWxlIGRlaSBNb3ZpbWVudGkg ZGkgQXBlcnR1cmEvQ2hpdXN1cmEiKQ0KCQlGWE1lbnVDb21tYW5kLm5ldyhh cmNoaXZpdGFiZWxsZW1lbnUsICJTY3JpdHR1cmUgZGkgUmV0dGlmaWNhIikN CgkJRlhNZW51Q29tbWFuZC5uZXcoYXJjaGl2aXRhYmVsbGVtZW51LCAiR2Vu ZXJhemlvbmUgQXV0b21hdGljYSBkZWxsYSBDaGl1c3VyYS9BcGVydHVyYSBk aSBFc2VyY2l6aW8iKQ0KCQlGWE1lbnVDb21tYW5kLm5ldyhhcmNoaXZpdGFi ZWxsZW1lbnUsICJDYW5jZWxsYXppb25lIE1vdmltZW50aSBFc2VyY2l6aSBQ cmVjZWRlbnRpIikNCgkJRlhNZW51VGl0bGUubmV3KG1lbnViYXIsICJPcGVy YXppb25pIGRpIENoaXVzdXJhL0FwZXJ0dXJhIGRlZ2xpIEVzZXJjaXppIiwg OnBvcHVwTWVudSA9PiBhcmNoaXZpdGFiZWxsZW1lbnUpDQoJCUZYSG9yaXpv bnRhbFNlcGFyYXRvci5uZXcoc2VsZiwgTEFZT1VUX1NJREVfVE9QfFNFUEFS QVRPUl9HUk9PVkV8TEFZT1VUX0ZJTExfWCkNCgllbmQNCmVuZA0KDQpjbGFz cyBGaW5lc3RyYTAwMDAxIDwgRlhEaWFsb2dCb3gNCiNmaW5lc3RyYSBwcm90 b3RpcG8gcGVyIGwnYWNxdWlzaXppb25lIGRlaSBkYXRpDQoJZGVmIGluaXRp YWxpemUoYXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBjbGFzcw0KCQlAY29u dGF0b3JlID0gMA0KCQlAcmlnYSA9IG5pbA0KI2NhcmljYSBpbiBtZW1vcmlh IHR1dHRvIGlsIHBpYW5vIGRlaSBjb250aQ0KCQkjY2FyaWNhX2RhdGkNCiNk aXNlZ25hIGxhIGZpbmVzdHJhICAgIA0KCQlzdXBlcihhcHAsICJQUk9HUkFN TUEgUElSQU1JREUiLCA6b3B0cyA9PiBERUNPUl9BTEwsIDp4ID0+IDIwLCA6 eSA9PiAyMCwgOndpZHRoID0+IDgwMCwgOmhlaWdodCA9PiA0MDApDQoNCgkJ I3NlbGYuYmFja0NvbG9yID0gIkZGLkZGLkZGIg0KCQlhcmVhID0gRlhQYWNr ZXIubmV3KHNlbGYsIDpvcHRzID0+IExBWU9VVF9GSUxMLCA6dlNwYWNpbmcg PT4gMzAsIDpoU3BhY2luZyA9PiA1MCkNCg0KCQlncnVwcG8xID0gRlhHcm91 cEJveC5uZXcoYXJlYSwgIiIsIDp2U3BhY2luZyA9PiAwKQ0KCQkNCgkJdlRl c3RhMCA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8xLCA6b3B0cyA9 PiBMQVlPVVRfU0lERV9UT1B8UEFDS19VTklGT1JNX1dJRFRILCA6cGFkQm90 dG9tID0+IDEwKQ0KCQlGWExhYmVsLm5ldyh2VGVzdGEwLCAiRklORVNUUkEg UFJPVE9USVBPIiwgbmlsLCBKVVNUSUZZX0NFTlRFUl9YfExBWU9VVF9GSUxM X1JPVywgOnBhZFJpZ2h0ID0+IDEyOCkNCg0KCQl2VGVzdGExID0gRlhIb3Jp em9udGFsRnJhbWUubmV3KGdydXBwbzEsIDpvcHRzID0+IExBWU9VVF9TSURF X1RPUHxQQUNLX1VOSUZPUk1fV0lEVEgpDQoJCUZYQnV0dG9uLm5ldyh2VGVz dGExLCAnUHJpbW8gcmVjb3JkJywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0 ID0+IDUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpICN7cHJpbW9fcmVjb3JkIH0N CgkJRlhCdXR0b24ubmV3KHZUZXN0YTEsICdSZWNvcmQgcHJlY2VkZW50ZScs IDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1KS5jb25uZWN0KFNFTF9D T01NQU5EKSAje3ByZWNlZGVudGVfcmVjb3JkfQ0KCQlGWEJ1dHRvbi5uZXco dlRlc3RhMSwgJ1JlY29yZCBzdWNjZXNzaXZvJywgOnBhZExlZnQgPT4gNSwg OnBhZFJpZ2h0ID0+IDUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpICN7c3VjY2Vz c2l2b19yZWNvcmR9DQoJCUZYQnV0dG9uLm5ldyh2VGVzdGExLCAnVWx0aW1v IHJlY29yZCcsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1KS5jb25u ZWN0KFNFTF9DT01NQU5EKSAje3VsdGltb19yZWNvcmR9DQoJCUZYQnV0dG9u Lm5ldyh2VGVzdGExLCAnTnVvdm8gcmVjb3JkJywgOnBhZExlZnQgPT4gNSwg OnBhZFJpZ2h0ID0+IDUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpICN7bnVvdm9f cmVjb3JkfQ0KPWJlZ2luDQoJCWdydXBwbzIgPSBGWEdyb3VwQm94Lm5ldyhh cmVhLCAiIiwgOnZTcGFjaW5nID0+IDApDQoJCXZMaW5lYTEgPSBGWEhvcml6 b250YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVf VE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGNvZGljZVRpcG9Db250byA9IEZY RGF0YVRhcmdldC5uZXcoMCkNCgkJRlhCdXR0b24ubmV3KHZMaW5lYTEsICc/ JywgOnBhZExlZnQgPT4gNSwgOnBhZFJpZ2h0ID0+IDUsIDpwYWRUb3AgPT4w LCA6cGFkQm90dG9tID0+IDApLmNvbm5lY3QoU0VMX0NPTU1BTkQpIHsNCgkJ CSR2YXIgPSBbXQ0KCQkJcmljZXJjYSA9IEZpbmVzdHJhOTAwMDEubmV3KHNl bGYpDQoJCQlyaWNlcmNhLmV4ZWN1dGUoUExBQ0VNRU5UX0NVUlNPUikNCgkJ CUBjb2RpY2VUaXBvQ29udG8udmFsdWUgPSAkdmFyWzBdDQoJCQlAZGVzY3Jp emlvbmVUaXBvQ29udG8udmFsdWUgPSAkdmFyWzFdDQoJCQkkdmFyID0gW10N CgkJCX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhMSwgIkNvZGljZSB0aXBvIGNv bnRvIiwgbmlsLCBKVVNUSUZZX1JJR0hUfExBWU9VVF9GSUxMX1JPVywgOnBh ZFJpZ2h0ID0+IDEyOCkNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTEsIDEs IDp0YXJnZXQgPT4gQGNvZGljZVRpcG9Db250bywgOnNlbGVjdG9yID0+IEZY RGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxG UkFNRV9USElDS3xMQVlPVVRfRklMTF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8 VEVYVEZJRUxEX0lOVEVHRVIpDQoJCUBkZXNjcml6aW9uZVRpcG9Db250byA9 IEZYRGF0YVRhcmdldC5uZXcoIiIpDQoJCUZYVGV4dEZpZWxkLm5ldyh2TGlu ZWExLCAzMCwgOnRhcmdldCA9PiBAZGVzY3JpemlvbmVUaXBvQ29udG8sIDpz ZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBU RVhURklFTERfUkVBRE9OTFl8VEVYVEZJRUxEX09WRVJTVFJJS0UpDQoNCgkJ dkxpbmVhMiA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0 cyA9PiBMQVlPVVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlAY29k aWNlR3J1cHBvID0gRlhEYXRhVGFyZ2V0Lm5ldygwKQ0KCQlGWEJ1dHRvbi5u ZXcodkxpbmVhMiwgJz8nLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4g NSwgOnBhZFRvcCA9PjAsIDpwYWRCb3R0b20gPT4gMCkuY29ubmVjdChTRUxf Q09NTUFORCkgew0KCQkJJHZhciA9IFtdDQoJCQlyaWNlcmNhID0gRmluZXN0 cmE5MDAwMy5uZXcoc2VsZikNCgkJCXJpY2VyY2EuZXhlY3V0ZShQTEFDRU1F TlRfQ1VSU09SKQ0KCQkJQGNvZGljZUdydXBwby52YWx1ZSA9ICR2YXJbMF0N CgkJCUBkZXNjcml6aW9uZUdydXBwby52YWx1ZSA9ICR2YXJbMV0NCgkJCSR2 YXIgPSBbXQ0KCQkJdmFpX2FfcmVjb3JkDQoJCQl9DQoJCUZYTGFiZWwubmV3 KHZMaW5lYTIsICJDb2RpY2UgZ3J1cHBvIiwgbmlsLCBKVVNUSUZZX1JJR0hU fExBWU9VVF9GSUxMX1JPVywgOnBhZFJpZ2h0ID0+IDEzMCkNCgkJZ3J1cHBv ID0gRlhUZXh0RmllbGQubmV3KHZMaW5lYTIsIDMsIDp0YXJnZXQgPT4gQGNv ZGljZUdydXBwbywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFM VUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRf RklMTF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8VEVYVEZJRUxEX0lOVEVHRVJ8 SlVTVElGWV9SSUdIVCkNCgkJQGRlc2NyaXppb25lR3J1cHBvID0gRlhEYXRh VGFyZ2V0Lm5ldygiIikNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTIsIDMw LCA6dGFyZ2V0ID0+IEBkZXNjcml6aW9uZUdydXBwbywgOnNlbGVjdG9yID0+ IEZYRGF0YVRhcmdldDo6SURfVkFMVUUsIDpvcHRzID0+IFRFWFRGSUVMRF9S RUFET05MWXxURVhURklFTERfT1ZFUlNUUklLRSkNCg0KCQl2TGluZWEzID0g RlhIb3Jpem9udGFsRnJhbWUubmV3KGdydXBwbzIsIDpvcHRzID0+IExBWU9V VF9TSURFX1RPUCwgOnZTcGFjaW5nID0+IDApDQoJCUBjb2RpY2VDb250byA9 IEZYRGF0YVRhcmdldC5uZXcoMCkNCgkJQGRlc2NyaXppb25lQ29udG8gPSBG WERhdGFUYXJnZXQubmV3KCIiKQ0KCQlGWEJ1dHRvbi5uZXcodkxpbmVhMywg Jz8nLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSwgOnBhZFRvcCA9 PjAsIDpwYWRCb3R0b20gPT4gMCkuY29ubmVjdChTRUxfQ09NTUFORCkgew0K CQkJJHZhciA9IFtdDQoJCQkkdmFyID0gQGNvZGljZUdydXBwbw0KCQkJcmlj ZXJjYSA9IEZpbmVzdHJhOTAwMDQubmV3KHNlbGYpDQoJCQlyaWNlcmNhLmV4 ZWN1dGUoUExBQ0VNRU5UX0NVUlNPUikNCgkJCUBjb2RpY2VDb250by52YWx1 ZSA9ICR2YXJbMF0NCgkJCUBkZXNjcml6aW9uZUNvbnRvLnZhbHVlID0gJHZh clsxXQ0KCQkJJHZhciA9IFtdDQoJCQl2YWlfYV9yZWNvcmQNCgkJCX0NCgkJ RlhMYWJlbC5uZXcodkxpbmVhMywgIkNvZGljZSBjb250byIsIG5pbCwgSlVT VElGWV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRSaWdodCA9PiAxMzgp DQoJCUZYVGV4dEZpZWxkLm5ldyh2TGluZWEzLCAzLCA6dGFyZ2V0ID0+IEBj b2RpY2VDb250bywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFM VUUsIDpvcHRzID0+IEZSQU1FX1NVTktFTnxGUkFNRV9USElDS3xMQVlPVVRf RklMTF9ST1d8VEVYVEZJRUxEX0xJTUlURUR8VEVYVEZJRUxEX0lOVEVHRVJ8 SlVTVElGWV9SSUdIVCkNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTMsIDMw LCA6dGFyZ2V0ID0+IEBkZXNjcml6aW9uZUNvbnRvLCA6c2VsZWN0b3IgPT4g RlhEYXRhVGFyZ2V0OjpJRF9WQUxVRSwgOm9wdHMgPT4gVEVYVEZJRUxEX1JF QURPTkxZfFRFWFRGSUVMRF9PVkVSU1RSSUtFKQ0KDQoJCXZMaW5lYTQgPSBG WEhvcml6b250YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VU X1NJREVfVE9QLCA6dlNwYWNpbmcgPT4gMCkNCgkJQGNvZGljZVNvdHRvY29u dG8gPSBGWERhdGFUYXJnZXQubmV3KDApDQoJCUZYQnV0dG9uLm5ldyh2TGlu ZWE0LCAnPycsIDpwYWRMZWZ0ID0+IDUsIDpwYWRSaWdodCA9PiA1LCA6cGFk VG9wID0+MCwgOnBhZEJvdHRvbSA9PiAwKS5jb25uZWN0KFNFTF9DT01NQU5E KSB7DQoJCQkkdmFyID0gW10NCgkJCSR2YXJbMF0gPSBAY29kaWNlR3J1cHBv DQoJCQkkdmFyWzFdID0gQGNvZGljZUNvbnRvDQoJCQlyaWNlcmNhID0gRmlu ZXN0cmE5MDAwNS5uZXcoc2VsZikNCgkJCXJpY2VyY2EuZXhlY3V0ZShQTEFD RU1FTlRfQ1VSU09SKQ0KCQkJQGNvZGljZVNvdHRvY29udG8udmFsdWUgICAg ICA9ICR2YXJbMF0NCgkJCUBkZW5vbWluYXppb25lQ29udG8udmFsdWUgICA9 ICR2YXJbMV0NCgkJCUBjb2RpY2VOYXR1cmFDb250by52YWx1ZSAgICAgPSAk dmFyWzJdDQoJCQlAaW5kaWNlLnZhbHVlICAgICAgICAgICAgICAgICAgICAg ICA9ICR2YXJbM10NCgkJCSR2YXIgPSBbXQ0KCQkJdmFpX2FfcmVjb3JkDQoJ CQl9DQoJCUZYTGFiZWwubmV3KHZMaW5lYTQsICJDb2RpY2Ugc290dG9jb250 byIsIG5pbCwgSlVTVElGWV9SSUdIVHxMQVlPVVRfRklMTF9ST1csIDpwYWRS aWdodCA9PiA5NSkNCgkJRlhUZXh0RmllbGQubmV3KHZMaW5lYTQsIDYsIDp0 YXJnZXQgPT4gQGNvZGljZVNvdHRvY29udG8sIDpzZWxlY3RvciA9PiBGWERh dGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5LRU58RlJB TUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVMRF9MSU1JVEVEfFRF WFRGSUVMRF9JTlRFR0VSfEpVU1RJRllfUklHSFQpDQoNCgkJdkxpbmVhNSA9 IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG8yLCA6b3B0cyA9PiBMQVlP VVRfU0lERV9UT1AsIDp2U3BhY2luZyA9PiAwKQ0KCQlGWEJ1dHRvbi5uZXco dkxpbmVhNSwgJz8nLCA6cGFkTGVmdCA9PiA1LCA6cGFkUmlnaHQgPT4gNSwg OnBhZFRvcCA9PjAsIDpwYWRCb3R0b20gPT4gMCkuY29ubmVjdChTRUxfQ09N TUFORCkgew0KCQkJJHZhciA9IFtdDQoJCQlpZiAkdmFyWzBdICE9IG5pbA0K CQkJCSR2YXJbMF0gPSBAZGVub21pbmF6aW9uZUNvbnRvLnZhbHVlLmdzdWIo L1xXLywgJycpLnVwY2FzZQ0KCQkJCXJpY2VyY2EgPSBGaW5lc3RyYTkwMDA2 Lm5ldyhzZWxmKQ0KCQkJCXJpY2VyY2EuZXhlY3V0ZShQTEFDRU1FTlRfQ1VS U09SKQ0KCQkJCUBpbmRpY2UudmFsdWUgPSAkdmFyWzBdDQoJCQkJJHZhciA9 IFtdDQoJCQkJaWYgQGluZGljZS52YWx1ZSAhPSBuaWwNCgkJCQkJaWYgQGlu ZGljZS52YWx1ZSA+ICIwIg0KCQkJCQkJQGNvbnRhdG9yZSA9IDANCgkJCQkJ CUByaWdhID0gQHNjZWx0YS5kYXRhX3NlZWsoQGNvbnRhdG9yZSkNCgkJCQkJ CUByaWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCg0KCQkJCQkJdW50aWwgQGlu ZGljZS52YWx1ZSA9PSBAcmlnYVs3XQ0KCQkJCQkJCUByaWdhID0gQHNjZWx0 YS5kYXRhX3NlZWsoQGNvbnRhdG9yZSkNCgkJCQkJCQlAcmlnYSA9IEBzY2Vs dGEuZmV0Y2hfcm93DQoJCQkJCQkJQGNvbnRhdG9yZSA9IEBjb250YXRvcmUg KyAxDQoJCQkJCQllbmQNCgkJCQkJCUBjb250YXRvcmUgPSBAY29udGF0b3Jl IC0gMQ0KCQkJCQkJYXNzZWduYV92YXJpYWJpbGkNCgkJCQkJZW5kDQoJCQkJ ZW5kDQoJCQllbmQNCgkJCX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhNSwgIkRl bm9taW5hemlvbmUgY29udG8iLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VU X0ZJTExfUk9XLCA6cGFkUmlnaHQgPT4gMTIyKQ0KCQlAZGVub21pbmF6aW9u ZUNvbnRvID0gRlhEYXRhVGFyZ2V0Lm5ldygiIikNCgkJRlhUZXh0RmllbGQu bmV3KHZMaW5lYTUsIDMwLCA6dGFyZ2V0ID0+IEBkZW5vbWluYXppb25lQ29u dG8sIDpzZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0 cyA9PiBGUkFNRV9TVU5LRU58RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9X fFRFWFRGSUVMRF9MSU1JVEVEKQ0KDQoJCXZMaW5lYTYgPSBGWEhvcml6b250 YWxGcmFtZS5uZXcoZ3J1cHBvMiwgOm9wdHMgPT4gTEFZT1VUX1NJREVfVE9Q LCA6dlNwYWNpbmcgPT4gMCkNCgkJRlhMYWJlbC5uZXcodkxpbmVhNiwgIkNv c3RhbnRlIGRlbCBjb250byIsIG5pbCwgSlVTVElGWV9SSUdIVHxMQVlPVVRf RklMTF9ST1csIDpwYWRMZWZ0ID0+IDI1LCA6cGFkUmlnaHQgPT4gMTIwKQ0K CQlAY29zdGFudGVDb250byA9IEZYRGF0YVRhcmdldC5uZXcoIkEiKQ0KCQlG WFRleHRGaWVsZC5uZXcodkxpbmVhNiwgMSwgOnRhcmdldCA9PiBAY29zdGFu dGVDb250bywgOnNlbGVjdG9yID0+IEZYRGF0YVRhcmdldDo6SURfVkFMVUUs IDpvcHRzID0+IFRFWFRGSUVMRF9SRUFET05MWXxURVhURklFTERfT1ZFUlNU UklLRSkNCg0KCQl2TGluZWE3ID0gRlhIb3Jpem9udGFsRnJhbWUubmV3KGdy dXBwbzIsIDpvcHRzID0+IExBWU9VVF9TSURFX1RPUCwgOnZTcGFjaW5nID0+ IDApDQoJCUBjb2RpY2VOYXR1cmFDb250byA9IEZYRGF0YVRhcmdldC5uZXco MCkNCgkJQGRlc2NyaXppb25lTmF0dXJhQ29udG8gPSBGWERhdGFUYXJnZXQu bmV3KCIiKQ0KCQlGWEJ1dHRvbi5uZXcodkxpbmVhNywgJz8nLCA6cGFkTGVm dCA9PiA1LCA6cGFkUmlnaHQgPT4gNSwgOnBhZFRvcCA9PjAsIDpwYWRCb3R0 b20gPT4gMCkuY29ubmVjdChTRUxfQ09NTUFORCkgew0KCQkJJHZhciA9IFtd DQoJCQlyaWNlcmNhID0gRmluZXN0cmE5MDAwMi5uZXcoc2VsZikNCgkJCXJp Y2VyY2EuZXhlY3V0ZShQTEFDRU1FTlRfQ1VSU09SKQ0KCQkJQGNvZGljZU5h dHVyYUNvbnRvLnZhbHVlICAgICAgID0gJHZhclswXQ0KCQkJQGRlc2NyaXpp b25lTmF0dXJhQ29udG8udmFsdWUgPSAkdmFyWzFdDQoJCQkkdmFyID0gW10N CgkJCX0NCgkJRlhMYWJlbC5uZXcodkxpbmVhNywgIkNvZGljZSBuYXR1cmEg Y29udG8iLCBuaWwsIEpVU1RJRllfUklHSFR8TEFZT1VUX0ZJTExfUk9XLCA6 cGFkUmlnaHQgPT4gMTE1KQ0KCQlGWFRleHRGaWVsZC5uZXcodkxpbmVhNywg MSwgOnRhcmdldCA9PiBAY29kaWNlTmF0dXJhQ29udG8sIDpzZWxlY3RvciA9 PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9PiBGUkFNRV9TVU5L RU58RlJBTUVfVEhJQ0t8TEFZT1VUX0ZJTExfUk9XfFRFWFRGSUVMRF9MSU1J VEVEfFRFWFRGSUVMRF9JTlRFR0VSKQ0KCQlGWFRleHRGaWVsZC5uZXcodkxp bmVhNywgMzAsIDp0YXJnZXQgPT4gQGRlc2NyaXppb25lTmF0dXJhQ29udG8s IDpzZWxlY3RvciA9PiBGWERhdGFUYXJnZXQ6OklEX1ZBTFVFLCA6b3B0cyA9 PiBURVhURklFTERfUkVBRE9OTFl8VEVYVEZJRUxEX09WRVJTVFJJS0UpDQoN CgkJQGluZGljZSA9IEZYRGF0YVRhcmdldC5uZXcoIiIpDQo9ZW5kDQoJCWdy dXBwbzQgPSBGWEdyb3VwQm94Lm5ldyhhcmVhLCAiIiwgOnZTcGFjaW5nID0+ IDApDQoJCXZGb25kbyA9IEZYSG9yaXpvbnRhbEZyYW1lLm5ldyhncnVwcG80 LCA6b3B0cyA9PiBMQVlPVVRfU0lERV9CT1RUT018UEFDS19VTklGT1JNX1dJ RFRIKQ0KCQlGWEJ1dHRvbi5uZXcodkZvbmRvLCAnQ2FuY2VsbGEnLCA6cGFk TGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDI1KS5jb25uZWN0KFNFTF9DT01N QU5EKSAje2NhbmNlbGxhX3JlY29yZH0NCgkJRlhCdXR0b24ubmV3KHZGb25k bywgJ0FubnVsbGEnLCA6cGFkTGVmdCA9PiAyNSwgOnBhZFJpZ2h0ID0+IDI1 KS5jb25uZWN0KFNFTF9DT01NQU5EKSAje2F6emVyYV92YXJpYWJpbGl9DQoJ CUZYQnV0dG9uLm5ldyh2Rm9uZG8sICdSZWdpc3RyYScsIDpwYWRMZWZ0ID0+ IDI1LCA6cGFkUmlnaHQgPT4gMjUpLmNvbm5lY3QoU0VMX0NPTU1BTkQpICN7 cmVnaXN0cmF9DQoJCUZYQnV0dG9uLm5ldyh2Rm9uZG8sICdFc2NpJywgOnRh cmdldCA9PiBzZWxmLCA6c2VsZWN0b3IgPT4gRlhEaWFsb2dCb3g6OklEX0NB TkNFTCwgOnBhZExlZnQgPT4gMjUsIDpwYWRSaWdodCA9PiAyNSkNCgkJI2F6 emVyYV92YXJpYWJpbGkNCgllbmQNCmVuZA0KDQpjbGFzcyBGaW5lc3RyYTkw MDAxIDwgRlhEaWFsb2dCb3gNCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0KCWRl ZiBpbml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MN CgkJc3VwZXIoYXBwLCAiQ29kaWNlIGRlbCB0aXBvIGRpIGNvbnRvIiwgOm9w dHMgPT4gREVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9 PiA0MDAsIDpoZWlnaHQgPT4gMTAwKQ0KCQlsaXN0YSA9IEZYVGFibGUubmV3 KHNlbGYsIDpvcHRzID0+IExBWU9VVF9GSUxMfFRBQkxFX1JFQURPTkxZKQ0K CQlsaXN0YS5zZXRUYWJsZVNpemUoMywgMikNCgkJbGlzdGEucm93SGVhZGVy TW9kZSA9IExBWU9VVF9GSVhfV0lEVEgNCgkJbGlzdGEucm93SGVhZGVyV2lk dGggPSAwDQoJCWxpc3RhLmNvbHVtbkhlYWRlck1vZGUgPSBMQVlPVVRfRklY X0hFSUdIVA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJIZWlnaHQgPSAwDQoJCWxp c3RhLnNldENvbHVtbldpZHRoKDAsIDI1KQ0KCQlsaXN0YS5zZXRDb2x1bW5X aWR0aCgxLCAyMDApDQoNCgkJbGlzdGEuc2V0SXRlbVRleHQoMCwgMCwgIjEi KQ0KCQlsaXN0YS5zZXRJdGVtVGV4dCgwLCAxLCAiR1JVUFBPIikNCgkJbGlz dGEuc2V0SXRlbUp1c3RpZnkoMCwgMSwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJ CWxpc3RhLnNldEl0ZW1UZXh0KDEsIDAsICIyIikNCgkJbGlzdGEuc2V0SXRl bVRleHQoMSwgMSwgIkNPTlRPIikNCgkJbGlzdGEuc2V0SXRlbUp1c3RpZnko MSwgMSwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJCWxpc3RhLnNldEl0ZW1UZXh0 KDIsIDAsICIzIikNCgkJbGlzdGEuc2V0SXRlbVRleHQoMiwgMSwgIlNPVFRP Q09OVE8iKQ0KCQlsaXN0YS5zZXRJdGVtSnVzdGlmeSgyLCAxLCBGWFRhYmxl SXRlbTo6TEVGVCkNCg0KCQlsaXN0YS5jb25uZWN0KFNFTF9TRUxFQ1RFRCkg ZG8gfCBzZW5kZXIsIHNlbCwgcG9zIHwNCgkJCSR2YXJbMF0gPSAoc2VuZGVy LmdldEl0ZW0ocG9zLnJvdywgMCkpLnRvX3MNCgkJCSR2YXJbMV0gPSAoc2Vu ZGVyLmdldEl0ZW0ocG9zLnJvdywgMSkpLnRvX3MNCgkJZW5kDQoJZW5kDQpl bmQNCg0KY2xhc3MgRmluZXN0cmE5MDAwMiA8IEZYRGlhbG9nQm94DQoJI2Rl ZiBpbml0aWFsaXplKGFwcCkNCglkZWYgaW5pdGlhbGl6ZShhcHApDQoJCSMg SW5pdGlhbGl6ZSBiYXNlIGNsYXNzDQoJCXN1cGVyKGFwcCwgIkNvZGljZSBk ZWxsYSBuYXR1cmEgZGVsIGNvbnRvIiwgOm9wdHMgPT4gREVDT1JfQUxMLCA6 eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9PiA0MDAsIDpoZWlnaHQgPT4g MTAwKQ0KCQlsaXN0YSA9IEZYVGFibGUubmV3KHNlbGYsIDpvcHRzID0+IExB WU9VVF9GSUxMfFRBQkxFX1JFQURPTkxZKQ0KDQoJCWxpc3RhLnNldFRhYmxl U2l6ZSg0LCAyKQ0KCQlsaXN0YS5yb3dIZWFkZXJNb2RlID0gTEFZT1VUX0ZJ WF9XSURUSA0KCQlsaXN0YS5yb3dIZWFkZXJXaWR0aCA9IDANCgkJbGlzdGEu Y29sdW1uSGVhZGVyTW9kZSA9IExBWU9VVF9GSVhfSEVJR0hUDQoJCWxpc3Rh LmNvbHVtbkhlYWRlckhlaWdodCA9IDANCgkJbGlzdGEuc2V0Q29sdW1uV2lk dGgoMCwgMjUpDQoJCWxpc3RhLnNldENvbHVtbldpZHRoKDEsIDIwMCkNCg0K CQlsaXN0YS5zZXRJdGVtVGV4dCgwLCAwLCAiMSIpDQoJCWxpc3RhLnNldEl0 ZW1UZXh0KDAsIDEsICJDT05UTyBESSBSRURESVRPIikNCgkJbGlzdGEuc2V0 SXRlbUp1c3RpZnkoMCwgMSwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJCWxpc3Rh LnNldEl0ZW1UZXh0KDEsIDAsICIyIikNCgkJbGlzdGEuc2V0SXRlbVRleHQo MSwgMSwgIkNPTlRPIFBBVFJJTU9OSUFMRSIpDQoJCWxpc3RhLnNldEl0ZW1K dXN0aWZ5KDEsIDEsIEZYVGFibGVJdGVtOjpMRUZUKQ0KCQlsaXN0YS5zZXRJ dGVtVGV4dCgyLCAwLCAiMyIpDQoJCWxpc3RhLnNldEl0ZW1UZXh0KDIsIDEs ICJDT05UTyBEXCdPUkRJTkUiKQ0KCQlsaXN0YS5zZXRJdGVtSnVzdGlmeSgy LCAxLCBGWFRhYmxlSXRlbTo6TEVGVCkNCgkJbGlzdGEuc2V0SXRlbVRleHQo MywgMCwgIjQiKQ0KCQlsaXN0YS5zZXRJdGVtVGV4dCgzLCAxLCAiQ09OVE8g UklFUElMT0dBVElWTyIpDQoJCWxpc3RhLnNldEl0ZW1KdXN0aWZ5KDMsIDEs IEZYVGFibGVJdGVtOjpMRUZUKQ0KICAgIA0KCQlsaXN0YS5jb25uZWN0KFNF TF9TRUxFQ1RFRCkgZG8gfCBzZW5kZXIsIHNlbCwgcG9zIHwNCgkJCSR2YXJb MF0gPSAoc2VuZGVyLmdldEl0ZW0ocG9zLnJvdywgMCkpLnRvX3MNCgkJCSR2 YXJbMV0gPSAoc2VuZGVyLmdldEl0ZW0ocG9zLnJvdywgMSkpLnRvX3MNCgkJ ZW5kDQoJZW5kDQplbmQNCg0KY2xhc3MgRmluZXN0cmE5MDAwMyA8IEZYRGlh bG9nQm94DQoJI2RlZiBpbml0aWFsaXplKGFwcCkNCglkZWYgaW5pdGlhbGl6 ZShhcHApDQoJCSMgSW5pdGlhbGl6ZSBiYXNlIGNsYXNzDQoJCXN1cGVyKGFw cCwgIlJpY2VyY2EgZGVsIGNvZGljZSBkZWwgZ3J1cHBvIiwgOm9wdHMgPT4g REVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9PiA0MDAs IDpoZWlnaHQgPT4gMTAwKQ0KCQlsaXN0YSA9IEZYVGFibGUubmV3KHNlbGYs IDpvcHRzID0+IExBWU9VVF9GSUxMfFRBQkxFX1JFQURPTkxZKQ0KDQoJCWJl Z2luDQoJCQlAY29ubiA9IE15c3FsLm5ldygibG9jYWxob3N0IiwgInJvb3Qi LCAieGNvbGlicmkiLCAicGlyYW1pZGUiKQ0KCQkJQHNjZWx0YSA9IEBjb25u LnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHBpYW5vX2RlaV9jb250aSBXSEVSRSBj b2RpY2VfdGlwb19jb250byA9IDEiKQ0KCQkJQGNvbnRhdG9yZSA9ICIje0Bz Y2VsdGEubnVtX3Jvd3N9Ii50b19pDQoJCQlAY29ubi5jbG9zZQ0KCQlyZXNj dWUgTXlzcWxFcnJvciA9PiBlDQoJCQlAY29ubi5jbG9zZQ0KCQkJcHJpbnQg ImVycm9yIGNvZGU6ICIsIGUuZXJybm8sICJcbiINCgkJCXByaW50ICJlcnJv ciBtZXNzYWdlOiAiLCBlLmVycm9yLCAiXG4iDQoJCWVuZA0KDQoJCWxpc3Rh LnRhYmxlU3R5bGUgfD0gVEFCTEVfQ09MX1NJWkFCTEUNCgkJbGlzdGEuc2V0 VGFibGVTaXplKDAsMikNCgkJbGlzdGEucm93SGVhZGVyTW9kZSA9IExBWU9V VF9GSVhfV0lEVEgNCgkJbGlzdGEucm93SGVhZGVyV2lkdGggPSAwDQoJCWxp c3RhLmNvbHVtbkhlYWRlck1vZGUgPSBMQVlPVVRfRklYX0hFSUdIVA0KCQls aXN0YS5jb2x1bW5IZWFkZXJIZWlnaHQgPSAwDQoJCWxpc3RhLnNldENvbHVt bldpZHRoKDAsIDI1KQ0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgxLCAyMDAp DQoNCgkJaWR4ID0gMA0KCQl3aGlsZSBpZHggPCBAY29udGF0b3JlDQoJCQlA cmlnYSA9IEBzY2VsdGEuZGF0YV9zZWVrKGlkeCkNCgkJCUByaWdhID0gQHNj ZWx0YS5mZXRjaF9yb3cNCgkJCWxpc3RhLmluc2VydFJvd3MoaWR4KQ0KCQkJ bGlzdGEuc2V0SXRlbVRleHQoaWR4LCAwLCBAcmlnYVsxXSkNCgkJCWxpc3Rh LnNldEl0ZW1KdXN0aWZ5KGlkeCwgMCwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJ CQlsaXN0YS5zZXRJdGVtVGV4dChpZHgsIDEsIEByaWdhWzVdKQ0KCQkJbGlz dGEuc2V0SXRlbUp1c3RpZnkoaWR4LCAxLCBGWFRhYmxlSXRlbTo6TEVGVCkN CgkJCWlkeCA9IGlkeCArIDENCgkJZW5kDQoNCgkJbGlzdGEuY29ubmVjdChT RUxfU0VMRUNURUQpIGRvIHwgc2VuZGVyLCBzZWwsIHBvcyB8DQoJCQkkdmFy WzBdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDApKS50b19zDQoJCQkk dmFyWzFdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDEpKS50b19zDQoJ CWVuZA0KCWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJhOTAwMDQgPCBGWERp YWxvZ0JveA0KCSNkZWYgaW5pdGlhbGl6ZShhcHApDQoJZGVmIGluaXRpYWxp emUoYXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBjbGFzcw0KCQlzdXBlcihh cHAsICJSaWNlcmNhIGRlbCBjb2RpY2UgZGVsIGNvbnRvIiwgOm9wdHMgPT4g REVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9PiA0MDAs IDpoZWlnaHQgPT4gMTAwKQ0KCQlsaXN0YSA9IEZYVGFibGUubmV3KHNlbGYs IDpvcHRzID0+IExBWU9VVF9GSUxMfFRBQkxFX1JFQURPTkxZKQ0KDQoJCUBj b25uID0gTXlzcWwubmV3KCJsb2NhbGhvc3QiLCAicm9vdCIsICJ4Y29saWJy aSIsICJwaXJhbWlkZSIpDQoJCUBzY2VsdGEgPSBAY29ubi5xdWVyeSgiU0VM RUNUICogRlJPTSBwaWFub19kZWlfY29udGkgV0hFUkUgY29kaWNlX3RpcG9f Y29udG8gPSAyIEFORCBjb2RpY2VfZ3J1cHBvID0gJyN7JHZhcn0nIikNCgkJ QGNvbnRhdG9yZSA9ICIje0BzY2VsdGEubnVtX3Jvd3N9Ii50b19pDQoJCUBj b25uLmNsb3NlCQ0KCQkNCgkJbGlzdGEudGFibGVTdHlsZSB8PSBUQUJMRV9D T0xfU0laQUJMRQ0KCQlsaXN0YS5zZXRUYWJsZVNpemUoMCwzKQ0KCQlsaXN0 YS5yb3dIZWFkZXJNb2RlID0gTEFZT1VUX0ZJWF9XSURUSA0KCQlsaXN0YS5y b3dIZWFkZXJXaWR0aCA9IDANCgkJbGlzdGEuY29sdW1uSGVhZGVyTW9kZSA9 IExBWU9VVF9GSVhfSEVJR0hUDQoJCWxpc3RhLmNvbHVtbkhlYWRlckhlaWdo dCA9IDANCgkJbGlzdGEuc2V0Q29sdW1uV2lkdGgoMCwgMjUpDQoJCWxpc3Rh LnNldENvbHVtbldpZHRoKDEsIDI1KQ0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0 aCgyLCAyMDApDQoNCgkJaWR4ID0gMA0KCQl3aGlsZSBpZHggPCBAY29udGF0 b3JlDQoJCQlAcmlnYSA9IEBzY2VsdGEuZGF0YV9zZWVrKGlkeCkNCgkJCUBy aWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJCWxpc3RhLmluc2VydFJvd3Mo aWR4KQ0KCQkJbGlzdGEuc2V0SXRlbVRleHQoaWR4LCAwLCBAcmlnYVsxXSkN CgkJCWxpc3RhLnNldEl0ZW1KdXN0aWZ5KGlkeCwgMCwgRlhUYWJsZUl0ZW06 OkxFRlQpDQoJCQlsaXN0YS5zZXRJdGVtVGV4dChpZHgsIDEsIEByaWdhWzJd KQ0KCQkJbGlzdGEuc2V0SXRlbUp1c3RpZnkoaWR4LCAxLCBGWFRhYmxlSXRl bTo6TEVGVCkNCgkJCWxpc3RhLnNldEl0ZW1UZXh0KGlkeCwgMiwgQHJpZ2Fb NV0pDQoJCQlsaXN0YS5zZXRJdGVtSnVzdGlmeShpZHgsIDIsIEZYVGFibGVJ dGVtOjpMRUZUKQ0KCQkJaWR4ID0gaWR4ICsgMQ0KCQllbmQNCgkJJHZhciA9 IFtdDQoJCWxpc3RhLmNvbm5lY3QoU0VMX1NFTEVDVEVEKSBkbyB8IHNlbmRl ciwgc2VsLCBwb3MgfA0KCQkJJHZhclswXSA9IChzZW5kZXIuZ2V0SXRlbShw b3Mucm93LCAxKSkudG9fcw0KCQkJJHZhclsxXSA9IChzZW5kZXIuZ2V0SXRl bShwb3Mucm93LCAyKSkudG9fcw0KCQllbmQNCgllbmQNCmVuZA0KDQpjbGFz cyBGaW5lc3RyYTkwMDA1IDwgRlhEaWFsb2dCb3gNCgkjZGVmIGluaXRpYWxp emUoYXBwKQ0KCWRlZiBpbml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXpl IGJhc2UgY2xhc3MNCgkJc3VwZXIoYXBwLCAiUmljZXJjYSBkZWwgY29kaWNl IGRpIHNvdHRvY29udG8iLCA6b3B0cyA9PiBERUNPUl9BTEwsIDp4ID0+IDIw LCA6eSA9PiAyMCwgOndpZHRoID0+IDQwMCwgOmhlaWdodCA9PiAxMDApDQoJ CWxpc3RhID0gRlhUYWJsZS5uZXcoc2VsZiwgOm9wdHMgPT4gTEFZT1VUX0ZJ TEx8VEFCTEVfUkVBRE9OTFkpDQoNCgkJQGNvbm4gPSBNeXNxbC5uZXcoImxv Y2FsaG9zdCIsICJyb290IiwgInhjb2xpYnJpIiwgInBpcmFtaWRlIikNCgkJ QHNjZWx0YSA9IEBjb25uLnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHBpYW5vX2Rl aV9jb250aSBXSEVSRSBjb2RpY2VfdGlwb19jb250byA9IDMgQU5EIGNvZGlj ZV9ncnVwcG8gPSAnI3skdmFyWzBdfScgQU5EIGNvZGljZV9jb250byA9ICcj eyR2YXJbMV19JyIpDQoJCUBjb250YXRvcmUgPSAiI3tAc2NlbHRhLm51bV9y b3dzfSIudG9faQ0KCQlAY29ubi5jbG9zZQkNCgkJDQoJCWxpc3RhLnRhYmxl U3R5bGUgfD0gVEFCTEVfQ09MX1NJWkFCTEUNCgkJbGlzdGEuc2V0VGFibGVT aXplKDAsNikNCgkJbGlzdGEucm93SGVhZGVyTW9kZSA9IExBWU9VVF9GSVhf V0lEVEgNCgkJbGlzdGEucm93SGVhZGVyV2lkdGggPSAwDQoJCWxpc3RhLmNv bHVtbkhlYWRlck1vZGUgPSBMQVlPVVRfRklYX0hFSUdIVA0KCQlsaXN0YS5j b2x1bW5IZWFkZXJIZWlnaHQgPSAwDQoJCWxpc3RhLnNldENvbHVtbldpZHRo KDAsIDI1KQ0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgxLCAyNSkNCgkJbGlz dGEuc2V0Q29sdW1uV2lkdGgoMiwgNTApDQoJCWxpc3RhLnNldENvbHVtbldp ZHRoKDMsIDIwMCkNCgkJbGlzdGEuc2V0Q29sdW1uV2lkdGgoNCwgMjUpDQoJ CWxpc3RhLnNldENvbHVtbldpZHRoKDUsIDEwMCkNCgkJaWR4ID0gMA0KCQl3 aGlsZSBpZHggPCBAY29udGF0b3JlDQoJCQlAcmlnYSA9IEBzY2VsdGEuZGF0 YV9zZWVrKGlkeCkNCgkJCUByaWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJ CWxpc3RhLmluc2VydFJvd3MoaWR4KQ0KCQkJbGlzdGEuc2V0SXRlbVRleHQo aWR4LCAwLCBAcmlnYVsxXSkNCgkJCWxpc3RhLnNldEl0ZW1KdXN0aWZ5KGlk eCwgMCwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJCQlsaXN0YS5zZXRJdGVtVGV4 dChpZHgsIDEsIEByaWdhWzJdKQ0KCQkJbGlzdGEuc2V0SXRlbUp1c3RpZnko aWR4LCAxLCBGWFRhYmxlSXRlbTo6TEVGVCkNCgkJCWxpc3RhLnNldEl0ZW1U ZXh0KGlkeCwgMiwgQHJpZ2FbM10pDQoJCQlsaXN0YS5zZXRJdGVtSnVzdGlm eShpZHgsIDIsIEZYVGFibGVJdGVtOjpMRUZUKQ0KCQkJbGlzdGEuc2V0SXRl bVRleHQoaWR4LCAzLCBAcmlnYVs1XSkNCgkJCWxpc3RhLnNldEl0ZW1KdXN0 aWZ5KGlkeCwgMywgRlhUYWJsZUl0ZW06OkxFRlQpDQoJCQlpZHggPSBpZHgg KyAxDQoJCWVuZA0KCQkkdmFyID0gW10NCgkJbGlzdGEuY29ubmVjdChTRUxf U0VMRUNURUQpIGRvIHwgc2VuZGVyLCBzZWwsIHBvcyB8DQoJCQkkdmFyWzBd ID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDIpKS50b19zDQoJCQkkdmFy WzFdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDMpKS50b19zDQoJCQkk dmFyWzJdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDQpKS50b19zDQoJ CQkkdmFyWzNdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDUpKS50b19z DQoJCWVuZA0KCWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJhOTAwMDYgPCBG WERpYWxvZ0JveA0KCSNkZWYgaW5pdGlhbGl6ZShhcHApDQoJZGVmIGluaXRp YWxpemUoYXBwKQ0KCQkjIEluaXRpYWxpemUgYmFzZSBjbGFzcw0KCQlzdXBl cihhcHAsICJSaWNlcmNhIGRpIGNvbnRvIHBlciBkZW5vbWluYXppb25lIiwg Om9wdHMgPT4gREVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0 aCA9PiA1MDAsIDpoZWlnaHQgPT4gMjAwKQ0KCQlsaXN0YSA9IEZYVGFibGUu bmV3KHNlbGYsIDpvcHRzID0+IExBWU9VVF9GSUxMfFRBQkxFX1JFQURPTkxZ KQ0KDQoJCUBjb25uID0gTXlzcWwubmV3KCJsb2NhbGhvc3QiLCAicm9vdCIs ICJ4Y29saWJyaSIsICJwaXJhbWlkZSIpDQoJCUBzY2VsdGEgPSBAY29ubi5x dWVyeSgiU0VMRUNUICogRlJPTSBwaWFub19kZWlfY29udGkgV0hFUkUgc2ln bGEgTElLRSAnJSN7JHZhclswXX0lJyIpDQoJCUBjb250YXRvcmUgPSAiI3tA c2NlbHRhLm51bV9yb3dzfSIudG9faQ0KCQlAY29ubi5jbG9zZQkNCgkJDQoJ CWxpc3RhLnRhYmxlU3R5bGUgfD0gVEFCTEVfQ09MX1NJWkFCTEUNCgkJbGlz dGEuc2V0VGFibGVTaXplKDAsMikNCgkJbGlzdGEucm93SGVhZGVyTW9kZSA9 IExBWU9VVF9GSVhfV0lEVEgNCgkJbGlzdGEucm93SGVhZGVyV2lkdGggPSAw DQoJCWxpc3RhLmNvbHVtbkhlYWRlck1vZGUgPSBMQVlPVVRfRklYX0hFSUdI VA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJIZWlnaHQgPSAwDQoJCWxpc3RhLnNl dENvbHVtbldpZHRoKDAsMTAwKQ0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgx LDMwMCkNCgkJaWR4ID0gMA0KCQl3aGlsZSBpZHggPCBAY29udGF0b3JlDQoJ CQlAcmlnYSA9IEBzY2VsdGEuZGF0YV9zZWVrKGlkeCkNCgkJCUByaWdhID0g QHNjZWx0YS5mZXRjaF9yb3cNCgkJCWxpc3RhLmluc2VydFJvd3MoaWR4KQ0K CQkJbGlzdGEuc2V0SXRlbVRleHQoaWR4LCAwLCBAcmlnYVs3XSkNCgkJCWxp c3RhLnNldEl0ZW1KdXN0aWZ5KGlkeCwgMCwgRlhUYWJsZUl0ZW06OlJJR0hU KQ0KCQkJbGlzdGEuc2V0SXRlbVRleHQoaWR4LCAxLCBAcmlnYVs1XSkNCgkJ CWxpc3RhLnNldEl0ZW1KdXN0aWZ5KGlkeCwgMSwgRlhUYWJsZUl0ZW06OkxF RlQpDQoJCQlpZHggPSBpZHggKyAxDQoJCWVuZA0KCQkkdmFyID0gW10NCgkJ bGlzdGEuY29ubmVjdChTRUxfU0VMRUNURUQpIGRvIHwgc2VuZGVyLCBzZWws IHBvcyB8DQoJCQkkdmFyWzBdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3cs IDApKS50b19zDQoJCWVuZA0KCWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJh OTAwMTEgPCBGWERpYWxvZ0JveCAgI2ZpbmVzdHJhIHBlciBsYSByaWNlcmNh IGRlbGxlIGNhdXNhbGkgZGkgY29udGFiaWxpdGEnIGdlbmVyYWxlIHBlciBj b2RpY2UNCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0KCWRlZiBpbml0aWFsaXpl KGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJc3VwZXIoYXBw LCAiUmljZXJjYSBkZWwgY29kaWNlIGRlbGxhIGNhdXNhbGUgaXZhIiwgOm9w dHMgPT4gREVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9 PiA0MDAsIDpoZWlnaHQgPT4gMTAwKQ0KCQlsaXN0YSA9IEZYVGFibGUubmV3 KHNlbGYsIDpvcHRzID0+IExBWU9VVF9GSUxMfFRBQkxFX1JFQURPTkxZKQ0K DQoJCWJlZ2luDQoJCQlAY29ubiA9IE15c3FsLm5ldygibG9jYWxob3N0Iiwg InJvb3QiLCAieGNvbGlicmkiLCAicGlyYW1pZGUiKQ0KCQkJQHNjZWx0YSA9 IEBjb25uLnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGNhdXNhbGlfY29nZSIpDQoJ CQlAY29udGF0b3JlID0gIiN7QHNjZWx0YS5udW1fcm93c30iLnRvX2kNCgkJ CUBjb25uLmNsb3NlDQoJCXJlc2N1ZSBNeXNxbEVycm9yID0+IGUNCgkJCUBj b25uLmNsb3NlDQoJCQlwcmludCAiZXJyb3IgY29kZTogIiwgZS5lcnJubywg IlxuIg0KCQkJcHJpbnQgImVycm9yIG1lc3NhZ2U6ICIsIGUuZXJyb3IsICJc biINCgkJZW5kDQoNCgkJbGlzdGEudGFibGVTdHlsZSB8PSBUQUJMRV9DT0xf U0laQUJMRQ0KCQlsaXN0YS5zZXRUYWJsZVNpemUoMCwyKQ0KCQlsaXN0YS5y b3dIZWFkZXJNb2RlID0gTEFZT1VUX0ZJWF9XSURUSA0KCQlsaXN0YS5yb3dI ZWFkZXJXaWR0aCA9IDANCgkJbGlzdGEuY29sdW1uSGVhZGVyTW9kZSA9IExB WU9VVF9GSVhfSEVJR0hUDQoJCWxpc3RhLmNvbHVtbkhlYWRlckhlaWdodCA9 IDANCgkJbGlzdGEuc2V0Q29sdW1uV2lkdGgoMCwgMjUpDQoJCWxpc3RhLnNl dENvbHVtbldpZHRoKDEsIDIwMCkNCg0KCQlpZHggPSAwDQoJCXdoaWxlIGlk eCA8IEBjb250YXRvcmUNCgkJCUByaWdhID0gQHNjZWx0YS5kYXRhX3NlZWso aWR4KQ0KCQkJQHJpZ2EgPSBAc2NlbHRhLmZldGNoX3Jvdw0KCQkJbGlzdGEu aW5zZXJ0Um93cyhpZHgpDQoJCQlsaXN0YS5zZXRJdGVtVGV4dChpZHgsIDAs IEByaWdhWzBdKQ0KCQkJbGlzdGEuc2V0SXRlbUp1c3RpZnkoaWR4LCAwLCBG WFRhYmxlSXRlbTo6TEVGVCkNCgkJCWxpc3RhLnNldEl0ZW1UZXh0KGlkeCwg MSwgQHJpZ2FbMV0pDQoJCQlsaXN0YS5zZXRJdGVtSnVzdGlmeShpZHgsIDEs IEZYVGFibGVJdGVtOjpMRUZUKQ0KCQkJaWR4ID0gaWR4ICsgMQ0KCQllbmQN Cg0KCQlsaXN0YS5jb25uZWN0KFNFTF9TRUxFQ1RFRCkgZG8gfCBzZW5kZXIs IHNlbCwgcG9zIHwNCgkJCSR2YXJbMF0gPSAoc2VuZGVyLmdldEl0ZW0ocG9z LnJvdywgMCkpLnRvX3MNCgkJZW5kDQoJZW5kDQplbmQNCg0KY2xhc3MgRmlu ZXN0cmE5MDAxMiA8IEZYRGlhbG9nQm94ICNmaW5lc3RyYSBwZXIgbGEgcmlj ZXJjYSBkZWxsZSBjYXVzYWxpIGRpIGNvbnRhYmlsaXRhJyBnZW5lcmFsZSBw ZXIgZGVzY3JpemlvbmUNCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0KCWRlZiBp bml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJ c3VwZXIoYXBwLCAiQ2F1c2FsZSBkaSBjb250YWJpbGl0YVwnIGdlbmVyYWxl IiwgOm9wdHMgPT4gREVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3 aWR0aCA9PiA0MDAsIDpoZWlnaHQgPT4gMTAwKQ0KCQlsaXN0YSA9IEZYVGFi bGUubmV3KHNlbGYsIDpvcHRzID0+IExBWU9VVF9GSUxMfFRBQkxFX1JFQURP TkxZKQ0KCQlsaXN0YS5zZXRUYWJsZVNpemUoMCwgMTEpDQoJCWxpc3RhLnJv d0hlYWRlck1vZGUgPSBMQVlPVVRfRklYX1dJRFRIDQoJCWxpc3RhLnJvd0hl YWRlcldpZHRoID0gMA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJNb2RlID0gTEFZ T1VUX0ZJWF9IRUlHSFQNCgkJbGlzdGEuY29sdW1uSGVhZGVySGVpZ2h0ID0g MA0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgwLCAyNSkNCgkJbGlzdGEuc2V0 Q29sdW1uV2lkdGgoMSwgNDAwKQ0KCQlAY29ubiA9IE15c3FsLm5ldygibG9j YWxob3N0IiwgInJvb3QiLCAieGNvbGlicmkiLCAicGlyYW1pZGUiKQ0KCQlA c2NlbHRhID0gQGNvbm4ucXVlcnkoIlNFTEVDVCAqIEZST00gY2F1c2FsaV9j b2dlIFdIRVJFIHNpZ2xhIExJS0UgJyUjeyR2YXJbMF19JSciKQ0KCQlAY29u dGF0b3JlID0gIiN7QHNjZWx0YS5udW1fcm93c30iLnRvX2kNCgkJQGNvbm4u Y2xvc2UNCg0KCQlpZHggPSAwDQoJCXdoaWxlIGlkeCA8IEBjb250YXRvcmUN CgkJCUByaWdhID0gQHNjZWx0YS5kYXRhX3NlZWsoaWR4KQ0KCQkJQHJpZ2Eg PSBAc2NlbHRhLmZldGNoX3Jvdw0KCQkJbGlzdGEuaW5zZXJ0Um93cyhpZHgp DQoJCQlsaXN0YS5zZXRJdGVtVGV4dChpZHgsIDAsIEByaWdhWzBdKQ0KCQkJ bGlzdGEuc2V0SXRlbUp1c3RpZnkoaWR4LCAwLCBGWFRhYmxlSXRlbTo6TEVG VCkNCgkJCWxpc3RhLnNldEl0ZW1UZXh0KGlkeCwgMSwgQHJpZ2FbMV0pDQoJ CQlsaXN0YS5zZXRJdGVtSnVzdGlmeShpZHgsIDEsIEZYVGFibGVJdGVtOjpM RUZUKQ0KCQkJaWR4ID0gaWR4ICsgMQ0KCQllbmQNCg0KCQlsaXN0YS5jb25u ZWN0KFNFTF9TRUxFQ1RFRCkgZG8gfCBzZW5kZXIsIHNlbCwgcG9zIHwNCgkJ CSR2YXJbMF0gPSAoc2VuZGVyLmdldEl0ZW0ocG9zLnJvdywgMCkpLnRvX3MN CgkJZW5kDQoJZW5kDQplbmQNCg0KY2xhc3MgRmluZXN0cmE5MDAxMyA8IEZY RGlhbG9nQm94ICNmaW5lc3RyYSBwZXIgbGEgcmljZXJjYSBkZWkgbGlicmkg Z2lvcm5hbGUNCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0KCWRlZiBpbml0aWFs aXplKGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJc3VwZXIo YXBwLCAiUmljZXJjYSBkZWwgbGlicm8gY29udGFiaWxlIiwgOm9wdHMgPT4g REVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4gMjAsIDp3aWR0aCA9PiA0MDAs IDpoZWlnaHQgPT4gMTAwKQ0KCQlsaXN0YSA9IEZYVGFibGUubmV3KHNlbGYs IDpvcHRzID0+IExBWU9VVF9GSUxMfFRBQkxFX1JFQURPTkxZKQ0KCQlsaXN0 YS5zZXRUYWJsZVNpemUoMCwgMikNCgkJbGlzdGEucm93SGVhZGVyTW9kZSA9 IExBWU9VVF9GSVhfV0lEVEgNCgkJbGlzdGEucm93SGVhZGVyV2lkdGggPSAw DQoJCWxpc3RhLmNvbHVtbkhlYWRlck1vZGUgPSBMQVlPVVRfRklYX0hFSUdI VA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJIZWlnaHQgPSAwDQoJCWxpc3RhLnNl dENvbHVtbldpZHRoKDAsIDI1KQ0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgx LCAyMDApDQoNCgkJQGNvbm4gPSBNeXNxbC5uZXcoImxvY2FsaG9zdCIsICJy b290IiwgInhjb2xpYnJpIiwgInBpcmFtaWRlIikNCgkJQHNjZWx0YSA9IEBj b25uLnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGxpYnJvX2NvbnRhYmlsZSBXSEVS RSB0aXBvX3JlZ2lzdHJvX2l2YSA9IDEiKQ0KCQlAY29udGF0b3JlID0gIiN7 QHNjZWx0YS5udW1fcm93c30iLnRvX2kNCgkJQGNvbm4uY2xvc2UNCg0KCQls aXN0YS50YWJsZVN0eWxlIHw9IFRBQkxFX0NPTF9TSVpBQkxFDQoJCWxpc3Rh LnNldFRhYmxlU2l6ZSgwLDIpDQoJCWxpc3RhLnJvd0hlYWRlck1vZGUgPSBM QVlPVVRfRklYX1dJRFRIDQoJCWxpc3RhLnJvd0hlYWRlcldpZHRoID0gMA0K CQlsaXN0YS5jb2x1bW5IZWFkZXJNb2RlID0gTEFZT1VUX0ZJWF9IRUlHSFQN CgkJbGlzdGEuY29sdW1uSGVhZGVySGVpZ2h0ID0gMA0KCQlsaXN0YS5zZXRD b2x1bW5XaWR0aCgwLCAyNSkNCgkJbGlzdGEuc2V0Q29sdW1uV2lkdGgoMSwg MjAwKQ0KDQoJCWlkeCA9IDANCgkJd2hpbGUgaWR4IDwgQGNvbnRhdG9yZQ0K CQkJQHJpZ2EgPSBAc2NlbHRhLmRhdGFfc2VlayhpZHgpDQoJCQlAcmlnYSA9 IEBzY2VsdGEuZmV0Y2hfcm93DQoJCQlsaXN0YS5pbnNlcnRSb3dzKGlkeCkN CgkJCWxpc3RhLnNldEl0ZW1UZXh0KGlkeCwgMCwgQHJpZ2FbMF0pDQoJCQls aXN0YS5zZXRJdGVtSnVzdGlmeShpZHgsIDAsIEZYVGFibGVJdGVtOjpMRUZU KQ0KCQkJbGlzdGEuc2V0SXRlbVRleHQoaWR4LCAxLCBAcmlnYVsxXSkNCgkJ CWxpc3RhLnNldEl0ZW1KdXN0aWZ5KGlkeCwgMSwgRlhUYWJsZUl0ZW06OkxF RlQpDQoJCQlpZHggPSBpZHggKyAxDQoJCWVuZA0KDQoJCWxpc3RhLmNvbm5l Y3QoU0VMX1NFTEVDVEVEKSBkbyB8IHNlbmRlciwgc2VsLCBwb3MgfA0KCQkJ JHZhclswXSA9IChzZW5kZXIuZ2V0SXRlbShwb3Mucm93LCAwKSkudG9fcw0K CQkJJHZhclsxXSA9IChzZW5kZXIuZ2V0SXRlbShwb3Mucm93LCAxKSkudG9f cw0KCQllbmQNCgllbmQNCmVuZA0KDQpjbGFzcyBGaW5lc3RyYTkwMDE0IDwg RlhEaWFsb2dCb3gNCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0KCWRlZiBpbml0 aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJc3Vw ZXIoYXBwLCAiQ29kaWNlIGRlbCB0aXBvIGRpIGxpYnJvIGNvbnRhYmlsZSIs IDpvcHRzID0+IERFQ09SX0FMTCwgOnggPT4gMjAsIDp5ID0+IDIwLCA6d2lk dGggPT4gNDAwLCA6aGVpZ2h0ID0+IDIwMCkNCgkJbGlzdGEgPSBGWFRhYmxl Lm5ldyhzZWxmLCA6b3B0cyA9PiBMQVlPVVRfRklMTHxUQUJMRV9SRUFET05M WSkNCgkJbGlzdGEuc2V0VGFibGVTaXplKDMsIDIpDQoJCWxpc3RhLnJvd0hl YWRlck1vZGUgPSBMQVlPVVRfRklYX1dJRFRIDQoJCWxpc3RhLnJvd0hlYWRl cldpZHRoID0gMA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJNb2RlID0gTEFZT1VU X0ZJWF9IRUlHSFQNCgkJbGlzdGEuY29sdW1uSGVhZGVySGVpZ2h0ID0gMA0K CQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgwLCAyNSkNCgkJbGlzdGEuc2V0Q29s dW1uV2lkdGgoMSwgNDAwKQ0KDQoJCWxpc3RhLnNldEl0ZW1UZXh0KDAsIDAs ICIxIikNCgkJbGlzdGEuc2V0SXRlbVRleHQoMCwgMSwgIkxJQlJPIEdJT1JO QUxFIikNCgkJbGlzdGEuc2V0SXRlbUp1c3RpZnkoMCwgMSwgRlhUYWJsZUl0 ZW06OkxFRlQpDQoJCWxpc3RhLnNldEl0ZW1UZXh0KDEsIDAsICIyIikNCgkJ bGlzdGEuc2V0SXRlbVRleHQoMSwgMSwgIkxJQlJPIElWQSBBQ1FVSVNUSSIp DQoJCWxpc3RhLnNldEl0ZW1KdXN0aWZ5KDEsIDEsIEZYVGFibGVJdGVtOjpM RUZUKQ0KCQlsaXN0YS5zZXRJdGVtVGV4dCgyLCAwLCAiMyIpDQoJCWxpc3Rh LnNldEl0ZW1UZXh0KDIsIDEsICJMSUJSTyBJVkEgVkVORElURSIpDQoJCWxp c3RhLnNldEl0ZW1KdXN0aWZ5KDIsIDEsIEZYVGFibGVJdGVtOjpMRUZUKQ0K DQoJCWxpc3RhLmNvbm5lY3QoU0VMX1NFTEVDVEVEKSBkbyB8IHNlbmRlciwg c2VsLCBwb3MgfA0KCQkJJHZhclswXSA9IChzZW5kZXIuZ2V0SXRlbShwb3Mu cm93LCAwKSkudG9fcw0KCQkJJHZhclsxXSA9IChzZW5kZXIuZ2V0SXRlbShw b3Mucm93LCAxKSkudG9fcw0KCQllbmQNCgllbmQNCmVuZA0KDQpjbGFzcyBG aW5lc3RyYTkwMDE1IDwgRlhEaWFsb2dCb3ggI2ZpbmVzdHJhIHBlciBsYSBy aWNlcmNhIGRlaSBsaWJyaSBjb250YWJpbGkNCgkjZGVmIGluaXRpYWxpemUo YXBwKQ0KCWRlZiBpbml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXplIGJh c2UgY2xhc3MNCgkJc3VwZXIoYXBwLCAiUmljZXJjYSBkZWwgbGlicm8gY29u dGFiaWxlIiwgOm9wdHMgPT4gREVDT1JfQUxMLCA6eCA9PiAyMCwgOnkgPT4g MjAsIDp3aWR0aCA9PiA0MDAsIDpoZWlnaHQgPT4gMjAwKQ0KCQlsaXN0YSA9 IEZYVGFibGUubmV3KHNlbGYsIDpvcHRzID0+IExBWU9VVF9GSUxMfFRBQkxF X1JFQURPTkxZKQ0KDQoJCWJlZ2luDQoJCQlAY29ubiA9IE15c3FsLm5ldygi bG9jYWxob3N0IiwgInJvb3QiLCAieGNvbGlicmkiLCAicGlyYW1pZGUiKQ0K CQkJQHNjZWx0YSA9IEBjb25uLnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGxpYnJv X2NvbnRhYmlsZSIpDQoJCQlAY29udGF0b3JlID0gIiN7QHNjZWx0YS5udW1f cm93c30iLnRvX2kNCgkJCUBjb25uLmNsb3NlDQoJCXJlc2N1ZSBNeXNxbEVy cm9yID0+IGUNCgkJCUBjb25uLmNsb3NlDQoJCQlwcmludCAiZXJyb3IgY29k ZTogIiwgZS5lcnJubywgIlxuIg0KCQkJcHJpbnQgImVycm9yIG1lc3NhZ2U6 ICIsIGUuZXJyb3IsICJcbiINCgkJZW5kDQoNCgkJbGlzdGEudGFibGVTdHls ZSB8PSBUQUJMRV9DT0xfU0laQUJMRQ0KCQlsaXN0YS5zZXRUYWJsZVNpemUo MCwyKQ0KCQlsaXN0YS5yb3dIZWFkZXJNb2RlID0gTEFZT1VUX0ZJWF9XSURU SA0KCQlsaXN0YS5yb3dIZWFkZXJXaWR0aCA9IDANCgkJbGlzdGEuY29sdW1u SGVhZGVyTW9kZSA9IExBWU9VVF9GSVhfSEVJR0hUDQoJCWxpc3RhLmNvbHVt bkhlYWRlckhlaWdodCA9IDANCgkJbGlzdGEuc2V0Q29sdW1uV2lkdGgoMCwg MjUpDQoJCWxpc3RhLnNldENvbHVtbldpZHRoKDEsIDQwMCkNCgkJaWR4ID0g MA0KCQl3aGlsZSBpZHggPCBAY29udGF0b3JlDQoJCQlAcmlnYSA9IEBzY2Vs dGEuZGF0YV9zZWVrKGlkeCkNCgkJCUByaWdhID0gQHNjZWx0YS5mZXRjaF9y b3cNCgkJCWxpc3RhLmluc2VydFJvd3MoaWR4KQ0KCQkJbGlzdGEuc2V0SXRl bVRleHQoaWR4LCAwLCBAcmlnYVswXSkNCgkJCWxpc3RhLnNldEl0ZW1KdXN0 aWZ5KGlkeCwgMCwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJCQlsaXN0YS5zZXRJ dGVtVGV4dChpZHgsIDEsIEByaWdhWzFdKQ0KCQkJbGlzdGEuc2V0SXRlbUp1 c3RpZnkoaWR4LCAxLCBGWFRhYmxlSXRlbTo6TEVGVCkNCgkJCWlkeCA9IGlk eCArIDENCgkJZW5kDQoNCgkJbGlzdGEuY29ubmVjdChTRUxfU0VMRUNURUQp IGRvIHwgc2VuZGVyLCBzZWwsIHBvcyB8DQoJCQkkdmFyWzBdID0gKHNlbmRl ci5nZXRJdGVtKHBvcy5yb3csIDApKS50b19zDQoJCQkkdmFyWzFdID0gKHNl bmRlci5nZXRJdGVtKHBvcy5yb3csIDEpKS50b19zDQoJCWVuZA0KCWVuZA0K ZW5kDQoNCmNsYXNzIEZpbmVzdHJhOTAwMTYgPCBGWERpYWxvZ0JveCAjZmlu ZXN0cmEgcGVyIGxhIHJpY2VyY2EgZGVpIGxpYnJpIGl2YQ0KCSNkZWYgaW5p dGlhbGl6ZShhcHApDQoJZGVmIGluaXRpYWxpemUoYXBwKQ0KCQkjIEluaXRp YWxpemUgYmFzZSBjbGFzcw0KCQlzdXBlcihhcHAsICJSaWNlcmNhIGRlbCBs aWJybyBpdmEiLCA6b3B0cyA9PiBERUNPUl9BTEwsIDp4ID0+IDIwLCA6eSA9 PiAyMCwgOndpZHRoID0+IDQwMCwgOmhlaWdodCA9PiA1MDApDQoJCWxpc3Rh ID0gRlhUYWJsZS5uZXcoc2VsZiwgOm9wdHMgPT4gTEFZT1VUX0ZJTEx8VEFC TEVfUkVBRE9OTFkpDQoJCWxpc3RhLnNldFRhYmxlU2l6ZSgwLCAyKQ0KCQls aXN0YS5yb3dIZWFkZXJNb2RlID0gTEFZT1VUX0ZJWF9XSURUSA0KCQlsaXN0 YS5yb3dIZWFkZXJXaWR0aCA9IDANCgkJbGlzdGEuY29sdW1uSGVhZGVyTW9k ZSA9IExBWU9VVF9GSVhfSEVJR0hUDQoJCWxpc3RhLmNvbHVtbkhlYWRlckhl aWdodCA9IDANCgkJbGlzdGEuc2V0Q29sdW1uV2lkdGgoMCwgMjUpDQoJCWxp c3RhLnNldENvbHVtbldpZHRoKDEsIDQwMCkNCg0KCQlAY29ubiA9IE15c3Fs Lm5ldygibG9jYWxob3N0IiwgInJvb3QiLCAieGNvbGlicmkiLCAicGlyYW1p ZGUiKQ0KCQlAc2NlbHRhID0gQGNvbm4ucXVlcnkoIlNFTEVDVCAqIEZST00g bGlicm9fY29udGFiaWxlIFdIRVJFIHRpcG9fcmVnaXN0cm9faXZhID4gMSIp DQoJCUBjb250YXRvcmUgPSAiI3tAc2NlbHRhLm51bV9yb3dzfSIudG9faQ0K CQlAY29ubi5jbG9zZQ0KDQoJCWxpc3RhLnRhYmxlU3R5bGUgfD0gVEFCTEVf Q09MX1NJWkFCTEUNCgkJbGlzdGEuc2V0VGFibGVTaXplKDAsMikNCgkJbGlz dGEucm93SGVhZGVyTW9kZSA9IExBWU9VVF9GSVhfV0lEVEgNCgkJbGlzdGEu cm93SGVhZGVyV2lkdGggPSAwDQoJCWxpc3RhLmNvbHVtbkhlYWRlck1vZGUg PSBMQVlPVVRfRklYX0hFSUdIVA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJIZWln aHQgPSAwDQoJCWxpc3RhLnNldENvbHVtbldpZHRoKDAsIDI1KQ0KCQlsaXN0 YS5zZXRDb2x1bW5XaWR0aCgxLCA0MDApDQoNCgkJaWR4ID0gMA0KCQl3aGls ZSBpZHggPCBAY29udGF0b3JlDQoJCQlAcmlnYSA9IEBzY2VsdGEuZGF0YV9z ZWVrKGlkeCkNCgkJCUByaWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJCWxp c3RhLmluc2VydFJvd3MoaWR4KQ0KCQkJbGlzdGEuc2V0SXRlbVRleHQoaWR4 LCAwLCBAcmlnYVswXSkNCgkJCWxpc3RhLnNldEl0ZW1KdXN0aWZ5KGlkeCwg MCwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJCQlsaXN0YS5zZXRJdGVtVGV4dChp ZHgsIDEsIEByaWdhWzFdKQ0KCQkJbGlzdGEuc2V0SXRlbUp1c3RpZnkoaWR4 LCAxLCBGWFRhYmxlSXRlbTo6TEVGVCkNCgkJCWlkeCA9IGlkeCArIDENCgkJ ZW5kDQoNCgkJbGlzdGEuY29ubmVjdChTRUxfU0VMRUNURUQpIGRvIHwgc2Vu ZGVyLCBzZWwsIHBvcyB8DQoJCQkkdmFyWzBdID0gKHNlbmRlci5nZXRJdGVt KHBvcy5yb3csIDApKS50b19zDQoJCQkkdmFyWzFdID0gKHNlbmRlci5nZXRJ dGVtKHBvcy5yb3csIDEpKS50b19zDQoJCWVuZA0KCWVuZA0KZW5kDQoNCmNs YXNzIEZpbmVzdHJhOTAwMTcgPCBGWERpYWxvZ0JveCAjZmluZXN0cmEgcGVy IGxhIHJpY2VyY2EgZGVpIGRvY3VtZW50aSBpdmENCgkjZGVmIGluaXRpYWxp emUoYXBwKQ0KCWRlZiBpbml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXpl IGJhc2UgY2xhc3MNCgkJc3VwZXIoYXBwLCAiUmljZXJjYSBkZWwgdGlwbyBk aSBkb2N1bWVudG8gaXZhIiwgOm9wdHMgPT4gREVDT1JfQUxMLCA6eCA9PiAy MCwgOnkgPT4gMjAsIDp3aWR0aCA9PiA0MDAsIDpoZWlnaHQgPT4gNTAwKQ0K CQlsaXN0YSA9IEZYVGFibGUubmV3KHNlbGYsIDpvcHRzID0+IExBWU9VVF9G SUxMfFRBQkxFX1JFQURPTkxZKQ0KCQlsaXN0YS5zZXRUYWJsZVNpemUoMCwg MikNCgkJbGlzdGEucm93SGVhZGVyTW9kZSA9IExBWU9VVF9GSVhfV0lEVEgN CgkJbGlzdGEucm93SGVhZGVyV2lkdGggPSAwDQoJCWxpc3RhLmNvbHVtbkhl YWRlck1vZGUgPSBMQVlPVVRfRklYX0hFSUdIVA0KCQlsaXN0YS5jb2x1bW5I ZWFkZXJIZWlnaHQgPSAwDQoJCWxpc3RhLnNldENvbHVtbldpZHRoKDAsIDI1 KQ0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgxLCAyMDApDQoNCgkJQGNvbm4g PSBNeXNxbC5uZXcoImxvY2FsaG9zdCIsICJyb290IiwgInhjb2xpYnJpIiwg InBpcmFtaWRlIikNCgkJQHNjZWx0YSA9IEBjb25uLnF1ZXJ5KCJTRUxFQ1Qg KiBGUk9NIHRpcG9fZG9jdW1lbnRvX2l2YSIpDQoJCUBjb250YXRvcmUgPSAi I3tAc2NlbHRhLm51bV9yb3dzfSIudG9faQ0KCQlAY29ubi5jbG9zZQ0KDQoJ CWxpc3RhLnRhYmxlU3R5bGUgfD0gVEFCTEVfQ09MX1NJWkFCTEUNCgkJbGlz dGEuc2V0VGFibGVTaXplKDAsMikNCgkJbGlzdGEucm93SGVhZGVyTW9kZSA9 IExBWU9VVF9GSVhfV0lEVEgNCgkJbGlzdGEucm93SGVhZGVyV2lkdGggPSAw DQoJCWxpc3RhLmNvbHVtbkhlYWRlck1vZGUgPSBMQVlPVVRfRklYX0hFSUdI VA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJIZWlnaHQgPSAwDQoJCWxpc3RhLnNl dENvbHVtbldpZHRoKDAsIDI1KQ0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgx LCAyMDApDQoNCgkJaWR4ID0gMA0KCQl3aGlsZSBpZHggPCBAY29udGF0b3Jl DQoJCQlAcmlnYSA9IEBzY2VsdGEuZGF0YV9zZWVrKGlkeCkNCgkJCUByaWdh ID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJCWxpc3RhLmluc2VydFJvd3MoaWR4 KQ0KCQkJbGlzdGEuc2V0SXRlbVRleHQoaWR4LCAwLCBAcmlnYVswXSkNCgkJ CWxpc3RhLnNldEl0ZW1KdXN0aWZ5KGlkeCwgMCwgRlhUYWJsZUl0ZW06OkxF RlQpDQoJCQlsaXN0YS5zZXRJdGVtVGV4dChpZHgsIDEsIEByaWdhWzFdKQ0K CQkJbGlzdGEuc2V0SXRlbUp1c3RpZnkoaWR4LCAxLCBGWFRhYmxlSXRlbTo6 TEVGVCkNCgkJCWlkeCA9IGlkeCArIDENCgkJZW5kDQoNCgkJbGlzdGEuY29u bmVjdChTRUxfU0VMRUNURUQpIGRvIHwgc2VuZGVyLCBzZWwsIHBvcyB8DQoJ CQkkdmFyWzBdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDApKS50b19z DQoJCQkkdmFyWzFdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDEpKS50 b19zDQoJCWVuZA0KCWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJhOTAwMTgg PCBGWERpYWxvZ0JveCAjZmluZXN0cmEgcGVyIGxhIHJpY2VyY2EgZGVsbGUg b3BlcmF6aW9uaSBpdmENCgkjZGVmIGluaXRpYWxpemUoYXBwKQ0KCWRlZiBp bml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXplIGJhc2UgY2xhc3MNCgkJ c3VwZXIoYXBwLCAiUmljZXJjYSBkZWxsZSBvcGVyYXppb25pIGl2YSIsIDpv cHRzID0+IERFQ09SX0FMTCwgOnggPT4gMjAsIDp5ID0+IDIwLCA6d2lkdGgg PT4gNDAwLCA6aGVpZ2h0ID0+IDUwMCkNCgkJbGlzdGEgPSBGWFRhYmxlLm5l dyhzZWxmLCA6b3B0cyA9PiBMQVlPVVRfRklMTHxUQUJMRV9SRUFET05MWSkN CgkJbGlzdGEuc2V0VGFibGVTaXplKDAsIDIpDQoJCWxpc3RhLnJvd0hlYWRl ck1vZGUgPSBMQVlPVVRfRklYX1dJRFRIDQoJCWxpc3RhLnJvd0hlYWRlcldp ZHRoID0gMA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJNb2RlID0gTEFZT1VUX0ZJ WF9IRUlHSFQNCgkJbGlzdGEuY29sdW1uSGVhZGVySGVpZ2h0ID0gMA0KCQls aXN0YS5zZXRDb2x1bW5XaWR0aCgwLCAyNSkNCgkJbGlzdGEuc2V0Q29sdW1u V2lkdGgoMSwgMjAwKQ0KDQoJCUBjb25uID0gTXlzcWwubmV3KCJsb2NhbGhv c3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJwaXJhbWlkZSIpDQoJCUBzY2Vs dGEgPSBAY29ubi5xdWVyeSgiU0VMRUNUICogRlJPTSBvcGVyYXppb25lX2l2 YSIpDQoJCUBjb250YXRvcmUgPSAiI3tAc2NlbHRhLm51bV9yb3dzfSIudG9f aQ0KCQlAY29ubi5jbG9zZQ0KDQoJCWxpc3RhLnRhYmxlU3R5bGUgfD0gVEFC TEVfQ09MX1NJWkFCTEUNCgkJbGlzdGEuc2V0VGFibGVTaXplKDAsMikNCgkJ bGlzdGEucm93SGVhZGVyTW9kZSA9IExBWU9VVF9GSVhfV0lEVEgNCgkJbGlz dGEucm93SGVhZGVyV2lkdGggPSAwDQoJCWxpc3RhLmNvbHVtbkhlYWRlck1v ZGUgPSBMQVlPVVRfRklYX0hFSUdIVA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJI ZWlnaHQgPSAwDQoJCWxpc3RhLnNldENvbHVtbldpZHRoKDAsIDI1KQ0KCQls aXN0YS5zZXRDb2x1bW5XaWR0aCgxLCAyMDApDQoNCgkJaWR4ID0gMA0KCQl3 aGlsZSBpZHggPCBAY29udGF0b3JlDQoJCQlAcmlnYSA9IEBzY2VsdGEuZGF0 YV9zZWVrKGlkeCkNCgkJCUByaWdhID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJ CWxpc3RhLmluc2VydFJvd3MoaWR4KQ0KCQkJbGlzdGEuc2V0SXRlbVRleHQo aWR4LCAwLCBAcmlnYVswXSkNCgkJCWxpc3RhLnNldEl0ZW1KdXN0aWZ5KGlk eCwgMCwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJCQlsaXN0YS5zZXRJdGVtVGV4 dChpZHgsIDEsIEByaWdhWzFdKQ0KCQkJbGlzdGEuc2V0SXRlbUp1c3RpZnko aWR4LCAxLCBGWFRhYmxlSXRlbTo6TEVGVCkNCgkJCWlkeCA9IGlkeCArIDEN CgkJZW5kDQoNCgkJbGlzdGEuY29ubmVjdChTRUxfU0VMRUNURUQpIGRvIHwg c2VuZGVyLCBzZWwsIHBvcyB8DQoJCQkkdmFyWzBdID0gKHNlbmRlci5nZXRJ dGVtKHBvcy5yb3csIDApKS50b19zDQoJCQkkdmFyWzFdID0gKHNlbmRlci5n ZXRJdGVtKHBvcy5yb3csIDEpKS50b19zDQoJCWVuZA0KCWVuZA0KZW5kDQoN CmNsYXNzIEZpbmVzdHJhOTAwMTkgPCBGWERpYWxvZ0JveCAjZmluZXN0cmEg cGVyIGxhIHJpY2VyY2EgZGkgY2F1c2FsaSBpdmENCgkjZGVmIGluaXRpYWxp emUoYXBwKQ0KCWRlZiBpbml0aWFsaXplKGFwcCkNCgkJIyBJbml0aWFsaXpl IGJhc2UgY2xhc3MNCgkJc3VwZXIoYXBwLCAiUmljZXJjYSBkZWxsZSBvcGVy YXppb25pIGl2YSIsIDpvcHRzID0+IERFQ09SX0FMTCwgOnggPT4gMjAsIDp5 ID0+IDIwLCA6d2lkdGggPT4gNDAwLCA6aGVpZ2h0ID0+IDUwMCkNCgkJbGlz dGEgPSBGWFRhYmxlLm5ldyhzZWxmLCA6b3B0cyA9PiBMQVlPVVRfRklMTHxU QUJMRV9SRUFET05MWSkNCgkJbGlzdGEuc2V0VGFibGVTaXplKDAsIDIpDQoJ CWxpc3RhLnJvd0hlYWRlck1vZGUgPSBMQVlPVVRfRklYX1dJRFRIDQoJCWxp c3RhLnJvd0hlYWRlcldpZHRoID0gMA0KCQlsaXN0YS5jb2x1bW5IZWFkZXJN b2RlID0gTEFZT1VUX0ZJWF9IRUlHSFQNCgkJbGlzdGEuY29sdW1uSGVhZGVy SGVpZ2h0ID0gMA0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgwLCAyNSkNCgkJ bGlzdGEuc2V0Q29sdW1uV2lkdGgoMSwgMjAwKQ0KDQoJCUBjb25uID0gTXlz cWwubmV3KCJsb2NhbGhvc3QiLCAicm9vdCIsICJ4Y29saWJyaSIsICJwaXJh bWlkZSIpDQoJCUBzY2VsdGEgPSBAY29ubi5xdWVyeSgiU0VMRUNUICogRlJP TSBjYXVzYWxpX2l2YSIpDQoJCUBjb250YXRvcmUgPSAiI3tAc2NlbHRhLm51 bV9yb3dzfSIudG9faQ0KCQlAY29ubi5jbG9zZQ0KDQoJCWxpc3RhLnRhYmxl U3R5bGUgfD0gVEFCTEVfQ09MX1NJWkFCTEUNCgkJbGlzdGEuc2V0VGFibGVT aXplKDAsMikNCgkJbGlzdGEucm93SGVhZGVyTW9kZSA9IExBWU9VVF9GSVhf V0lEVEgNCgkJbGlzdGEucm93SGVhZGVyV2lkdGggPSAwDQoJCWxpc3RhLmNv bHVtbkhlYWRlck1vZGUgPSBMQVlPVVRfRklYX0hFSUdIVA0KCQlsaXN0YS5j b2x1bW5IZWFkZXJIZWlnaHQgPSAwDQoJCWxpc3RhLnNldENvbHVtbldpZHRo KDAsIDI1KQ0KCQlsaXN0YS5zZXRDb2x1bW5XaWR0aCgxLCAyMDApDQoNCgkJ aWR4ID0gMA0KCQl3aGlsZSBpZHggPCBAY29udGF0b3JlDQoJCQlAcmlnYSA9 IEBzY2VsdGEuZGF0YV9zZWVrKGlkeCkNCgkJCUByaWdhID0gQHNjZWx0YS5m ZXRjaF9yb3cNCgkJCWxpc3RhLmluc2VydFJvd3MoaWR4KQ0KCQkJbGlzdGEu c2V0SXRlbVRleHQoaWR4LCAwLCBAcmlnYVswXSkNCgkJCWxpc3RhLnNldEl0 ZW1KdXN0aWZ5KGlkeCwgMCwgRlhUYWJsZUl0ZW06OkxFRlQpDQoJCQlsaXN0 YS5zZXRJdGVtVGV4dChpZHgsIDEsIEByaWdhWzFdKQ0KCQkJbGlzdGEuc2V0 SXRlbUp1c3RpZnkoaWR4LCAxLCBGWFRhYmxlSXRlbTo6TEVGVCkNCgkJCWlk eCA9IGlkeCArIDENCgkJZW5kDQoNCgkJbGlzdGEuY29ubmVjdChTRUxfU0VM RUNURUQpIGRvIHwgc2VuZGVyLCBzZWwsIHBvcyB8DQoJCQkkdmFyWzBdID0g KHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDApKS50b19zDQoJCQkkdmFyWzFd ID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDEpKS50b19zDQoJCWVuZA0K CWVuZA0KZW5kDQoNCmNsYXNzIEZpbmVzdHJhOTAwMjAgPCBGWERpYWxvZ0Jv eCAjZmluZXN0cmEgcGVyIGxhIHJpY2VyY2EgZGVsbGUgY2F1c2FsaSBpdmEg cGVyIGRlc2NyaXppb25lDQoJI2RlZiBpbml0aWFsaXplKGFwcCkNCglkZWYg aW5pdGlhbGl6ZShhcHApDQoJCSMgSW5pdGlhbGl6ZSBiYXNlIGNsYXNzDQoJ CXN1cGVyKGFwcCwgIkNhdXNhbGUgZGkgY29udGFiaWxpdGFcJyBnZW5lcmFs ZSIsIDpvcHRzID0+IERFQ09SX0FMTCwgOnggPT4gMjAsIDp5ID0+IDIwLCA6 d2lkdGggPT4gNDAwLCA6aGVpZ2h0ID0+IDUwMCkNCgkJbGlzdGEgPSBGWFRh YmxlLm5ldyhzZWxmLCA6b3B0cyA9PiBMQVlPVVRfRklMTHxUQUJMRV9SRUFE T05MWSkNCgkJbGlzdGEuc2V0VGFibGVTaXplKDAsIDExKQ0KCQlsaXN0YS5y b3dIZWFkZXJNb2RlID0gTEFZT1VUX0ZJWF9XSURUSA0KCQlsaXN0YS5yb3dI ZWFkZXJXaWR0aCA9IDANCgkJbGlzdGEuY29sdW1uSGVhZGVyTW9kZSA9IExB WU9VVF9GSVhfSEVJR0hUDQoJCWxpc3RhLmNvbHVtbkhlYWRlckhlaWdodCA9 IDANCgkJbGlzdGEuc2V0Q29sdW1uV2lkdGgoMCwgMjUpDQoJCWxpc3RhLnNl dENvbHVtbldpZHRoKDEsIDQwMCkNCgkJQGNvbm4gPSBNeXNxbC5uZXcoImxv Y2FsaG9zdCIsICJyb290IiwgInhjb2xpYnJpIiwgInBpcmFtaWRlIikNCgkJ QHNjZWx0YSA9IEBjb25uLnF1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGNhdXNhbGlf aXZhIFdIRVJFIGNvZGljZSBMSUtFICclI3skdmFyWzBdfSUnIikNCgkJQGNv bnRhdG9yZSA9ICIje0BzY2VsdGEubnVtX3Jvd3N9Ii50b19pDQoJCUBjb25u LmNsb3NlDQoNCgkJaWR4ID0gMA0KCQl3aGlsZSBpZHggPCBAY29udGF0b3Jl DQoJCQlAcmlnYSA9IEBzY2VsdGEuZGF0YV9zZWVrKGlkeCkNCgkJCUByaWdh ID0gQHNjZWx0YS5mZXRjaF9yb3cNCgkJCWxpc3RhLmluc2VydFJvd3MoaWR4 KQ0KCQkJbGlzdGEuc2V0SXRlbVRleHQoaWR4LCAwLCBAcmlnYVswXSkNCgkJ CWxpc3RhLnNldEl0ZW1KdXN0aWZ5KGlkeCwgMCwgRlhUYWJsZUl0ZW06OkxF RlQpDQoJCQlsaXN0YS5zZXRJdGVtVGV4dChpZHgsIDEsIEByaWdhWzFdKQ0K CQkJbGlzdGEuc2V0SXRlbUp1c3RpZnkoaWR4LCAxLCBGWFRhYmxlSXRlbTo6 TEVGVCkNCgkJCWlkeCA9IGlkeCArIDENCgkJZW5kDQoNCgkJbGlzdGEuY29u bmVjdChTRUxfU0VMRUNURUQpIGRvIHwgc2VuZGVyLCBzZWwsIHBvcyB8DQoJ CQkkdmFyWzBdID0gKHNlbmRlci5nZXRJdGVtKHBvcy5yb3csIDApKS50b19z DQoJCWVuZA0KCWVuZA0KZW5kDQoNCmlmIF9fRklMRV9fID09ICQwDQoJIyBN YWtlIGFuIGFwcGxpY2F0aW9uDQoJYXBwbGljYXRpb24gPSBGWEFwcC5uZXco IkRhdGFUYXJnZXQiLCAiRm94VGVzdCIpDQoJIyBDcmVhdGUgbWFpbiB3aW5k b3cNCgl3aW5kb3cgPSBGaW5lc3RyYTAubmV3KGFwcGxpY2F0aW9uKQ0KCSMg SGFuZGxlIGludGVycnVwdHMgdG8gcXVpdCBhcHBsaWNhdGlvbiBncmFjZWZ1 bGx5DQoJYXBwbGljYXRpb24uYWRkU2lnbmFsKCJTSUdJTlQiLCB3aW5kb3cu bWV0aG9kKDpvbkNtZFF1aXQpKQ0KCSMgQ3JlYXRlIHRoZSBhcHBsaWNhdGlv bg0KCWFwcGxpY2F0aW9uLmNyZWF0ZQ0KCSMgUnVuDQoJYXBwbGljYXRpb24u cnVuDQplbmQ= --mimepart_4c87fa0ed539a_eed58900c65982--