{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"witnesses","params":"","code":"Y29uc3QgTkJfQVBQUk9WQUxTX0FMTE9XRUQ9MzAsTkJfVE9QX1dJVE5FU1NFUz0yMCxOQl9CQUNLVVBfV0lUTkVTU0VTPTEsTkJfV0lUTkVTU0VTPTIxLE5CX1dJVE5FU1NFU19TSUdOQVRVUkVTX1JFUVVJUkVEPTE0LE1BWF9ST1VORFNfTUlTU0VEX0lOX0FfUk9XPTMsTUFYX1JPVU5EX1BST1BPU0lUSU9OX1dBSVRJTkdfUEVSSU9EPTQwLE5CX1RPS0VOU19UT19SRVdBUkRfUEVSX0JMT0NLPSIwLjAxOTAyNTg2IixOQl9UT0tFTlNfTkVFREVEX0JFRk9SRV9SRVdBUkRJTkc9IjAuMzk5NTQzMDYiLFdJVE5FU1NfQVBQUk9WRV9FWFBJUkVfQkxPQ0tTPTUxODRlMyxXSVRORVNTX01BWF9BQ0NPVU5UX0VYUElSRV9QRVJfQkxPQ0s9MTAsVVRJTElUWV9UT0tFTl9TWU1CT0w9IkJFRSIsVVRJTElUWV9UT0tFTl9QUkVDSVNJT049OCxHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTD0iV09SS0VSQkVFIixHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTj01LEdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFPSIwLjAwMDAxIixyZWNhbGNUb3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodD1hc3luYygpPT57bGV0IHdpdHMsdG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQ9IjAiLG9mZnNldD0wO2Rve3dpdHM9YXdhaXQgYXBpLmRiLmZpbmQoIndpdG5lc3NlcyIse30sMWUzLG9mZnNldCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTx3aXRzLmxlbmd0aDtpKz0xKXtjb25zdCB3aXQ9d2l0c1tpXTt3aXQuZW5hYmxlZCYmKHRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIodG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQpLnBsdXMod2l0LmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSl9b2Zmc2V0Kz0xZTN9d2hpbGUoMWUzPT09d2l0cy5sZW5ndGgpO3JldHVybiB0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodH07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ3aXRuZXNzZXMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ3aXRuZXNzZXMiLFsiYXBwcm92YWxXZWlnaHQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJhcHByb3ZhbHMiLFsiZnJvbSIsInRvIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYWNjb3VudHMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInNjaGVkdWxlcyIpLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGFyYW1zIik7Y29uc3QgcGFyYW1zPXt0b3RhbEFwcHJvdmFsV2VpZ2h0OiIwIix0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodDoiMCIsbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3NlczowLGxhc3RWZXJpZmllZEJsb2NrTnVtYmVyOjAscm91bmQ6MCxsYXN0QmxvY2tSb3VuZDowLGN1cnJlbnRXaXRuZXNzOm51bGwsYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlOjAsbGFzdFdpdG5lc3NlczpbXSxudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQ6MzAsbnVtYmVyT2ZUb3BXaXRuZXNzZXM6MjAsbnVtYmVyT2ZXaXRuZXNzU2xvdHM6MjEsd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDoxNCxtYXhSb3VuZHNNaXNzZWRJbkFSb3c6MyxtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDo0MCx3aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrczo1MTg0ZTN9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7cGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0JiYiTmFOIiE9PXBhcmFtcy50b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodHx8KHBhcmFtcy50b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodD1hd2FpdCByZWNhbGNUb3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodCgpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKSl9fSxhY3Rpb25zLnJlc2V0U2NoZWR1bGU9YXN5bmMoKT0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0IHNjaGVkdWxlcz1hd2FpdCBhcGkuZGIuZmluZCgic2NoZWR1bGVzIix7fSk7Zm9yKGxldCBpbmRleD0wO2luZGV4PHNjaGVkdWxlcy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IHNjaGVkdWxlPXNjaGVkdWxlc1tpbmRleF07YXdhaXQgYXBpLmRiLnJlbW92ZSgic2NoZWR1bGVzIixzY2hlZHVsZSl9Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtwYXJhbXMuY3VycmVudFdpdG5lc3M9bnVsbCxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPTAscGFyYW1zLmxhc3RXaXRuZXNzZXM9W10scGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWF3YWl0IHJlY2FsY1RvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfSxhY3Rpb25zLnJlY2FsY3VsYXRlQXBwcm92YWxzPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdCB3aXRuZXNzUmVjPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OnBheWxvYWQud2l0bmVzc30pO2lmKCF3aXRuZXNzUmVjKXJldHVybjtsZXQgbmV3QXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcigwKTtjb25zdCBhcHByb3ZhbHM9YXdhaXQgYXBpLmRiLmZpbmQoImFwcHJvdmFscyIse3RvOnBheWxvYWQud2l0bmVzc30pO2ZvcihsZXQgaT0wO2k8YXBwcm92YWxzLmxlbmd0aDtpKz0xKXtjb25zdCBhcHByb3ZhbD1hcHByb3ZhbHNbaV0sYWNjb3VudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmFwcHJvdmFsLmZyb219KTthY2NvdW50JiYobmV3QXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihuZXdBcHByb3ZhbFdlaWdodCkucGx1cyhhY2NvdW50LmFwcHJvdmFsV2VpZ2h0KS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSl9Y29uc3Qgb2xkQXBwcm92YWxXZWlnaHQ9d2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCxkZWx0YUFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIobmV3QXBwcm92YWxXZWlnaHQpLm1pbnVzKG9sZEFwcHJvdmFsV2VpZ2h0KS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKTthd2FpdCB1cGRhdGVXaXRuZXNzUmFuayhwYXlsb2FkLndpdG5lc3MsZGVsdGFBcHByb3ZhbFdlaWdodCl9LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQ6bnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50LG51bWJlck9mVG9wV2l0bmVzc2VzOm51bWJlck9mVG9wV2l0bmVzc2VzLG51bWJlck9mV2l0bmVzc1Nsb3RzOm51bWJlck9mV2l0bmVzc1Nsb3RzLHdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQ6d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCxtYXhSb3VuZHNNaXNzZWRJbkFSb3c6bWF4Um91bmRzTWlzc2VkSW5BUm93LG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOm1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzOndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzfT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IHNob3VsZFJlc2V0U2NoZWR1bGU9ITE7bnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50JiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudCkmJihwYXJhbXMubnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50PW51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudCksbnVtYmVyT2ZUb3BXaXRuZXNzZXMmJk51bWJlci5pc0ludGVnZXIobnVtYmVyT2ZUb3BXaXRuZXNzZXMpJiYocGFyYW1zLm51bWJlck9mVG9wV2l0bmVzc2VzPW51bWJlck9mVG9wV2l0bmVzc2VzKSxudW1iZXJPZldpdG5lc3NTbG90cyYmTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZldpdG5lc3NTbG90cykmJnBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cyE9PW51bWJlck9mV2l0bmVzc1Nsb3RzJiYoc2hvdWxkUmVzZXRTY2hlZHVsZT0hMCxwYXJhbXMubnVtYmVyT2ZXaXRuZXNzU2xvdHM9bnVtYmVyT2ZXaXRuZXNzU2xvdHMpLHdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQmJk51bWJlci5pc0ludGVnZXIod2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCkmJihwYXJhbXMud2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZD13aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkKSxtYXhSb3VuZHNNaXNzZWRJbkFSb3cmJk51bWJlci5pc0ludGVnZXIobWF4Um91bmRzTWlzc2VkSW5BUm93KSYmKHBhcmFtcy5tYXhSb3VuZHNNaXNzZWRJbkFSb3c9bWF4Um91bmRzTWlzc2VkSW5BUm93KSxtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCYmTnVtYmVyLmlzSW50ZWdlcihtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCkmJihwYXJhbXMubWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q9bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QpLGFwaS5hc3NlcnQocGFyYW1zLm51bWJlck9mVG9wV2l0bmVzc2VzKzE9PT1wYXJhbXMubnVtYmVyT2ZXaXRuZXNzU2xvdHMsIm9ubHkgMSBiYWNrdXAgYWxsb3dlZCIpJiYod2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3MmJk51bWJlci5pc0ludGVnZXIod2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3MpJiZhcGkuYXNzZXJ0KHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzPnBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cywid2l0bmVzc0FwcHJvdmVFeHBpcmVCbG9ja3Mgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBudW1iZXJPZldpdG5lc3NTbG90cyIpJiYocGFyYW1zLndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzPXdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyksc2hvdWxkUmVzZXRTY2hlZHVsZSYmYXdhaXQgYWN0aW9ucy5yZXNldFNjaGVkdWxlKCkpfTtjb25zdCB1cGRhdGVXaXRuZXNzUmFuaz1hc3luYyh3aXRuZXNzLGFwcHJvdmFsV2VpZ2h0KT0+e2NvbnN0IHdpdG5lc3NSZWM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6d2l0bmVzc30pO2lmKHdpdG5lc3NSZWMpe2NvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0PXdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWw7d2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbD1hcGkuQmlnTnVtYmVyKHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnBsdXMoYXBwcm92YWxXZWlnaHQpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pLGFwaS5CaWdOdW1iZXIod2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkubHQoMCkmJih3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsPWFwaS5CaWdOdW1iZXIoMCkpLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsd2l0bmVzc1JlYyk7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtwYXJhbXMudG90YWxBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKHBhcmFtcy50b3RhbEFwcHJvdmFsV2VpZ2h0KS5wbHVzKGFwcHJvdmFsV2VpZ2h0KS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSx3aXRuZXNzUmVjLmVuYWJsZWQmJihwYXJhbXMudG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihwYXJhbXMudG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQpLnBsdXMoYXBwcm92YWxXZWlnaHQpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pKSxhcGkuQmlnTnVtYmVyKG9sZEFwcHJvdmFsV2VpZ2h0KS5lcSgwKSYmYXBpLkJpZ051bWJlcih3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5ndCgwKT9wYXJhbXMubnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcys9MTphcGkuQmlnTnVtYmVyKG9sZEFwcHJvdmFsV2VpZ2h0KS5ndCgwKSYmYXBpLkJpZ051bWJlcih3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5lcSgwKSYmKHBhcmFtcy5udW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzLT0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9fTthY3Rpb25zLnVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscz1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudDphY2NvdW50LGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDtpZih2b2lkIDA9PT1jYWxsaW5nQ29udHJhY3RJbmZvKXJldHVybjtpZigidG9rZW5zIiE9PWNhbGxpbmdDb250cmFjdEluZm8ubmFtZSlyZXR1cm47Y29uc3QgYWNjdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmFjY291bnR9KTtpZihudWxsIT09YWNjdCl7Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTH0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpO2NvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0PWFjY3QuYXBwcm92YWxXZWlnaHQsZGVsdGFBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5taW51cyhvbGRBcHByb3ZhbFdlaWdodCkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTik7aWYoYWNjdC5hcHByb3ZhbFdlaWdodD1hcHByb3ZhbFdlaWdodCwhYXBpLkJpZ051bWJlcihkZWx0YUFwcHJvdmFsV2VpZ2h0KS5lcSgwKSl7YXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGFjY3QpO2NvbnN0IGFwcHJvdmFscz1hd2FpdCBhcGkuZGIuZmluZCgiYXBwcm92YWxzIix7ZnJvbTphY2NvdW50fSk7Zm9yKGxldCBpbmRleD0wO2luZGV4PGFwcHJvdmFscy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IGFwcHJvdmFsPWFwcHJvdmFsc1tpbmRleF07YXdhaXQgdXBkYXRlV2l0bmVzc1JhbmsoYXBwcm92YWwudG8sZGVsdGFBcHByb3ZhbFdlaWdodCl9fX19LGFjdGlvbnMucmVnaXN0ZXI9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2RvbWFpbjpkb21haW4sSVA6SVAsUlBDUG9ydDpSUENQb3J0LFAyUFBvcnQ6UDJQUG9ydCxzaWduaW5nS2V5OnNpZ25pbmdLZXksZW5hYmxlZDplbmFibGVkLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwiYWN0aXZlIGtleSByZXF1aXJlZCIpJiZhcGkuYXNzZXJ0KGRvbWFpbnx8SVAsIm5laXRoZXIgZG9tYWluIG5vciBpcCBwcm92aWRlZCIpJiZhcGkuYXNzZXJ0KCEoZG9tYWluJiZJUCksImJvdGggZG9tYWluIGFuZCBpcCBwcm92aWRlZCIpJiYoZG9tYWluJiZhcGkuYXNzZXJ0KGRvbWFpbiYmInN0cmluZyI9PXR5cGVvZiBkb21haW4mJmFwaS52YWxpZGF0b3IuaXNGUUROKGRvbWFpbiksImRvbWFpbiBpcyBpbnZhbGlkIil8fElQJiZhcGkuYXNzZXJ0KElQJiYic3RyaW5nIj09dHlwZW9mIElQJiZhcGkudmFsaWRhdG9yLmlzSVAoSVApLCJJUCBpcyBpbnZhbGlkIikpJiZhcGkuYXNzZXJ0KFJQQ1BvcnQmJk51bWJlci5pc0ludGVnZXIoUlBDUG9ydCkmJlJQQ1BvcnQ+PTAmJlJQQ1BvcnQ8PTY1NTM1LCJSUENQb3J0IG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDY1NTM1IikmJmFwaS5hc3NlcnQoUDJQUG9ydCYmTnVtYmVyLmlzSW50ZWdlcihQMlBQb3J0KSYmUDJQUG9ydD49MCYmUDJQUG9ydDw9NjU1MzUsIlAyUFBvcnQgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNjU1MzUiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKHNpZ25pbmdLZXkpJiY1Mz09PXNpZ25pbmdLZXkubGVuZ3RoLCJpbnZhbGlkIHNpZ25pbmcga2V5IikmJmFwaS5hc3NlcnQoImJvb2xlYW4iPT10eXBlb2YgZW5hYmxlZCwiZW5hYmxlZCBtdXN0IGJlIGEgYm9vbGVhbiIpKXtsZXQgd2l0bmVzcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7c2lnbmluZ0tleTpzaWduaW5nS2V5fSk7aWYoYXBpLmFzc2VydChudWxsPT09d2l0bmVzc3x8d2l0bmVzcy5hY2NvdW50PT09YXBpLnNlbmRlciwiYSB3aXRuZXNzIGlzIGFscmVhZHkgdXNpbmcgdGhpcyBzaWduaW5nIGtleSIpJiYod2l0bmVzcz1JUD9hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7SVA6SVAsUDJQUG9ydDpQMlBQb3J0fSk6YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2RvbWFpbjpkb21haW4sUDJQUG9ydDpQMlBQb3J0fSksYXBpLmFzc2VydChudWxsPT09d2l0bmVzc3x8d2l0bmVzcy5hY2NvdW50PT09YXBpLnNlbmRlcixgYSB3aXRuZXNzIGlzIGFscmVhZHkgdXNpbmcgdGhpcyAke0lQPyJJUCI6ImRvbWFpbiJ9L1BvcnRgKSkpaWYod2l0bmVzcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDphcGkuc2VuZGVyfSksd2l0bmVzcyl7Y29uc3QgZW5hYmxlZENoYW5nZWQ9d2l0bmVzcy5lbmFibGVkIT09ZW5hYmxlZDtsZXQgdXNlVW5zZXRzPSExO2NvbnN0IHVuc2V0cz17fTtJUD8od2l0bmVzcy5JUD1JUCx3aXRuZXNzLmRvbWFpbiYmKGRlbGV0ZSB3aXRuZXNzLmRvbWFpbix1bnNldHMuZG9tYWluPSIiLHVzZVVuc2V0cz0hMCkpOih3aXRuZXNzLmRvbWFpbj1kb21haW4sd2l0bmVzcy5JUCYmKGRlbGV0ZSB3aXRuZXNzLklQLHVuc2V0cy5JUD0iIix1c2VVbnNldHM9ITApKSx3aXRuZXNzLlJQQ1BvcnQ9UlBDUG9ydCx3aXRuZXNzLlAyUFBvcnQ9UDJQUG9ydCx3aXRuZXNzLnNpZ25pbmdLZXk9c2lnbmluZ0tleSx3aXRuZXNzLmVuYWJsZWQ9ZW5hYmxlZCx1c2VVbnNldHM/YXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzLHVuc2V0cyk6YXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzKTtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2VuYWJsZWRDaGFuZ2VkJiZ3aXRuZXNzLmVuYWJsZWQ/cGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KS5wbHVzKHdpdG5lc3MuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pOmVuYWJsZWRDaGFuZ2VkJiYhd2l0bmVzcy5lbmFibGVkJiYocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KS5taW51cyh3aXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfWVsc2Ugd2l0bmVzcz17YWNjb3VudDphcGkuc2VuZGVyLGFwcHJvdmFsV2VpZ2h0OnskbnVtYmVyRGVjaW1hbDoiMCJ9LHNpZ25pbmdLZXk6c2lnbmluZ0tleSxSUENQb3J0OlJQQ1BvcnQsUDJQUG9ydDpQMlBQb3J0LGVuYWJsZWQ6ZW5hYmxlZCxtaXNzZWRSb3VuZHM6MCxtaXNzZWRSb3VuZHNJbkFSb3c6MCx2ZXJpZmllZFJvdW5kczowLGxhc3RSb3VuZFZlcmlmaWVkOm51bGwsbGFzdEJsb2NrVmVyaWZpZWQ6bnVsbH0sSVA/d2l0bmVzcy5JUD1JUDp3aXRuZXNzLmRvbWFpbj1kb21haW4sYXdhaXQgYXBpLmRiLmluc2VydCgid2l0bmVzc2VzIix3aXRuZXNzKX19O2NvbnN0IHJlbW92ZUFwcHJvdmFsPWFzeW5jKGFwcHJvdmFsLGFjY3QsYmxuY2UsbWFudWFsPSEwKT0+e2lmKGFwaS5hc3NlcnQobnVsbCE9PWFwcHJvdmFsLCJ5b3UgaGF2ZSBub3QgYXBwcm92ZWQgdGhpcyB3aXRuZXNzIikpe2NvbnN0e2Zyb206ZnJvbSx0bzp0b309YXBwcm92YWw7bGV0IGFjY291bnQ9YWNjdDthY2N0JiZhY2N0LmFjY291bnQ9PT1mcm9tfHwoYWNjb3VudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmZyb219KSksYXdhaXQgYXBpLmRiLnJlbW92ZSgiYXBwcm92YWxzIixhcHByb3ZhbCk7bGV0IGJhbGFuY2U9YmxuY2U7YmFsYW5jZXx8KGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6ZnJvbSxzeW1ib2w6R09WRVJOQU5DRV9UT0tFTl9TWU1CT0x9KSk7bGV0IGFwcHJvdmFsV2VpZ2h0PTA7YmFsYW5jZSYmYmFsYW5jZS5zdGFrZSYmKGFwcHJvdmFsV2VpZ2h0PWJhbGFuY2Uuc3Rha2UpLGJhbGFuY2UmJmJhbGFuY2UuZGVsZWdhdGlvbnNJbiYmKGFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYXBwcm92YWxXZWlnaHQpLnBsdXMoYmFsYW5jZS5kZWxlZ2F0aW9uc0luKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksbWFudWFsJiYoYWNjb3VudC5hcHByb3ZhbHMtPTEsYWNjb3VudC5hcHByb3ZhbFdlaWdodD1hcHByb3ZhbFdlaWdodCxhY2NvdW50Lmxhc3RBcHByb3ZlQmxvY2s9YXBpLmJsb2NrTnVtYmVyLGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhY2NvdW50KSksYXdhaXQgdXBkYXRlV2l0bmVzc1JhbmsodG8sYC0ke2FwcHJvdmFsV2VpZ2h0fWApLGFwaS5lbWl0KCJ3aXRuZXNzQXBwcm92YWxSZW1vdmVkIix7YWNjb3VudDpmcm9tLHRvOnRvLGFwcHJvdmFsV2VpZ2h0OmFwcHJvdmFsV2VpZ2h0fSl9fTthY3Rpb25zLmFwcHJvdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3dpdG5lc3M6d2l0bmVzc309cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKGFwaS5hc3NlcnQod2l0bmVzcyYmInN0cmluZyI9PXR5cGVvZiB3aXRuZXNzJiZ3aXRuZXNzLmxlbmd0aD49MyYmd2l0bmVzcy5sZW5ndGg8PTE2LCJpbnZhbGlkIHdpdG5lc3MgYWNjb3VudCIpKXtjb25zdCB3aXRuZXNzUmVjPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KHdpdG5lc3NSZWMsIndpdG5lc3MgZG9lcyBub3QgZXhpc3QiKSl7bGV0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYobnVsbD09PWFjY3QmJihhY2N0PXthY2NvdW50OmFwaS5zZW5kZXIsYXBwcm92YWxzOjAsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn0sbGFzdEFwcHJvdmVCbG9jazphcGkuYmxvY2tOdW1iZXJ9LGFjY3Q9YXdhaXQgYXBpLmRiLmluc2VydCgiYWNjb3VudHMiLGFjY3QpKSxhcGkuYXNzZXJ0KGFjY3QuYXBwcm92YWxzPHBhcmFtcy5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQsYHlvdSBjYW4gb25seSBhcHByb3ZlICR7cGFyYW1zLm51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudH0gd2l0bmVzc2VzYCkpe2xldCBhcHByb3ZhbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYXBwcm92YWxzIix7ZnJvbTphcGkuc2VuZGVyLHRvOndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1hcHByb3ZhbCwieW91IGFscmVhZHkgYXBwcm92ZWQgdGhpcyB3aXRuZXNzIikpe2FwcHJvdmFsPXtmcm9tOmFwaS5zZW5kZXIsdG86d2l0bmVzc30sYXdhaXQgYXBpLmRiLmluc2VydCgiYXBwcm92YWxzIixhcHByb3ZhbCk7Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTH0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpLGFjY3QuYXBwcm92YWxzKz0xLGFjY3QuYXBwcm92YWxXZWlnaHQ9YXBwcm92YWxXZWlnaHQsYWNjdC5sYXN0QXBwcm92ZUJsb2NrPWFwaS5ibG9ja051bWJlcixhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCksYXdhaXQgdXBkYXRlV2l0bmVzc1Jhbmsod2l0bmVzcyxhcHByb3ZhbFdlaWdodCksYXBpLmVtaXQoIndpdG5lc3NBcHByb3ZhbEFkZGVkIix7YWNjb3VudDphcGkuc2VuZGVyLHRvOndpdG5lc3MsYXBwcm92YWxXZWlnaHQ6YXBwcm92YWxXZWlnaHR9KX19fX19LGFjdGlvbnMuZGlzYXBwcm92ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7d2l0bmVzczp3aXRuZXNzfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQod2l0bmVzcyYmInN0cmluZyI9PXR5cGVvZiB3aXRuZXNzJiZ3aXRuZXNzLmxlbmd0aD49MyYmd2l0bmVzcy5sZW5ndGg8PTE2LCJpbnZhbGlkIHdpdG5lc3MgYWNjb3VudCIpKXtjb25zdCB3aXRuZXNzUmVjPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KHdpdG5lc3NSZWMsIndpdG5lc3MgZG9lcyBub3QgZXhpc3QiKSl7bGV0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYobnVsbD09PWFjY3QmJihhY2N0PXthY2NvdW50OmFwaS5zZW5kZXIsYXBwcm92YWxzOjAsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn0sbGFzdEFwcHJvdmVCbG9jazphcGkuYmxvY2tOdW1iZXJ9LGF3YWl0IGFwaS5kYi5pbnNlcnQoImFjY291bnRzIixhY2N0KSksYXBpLmFzc2VydChhY2N0LmFwcHJvdmFscz4wLCJubyBhcHByb3ZhbHMgZm91bmQiKSl7Y29uc3QgYXBwcm92YWw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFwcHJvdmFscyIse2Zyb206YWNjdC5hY2NvdW50LHRvOndpdG5lc3N9KSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOkdPVkVSTkFOQ0VfVE9LRU5fU1lNQk9MfSk7YXdhaXQgcmVtb3ZlQXBwcm92YWwoYXBwcm92YWwsYWNjdCxiYWxhbmNlLCEwKX19fX07Y29uc3QgZXhwaXJlQWxsVXNlckFwcHJvdmFscz1hc3luYyBhY2N0PT57Y29uc3QgYXBwcm92YWxzPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmFjY3QuYWNjb3VudH0pLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YWNjdC5hY2NvdW50LHN5bWJvbDpHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTH0pO2ZvcihsZXQgaT0wO2k8YXBwcm92YWxzLmxlbmd0aDtpKz0xKXtjb25zdCBhcHByb3ZhbD1hcHByb3ZhbHNbaV07YXdhaXQgcmVtb3ZlQXBwcm92YWwoYXBwcm92YWwsYWNjdCxiYWxhbmNlLCExKX1sZXQgYXBwcm92YWxXZWlnaHQ9MDtiYWxhbmNlJiZiYWxhbmNlLnN0YWtlJiYoYXBwcm92YWxXZWlnaHQ9YmFsYW5jZS5zdGFrZSksYmFsYW5jZSYmYmFsYW5jZS5kZWxlZ2F0aW9uc0luJiYoYXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pKTtjb25zdCBhY2NvdW50PWFjY3Q7YWNjb3VudC5hcHByb3ZhbHM9MCxhY2NvdW50LmFwcHJvdmFsV2VpZ2h0PWFwcHJvdmFsV2VpZ2h0LGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhY2NvdW50KSxhcGkuZW1pdCgid2l0bmVzc0FwcHJvdmFsc0V4cGlyZWQiLHthY2NvdW50OmFjY3QuYWNjb3VudH0pfSxmaW5kQW5kRXhwaXJlQXBwcm92YWxzPWFzeW5jIHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzPT57Y29uc3QgYWNjb3VudHM9YXdhaXQgYXBpLmRiLmZpbmQoImFjY291bnRzIix7bGFzdEFwcHJvdmVCbG9jazp7JGx0OmFwaS5ibG9ja051bWJlci13aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrc30sYXBwcm92YWxzOnskZ3Q6MH19LDEwLDAsW3tpbmRleDoibGFzdEFwcHJvdmVCbG9jayIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGk9MDtpPGFjY291bnRzLmxlbmd0aDtpKz0xKWF3YWl0IGV4cGlyZUFsbFVzZXJBcHByb3ZhbHMoYWNjb3VudHNbaV0pfSxjaGFuZ2VDdXJyZW50V2l0bmVzcz1hc3luYygpPT57Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7Y3VycmVudFdpdG5lc3M6Y3VycmVudFdpdG5lc3MsdG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQ6dG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQsbGFzdFdpdG5lc3NlczpsYXN0V2l0bmVzc2VzLGxhc3RCbG9ja1JvdW5kOmxhc3RCbG9ja1JvdW5kLHJvdW5kOnJvdW5kLG1heFJvdW5kc01pc3NlZEluQVJvdzptYXhSb3VuZHNNaXNzZWRJbkFSb3csbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QsbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXJ9PXBhcmFtcztsZXQgd2l0bmVzc0ZvdW5kPSExO2NvbnN0IHJhbmRvbT1hcGkucmFuZG9tKCkscmFuZG9tV2VpZ2h0PWFwaS5CaWdOdW1iZXIodG90YWxFbmFibGVkQXBwcm92YWxXZWlnaHQpLnRpbWVzKHJhbmRvbSkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiwxKTtsZXQgb2Zmc2V0PTAsYWNjV2VpZ2h0PTAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fSxlbmFibGVkOiEwfSwxMDAsb2Zmc2V0LFt7aW5kZXg6ImFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfV0pO2NvbnN0IHNjaGVkdWxlcz1hd2FpdCBhcGkuZGIuZmluZCgic2NoZWR1bGVzIix7cm91bmQ6cm91bmR9KSxjdXJyZW50V2l0bmVzc1NjaGVkdWxlPXNjaGVkdWxlcy5maW5kKChzPT5zLndpdG5lc3M9PT1jdXJyZW50V2l0bmVzcykpLHByZXZpb3VzUm91bmRXaXRuZXNzPWxhc3RXaXRuZXNzZXMubGVuZ3RoPjE/bGFzdFdpdG5lc3Nlc1tsYXN0V2l0bmVzc2VzLmxlbmd0aC0yXToiIjtkb3tmb3IobGV0IGluZGV4PTA7aW5kZXg8d2l0bmVzc2VzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgd2l0bmVzcz13aXRuZXNzZXNbaW5kZXhdO2lmKGFjY1dlaWdodD1hcGkuQmlnTnVtYmVyKGFjY1dlaWdodCkucGx1cyh3aXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSwhMD09PXdpdG5lc3MuZW5hYmxlZCYmd2l0bmVzcy5hY2NvdW50IT09cHJldmlvdXNSb3VuZFdpdG5lc3MmJnZvaWQgMD09PXNjaGVkdWxlcy5maW5kKChzPT5zLndpdG5lc3M9PT13aXRuZXNzLmFjY291bnQpKSYmYXBpLkJpZ051bWJlcihyYW5kb21XZWlnaHQpLmx0ZShhY2NXZWlnaHQpKXthcGkuZGVidWcoYGNoYW5nZWQgd2l0bmVzcyBmcm9tICR7Y3VycmVudFdpdG5lc3NTY2hlZHVsZS53aXRuZXNzfSB0byAke3dpdG5lc3MuYWNjb3VudH1gKTtjb25zdCBuZXdXaXRuZXNzT3JkZXI9W3dpdG5lc3MuYWNjb3VudF07Zm9yKGxldCBpbmRleD0wO2luZGV4PHNjaGVkdWxlcy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IHNjaGVkdWxlPXNjaGVkdWxlc1tpbmRleF07c2NoZWR1bGUud2l0bmVzcyE9PWN1cnJlbnRXaXRuZXNzJiZuZXdXaXRuZXNzT3JkZXIucHVzaChzY2hlZHVsZS53aXRuZXNzKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzY2hlZHVsZXMiLHNjaGVkdWxlKX1sZXQgYmxvY2tOdW1iZXI9MD09PWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyP2FwaS5ibG9ja051bWJlcjpsYXN0VmVyaWZpZWRCbG9ja051bWJlcisxO2ZvcihsZXQgaT0wO2k8bmV3V2l0bmVzc09yZGVyLmxlbmd0aDtpKz0xKXtjb25zdCBuZXdTY2hlZHVsZT17d2l0bmVzczpuZXdXaXRuZXNzT3JkZXJbaV0sYmxvY2tOdW1iZXI6YmxvY2tOdW1iZXIscm91bmQ6cm91bmR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInNjaGVkdWxlcyIsbmV3U2NoZWR1bGUpLGJsb2NrTnVtYmVyKz0xfXBhcmFtcy5jdXJyZW50V2l0bmVzcz1uZXdXaXRuZXNzT3JkZXJbbmV3V2l0bmVzc09yZGVyLmxlbmd0aC0xXSxwYXJhbXMubGFzdFdpdG5lc3Nlcy5wdXNoKG5ld1dpdG5lc3NPcmRlcltuZXdXaXRuZXNzT3JkZXIubGVuZ3RoLTFdKSxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcittYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDtjb25zdCBzY2hlZHVsZWRXaXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7c2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHMrPTEsc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3crPTEsYXBpLmVtaXQoIndpdG5lc3NNaXNzZWRSb3VuZCIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSksc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c+PW1heFJvdW5kc01pc3NlZEluQVJvdyYmKHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93PTAsc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkJiYocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KS5taW51cyhzY2hlZHVsZWRXaXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkPSExLGFwaS5lbWl0KCJ3aXRuZXNzRGlzYWJsZWRGb3JNaXNzaW5nVG9vTWFueVJvdW5kc0luQVJvdyIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSkpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLHNjaGVkdWxlZFdpdG5lc3MpLHdpdG5lc3NGb3VuZD0hMCxhcGkuZW1pdCgiY3VycmVudFdpdG5lc3NDaGFuZ2VkIix7fSk7YnJlYWt9fSExPT09d2l0bmVzc0ZvdW5kJiYob2Zmc2V0Kz0xMDAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKSl9d2hpbGUod2l0bmVzc2VzLmxlbmd0aD4wJiYhMT09PXdpdG5lc3NGb3VuZCk7aWYoITE9PT13aXRuZXNzRm91bmQpe2FwaS5kZWJ1Zygibm8gYmFja3VwIHdpdG5lc3Mgd2FzIGZvdW5kLCBpbnRlcmNoYW5naW5nIHdpdG5lc3NlcyB3aXRoaW4gdGhlIGN1cnJlbnQgc2NoZWR1bGUiKTtmb3IobGV0IGluZGV4PTA7aW5kZXg8c2NoZWR1bGVzLmxlbmd0aC0xO2luZGV4Kz0xKXtjb25zdCBzY2hlZD1zY2hlZHVsZXNbaW5kZXhdLG5ld1dpdG5lc3M9c2NoZWQud2l0bmVzcztpZihuZXdXaXRuZXNzIT09cHJldmlvdXNSb3VuZFdpdG5lc3Mpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke2N1cnJlbnRXaXRuZXNzfSB0byAke25ld1dpdG5lc3N9YCksc2NoZWR1bGUud2l0bmVzcz1uZXdXaXRuZXNzLGF3YWl0IGFwaS5kYi51cGRhdGUoInNjaGVkdWxlcyIsc2NoZWR1bGUpLHNjaGVkLndpdG5lc3M9Y3VycmVudFdpdG5lc3MsYXdhaXQgYXBpLmRiLnVwZGF0ZSgic2NoZWR1bGVzIixzY2hlZCkscGFyYW1zLmN1cnJlbnRXaXRuZXNzPW5ld1dpdG5lc3MscGFyYW1zLmxhc3RXaXRuZXNzZXMucHVzaChuZXdXaXRuZXNzKSxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcittYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDtjb25zdCBzY2hlZHVsZWRXaXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7c2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHMrPTEsc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3crPTEsYXBpLmVtaXQoIndpdG5lc3NNaXNzZWRSb3VuZCIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSksc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c+PW1heFJvdW5kc01pc3NlZEluQVJvdyYmKHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93PTAsc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkJiYocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsRW5hYmxlZEFwcHJvdmFsV2VpZ2h0KS5taW51cyhzY2hlZHVsZWRXaXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkPSExLGFwaS5lbWl0KCJ3aXRuZXNzRGlzYWJsZWRGb3JNaXNzaW5nVG9vTWFueVJvdW5kc0luQVJvdyIse3dpdG5lc3M6c2NoZWR1bGVkV2l0bmVzcy5hY2NvdW50fSkpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLHNjaGVkdWxlZFdpdG5lc3MpLGFwaS5lbWl0KCJjdXJyZW50V2l0bmVzc0NoYW5nZWQiLHt9KTticmVha319fX0sbWFuYWdlV2l0bmVzc2VzU2NoZWR1bGU9YXN5bmMoKT0+e2lmKCJudWxsIiE9PWFwaS5zZW5kZXIpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse251bWJlck9mQXBwcm92ZWRXaXRuZXNzZXM6bnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcyx0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodDp0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodCxsYXN0VmVyaWZpZWRCbG9ja051bWJlcjpsYXN0VmVyaWZpZWRCbG9ja051bWJlcixibG9ja051bWJlcldpdG5lc3NDaGFuZ2U6YmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlLGxhc3RCbG9ja1JvdW5kOmxhc3RCbG9ja1JvdW5kLG51bWJlck9mVG9wV2l0bmVzc2VzOm51bWJlck9mVG9wV2l0bmVzc2VzLG51bWJlck9mV2l0bmVzc1Nsb3RzOm51bWJlck9mV2l0bmVzc1Nsb3RzLG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOm1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLHdpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzOndpdG5lc3NBcHByb3ZlRXhwaXJlQmxvY2tzfT1wYXJhbXM7YXdhaXQgZmluZEFuZEV4cGlyZUFwcHJvdmFscyh3aXRuZXNzQXBwcm92ZUV4cGlyZUJsb2Nrcyk7Y29uc3QgY3VycmVudEJsb2NrPWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyKzE7bGV0IHNjaGVkdWxlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJzY2hlZHVsZXMiLHtibG9ja051bWJlcjpjdXJyZW50QmxvY2t9KTtpZihudWxsPT09c2NoZWR1bGUpe2lmKGFwaS5kZWJ1ZygiY2FsY3VsYXRpbmcgbmV3IHNjaGVkdWxlIiksc2NoZWR1bGU9W10sbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcz49bnVtYmVyT2ZXaXRuZXNzU2xvdHMpe2NvbnN0IHJhbmRvbT1hcGkucmFuZG9tKCk7bGV0IHJhbmRvbVdlaWdodD1udWxsLG9mZnNldD0wLGFjY1dlaWdodD0wLHdpdG5lc3Nlcz1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX0sZW5hYmxlZDohMH0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKTtkb3tmb3IobGV0IGluZGV4PTA7aW5kZXg8d2l0bmVzc2VzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgd2l0bmVzcz13aXRuZXNzZXNbaW5kZXhdO3NjaGVkdWxlLmxlbmd0aD49bnVtYmVyT2ZUb3BXaXRuZXNzZXMmJm51bGw9PT1yYW5kb21XZWlnaHQmJihyYW5kb21XZWlnaHQ9YXBpLkJpZ051bWJlcihhY2NXZWlnaHQpLnBsdXMoR09WRVJOQU5DRV9UT0tFTl9NSU5fVkFMVUUpLnBsdXMoYXBpLkJpZ051bWJlcih0b3RhbEVuYWJsZWRBcHByb3ZhbFdlaWdodCkubWludXMoYWNjV2VpZ2h0KS50aW1lcyhyYW5kb20pLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04sMSkpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pKSxhY2NXZWlnaHQ9YXBpLkJpZ051bWJlcihhY2NXZWlnaHQpLnBsdXMod2l0bmVzcy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiksITA9PT13aXRuZXNzLmVuYWJsZWQmJihzY2hlZHVsZS5sZW5ndGg8bnVtYmVyT2ZUb3BXaXRuZXNzZXN8fGFwaS5CaWdOdW1iZXIocmFuZG9tV2VpZ2h0KS5sdGUoYWNjV2VpZ2h0KSkmJnNjaGVkdWxlLnB1c2goe3dpdG5lc3M6d2l0bmVzcy5hY2NvdW50LGJsb2NrTnVtYmVyOm51bGx9KSxzY2hlZHVsZS5sZW5ndGg+PW51bWJlck9mV2l0bmVzc1Nsb3RzJiYoaW5kZXg9d2l0bmVzc2VzLmxlbmd0aCl9c2NoZWR1bGUubGVuZ3RoPG51bWJlck9mV2l0bmVzc1Nsb3RzJiYob2Zmc2V0Kz0xMDAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKSl9d2hpbGUod2l0bmVzc2VzLmxlbmd0aD4wJiZzY2hlZHVsZS5sZW5ndGg8bnVtYmVyT2ZXaXRuZXNzU2xvdHMpfWlmKHNjaGVkdWxlLmxlbmd0aD09PW51bWJlck9mV2l0bmVzc1Nsb3RzKXtsZXQgaix4O2ZvcihsZXQgaT1zY2hlZHVsZS5sZW5ndGgtMTtpPjA7aS09MSl7Y29uc3QgcmFuZG9tPWFwaS5yYW5kb20oKTtqPU1hdGguZmxvb3IocmFuZG9tKihpKzEpKSx4PXNjaGVkdWxlW2ldLHNjaGVkdWxlW2ldPXNjaGVkdWxlW2pdLHNjaGVkdWxlW2pdPXh9bGV0IGxhc3RXaXRuZXNzZXM9cGFyYW1zLmxhc3RXaXRuZXNzZXM7Y29uc3QgcHJldmlvdXNSb3VuZFdpdG5lc3M9bGFzdFdpdG5lc3Nlcy5sZW5ndGg+MD9sYXN0V2l0bmVzc2VzW2xhc3RXaXRuZXNzZXMubGVuZ3RoLTFdOiIiO2xhc3RXaXRuZXNzZXMubGVuZ3RoPj1udW1iZXJPZldpdG5lc3NTbG90cyYmKGxhc3RXaXRuZXNzZXM9W10pO2NvbnN0IGxhc3RXaXRuZXNzPXNjaGVkdWxlW3NjaGVkdWxlLmxlbmd0aC0xXS53aXRuZXNzO2lmKGxhc3RXaXRuZXNzZXMuaW5jbHVkZXMobGFzdFdpdG5lc3MpfHxwcmV2aW91c1JvdW5kV2l0bmVzcz09PWxhc3RXaXRuZXNzKWZvcihsZXQgaT0wO2k8c2NoZWR1bGUubGVuZ3RoO2krPTEpaWYoIWxhc3RXaXRuZXNzZXMuaW5jbHVkZXMoc2NoZWR1bGVbaV0ud2l0bmVzcykmJnNjaGVkdWxlW2ldLndpdG5lc3MhPT1wcmV2aW91c1JvdW5kV2l0bmVzcyl7Y29uc3QgdGhpc1dpdG5lc3M9c2NoZWR1bGVbaV0ud2l0bmVzcztzY2hlZHVsZVtpXS53aXRuZXNzPWxhc3RXaXRuZXNzLHNjaGVkdWxlW3NjaGVkdWxlLmxlbmd0aC0xXS53aXRuZXNzPXRoaXNXaXRuZXNzO2JyZWFrfWlmKHNjaGVkdWxlWzBdLndpdG5lc3M9PT1wcmV2aW91c1JvdW5kV2l0bmVzcyl7Y29uc3QgZmlyc3RXaXRuZXNzPXNjaGVkdWxlWzBdLndpdG5lc3Msc2Vjb25kV2l0bmVzcz1zY2hlZHVsZVsxXS53aXRuZXNzO3NjaGVkdWxlWzBdLndpdG5lc3M9c2Vjb25kV2l0bmVzcyxzY2hlZHVsZVsxXS53aXRuZXNzPWZpcnN0V2l0bmVzc31sZXQgYmxvY2tOdW1iZXI9MD09PWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyP2FwaS5ibG9ja051bWJlcjpsYXN0VmVyaWZpZWRCbG9ja051bWJlcisxO3BhcmFtcy5yb3VuZCs9MTtmb3IobGV0IGk9MDtpPHNjaGVkdWxlLmxlbmd0aDtpKz0xKXNjaGVkdWxlW2ldLmJsb2NrTnVtYmVyPWJsb2NrTnVtYmVyLHNjaGVkdWxlW2ldLnJvdW5kPXBhcmFtcy5yb3VuZCxhcGkuZGVidWcoYHNjaGVkdWxlZCB3aXRuZXNzICR7c2NoZWR1bGVbaV0ud2l0bmVzc30gZm9yIGJsb2NrICR7YmxvY2tOdW1iZXJ9IChyb3VuZCAke3BhcmFtcy5yb3VuZH0pYCksYXdhaXQgYXBpLmRiLmluc2VydCgic2NoZWR1bGVzIixzY2hlZHVsZVtpXSksYmxvY2tOdW1iZXIrPTE7MD09PWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyJiYocGFyYW1zLmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyPWFwaS5ibG9ja051bWJlci0xKTtjb25zdCBsYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGU9c2NoZWR1bGVbc2NoZWR1bGUubGVuZ3RoLTFdO3BhcmFtcy5sYXN0QmxvY2tSb3VuZD1sYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGUuYmxvY2tOdW1iZXIscGFyYW1zLmN1cnJlbnRXaXRuZXNzPWxhc3RXaXRuZXNzUm91bmRTY2hlZHVsZS53aXRuZXNzLGxhc3RXaXRuZXNzZXMucHVzaChsYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGUud2l0bmVzcykscGFyYW1zLmxhc3RXaXRuZXNzZXM9bGFzdFdpdG5lc3NlcyxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcittYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyksYXBpLmVtaXQoIm5ld1NjaGVkdWxlIix7fSl9fWVsc2UgYXBpLmJsb2NrTnVtYmVyPj1ibG9ja051bWJlcldpdG5lc3NDaGFuZ2UmJihhcGkuYmxvY2tOdW1iZXI+bGFzdEJsb2NrUm91bmQ/YXdhaXQgY2hhbmdlQ3VycmVudFdpdG5lc3MoKToocGFyYW1zLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT1hcGkuYmxvY2tOdW1iZXIrbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpLGFwaS5lbWl0KCJhd2FpdGluZ1JvdW5kRW5kIix7fSkpKX07YWN0aW9ucy5wcm9wb3NlUm91bmQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3JvdW5kSGFzaDpyb3VuZEhhc2gsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxzaWduYXR1cmVzOnNpZ25hdHVyZXN9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIscm91bmQ6cm91bmQsbGFzdEJsb2NrUm91bmQ6bGFzdEJsb2NrUm91bmQsY3VycmVudFdpdG5lc3M6Y3VycmVudFdpdG5lc3N9PXBhcmFtcyxzY2hlZHVsZXM9YXdhaXQgYXBpLmRiLmZpbmQoInNjaGVkdWxlcyIse3JvdW5kOnJvdW5kfSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksbnVtYmVyT2ZXaXRuZXNzU2xvdHM9c2NoZWR1bGVzLmxlbmd0aCx7d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDp3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkfT1wYXJhbXM7aWYoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXkmJnJvdW5kSGFzaCYmInN0cmluZyI9PXR5cGVvZiByb3VuZEhhc2gmJjY0PT09cm91bmRIYXNoLmxlbmd0aCYmQXJyYXkuaXNBcnJheShzaWduYXR1cmVzKSYmc2lnbmF0dXJlcy5sZW5ndGg8PW51bWJlck9mV2l0bmVzc1Nsb3RzJiZzaWduYXR1cmVzLmxlbmd0aD49d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCl7bGV0IGN1cnJlbnRCbG9jaz1sYXN0VmVyaWZpZWRCbG9ja051bWJlcisxLGNhbGN1bGF0ZWRSb3VuZEhhc2g9IiI7aWYoYXBpLnNlbmRlcj09PWN1cnJlbnRXaXRuZXNzKXtmb3IoO2N1cnJlbnRCbG9jazw9bGFzdEJsb2NrUm91bmQ7KXtjb25zdCBibG9jaz1hd2FpdCBhcGkuZGIuZ2V0QmxvY2tJbmZvKGN1cnJlbnRCbG9jayk7aWYobnVsbD09PWJsb2NrKXtjYWxjdWxhdGVkUm91bmRIYXNoPSIiO2JyZWFrfWNhbGN1bGF0ZWRSb3VuZEhhc2g9YXBpLlNIQTI1NihgJHtjYWxjdWxhdGVkUm91bmRIYXNofSR7YmxvY2suaGFzaH1gKSxjdXJyZW50QmxvY2srPTF9aWYoIiIhPT1jYWxjdWxhdGVkUm91bmRIYXNoJiZjYWxjdWxhdGVkUm91bmRIYXNoPT09cm91bmRIYXNoKXtsZXQgc2lnbmF0dXJlc0NoZWNrZWQ9MDtjb25zdCB2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb249W10sY3VycmVudFdpdG5lc3NJbmZvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSksY3VycmVudFdpdG5lc3NTaWduYXR1cmU9c2lnbmF0dXJlcy5maW5kKChzPT5zWzBdPT09Y3VycmVudFdpdG5lc3MpKTtmb3IobGV0IGluZGV4PTA7aW5kZXg8c2NoZWR1bGVzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgc2NoZWR1bGVkV2l0bmVzcz1zY2hlZHVsZXNbaW5kZXhdLHdpdG5lc3M9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6c2NoZWR1bGVkV2l0bmVzcy53aXRuZXNzfSk7aWYobnVsbCE9PXdpdG5lc3Mpe2NvbnN0IHNpZ25hdHVyZT1zaWduYXR1cmVzLmZpbmQoKHM9PnNbMF09PT13aXRuZXNzLmFjY291bnQpKTtzaWduYXR1cmUmJmFwaS5jaGVja1NpZ25hdHVyZShjYWxjdWxhdGVkUm91bmRIYXNoLHNpZ25hdHVyZVsxXSx3aXRuZXNzLnNpZ25pbmdLZXksITApJiYoYXBpLmRlYnVnKGB3aXRuZXNzICR7d2l0bmVzcy5hY2NvdW50fSBzaWduZWQgcm91bmQgJHtyb3VuZH1gKSxzaWduYXR1cmVzQ2hlY2tlZCs9MSksdmVyaWZpZWRCbG9ja0luZm9ybWF0aW9uLnB1c2goe2Jsb2NrTnVtYmVyOnNjaGVkdWxlZFdpdG5lc3MuYmxvY2tOdW1iZXIsd2l0bmVzczpjdXJyZW50V2l0bmVzcyxzaWduaW5nS2V5OmN1cnJlbnRXaXRuZXNzSW5mby5zaWduaW5nS2V5LHJvdW5kU2lnbmF0dXJlOmN1cnJlbnRXaXRuZXNzU2lnbmF0dXJlWzFdLHJvdW5kOnJvdW5kLHJvdW5kSGFzaDpyb3VuZEhhc2h9KX19aWYoc2lnbmF0dXJlc0NoZWNrZWQ+PXdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQpe2ZvcihsZXQgaW5kZXg9MDtpbmRleDx2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb24ubGVuZ3RoO2luZGV4Kz0xKWF3YWl0IGFwaS52ZXJpZnlCbG9jayh2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb25baW5kZXhdKTtmb3IobGV0IGluZGV4PTA7aW5kZXg8c2NoZWR1bGVzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgc2NoZWR1bGU9c2NoZWR1bGVzW2luZGV4XTthd2FpdCBhcGkuZGIucmVtb3ZlKCJzY2hlZHVsZXMiLHNjaGVkdWxlKX1jb25zdCBjb250cmFjdEJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJjb250cmFjdHNCYWxhbmNlcyIse2FjY291bnQ6IndpdG5lc3NlcyIsc3ltYm9sOlVUSUxJVFlfVE9LRU5fU1lNQk9MfSk7aWYoY29udHJhY3RCYWxhbmNlJiZhcGkuQmlnTnVtYmVyKGNvbnRyYWN0QmFsYW5jZS5iYWxhbmNlKS5ndGUoIjAuMzk5NTQzMDYiKSl7Y29uc3QgcmV3YXJkQW1vdW50PWFwaS5CaWdOdW1iZXIoIjAuMDE5MDI1ODYiKS5tdWx0aXBsaWVkQnkobnVtYmVyT2ZXaXRuZXNzU2xvdHMpLnRvRml4ZWQoVVRJTElUWV9UT0tFTl9QUkVDSVNJT04pO2F3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwic3Rha2VGcm9tQ29udHJhY3QiLHt0bzpjdXJyZW50V2l0bmVzcyxzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0wscXVhbnRpdHk6cmV3YXJkQW1vdW50fSl9cGFyYW1zLmN1cnJlbnRXaXRuZXNzPW51bGwscGFyYW1zLmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyPWxhc3RCbG9ja1JvdW5kLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKTtjb25zdCB3aXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7d2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c9MCx3aXRuZXNzLmxhc3RSb3VuZFZlcmlmaWVkPXJvdW5kLHdpdG5lc3MubGFzdEJsb2NrVmVyaWZpZWQ9bGFzdEJsb2NrUm91bmQsd2l0bmVzcy52ZXJpZmllZFJvdW5kcys9MSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLHdpdG5lc3MpLGF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCl9fX19fSxhY3Rpb25zLnNjaGVkdWxlV2l0bmVzc2VzPWFzeW5jKCk9PnsibnVsbCI9PT1hcGkuc2VuZGVyJiZhd2FpdCBtYW5hZ2VXaXRuZXNzZXNTY2hlZHVsZSgpfTs="}}}