{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"botcontroller","params":"","code":"Y29uc3QgVVRJTElUWV9UT0tFTl9TWU1CT0w9IkJFRSIsQkFTRV9TWU1CT0w9IlNXQVAuSElWRSIsQkFTRV9TWU1CT0xfUFJFQ0lTSU9OPTgsQ0hBSU5fVFlQRT0iSElWRSI7YWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0e2Jhc2ljRmVlOmJhc2ljRmVlLGJhc2ljU2V0dGluZ3NGZWU6YmFzaWNTZXR0aW5nc0ZlZSxwcmVtaXVtRmVlOnByZW1pdW1GZWUscHJlbWl1bUJhc2VTdGFrZTpwcmVtaXVtQmFzZVN0YWtlLHN0YWtlUGVyTWFya2V0OnN0YWtlUGVyTWFya2V0LGJhc2ljRHVyYXRpb25CbG9ja3M6YmFzaWNEdXJhdGlvbkJsb2NrcyxiYXNpY0Nvb2xkb3duQmxvY2tzOmJhc2ljQ29vbGRvd25CbG9ja3MsYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M6YmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3MscHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrczpwcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzLGJhc2ljTWF4VGlja3NQZXJCbG9jazpiYXNpY01heFRpY2tzUGVyQmxvY2sscHJlbWl1bU1heFRpY2tzUGVyQmxvY2s6cHJlbWl1bU1heFRpY2tzUGVyQmxvY2t9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtiYXNpY0ZlZSYmInN0cmluZyI9PXR5cGVvZiBiYXNpY0ZlZSYmIWFwaS5CaWdOdW1iZXIoYmFzaWNGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYmFzaWNGZWUpLmd0ZSgwKSYmKHBhcmFtcy5iYXNpY0ZlZT1iYXNpY0ZlZSksYmFzaWNTZXR0aW5nc0ZlZSYmInN0cmluZyI9PXR5cGVvZiBiYXNpY1NldHRpbmdzRmVlJiYhYXBpLkJpZ051bWJlcihiYXNpY1NldHRpbmdzRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGJhc2ljU2V0dGluZ3NGZWUpLmd0ZSgwKSYmKHBhcmFtcy5iYXNpY1NldHRpbmdzRmVlPWJhc2ljU2V0dGluZ3NGZWUpLHByZW1pdW1GZWUmJiJzdHJpbmciPT10eXBlb2YgcHJlbWl1bUZlZSYmIWFwaS5CaWdOdW1iZXIocHJlbWl1bUZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihwcmVtaXVtRmVlKS5ndGUoMCkmJihwYXJhbXMucHJlbWl1bUZlZT1wcmVtaXVtRmVlKSxwcmVtaXVtQmFzZVN0YWtlJiYic3RyaW5nIj09dHlwZW9mIHByZW1pdW1CYXNlU3Rha2UmJiFhcGkuQmlnTnVtYmVyKHByZW1pdW1CYXNlU3Rha2UpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocHJlbWl1bUJhc2VTdGFrZSkuZ3RlKDApJiYocGFyYW1zLnByZW1pdW1CYXNlU3Rha2U9cHJlbWl1bUJhc2VTdGFrZSksc3Rha2VQZXJNYXJrZXQmJiJzdHJpbmciPT10eXBlb2Ygc3Rha2VQZXJNYXJrZXQmJiFhcGkuQmlnTnVtYmVyKHN0YWtlUGVyTWFya2V0KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHN0YWtlUGVyTWFya2V0KS5ndGUoMCkmJihwYXJhbXMuc3Rha2VQZXJNYXJrZXQ9c3Rha2VQZXJNYXJrZXQpLGJhc2ljRHVyYXRpb25CbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgYmFzaWNEdXJhdGlvbkJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihiYXNpY0R1cmF0aW9uQmxvY2tzKSYmYmFzaWNEdXJhdGlvbkJsb2Nrcz49MCYmKHBhcmFtcy5iYXNpY0R1cmF0aW9uQmxvY2tzPWJhc2ljRHVyYXRpb25CbG9ja3MpLGJhc2ljQ29vbGRvd25CbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgYmFzaWNDb29sZG93bkJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihiYXNpY0Nvb2xkb3duQmxvY2tzKSYmYmFzaWNDb29sZG93bkJsb2Nrcz49MCYmKHBhcmFtcy5iYXNpY0Nvb2xkb3duQmxvY2tzPWJhc2ljQ29vbGRvd25CbG9ja3MpLGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzJiYibnVtYmVyIj09dHlwZW9mIGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzJiZOdW1iZXIuaXNJbnRlZ2VyKGJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzKSYmYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M+PTAmJihwYXJhbXMuYmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3M9YmFzaWNNaW5UaWNrSW50ZXJ2YWxCbG9ja3MpLHByZW1pdW1NaW5UaWNrSW50ZXJ2YWxCbG9ja3MmJiJudW1iZXIiPT10eXBlb2YgcHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrcyYmTnVtYmVyLmlzSW50ZWdlcihwcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzKSYmcHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2Nrcz49MCYmKHBhcmFtcy5wcmVtaXVtTWluVGlja0ludGVydmFsQmxvY2tzPXByZW1pdW1NaW5UaWNrSW50ZXJ2YWxCbG9ja3MpLGJhc2ljTWF4VGlja3NQZXJCbG9jayYmIm51bWJlciI9PXR5cGVvZiBiYXNpY01heFRpY2tzUGVyQmxvY2smJk51bWJlci5pc0ludGVnZXIoYmFzaWNNYXhUaWNrc1BlckJsb2NrKSYmYmFzaWNNYXhUaWNrc1BlckJsb2NrPj0wJiYocGFyYW1zLmJhc2ljTWF4VGlja3NQZXJCbG9jaz1iYXNpY01heFRpY2tzUGVyQmxvY2spLHByZW1pdW1NYXhUaWNrc1BlckJsb2NrJiYibnVtYmVyIj09dHlwZW9mIHByZW1pdW1NYXhUaWNrc1BlckJsb2NrJiZOdW1iZXIuaXNJbnRlZ2VyKHByZW1pdW1NYXhUaWNrc1BlckJsb2NrKSYmcHJlbWl1bU1heFRpY2tzUGVyQmxvY2s+PTAmJihwYXJhbXMucHJlbWl1bU1heFRpY2tzUGVyQmxvY2s9cHJlbWl1bU1heFRpY2tzUGVyQmxvY2spLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX07Y29uc3QgZ2V0Q3VycmVudFRpbWVzdGFtcD0oKT0+e2NvbnN0IGJsb2NrVGltZXN0YW1wPWFwaS5oaXZlQmxvY2tUaW1lc3RhbXA7cmV0dXJuIG5ldyBEYXRlKGJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKX0sdXBncmFkZURhdGFTY2hlbWE9YXN5bmMoKT0+e2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IHVzZXJzVG9DaGVjaz1hd2FpdCBhcGkuZGIuZmluZCgidXNlcnMiLHt0aW1lTGltaXRCbG9ja3M6eyRleGlzdHM6ITB9fSksbmJVc2Vycz11c2Vyc1RvQ2hlY2subGVuZ3RoO2Zvcig7bmJVc2Vycz4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iVXNlcnM7aW5kZXgrPTEpe2NvbnN0IHVzZXI9dXNlcnNUb0NoZWNrW2luZGV4XTt1c2VyLmxhc3RUaWNrVGltZXN0YW1wPWdldEN1cnJlbnRUaW1lc3RhbXAoKSx1c2VyLmxhc3RUaWNrQmxvY2s9YXBpLmJsb2NrTnVtYmVyLHVzZXIudGltZUxpbWl0PTMqcGFyYW1zLmJhc2ljRHVyYXRpb25CbG9ja3MqMWUzLGRlbGV0ZSB1c2VyLnRpbWVMaW1pdEJsb2Nrcyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlcix7dGltZUxpbWl0QmxvY2tzOiIifSl9dXNlcnNUb0NoZWNrPWF3YWl0IGFwaS5kYi5maW5kKCJ1c2VycyIse3RpbWVMaW1pdEJsb2Nrczp7JGV4aXN0czohMH19KSxuYlVzZXJzPXVzZXJzVG9DaGVjay5sZW5ndGh9fSxpc1Rva2VuVHJhbnNmZXJWZXJpZmllZD0ocmVzdWx0LGZyb20sdG8sc3ltYm9sLHF1YW50aXR5LGV2ZW50U3RyKT0+ISh2b2lkIDAhPT1yZXN1bHQuZXJyb3JzfHwhcmVzdWx0LmV2ZW50c3x8dm9pZCAwPT09cmVzdWx0LmV2ZW50cy5maW5kKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiZlbC5ldmVudD09PWV2ZW50U3RyJiZlbC5kYXRhLmZyb209PT1mcm9tJiZlbC5kYXRhLnRvPT09dG8mJmVsLmRhdGEucXVhbnRpdHk9PT1xdWFudGl0eSYmZWwuZGF0YS5zeW1ib2w9PT1zeW1ib2wpKSxjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpLHZlcmlmeVV0aWxpdHlUb2tlblN0YWtlPWFzeW5jKGFtb3VudCxhY2NvdW50KT0+e2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5sdGUoMCkpcmV0dXJuITA7Y29uc3QgdXRpbGl0eVRva2VuU3Rha2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6IkJFRSJ9KTtyZXR1cm4hKCF1dGlsaXR5VG9rZW5TdGFrZXx8IWFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuU3Rha2Uuc3Rha2UpLmd0ZShhbW91bnQpKX0sdmVyaWZ5VXRpbGl0eVRva2VuQmFsYW5jZT1hc3luYyhhbW91bnQsYWNjb3VudCk9PntpZihhcGkuQmlnTnVtYmVyKGFtb3VudCkubHRlKDApKXJldHVybiEwO2NvbnN0IHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6IkJFRSJ9KTtyZXR1cm4hKCF1dGlsaXR5VG9rZW5CYWxhbmNlfHwhYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShhbW91bnQpKX0sYnVybkZlZT1hc3luYyhhbW91bnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5KT0+e2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmFtb3VudCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYocmVzdWx0PXJlcyxmcm9tPWFwaS5zZW5kZXIsdG89Im51bGwiLHN5bWJvbD0iQkVFIixxdWFudGl0eT1hbW91bnQsZXZlbnRTdHI9InRyYW5zZmVyIix2b2lkIDAhPT1yZXN1bHQuZXJyb3JzfHwhcmVzdWx0LmV2ZW50c3x8dm9pZCAwPT09cmVzdWx0LmV2ZW50cy5maW5kKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiZlbC5ldmVudD09PWV2ZW50U3RyJiZlbC5kYXRhLmZyb209PT1mcm9tJiZlbC5kYXRhLnRvPT09dG8mJmVsLmRhdGEucXVhbnRpdHk9PT1xdWFudGl0eSYmZWwuZGF0YS5zeW1ib2w9PT1zeW1ib2wpKXJldHVybiExfXZhciByZXN1bHQsZnJvbSx0byxzeW1ib2wscXVhbnRpdHksZXZlbnRTdHI7cmV0dXJuITB9O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygidXNlcnMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ1c2VycyIsWyJhY2NvdW50IiwibGFzdFRpY2tCbG9jayJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoIm1hcmtldHMiLFsiYWNjb3VudCIsInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17YmFzaWNGZWU6IjEwMCIsYmFzaWNTZXR0aW5nc0ZlZToiMSIscHJlbWl1bUZlZToiMTAwIixwcmVtaXVtQmFzZVN0YWtlOiIxMDAwIixzdGFrZVBlck1hcmtldDoiMjAwIixiYXNpY0R1cmF0aW9uQmxvY2tzOjQwMzIwMCxiYXNpY0Nvb2xkb3duQmxvY2tzOjQwMzIwMCxiYXNpY01pblRpY2tJbnRlcnZhbEJsb2NrczoyMDAscHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrczoxMDAsYmFzaWNNYXhUaWNrc1BlckJsb2NrOjIwLHByZW1pdW1NYXhUaWNrc1BlckJsb2NrOjMwfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLHBhcmFtcyl9ZWxzZSBhd2FpdCB1cGdyYWRlRGF0YVNjaGVtYSgpfTtjb25zdCB0aWNrVXNlcnM9YXN5bmMocGFyYW1zLHVzZXJzLGN1cnJlbnRUaW1lc3RhbXApPT57Y29uc3QgbWFya2V0TGlzdD1bXTtmb3IobGV0IGk9MDtpPHVzZXJzLmxlbmd0aDtpKz0xKXtjb25zdCB1c2VyPXVzZXJzW2ldO2xldCB1c2VyQmFsYW5jZT1udWxsO2lmKHVzZXIuaXNQcmVtaXVtKXt1c2VyQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDp1c2VyLmFjY291bnQsc3ltYm9sOiJCRUUifSk7dXNlckJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXNlckJhbGFuY2Uuc3Rha2UpLmd0ZShwYXJhbXMucHJlbWl1bUJhc2VTdGFrZSl8fCh1c2VyLmlzUHJlbWl1bT0hMSl9ZWxzZXtjb25zdCB0aWNrSW50ZXJ2YWw9Y3VycmVudFRpbWVzdGFtcC11c2VyLmxhc3RUaWNrVGltZXN0YW1wO3VzZXIudGltZUxpbWl0LT10aWNrSW50ZXJ2YWwsdXNlci50aW1lTGltaXQ8PTAmJih1c2VyLnRpbWVMaW1pdD0wLHVzZXIuaXNPbkNvb2xkb3duPSEwLHVzZXIuaXNFbmFibGVkPSExKX1pZih1c2VyLmxhc3RUaWNrQmxvY2s9YXBpLmJsb2NrTnVtYmVyLHVzZXIubGFzdFRpY2tUaW1lc3RhbXA9Y3VycmVudFRpbWVzdGFtcCwhdXNlci5pc0VuYWJsZWR8fHVzZXIuZW5hYmxlZE1hcmtldHM8MSl7YXdhaXQgYXBpLmRiLnVwZGF0ZSgidXNlcnMiLHVzZXIpO2NvbnRpbnVlfWNvbnN0IGF1dGhvcml6ZWRBY3Rpb249dXNlci5pc1ByZW1pdW18fDE9PT11c2VyLm1hcmtldHM7bGV0IGhhc0Vub3VnaFN0YWtlRm9yTWFya2V0cz0hMTtpZihhdXRob3JpemVkQWN0aW9uKXt1c2VyQmFsYW5jZXx8KHVzZXJCYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OnVzZXIuYWNjb3VudCxzeW1ib2w6IkJFRSJ9KSk7bGV0IHJlcXVpcmVkU3Rha2U9YXBpLkJpZ051bWJlcihwYXJhbXMuc3Rha2VQZXJNYXJrZXQpLm11bHRpcGxpZWRCeSh1c2VyLm1hcmtldHMpO3VzZXIuaXNQcmVtaXVtJiYocmVxdWlyZWRTdGFrZT1yZXF1aXJlZFN0YWtlLnBsdXMocGFyYW1zLnByZW1pdW1CYXNlU3Rha2UpKSxoYXNFbm91Z2hTdGFrZUZvck1hcmtldHM9dXNlckJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXNlckJhbGFuY2Uuc3Rha2UpLmd0ZShyZXF1aXJlZFN0YWtlKX1jb25zdCBtYXJrZXRzPWF3YWl0IGFwaS5kYi5maW5kKCJtYXJrZXRzIix7YWNjb3VudDp1c2VyLmFjY291bnQsaXNFbmFibGVkOiEwfSx1c2VyLm1hcmtldHMsMCxbe2luZGV4OiJzeW1ib2wiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2lmKGF1dGhvcml6ZWRBY3Rpb24mJmhhc0Vub3VnaFN0YWtlRm9yTWFya2V0cylhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlciksbWFya2V0cy5mb3JFYWNoKG09Pm1hcmtldExpc3QucHVzaChtKSk7ZWxzZXtmb3IobGV0IGo9MDtqPG1hcmtldHMubGVuZ3RoO2orPTEpe2NvbnN0IG1hcmtldD1tYXJrZXRzW2pdO21hcmtldC5pc0VuYWJsZWQ9ITEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFya2V0cyIsbWFya2V0KX11c2VyLmVuYWJsZWRNYXJrZXRzPTAsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidXNlcnMiLHVzZXIpfX1tYXJrZXRMaXN0Lmxlbmd0aD4wJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1hcmtldG1ha2VyIiwidGljayIse21hcmtldHM6bWFya2V0TGlzdH0pfTthY3Rpb25zLnRpY2s9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxjdXJyZW50VGltZXN0YW1wPWdldEN1cnJlbnRUaW1lc3RhbXAoKSxjdXRvZmZCYXNpYz1jdXJyZW50VGltZXN0YW1wLTMqcGFyYW1zLmJhc2ljTWluVGlja0ludGVydmFsQmxvY2tzKjFlMyxjdXRvZmZQcmVtaXVtPWN1cnJlbnRUaW1lc3RhbXAtMypwYXJhbXMucHJlbWl1bU1pblRpY2tJbnRlcnZhbEJsb2NrcyoxZTMscGVuZGluZ0Jhc2ljVGlja3M9YXdhaXQgYXBpLmRiLmZpbmQoInVzZXJzIix7aXNFbmFibGVkOiEwLGlzUHJlbWl1bTohMSxsYXN0VGlja1RpbWVzdGFtcDp7JGx0ZTpjdXRvZmZCYXNpY319LHBhcmFtcy5iYXNpY01heFRpY2tzUGVyQmxvY2ssMCxbe2luZGV4OiJsYXN0VGlja0Jsb2NrIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTthd2FpdCB0aWNrVXNlcnMocGFyYW1zLHBlbmRpbmdCYXNpY1RpY2tzLGN1cnJlbnRUaW1lc3RhbXApO2NvbnN0IHBlbmRpbmdQcmVtaXVtVGlja3M9YXdhaXQgYXBpLmRiLmZpbmQoInVzZXJzIix7aXNFbmFibGVkOiEwLGlzUHJlbWl1bTohMCxsYXN0VGlja1RpbWVzdGFtcDp7JGx0ZTpjdXRvZmZQcmVtaXVtfX0scGFyYW1zLnByZW1pdW1NYXhUaWNrc1BlckJsb2NrLDAsW3tpbmRleDoibGFzdFRpY2tCbG9jayIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7YXdhaXQgdGlja1VzZXJzKHBhcmFtcyxwZW5kaW5nUHJlbWl1bVRpY2tzLGN1cnJlbnRUaW1lc3RhbXApfX0sYWN0aW9ucy51cGdyYWRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksaGFzRW5vdWdoU3Rha2U9YXdhaXQgdmVyaWZ5VXRpbGl0eVRva2VuU3Rha2UocGFyYW1zLnByZW1pdW1CYXNlU3Rha2UsYXBpLnNlbmRlcik7aWYoYXBpLmFzc2VydChoYXNFbm91Z2hTdGFrZSwieW91IGRvIG5vdCBoYXZlIGVub3VnaCB0b2tlbnMgc3Rha2VkIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVzZXIsInVzZXIgbm90IHJlZ2lzdGVyZWQiKSYmYXBpLmFzc2VydCghdXNlci5pc1ByZW1pdW0sInVzZXIgaXMgYWxyZWFkeSBwcmVtaXVtIikpe2lmKCF1c2VyLmlzUHJlbWl1bUZlZVBhaWQpe2NvbnN0IGF1dGhvcml6ZWRVcGdyYWRlPWF3YWl0IHZlcmlmeVV0aWxpdHlUb2tlbkJhbGFuY2UocGFyYW1zLnByZW1pdW1GZWUsYXBpLnNlbmRlcik7aWYoIWFwaS5hc3NlcnQoYXV0aG9yaXplZFVwZ3JhZGUsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgcHJlbWl1bSB1cGdyYWRlIGZlZSIpKXJldHVybiExO2lmKCFhd2FpdCBidXJuRmVlKHBhcmFtcy5wcmVtaXVtRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkpcmV0dXJuITF9cmV0dXJuIHVzZXIuaXNQcmVtaXVtRmVlUGFpZD0hMCx1c2VyLmlzUHJlbWl1bT0hMCx1c2VyLmlzT25Db29sZG93biYmKHVzZXIudGltZUxpbWl0PTMqcGFyYW1zLmJhc2ljRHVyYXRpb25CbG9ja3MqMWUzKSx1c2VyLmlzT25Db29sZG93bj0hMSx1c2VyLmxhc3RUaWNrQmxvY2s9YXBpLmJsb2NrTnVtYmVyLHVzZXIubGFzdFRpY2tUaW1lc3RhbXA9Z2V0Q3VycmVudFRpbWVzdGFtcCgpLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxhcGkuZW1pdCgidXBncmFkZSIse2FjY291bnQ6YXBpLnNlbmRlcn0pLCEwfX1yZXR1cm4hMX0sYWN0aW9ucy50dXJuT2ZmPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVzZXIsInVzZXIgbm90IHJlZ2lzdGVyZWQiKSYmYXBpLmFzc2VydCh1c2VyLmlzRW5hYmxlZCwiYWNjb3VudCBhbHJlYWR5IHR1cm5lZCBvZmYiKSl7Y29uc3QgY3VycmVudFRpbWVzdGFtcD1nZXRDdXJyZW50VGltZXN0YW1wKCk7aWYoIXVzZXIuaXNQcmVtaXVtKXtjb25zdCB0aWNrSW50ZXJ2YWw9Y3VycmVudFRpbWVzdGFtcC11c2VyLmxhc3RUaWNrVGltZXN0YW1wO3VzZXIudGltZUxpbWl0LT10aWNrSW50ZXJ2YWwsdXNlci50aW1lTGltaXQ8PTAmJih1c2VyLnRpbWVMaW1pdD0wLHVzZXIuaXNPbkNvb2xkb3duPSEwKX11c2VyLmlzRW5hYmxlZD0hMSx1c2VyLmxhc3RUaWNrQmxvY2s9YXBpLmJsb2NrTnVtYmVyLHVzZXIubGFzdFRpY2tUaW1lc3RhbXA9Y3VycmVudFRpbWVzdGFtcCxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlciksYXBpLmVtaXQoInR1cm5PZmYiLHthY2NvdW50OmFwaS5zZW5kZXJ9KX19fSxhY3Rpb25zLnR1cm5Pbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7aXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpKXtjb25zdCB1c2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ1c2VycyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVzZXIsInVzZXIgbm90IHJlZ2lzdGVyZWQiKSl7Y29uc3QgY3VycmVudFRpbWVzdGFtcD1nZXRDdXJyZW50VGltZXN0YW1wKCksdGlja0ludGVydmFsPWN1cnJlbnRUaW1lc3RhbXAtdXNlci5sYXN0VGlja1RpbWVzdGFtcDthcGkuYXNzZXJ0KCF1c2VyLmlzRW5hYmxlZCwiYWNjb3VudCBhbHJlYWR5IHR1cm5lZCBvbiIpJiZhcGkuYXNzZXJ0KHVzZXIuaXNQcmVtaXVtfHwhdXNlci5pc09uQ29vbGRvd258fHVzZXIuaXNPbkNvb2xkb3duJiZ0aWNrSW50ZXJ2YWw+PTMqcGFyYW1zLmJhc2ljQ29vbGRvd25CbG9ja3MqMWUzLCJjb29sZG93biBkdXJhdGlvbiBub3QgZXhwaXJlZCIpJiYodXNlci5pc0VuYWJsZWQ9ITAsdXNlci5pc09uQ29vbGRvd24mJih1c2VyLnRpbWVMaW1pdD0zKnBhcmFtcy5iYXNpY0R1cmF0aW9uQmxvY2tzKjFlMyksdXNlci5pc09uQ29vbGRvd249ITEsdXNlci5sYXN0VGlja0Jsb2NrPWFwaS5ibG9ja051bWJlcix1c2VyLmxhc3RUaWNrVGltZXN0YW1wPWN1cnJlbnRUaW1lc3RhbXAsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidXNlcnMiLHVzZXIpLGFwaS5lbWl0KCJ0dXJuT24iLHthY2NvdW50OmFwaS5zZW5kZXJ9KSl9fX0sYWN0aW9ucy5kaXNhYmxlTWFya2V0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBtYXJrZXQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hcmtldHMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PW1hcmtldCwibWFya2V0IG11c3QgZXhpc3QiKSYmbWFya2V0LmlzRW5hYmxlZCYmKG1hcmtldC5pc0VuYWJsZWQ9ITEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFya2V0cyIsbWFya2V0KSx1c2VyLmVuYWJsZWRNYXJrZXRzLT0xLGF3YWl0IGFwaS5kYi51cGRhdGUoInVzZXJzIix1c2VyKSxhcGkuZW1pdCgiZGlzYWJsZU1hcmtldCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSkpfX19LGFjdGlvbnMuZW5hYmxlTWFya2V0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBtYXJrZXQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hcmtldHMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PW1hcmtldCwibWFya2V0IG11c3QgZXhpc3QiKSYmIW1hcmtldC5pc0VuYWJsZWQpe2NvbnN0IGF1dGhvcml6ZWRBY3Rpb249dXNlci5pc1ByZW1pdW18fDE9PT11c2VyLm1hcmtldHM7aWYoYXBpLmFzc2VydChhdXRob3JpemVkQWN0aW9uLCJ1c2VyIGhhcyB0b28gbWFueSBtYXJrZXRzOyBwcmVtaXVtIHVwZ3JhZGUgcmVxdWlyZWQiKSl7Y29uc3QgcGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtsZXQgcmVxdWlyZWRTdGFrZT1hcGkuQmlnTnVtYmVyKHBhcmFtcy5zdGFrZVBlck1hcmtldCkubXVsdGlwbGllZEJ5KHVzZXIubWFya2V0cyk7dXNlci5pc1ByZW1pdW0mJihyZXF1aXJlZFN0YWtlPXJlcXVpcmVkU3Rha2UucGx1cyhwYXJhbXMucHJlbWl1bUJhc2VTdGFrZSkpO2NvbnN0IGhhc0Vub3VnaFN0YWtlPWF3YWl0IHZlcmlmeVV0aWxpdHlUb2tlblN0YWtlKHJlcXVpcmVkU3Rha2UsYXBpLnNlbmRlcik7YXBpLmFzc2VydChoYXNFbm91Z2hTdGFrZSwibXVzdCBzdGFrZSBtb3JlIEJFRSB0byBlbmFibGUgbWFya2V0IikmJihtYXJrZXQuaXNFbmFibGVkPSEwLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hcmtldHMiLG1hcmtldCksdXNlci5lbmFibGVkTWFya2V0cys9MSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlciksYXBpLmVtaXQoImVuYWJsZU1hcmtldCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSkpfX19fX0sYWN0aW9ucy5yZW1vdmVNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYiU1dBUC5ISVZFIiE9PXN5bWJvbCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdXNlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidXNlcnMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11c2VyLCJ1c2VyIG5vdCByZWdpc3RlcmVkIikpe2NvbnN0IG1hcmtldD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFya2V0cyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7YXBpLmFzc2VydChudWxsIT09bWFya2V0LCJtYXJrZXQgbXVzdCBleGlzdCIpJiYodXNlci5tYXJrZXRzLT0xLG1hcmtldC5pc0VuYWJsZWQmJih1c2VyLmVuYWJsZWRNYXJrZXRzLT0xKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ1c2VycyIsdXNlciksYXdhaXQgYXBpLmRiLnJlbW92ZSgibWFya2V0cyIsbWFya2V0KSxhcGkuZW1pdCgicmVtb3ZlTWFya2V0Iix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KSl9fX07Y29uc3QgdXBkYXRlTWFya2V0SW50ZXJuYWw9YXN5bmMocGF5bG9hZCxtYXJrZXQsc2hvdWxkUGF5RmVlLHBhcmFtcyk9Pntjb25zdHttYXhCaWRQcmljZTptYXhCaWRQcmljZSxtaW5TZWxsUHJpY2U6bWluU2VsbFByaWNlLG1heEJhc2VUb1NwZW5kOm1heEJhc2VUb1NwZW5kLG1pbkJhc2VUb1NwZW5kOm1pbkJhc2VUb1NwZW5kLG1heFRva2Vuc1RvU2VsbDptYXhUb2tlbnNUb1NlbGwsbWluVG9rZW5zVG9TZWxsOm1pblRva2Vuc1RvU2VsbCxwcmljZUluY3JlbWVudDpwcmljZUluY3JlbWVudCxtaW5TcHJlYWQ6bWluU3ByZWFkfT1wYXlsb2FkO2lmKHZvaWQgMD09PW1heEJpZFByaWNlJiZ2b2lkIDA9PT1taW5TZWxsUHJpY2UmJnZvaWQgMD09PW1heEJhc2VUb1NwZW5kJiZ2b2lkIDA9PT1taW5CYXNlVG9TcGVuZCYmdm9pZCAwPT09bWF4VG9rZW5zVG9TZWxsJiZ2b2lkIDA9PT1taW5Ub2tlbnNUb1NlbGwmJnZvaWQgMD09PXByaWNlSW5jcmVtZW50JiZ2b2lkIDA9PT1taW5TcHJlYWQpcmV0dXJuITE7aWYoYXBpLmFzc2VydCh2b2lkIDA9PT1tYXhCaWRQcmljZXx8bWF4QmlkUHJpY2UmJiJzdHJpbmciPT10eXBlb2YgbWF4QmlkUHJpY2UmJiFhcGkuQmlnTnVtYmVyKG1heEJpZFByaWNlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG1heEJpZFByaWNlKS5ndCgwKSYmY291bnREZWNpbWFscyhtYXhCaWRQcmljZSk8PTgsImludmFsaWQgbWF4QmlkUHJpY2UiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1taW5TZWxsUHJpY2V8fG1pblNlbGxQcmljZSYmInN0cmluZyI9PXR5cGVvZiBtaW5TZWxsUHJpY2UmJiFhcGkuQmlnTnVtYmVyKG1pblNlbGxQcmljZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihtaW5TZWxsUHJpY2UpLmd0KDApJiZjb3VudERlY2ltYWxzKG1pblNlbGxQcmljZSk8PTgsImludmFsaWQgbWluU2VsbFByaWNlIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWF4QmFzZVRvU3BlbmR8fG1heEJhc2VUb1NwZW5kJiYic3RyaW5nIj09dHlwZW9mIG1heEJhc2VUb1NwZW5kJiYhYXBpLkJpZ051bWJlcihtYXhCYXNlVG9TcGVuZCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihtYXhCYXNlVG9TcGVuZCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMobWF4QmFzZVRvU3BlbmQpPD04LCJpbnZhbGlkIG1heEJhc2VUb1NwZW5kIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWluQmFzZVRvU3BlbmR8fG1pbkJhc2VUb1NwZW5kJiYic3RyaW5nIj09dHlwZW9mIG1pbkJhc2VUb1NwZW5kJiYhYXBpLkJpZ051bWJlcihtaW5CYXNlVG9TcGVuZCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihtaW5CYXNlVG9TcGVuZCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMobWluQmFzZVRvU3BlbmQpPD04LCJpbnZhbGlkIG1pbkJhc2VUb1NwZW5kIikmJmFwaS5hc3NlcnQodm9pZCAwPT09bWF4VG9rZW5zVG9TZWxsfHxtYXhUb2tlbnNUb1NlbGwmJiJzdHJpbmciPT10eXBlb2YgbWF4VG9rZW5zVG9TZWxsJiYhYXBpLkJpZ051bWJlcihtYXhUb2tlbnNUb1NlbGwpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIobWF4VG9rZW5zVG9TZWxsKS5ndCgwKSYmY291bnREZWNpbWFscyhtYXhUb2tlbnNUb1NlbGwpPD1tYXJrZXQucHJlY2lzaW9uLCJpbnZhbGlkIG1heFRva2Vuc1RvU2VsbCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PW1pblRva2Vuc1RvU2VsbHx8bWluVG9rZW5zVG9TZWxsJiYic3RyaW5nIj09dHlwZW9mIG1pblRva2Vuc1RvU2VsbCYmIWFwaS5CaWdOdW1iZXIobWluVG9rZW5zVG9TZWxsKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKG1pblRva2Vuc1RvU2VsbCkuZ3QoMCkmJmNvdW50RGVjaW1hbHMobWluVG9rZW5zVG9TZWxsKTw9bWFya2V0LnByZWNpc2lvbiwiaW52YWxpZCBtaW5Ub2tlbnNUb1NlbGwiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1wcmljZUluY3JlbWVudHx8cHJpY2VJbmNyZW1lbnQmJiJzdHJpbmciPT10eXBlb2YgcHJpY2VJbmNyZW1lbnQmJiFhcGkuQmlnTnVtYmVyKHByaWNlSW5jcmVtZW50KS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHByaWNlSW5jcmVtZW50KS5ndCgwKSYmY291bnREZWNpbWFscyhwcmljZUluY3JlbWVudCk8PTgsImludmFsaWQgcHJpY2VJbmNyZW1lbnQiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1taW5TcHJlYWR8fG1pblNwcmVhZCYmInN0cmluZyI9PXR5cGVvZiBtaW5TcHJlYWQmJiFhcGkuQmlnTnVtYmVyKG1pblNwcmVhZCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihtaW5TcHJlYWQpLmd0KDApJiZjb3VudERlY2ltYWxzKG1pblNwcmVhZCk8PTgsImludmFsaWQgbWluU3ByZWFkIikpe2lmKHNob3VsZFBheUZlZSYmIWF3YWl0IGJ1cm5GZWUocGFyYW1zLmJhc2ljU2V0dGluZ3NGZWUsITApKXJldHVybiExO2NvbnN0IHVwZGF0ZT17YWNjb3VudDptYXJrZXQuYWNjb3VudCxzeW1ib2w6bWFya2V0LnN5bWJvbH07cmV0dXJuIG1heEJpZFByaWNlJiYodXBkYXRlLm9sZE1heEJpZFByaWNlPW1hcmtldC5tYXhCaWRQcmljZSxtYXJrZXQubWF4QmlkUHJpY2U9bWF4QmlkUHJpY2UsdXBkYXRlLm5ld01heEJpZFByaWNlPW1heEJpZFByaWNlKSxtaW5TZWxsUHJpY2UmJih1cGRhdGUub2xkTWluU2VsbFByaWNlPW1hcmtldC5taW5TZWxsUHJpY2UsbWFya2V0Lm1pblNlbGxQcmljZT1taW5TZWxsUHJpY2UsdXBkYXRlLm5ld01pblNlbGxQcmljZT1taW5TZWxsUHJpY2UpLG1heEJhc2VUb1NwZW5kJiYodXBkYXRlLm9sZE1heEJhc2VUb1NwZW5kPW1hcmtldC5tYXhCYXNlVG9TcGVuZCxtYXJrZXQubWF4QmFzZVRvU3BlbmQ9bWF4QmFzZVRvU3BlbmQsdXBkYXRlLm5ld01heEJhc2VUb1NwZW5kPW1heEJhc2VUb1NwZW5kKSxtaW5CYXNlVG9TcGVuZCYmKHVwZGF0ZS5vbGRNaW5CYXNlVG9TcGVuZD1tYXJrZXQubWluQmFzZVRvU3BlbmQsbWFya2V0Lm1pbkJhc2VUb1NwZW5kPW1pbkJhc2VUb1NwZW5kLHVwZGF0ZS5uZXdNaW5CYXNlVG9TcGVuZD1taW5CYXNlVG9TcGVuZCksbWF4VG9rZW5zVG9TZWxsJiYodXBkYXRlLm9sZE1heFRva2Vuc1RvU2VsbD1tYXJrZXQubWF4VG9rZW5zVG9TZWxsLG1hcmtldC5tYXhUb2tlbnNUb1NlbGw9bWF4VG9rZW5zVG9TZWxsLHVwZGF0ZS5uZXdNYXhUb2tlbnNUb1NlbGw9bWF4VG9rZW5zVG9TZWxsKSxtaW5Ub2tlbnNUb1NlbGwmJih1cGRhdGUub2xkTWluVG9rZW5zVG9TZWxsPW1hcmtldC5taW5Ub2tlbnNUb1NlbGwsbWFya2V0Lm1pblRva2Vuc1RvU2VsbD1taW5Ub2tlbnNUb1NlbGwsdXBkYXRlLm5ld01pblRva2Vuc1RvU2VsbD1taW5Ub2tlbnNUb1NlbGwpLHByaWNlSW5jcmVtZW50JiYodXBkYXRlLm9sZFByaWNlSW5jcmVtZW50PW1hcmtldC5wcmljZUluY3JlbWVudCxtYXJrZXQucHJpY2VJbmNyZW1lbnQ9cHJpY2VJbmNyZW1lbnQsdXBkYXRlLm5ld1ByaWNlSW5jcmVtZW50PXByaWNlSW5jcmVtZW50KSxtaW5TcHJlYWQmJih1cGRhdGUub2xkTWluU3ByZWFkPW1hcmtldC5taW5TcHJlYWQsbWFya2V0Lm1pblNwcmVhZD1taW5TcHJlYWQsdXBkYXRlLm5ld01pblNwcmVhZD1taW5TcHJlYWQpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hcmtldHMiLG1hcmtldCksYXBpLmVtaXQoInVwZGF0ZU1hcmtldCIsdXBkYXRlKSwhMH1yZXR1cm4hMX07YWN0aW9ucy51cGRhdGVNYXJrZXQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiYiU1dBUC5ISVZFIiE9PXN5bWJvbCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdXNlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidXNlcnMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11c2VyLCJ1c2VyIG5vdCByZWdpc3RlcmVkIikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IGF1dGhvcml6ZWRBY3Rpb249ITE7aWYoYXV0aG9yaXplZEFjdGlvbj0hIXVzZXIuaXNQcmVtaXVtfHxhd2FpdCB2ZXJpZnlVdGlsaXR5VG9rZW5CYWxhbmNlKHBhcmFtcy5iYXNpY1NldHRpbmdzRmVlLGFwaS5zZW5kZXIpLGFwaS5hc3NlcnQoYXV0aG9yaXplZEFjdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBzZXR0aW5ncyBjaGFuZ2UgZmVlIikpe2NvbnN0IG1hcmtldD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFya2V0cyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bWFya2V0LCJtYXJrZXQgbXVzdCBleGlzdCIpKXtyZXR1cm4gYXdhaXQgdXBkYXRlTWFya2V0SW50ZXJuYWwocGF5bG9hZCxtYXJrZXQsIXVzZXIuaXNQcmVtaXVtLHBhcmFtcyl9fX19cmV0dXJuITF9LGFjdGlvbnMuYWRkTWFya2V0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsIT09dXNlciwidXNlciBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIG11c3QgZXhpc3QiKSl7Y29uc3QgbWFya2V0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYXJrZXRzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1tYXJrZXQsIm1hcmtldCBhbHJlYWR5IGFkZGVkIikpe2NvbnN0IGF1dGhvcml6ZWRBZGRpdGlvbj11c2VyLmlzUHJlbWl1bXx8MD09PXVzZXIubWFya2V0cztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRBZGRpdGlvbiwibm90IGFsbG93ZWQgdG8gYWRkIGFub3RoZXIgbWFya2V0Iikpe2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7bGV0IHJlcXVpcmVkU3Rha2U9YXBpLkJpZ051bWJlcihwYXJhbXMuc3Rha2VQZXJNYXJrZXQpLm11bHRpcGxpZWRCeSh1c2VyLm1hcmtldHMrMSk7dXNlci5pc1ByZW1pdW0mJihyZXF1aXJlZFN0YWtlPXJlcXVpcmVkU3Rha2UucGx1cyhwYXJhbXMucHJlbWl1bUJhc2VTdGFrZSkpO2NvbnN0IGhhc0Vub3VnaFN0YWtlPWF3YWl0IHZlcmlmeVV0aWxpdHlUb2tlblN0YWtlKHJlcXVpcmVkU3Rha2UsYXBpLnNlbmRlcik7aWYoYXBpLmFzc2VydChoYXNFbm91Z2hTdGFrZSwibXVzdCBzdGFrZSBtb3JlIEJFRSB0byBhZGQgYSBtYXJrZXQiKSl7Y29uc3QgbmV3TWFya2V0PXthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxwcmVjaXNpb246dG9rZW4ucHJlY2lzaW9uLHN0cmF0ZWd5OjEsbWF4QmlkUHJpY2U6IjEwMDAiLG1pblNlbGxQcmljZToiMC4wMDAwMDAwMSIsbWF4QmFzZVRvU3BlbmQ6IjEwMCIsbWluQmFzZVRvU3BlbmQ6IjEiLG1heFRva2Vuc1RvU2VsbDoiMTAwIixtaW5Ub2tlbnNUb1NlbGw6IjEiLHByaWNlSW5jcmVtZW50OiIwLjAwMDAxIixtaW5TcHJlYWQ6IjAuMDAwMDAwMDEiLGlzRW5hYmxlZDohMCxjcmVhdGlvblRpbWVzdGFtcDpnZXRDdXJyZW50VGltZXN0YW1wKCksY3JlYXRpb25CbG9jazphcGkuYmxvY2tOdW1iZXJ9LGFkZGVkTWFya2V0PWF3YWl0IGFwaS5kYi5pbnNlcnQoIm1hcmtldHMiLG5ld01hcmtldCk7YXBpLmVtaXQoImFkZE1hcmtldCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSksdXNlci5tYXJrZXRzKz0xLHVzZXIuZW5hYmxlZE1hcmtldHMrPTEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidXNlcnMiLHVzZXIpLGF3YWl0IHVwZGF0ZU1hcmtldEludGVybmFsKHBheWxvYWQsYWRkZWRNYXJrZXQsITEscGFyYW1zKX19fX19fX0sYWN0aW9ucy5yZWdpc3Rlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7aXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGF1dGhvcml6ZWRSZWdpc3RyYXRpb249YXdhaXQgdmVyaWZ5VXRpbGl0eVRva2VuQmFsYW5jZShwYXJhbXMuYmFzaWNGZWUsYXBpLnNlbmRlcik7aWYoYXBpLmFzc2VydChhdXRob3JpemVkUmVnaXN0cmF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHJlZ2lzdHJhdGlvbiBmZWUiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHVzZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInVzZXJzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYoYXBpLmFzc2VydChudWxsPT09dXNlciwidXNlciBhbHJlYWR5IHJlZ2lzdGVyZWQiKSl7aWYoIWF3YWl0IGJ1cm5GZWUocGFyYW1zLmJhc2ljRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkpcmV0dXJuITE7Y29uc3QgY3JlYXRpb25UaW1lc3RhbXA9Z2V0Q3VycmVudFRpbWVzdGFtcCgpLG5ld1VzZXI9e2FjY291bnQ6YXBpLnNlbmRlcixpc1ByZW1pdW06ITEsaXNQcmVtaXVtRmVlUGFpZDohMSxpc09uQ29vbGRvd246ITEsaXNFbmFibGVkOiEwLG1hcmtldHM6MCxlbmFibGVkTWFya2V0czowLHRpbWVMaW1pdDozKnBhcmFtcy5iYXNpY0R1cmF0aW9uQmxvY2tzKjFlMyxsYXN0VGlja1RpbWVzdGFtcDpjcmVhdGlvblRpbWVzdGFtcCxsYXN0VGlja0Jsb2NrOmFwaS5ibG9ja051bWJlcixjcmVhdGlvblRpbWVzdGFtcDpjcmVhdGlvblRpbWVzdGFtcCxjcmVhdGlvbkJsb2NrOmFwaS5ibG9ja051bWJlcn07cmV0dXJuIGF3YWl0IGFwaS5kYi5pbnNlcnQoInVzZXJzIixuZXdVc2VyKSxhcGkuZW1pdCgicmVnaXN0ZXIiLHthY2NvdW50OmFwaS5zZW5kZXJ9KSwhMH19cmV0dXJuITF9Ow=="}}}