{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"packmanager","params":"","code":"Y29uc3QgQ09OVFJBQ1RfTkFNRT0icGFja21hbmFnZXIiLFVUSUxJVFlfVE9LRU5fU1lNQk9MPSJCRUUiLFVUSUxJVFlfVE9LRU5fUFJFQ0lTSU9OPTgsTUFYX05BTUVfTEVOR1RIPTEwMCxNQVhfQ0FSRFNfUEVSX1BBQ0s9MzAsTUFYX0NBUkRTX0FUX09OQ0U9NjAsTUFYX1BBUlRJVElPTlM9MTAwLE1BWF9ST0xMUz0xMCxNQVhfTlVNX05GVFNfSVNTVUFCTEU9MTA7YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJwYWNrcyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhY2tzIixbImFjY291bnQiLCJzeW1ib2wiLCJuZnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0eXBlcyIsWyJuZnQiLCJlZGl0aW9uIiwidHlwZUlkIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZm9pbHMiLFsibmZ0IiwiZWRpdGlvbiIsImluZGV4Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiY2F0ZWdvcmllcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJyYXJpdGllcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0ZWFtcyIsWyJuZnQiLCJlZGl0aW9uIiwiaW5kZXgiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJtYW5hZ2VkTmZ0cyIsWyJuZnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBwYXJhbXM9e3JlZ2lzdGVyRmVlOiIxMDAwIix0eXBlQWRkRmVlOiIxIn07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfX07Y29uc3QgZG9SYW5kb21Sb2xsPXBhcnRpdGlvbj0+e2xldCByZXN1bHQ9MDtjb25zdCByb2xsPU1hdGguZmxvb3IoYXBpLnJhbmRvbSgpKnBhcnRpdGlvbltwYXJ0aXRpb24ubGVuZ3RoLTFdKSsxO2ZvcihsZXQgaT0wO2k8cGFydGl0aW9uLmxlbmd0aCYmcm9sbD5wYXJ0aXRpb25baV07aSs9MSlyZXN1bHQrPTE7cmV0dXJuIHJlc3VsdD49cGFydGl0aW9uLmxlbmd0aCYmKHJlc3VsdD1wYXJ0aXRpb24ubGVuZ3RoLTEpLHJlc3VsdH0saXNWYWxpZFBhcnRpdGlvbj1wYXJ0aXRpb249PntpZihwYXJ0aXRpb24mJiJvYmplY3QiPT10eXBlb2YgcGFydGl0aW9uJiZBcnJheS5pc0FycmF5KHBhcnRpdGlvbikmJnBhcnRpdGlvbi5sZW5ndGg+PTEmJnBhcnRpdGlvbi5sZW5ndGg8PTEwMCl7bGV0IHByZXZOdW09MDtmb3IobGV0IGk9MDtpPHBhcnRpdGlvbi5sZW5ndGg7aSs9MSl7Y29uc3QgdmFsPXBhcnRpdGlvbltpXTtpZighKCJudW1iZXIiPT10eXBlb2YgdmFsJiZOdW1iZXIuaXNJbnRlZ2VyKHZhbCkmJnZhbD5wcmV2TnVtKSlyZXR1cm4hMTtwcmV2TnVtPXZhbH1yZXR1cm4hMH1yZXR1cm4hMX0saXNUb2tlblRyYW5zZmVyVmVyaWZpZWQ9KHJlc3VsdCxmcm9tLHRvLHN5bWJvbCxxdWFudGl0eSxldmVudFN0cik9PiEodm9pZCAwIT09cmVzdWx0LmVycm9yc3x8IXJlc3VsdC5ldmVudHN8fHZvaWQgMD09PXJlc3VsdC5ldmVudHMuZmluZCgoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJmVsLmV2ZW50PT09ZXZlbnRTdHImJmVsLmRhdGEuZnJvbT09PWZyb20mJmVsLmRhdGEudG89PT10byYmYXBpLkJpZ051bWJlcihlbC5kYXRhLnF1YW50aXR5KS5lcShxdWFudGl0eSkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSkpLGNvdW50TmZ0SXNzdWFuY2U9KHJlc3VsdCxmcm9tLHRvLHN5bWJvbCk9PntsZXQgY291bnQ9MDtpZih2b2lkIDA9PT1yZXN1bHQuZXJyb3JzJiZyZXN1bHQuZXZlbnRzKXtjb3VudD1yZXN1bHQuZXZlbnRzLmZpbHRlcigoZT0+Im5mdCI9PT1lLmNvbnRyYWN0JiYiaXNzdWUiPT09ZS5ldmVudCYmZS5kYXRhLmZyb209PT1mcm9tJiZlLmRhdGEudG89PT10byYmZS5kYXRhLnN5bWJvbD09PXN5bWJvbCkpLmxlbmd0aH1yZXR1cm4gY291bnR9LGNhbGN1bGF0ZUJhbGFuY2U9KGJhbGFuY2UscXVhbnRpdHkscHJlY2lzaW9uLGFkZCk9PmFkZD9hcGkuQmlnTnVtYmVyKGJhbGFuY2UpLnBsdXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKTphcGkuQmlnTnVtYmVyKGJhbGFuY2UpLm1pbnVzKHF1YW50aXR5KS50b0ZpeGVkKHByZWNpc2lvbiksY291bnREZWNpbWFscz12YWx1ZT0+YXBpLkJpZ051bWJlcih2YWx1ZSkuZHAoKSx2ZXJpZnlUb2tlbkJhbGFuY2U9YXN5bmMoYW1vdW50LHN5bWJvbCxhY2NvdW50KT0+e2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5sdGUoMCkpcmV0dXJuITA7Y29uc3QgdG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pO3JldHVybiEoIXRva2VuQmFsYW5jZXx8IWFwaS5CaWdOdW1iZXIodG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShhbW91bnQpKX0sdHJhbnNmZXJGZWU9YXN5bmMoYW1vdW50LGRlc3QsaXNTaWduZWRXaXRoQWN0aXZlS2V5KT0+e2NvbnN0IGFjdGlvblN0cj0icGFja21hbmFnZXIiPT09ZGVzdD8idHJhbnNmZXJUb0NvbnRyYWN0IjoidHJhbnNmZXIiO2lmKGFwaS5CaWdOdW1iZXIoYW1vdW50KS5ndCgwKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIixhY3Rpb25TdHIse3RvOmRlc3Qsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmFtb3VudCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7aWYoIWlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLGRlc3QsIkJFRSIsYW1vdW50LGFjdGlvblN0cikpcmV0dXJuITF9cmV0dXJuITB9O2FjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHtyZWdpc3RlckZlZTpyZWdpc3RlckZlZSx0eXBlQWRkRmVlOnR5cGVBZGRGZWV9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtyZWdpc3RlckZlZSYmInN0cmluZyI9PXR5cGVvZiByZWdpc3RlckZlZSYmIWFwaS5CaWdOdW1iZXIocmVnaXN0ZXJGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocmVnaXN0ZXJGZWUpLmd0ZSgwKSYmKHBhcmFtcy5yZWdpc3RlckZlZT1yZWdpc3RlckZlZSksdHlwZUFkZEZlZSYmInN0cmluZyI9PXR5cGVvZiB0eXBlQWRkRmVlJiYhYXBpLkJpZ051bWJlcih0eXBlQWRkRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHR5cGVBZGRGZWUpLmd0ZSgwKSYmKHBhcmFtcy50eXBlQWRkRmVlPXR5cGVBZGRGZWUpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy5kZXBvc2l0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuZnRTeW1ib2w6bmZ0U3ltYm9sLGFtb3VudDphbW91bnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiZhbW91bnQmJiJzdHJpbmciPT10eXBlb2YgYW1vdW50JiYhYXBpLkJpZ051bWJlcihhbW91bnQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYW1vdW50KS5ndCgwKSYmY291bnREZWNpbWFscyhhbW91bnQpPD04LCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50Iikpe2NvbnN0IGhhc0Vub3VnaEJhbGFuY2U9YXdhaXQgdmVyaWZ5VG9rZW5CYWxhbmNlKGFtb3VudCwiQkVFIixhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaEJhbGFuY2UsIm5vdCBlbm91Z2ggdG9rZW5zIHRvIGRlcG9zaXQiKSlyZXR1cm4hIWF3YWl0IHRyYW5zZmVyRmVlKGFtb3VudCwicGFja21hbmFnZXIiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkmJih1bmRlck1hbmFnZW1lbnQuZmVlUG9vbD1jYWxjdWxhdGVCYWxhbmNlKHVuZGVyTWFuYWdlbWVudC5mZWVQb29sLGFtb3VudCw4LCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtYW5hZ2VkTmZ0cyIsdW5kZXJNYW5hZ2VtZW50KSxhcGkuZW1pdCgiZGVwb3NpdCIse25mdDpuZnRTeW1ib2wsbmV3RmVlUG9vbDp1bmRlck1hbmFnZW1lbnQuZmVlUG9vbH0pLCEwKX19cmV0dXJuITF9LGFjdGlvbnMuZGVsZXRlVHlwZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmZ0U3ltYm9sOm5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHlwZUlkOnR5cGVJZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5mdFN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBuZnRTeW1ib2wmJnZvaWQgMCE9PXR5cGVJZCYmIm51bWJlciI9PXR5cGVvZiB0eXBlSWQmJk51bWJlci5pc0ludGVnZXIodHlwZUlkKSYmdHlwZUlkPj0wJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgdG8gZGVsZXRlIHR5cGVzIikmJmFwaS5hc3NlcnQoMD09PW5mdC5jaXJjdWxhdGluZ1N1cHBseSwiTkZUIGluc3RhbmNlcyBtdXN0IG5vdCBiZSBpbiBjaXJjdWxhdGlvbiIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50Iikpe2NvbnN0IHRoZVR5cGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInR5cGVzIix7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHlwZUlkOnR5cGVJZH0pO2lmKG51bGwhPT10aGVUeXBlKXJldHVybiBhd2FpdCBhcGkuZGIucmVtb3ZlKCJ0eXBlcyIsdGhlVHlwZSksYXBpLmVtaXQoImRlbGV0ZVR5cGUiLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkfSksITB9fX1yZXR1cm4hMX0sYWN0aW9ucy51cGRhdGVUeXBlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuZnRTeW1ib2w6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkLGNhdGVnb3J5OmNhdGVnb3J5LHJhcml0eTpyYXJpdHksdGVhbTp0ZWFtLG5hbWU6bmFtZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKHZvaWQgMD09PW5hbWUmJnZvaWQgMD09PWNhdGVnb3J5JiZ2b2lkIDA9PT1yYXJpdHkmJnZvaWQgMD09PXRlYW0pcmV0dXJuITE7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodm9pZCAwPT09bmFtZXx8bmFtZSYmInN0cmluZyI9PXR5cGVvZiBuYW1lJiZhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG5hbWUsIiAiKSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD0xMDAsImludmFsaWQgdHlwZSBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwMCIpJiZhcGkuYXNzZXJ0KG5mdFN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBuZnRTeW1ib2wmJnZvaWQgMCE9PXR5cGVJZCYmIm51bWJlciI9PXR5cGVvZiB0eXBlSWQmJk51bWJlci5pc0ludGVnZXIodHlwZUlkKSYmdHlwZUlkPj0wJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAmJih2b2lkIDA9PT1jYXRlZ29yeXx8Im51bWJlciI9PXR5cGVvZiBjYXRlZ29yeSYmTnVtYmVyLmlzSW50ZWdlcihjYXRlZ29yeSkmJmNhdGVnb3J5Pj0wKSYmKHZvaWQgMD09PXJhcml0eXx8Im51bWJlciI9PXR5cGVvZiByYXJpdHkmJk51bWJlci5pc0ludGVnZXIocmFyaXR5KSYmcmFyaXR5Pj0wKSYmKHZvaWQgMD09PXRlYW18fCJudW1iZXIiPT10eXBlb2YgdGVhbSYmTnVtYmVyLmlzSW50ZWdlcih0ZWFtKSYmdGVhbT49MCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgdG8gdXBkYXRlIHR5cGVzIikpe2NvbnN0IHVuZGVyTWFuYWdlbWVudD1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWFuYWdlZE5mdHMiLHtuZnQ6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dW5kZXJNYW5hZ2VtZW50LCJORlQgbm90IHVuZGVyIG1hbmFnZW1lbnQiKSYmYXBpLmFzc2VydChlZGl0aW9uLnRvU3RyaW5nKClpbiB1bmRlck1hbmFnZW1lbnQuZWRpdGlvbk1hcHBpbmcsImVkaXRpb24gbm90IHJlZ2lzdGVyZWQiKSl7Y29uc3QgZWRpdGlvbk1hcHBpbmc9dW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nW2VkaXRpb24udG9TdHJpbmcoKV07aWYoYXBpLmFzc2VydCghKHZvaWQgMCE9PWNhdGVnb3J5JiZlZGl0aW9uTWFwcGluZy5jYXRlZ29yeVJPfHx2b2lkIDAhPT1yYXJpdHkmJmVkaXRpb25NYXBwaW5nLnJhcml0eVJPfHx2b2lkIDAhPT10ZWFtJiZlZGl0aW9uTWFwcGluZy50ZWFtUk98fHZvaWQgMCE9PW5hbWUmJmVkaXRpb25NYXBwaW5nLm5hbWVSTyksImNhbm5vdCBlZGl0IHJlYWQtb25seSBwcm9wZXJ0aWVzIikpe2NvbnN0IHRoZVR5cGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInR5cGVzIix7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHlwZUlkOnR5cGVJZH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRoZVR5cGUsInR5cGUgZG9lcyBub3QgZXhpc3QiKSl7Y29uc3QgdXBkYXRlPXtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6dHlwZUlkfTtyZXR1cm4gdm9pZCAwIT09bmFtZSYmKHVwZGF0ZS5vbGROYW1lPXRoZVR5cGUubmFtZSx0aGVUeXBlLm5hbWU9bmFtZSx1cGRhdGUubmV3TmFtZT1uYW1lKSx2b2lkIDAhPT1jYXRlZ29yeSYmKHVwZGF0ZS5vbGRDYXRlZ29yeT10aGVUeXBlLmNhdGVnb3J5LHRoZVR5cGUuY2F0ZWdvcnk9Y2F0ZWdvcnksdXBkYXRlLm5ld0NhdGVnb3J5PWNhdGVnb3J5KSx2b2lkIDAhPT1yYXJpdHkmJih1cGRhdGUub2xkUmFyaXR5PXRoZVR5cGUucmFyaXR5LHRoZVR5cGUucmFyaXR5PXJhcml0eSx1cGRhdGUubmV3UmFyaXR5PXJhcml0eSksdm9pZCAwIT09dGVhbSYmKHVwZGF0ZS5vbGRUZWFtPXRoZVR5cGUudGVhbSx0aGVUeXBlLnRlYW09dGVhbSx1cGRhdGUubmV3VGVhbT10ZWFtKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0eXBlcyIsdGhlVHlwZSksYXBpLmVtaXQoInVwZGF0ZVR5cGUiLHVwZGF0ZSksITB9fX19fXJldHVybiExfSxhY3Rpb25zLmFkZFR5cGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGNhdGVnb3J5OmNhdGVnb3J5LHJhcml0eTpyYXJpdHksdGVhbTp0ZWFtLG5hbWU6bmFtZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9MTAwLCJpbnZhbGlkIHR5cGUgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiAxMDAiKSYmYXBpLmFzc2VydChuZnRTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0U3ltYm9sJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAmJnZvaWQgMCE9PWNhdGVnb3J5JiYibnVtYmVyIj09dHlwZW9mIGNhdGVnb3J5JiZOdW1iZXIuaXNJbnRlZ2VyKGNhdGVnb3J5KSYmY2F0ZWdvcnk+PTAmJnZvaWQgMCE9PXJhcml0eSYmIm51bWJlciI9PXR5cGVvZiByYXJpdHkmJk51bWJlci5pc0ludGVnZXIocmFyaXR5KSYmcmFyaXR5Pj0wJiZ2b2lkIDAhPT10ZWFtJiYibnVtYmVyIj09dHlwZW9mIHRlYW0mJk51bWJlci5pc0ludGVnZXIodGVhbSkmJnRlYW0+PTAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgdG8gYWRkIGEgdHlwZSIpKXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGhhc0Vub3VnaEJhbGFuY2U9YXdhaXQgdmVyaWZ5VG9rZW5CYWxhbmNlKHBhcmFtcy50eXBlQWRkRmVlLCJCRUUiLGFwaS5zZW5kZXIpO2lmKGFwaS5hc3NlcnQoaGFzRW5vdWdoQmFsYW5jZSwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSB0eXBlIGFkZCBmZWUiKSl7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpJiZhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZywiZWRpdGlvbiBub3QgcmVnaXN0ZXJlZCIpKXtpZighYXdhaXQgdHJhbnNmZXJGZWUocGFyYW1zLnR5cGVBZGRGZWUsIm51bGwiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleSkpcmV0dXJuITE7Y29uc3QgbmV3VHlwZUlkPXVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldLm5leHRUeXBlSWQsbmV3VHlwZT17bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHlwZUlkOm5ld1R5cGVJZCxjYXRlZ29yeTpjYXRlZ29yeSxyYXJpdHk6cmFyaXR5LHRlYW06dGVhbSxuYW1lOm5hbWV9LHJlc3VsdD1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJ0eXBlcyIsbmV3VHlwZSk7cmV0dXJuIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldLm5leHRUeXBlSWQ9bmV3VHlwZUlkKzEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFuYWdlZE5mdHMiLHVuZGVyTWFuYWdlbWVudCksYXBpLmVtaXQoImFkZFR5cGUiLHtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbix0eXBlSWQ6bmV3VHlwZUlkLHJvd0lkOnJlc3VsdC5faWR9KSwhMH19fX1yZXR1cm4hMX0sYWN0aW9ucy5zZXRUcmFpdE5hbWU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLHRyYWl0OnRyYWl0LGluZGV4OmluZGV4LG5hbWU6bmFtZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHRhYmxlTWFwcGluZz17Zm9pbDoiZm9pbHMiLGNhdGVnb3J5OiJjYXRlZ29yaWVzIixyYXJpdHk6InJhcml0aWVzIix0ZWFtOiJ0ZWFtcyJ9O2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9MTAwLCJpbnZhbGlkIHRyYWl0IG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgMTAwIikmJmFwaS5hc3NlcnQobmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmdHJhaXQmJiJzdHJpbmciPT10eXBlb2YgdHJhaXQmJlsiZm9pbCIsImNhdGVnb3J5IiwicmFyaXR5IiwidGVhbSJdLmluY2x1ZGVzKHRyYWl0KSYmdm9pZCAwIT09aW5kZXgmJiJudW1iZXIiPT10eXBlb2YgaW5kZXgmJk51bWJlci5pc0ludGVnZXIoaW5kZXgpJiZpbmRleD49MCYmaW5kZXg8MTAwJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgZm9yIHVwZGF0ZXMiKSl7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpJiZhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZywiZWRpdGlvbiBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBjdXJyZW50VHJhaXQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGVNYXBwaW5nW3RyYWl0XSx7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24saW5kZXg6aW5kZXh9KTtpZihudWxsIT09Y3VycmVudFRyYWl0KXtpZihuYW1lIT09Y3VycmVudFRyYWl0Lm5hbWUpe2NvbnN0IG9sZE5hbWU9Y3VycmVudFRyYWl0Lm5hbWU7Y3VycmVudFRyYWl0Lm5hbWU9bmFtZSxhd2FpdCBhcGkuZGIudXBkYXRlKHRhYmxlTWFwcGluZ1t0cmFpdF0sY3VycmVudFRyYWl0KSxhcGkuZW1pdCgidXBkYXRlVHJhaXROYW1lIix7bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb24sdHJhaXQ6dHJhaXQsaW5kZXg6aW5kZXgsb2xkTmFtZTpvbGROYW1lLG5ld05hbWU6bmFtZX0pfX1lbHNle2NvbnN0IG5ld1RyYWl0PXtuZnQ6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbixpbmRleDppbmRleCxuYW1lOm5hbWV9O2F3YWl0IGFwaS5kYi5pbnNlcnQodGFibGVNYXBwaW5nW3RyYWl0XSxuZXdUcmFpdCksYXBpLmVtaXQoInNldFRyYWl0TmFtZSIse25mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLHRyYWl0OnRyYWl0LGluZGV4OmluZGV4LG5hbWU6bmFtZX0pfX19fX0sYWN0aW9ucy51cGRhdGVFZGl0aW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtuZnRTeW1ib2w6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbixlZGl0aW9uTmFtZTplZGl0aW9uTmFtZSxjYXRlZ29yeVJPOmNhdGVnb3J5Uk8scmFyaXR5Uk86cmFyaXR5Uk8sdGVhbVJPOnRlYW1STyxuYW1lUk86bmFtZVJPLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYodm9pZCAwPT09ZWRpdGlvbk5hbWUmJnZvaWQgMD09PWNhdGVnb3J5Uk8mJnZvaWQgMD09PXJhcml0eVJPJiZ2b2lkIDA9PT10ZWFtUk8mJnZvaWQgMD09PW5hbWVSTylyZXR1cm4hMTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1lZGl0aW9uTmFtZXx8ZWRpdGlvbk5hbWUmJiJzdHJpbmciPT10eXBlb2YgZWRpdGlvbk5hbWUmJmFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QoZWRpdGlvbk5hbWUsIiAiKSkmJmVkaXRpb25OYW1lLmxlbmd0aD4wJiZlZGl0aW9uTmFtZS5sZW5ndGg8PTEwMCwiaW52YWxpZCBlZGl0aW9uIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgMTAwIikmJmFwaS5hc3NlcnQobmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmKHZvaWQgMD09PWNhdGVnb3J5Uk98fGNhdGVnb3J5Uk8mJiJib29sZWFuIj09dHlwZW9mIGNhdGVnb3J5Uk8pJiYodm9pZCAwPT09cmFyaXR5Uk98fHJhcml0eVJPJiYiYm9vbGVhbiI9PXR5cGVvZiByYXJpdHlSTykmJih2b2lkIDA9PT10ZWFtUk98fHRlYW1STyYmImJvb2xlYW4iPT10eXBlb2YgdGVhbVJPKSYmKHZvaWQgMD09PW5hbWVST3x8bmFtZVJPJiYiYm9vbGVhbiI9PXR5cGVvZiBuYW1lUk8pJiZ2b2lkIDAhPT1lZGl0aW9uJiYibnVtYmVyIj09dHlwZW9mIGVkaXRpb24mJk51bWJlci5pc0ludGVnZXIoZWRpdGlvbikmJmVkaXRpb24+PTAsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgZm9yIHVwZGF0ZXMiKSl7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpJiZhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZywiZWRpdGlvbiBub3QgcmVnaXN0ZXJlZCIpKXtjb25zdCBlZGl0aW9uTWFwPXVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldLHVwZGF0ZT17bmZ0Om5mdFN5bWJvbCxlZGl0aW9uOmVkaXRpb259O3JldHVybiB2b2lkIDAhPT1lZGl0aW9uTmFtZSYmKHVwZGF0ZS5vbGRFZGl0aW9uTmFtZT1lZGl0aW9uTWFwLmVkaXRpb25OYW1lLGVkaXRpb25NYXAuZWRpdGlvbk5hbWU9ZWRpdGlvbk5hbWUsdXBkYXRlLm5ld0VkaXRpb25OYW1lPWVkaXRpb25OYW1lKSxjYXRlZ29yeVJPJiYoZWRpdGlvbk1hcC5jYXRlZ29yeVJPPSEwLHVwZGF0ZS5jYXRlZ29yeVJPPSEwKSxyYXJpdHlSTyYmKGVkaXRpb25NYXAucmFyaXR5Uk89ITAsdXBkYXRlLnJhcml0eVJPPSEwKSx0ZWFtUk8mJihlZGl0aW9uTWFwLnRlYW1STz0hMCx1cGRhdGUudGVhbVJPPSEwKSxuYW1lUk8mJihlZGl0aW9uTWFwLm5hbWVSTz0hMCx1cGRhdGUubmFtZVJPPSEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtYW5hZ2VkTmZ0cyIsdW5kZXJNYW5hZ2VtZW50KSxhcGkuZW1pdCgidXBkYXRlRWRpdGlvbiIsdXBkYXRlKSwhMH19fXJldHVybiExfSxhY3Rpb25zLnVwZGF0ZVBhY2s9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3BhY2tTeW1ib2w6cGFja1N5bWJvbCxuZnRTeW1ib2w6bmZ0U3ltYm9sLGVkaXRpb246ZWRpdGlvbixjYXJkc1BlclBhY2s6Y2FyZHNQZXJQYWNrLGZvaWxDaGFuY2U6Zm9pbENoYW5jZSxjYXRlZ29yeUNoYW5jZTpjYXRlZ29yeUNoYW5jZSxyYXJpdHlDaGFuY2U6cmFyaXR5Q2hhbmNlLHRlYW1DaGFuY2U6dGVhbUNoYW5jZSxudW1Sb2xsczpudW1Sb2xscyxpc0ZpbmFsaXplZDppc0ZpbmFsaXplZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKHZvaWQgMD09PWVkaXRpb24mJnZvaWQgMD09PWNhcmRzUGVyUGFjayYmdm9pZCAwPT09Zm9pbENoYW5jZSYmdm9pZCAwPT09Y2F0ZWdvcnlDaGFuY2UmJnZvaWQgMD09PXJhcml0eUNoYW5jZSYmdm9pZCAwPT09dGVhbUNoYW5jZSYmdm9pZCAwPT09bnVtUm9sbHMmJnZvaWQgMD09PWlzRmluYWxpemVkKXJldHVybiExO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHBhY2tTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgcGFja1N5bWJvbCYmbmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmKHZvaWQgMD09PWlzRmluYWxpemVkfHxpc0ZpbmFsaXplZCYmImJvb2xlYW4iPT10eXBlb2YgaXNGaW5hbGl6ZWQpJiYodm9pZCAwPT09ZWRpdGlvbnx8Im51bWJlciI9PXR5cGVvZiBlZGl0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGVkaXRpb24pJiZlZGl0aW9uPj0wKSYmKHZvaWQgMD09PW51bVJvbGxzfHwibnVtYmVyIj09dHlwZW9mIG51bVJvbGxzJiZOdW1iZXIuaXNJbnRlZ2VyKG51bVJvbGxzKSYmbnVtUm9sbHM+PTEmJm51bVJvbGxzPD0xMCkmJih2b2lkIDA9PT1mb2lsQ2hhbmNlfHxpc1ZhbGlkUGFydGl0aW9uKGZvaWxDaGFuY2UpKSYmKHZvaWQgMD09PWNhdGVnb3J5Q2hhbmNlfHxpc1ZhbGlkUGFydGl0aW9uKGNhdGVnb3J5Q2hhbmNlKSkmJih2b2lkIDA9PT1yYXJpdHlDaGFuY2V8fGlzVmFsaWRQYXJ0aXRpb24ocmFyaXR5Q2hhbmNlKSkmJih2b2lkIDA9PT10ZWFtQ2hhbmNlfHxpc1ZhbGlkUGFydGl0aW9uKHRlYW1DaGFuY2UpKSYmKHZvaWQgMD09PWNhcmRzUGVyUGFja3x8Im51bWJlciI9PXR5cGVvZiBjYXJkc1BlclBhY2smJk51bWJlci5pc0ludGVnZXIoY2FyZHNQZXJQYWNrKSYmY2FyZHNQZXJQYWNrPj0xJiZjYXJkc1BlclBhY2s8PTMwKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3Qgc2V0dGluZ3M9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhY2tzIix7c3ltYm9sOnBhY2tTeW1ib2wsbmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXNldHRpbmdzLCJwYWNrIG5vdCByZWdpc3RlcmVkIGZvciB0aGlzIE5GVCIpJiZhcGkuYXNzZXJ0KHNldHRpbmdzLmFjY291bnQ9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCB0byB1cGRhdGUgc2V0dGluZ3MiKSYmYXBpLmFzc2VydCghc2V0dGluZ3MuaXNGaW5hbGl6ZWQsInBhY2sgc2V0dGluZ3MgYWxyZWFkeSBmaW5hbGl6ZWQiKSl7aWYodm9pZCAwIT09ZWRpdGlvbil7Y29uc3QgdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZighYXBpLmFzc2VydChudWxsIT09dW5kZXJNYW5hZ2VtZW50JiZlZGl0aW9uLnRvU3RyaW5nKClpbiB1bmRlck1hbmFnZW1lbnQuZWRpdGlvbk1hcHBpbmcsImVkaXRpb24gbm90IHJlZ2lzdGVyZWQiKSlyZXR1cm4hMX1jb25zdCB1cGRhdGU9e3N5bWJvbDpwYWNrU3ltYm9sLG5mdDpuZnRTeW1ib2x9O3JldHVybiB2b2lkIDAhPT1lZGl0aW9uJiYodXBkYXRlLm9sZEVkaXRpb249c2V0dGluZ3MuZWRpdGlvbixzZXR0aW5ncy5lZGl0aW9uPWVkaXRpb24sdXBkYXRlLm5ld0VkaXRpb249ZWRpdGlvbiksdm9pZCAwIT09Y2FyZHNQZXJQYWNrJiYodXBkYXRlLm9sZENhcmRzUGVyUGFjaz1zZXR0aW5ncy5jYXJkc1BlclBhY2ssc2V0dGluZ3MuY2FyZHNQZXJQYWNrPWNhcmRzUGVyUGFjayx1cGRhdGUubmV3Q2FyZHNQZXJQYWNrPWNhcmRzUGVyUGFjayksdm9pZCAwIT09Zm9pbENoYW5jZSYmKHVwZGF0ZS5vbGRGb2lsQ2hhbmNlPXNldHRpbmdzLmZvaWxDaGFuY2Usc2V0dGluZ3MuZm9pbENoYW5jZT1mb2lsQ2hhbmNlLHVwZGF0ZS5uZXdGb2lsQ2hhbmNlPWZvaWxDaGFuY2UpLHZvaWQgMCE9PWNhdGVnb3J5Q2hhbmNlJiYodXBkYXRlLm9sZENhdGVnb3J5Q2hhbmNlPXNldHRpbmdzLmNhdGVnb3J5Q2hhbmNlLHNldHRpbmdzLmNhdGVnb3J5Q2hhbmNlPWNhdGVnb3J5Q2hhbmNlLHVwZGF0ZS5uZXdDYXRlZ29yeUNoYW5jZT1jYXRlZ29yeUNoYW5jZSksdm9pZCAwIT09cmFyaXR5Q2hhbmNlJiYodXBkYXRlLm9sZFJhcml0eUNoYW5jZT1zZXR0aW5ncy5yYXJpdHlDaGFuY2Usc2V0dGluZ3MucmFyaXR5Q2hhbmNlPXJhcml0eUNoYW5jZSx1cGRhdGUubmV3UmFyaXR5Q2hhbmNlPXJhcml0eUNoYW5jZSksdm9pZCAwIT09dGVhbUNoYW5jZSYmKHVwZGF0ZS5vbGRUZWFtQ2hhbmNlPXNldHRpbmdzLnRlYW1DaGFuY2Usc2V0dGluZ3MudGVhbUNoYW5jZT10ZWFtQ2hhbmNlLHVwZGF0ZS5uZXdUZWFtQ2hhbmNlPXRlYW1DaGFuY2UpLHZvaWQgMCE9PW51bVJvbGxzJiYodXBkYXRlLm9sZE51bVJvbGxzPXNldHRpbmdzLm51bVJvbGxzLHNldHRpbmdzLm51bVJvbGxzPW51bVJvbGxzLHVwZGF0ZS5uZXdOdW1Sb2xscz1udW1Sb2xscyksaXNGaW5hbGl6ZWQmJihzZXR0aW5ncy5pc0ZpbmFsaXplZD0hMCx1cGRhdGUuaXNGaW5hbGl6ZWQ9ITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhY2tzIixzZXR0aW5ncyksYXBpLmVtaXQoInVwZGF0ZVBhY2siLHVwZGF0ZSksITB9fXJldHVybiExfSxhY3Rpb25zLnJlZ2lzdGVyUGFjaz1hc3luYyBwYXlsb2FkPT57Y29uc3R7cGFja1N5bWJvbDpwYWNrU3ltYm9sLG5mdFN5bWJvbDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGVkaXRpb25OYW1lOmVkaXRpb25OYW1lLGNhcmRzUGVyUGFjazpjYXJkc1BlclBhY2ssZm9pbENoYW5jZTpmb2lsQ2hhbmNlLGNhdGVnb3J5Q2hhbmNlOmNhdGVnb3J5Q2hhbmNlLHJhcml0eUNoYW5jZTpyYXJpdHlDaGFuY2UsdGVhbUNoYW5jZTp0ZWFtQ2hhbmNlLG51bVJvbGxzOm51bVJvbGxzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodm9pZCAwPT09ZWRpdGlvbk5hbWV8fGVkaXRpb25OYW1lJiYic3RyaW5nIj09dHlwZW9mIGVkaXRpb25OYW1lJiZhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KGVkaXRpb25OYW1lLCIgIikpJiZlZGl0aW9uTmFtZS5sZW5ndGg+MCYmZWRpdGlvbk5hbWUubGVuZ3RoPD0xMDAsImludmFsaWQgZWRpdGlvbiBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwMCIpJiZhcGkuYXNzZXJ0KHBhY2tTeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgcGFja1N5bWJvbCYmbmZ0U3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFN5bWJvbCYmdm9pZCAwIT09ZWRpdGlvbiYmIm51bWJlciI9PXR5cGVvZiBlZGl0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGVkaXRpb24pJiZlZGl0aW9uPj0wJiZ2b2lkIDAhPT1udW1Sb2xscyYmIm51bWJlciI9PXR5cGVvZiBudW1Sb2xscyYmTnVtYmVyLmlzSW50ZWdlcihudW1Sb2xscykmJm51bVJvbGxzPj0xJiZudW1Sb2xsczw9MTAmJmlzVmFsaWRQYXJ0aXRpb24oZm9pbENoYW5jZSkmJmlzVmFsaWRQYXJ0aXRpb24oY2F0ZWdvcnlDaGFuY2UpJiZpc1ZhbGlkUGFydGl0aW9uKHJhcml0eUNoYW5jZSkmJmlzVmFsaWRQYXJ0aXRpb24odGVhbUNoYW5jZSkmJnZvaWQgMCE9PWNhcmRzUGVyUGFjayYmIm51bWJlciI9PXR5cGVvZiBjYXJkc1BlclBhY2smJk51bWJlci5pc0ludGVnZXIoY2FyZHNQZXJQYWNrKSYmY2FyZHNQZXJQYWNrPj0xJiZjYXJkc1BlclBhY2s8PTMwLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGhhc0Vub3VnaEJhbGFuY2U9YXdhaXQgdmVyaWZ5VG9rZW5CYWxhbmNlKHBhcmFtcy5yZWdpc3RlckZlZSwiQkVFIixhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaEJhbGFuY2UsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgcmVnaXN0cmF0aW9uIGZlZSIpKXtjb25zdCBwYWNrVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cGFja1N5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXBhY2tUb2tlbiwicGFjayBzeW1ib2wgbXVzdCBleGlzdCIpKXtjb25zdCB1bmRlck1hbmFnZW1lbnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1hbmFnZWROZnRzIix7bmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXVuZGVyTWFuYWdlbWVudCwiTkZUIG5vdCB1bmRlciBtYW5hZ2VtZW50Iikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09bmZ0LCJORlQgc3ltYm9sIG11c3QgZXhpc3QiKSYmYXBpLmFzc2VydChuZnQuaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQgdG8gcmVnaXN0ZXIiKSl7Y29uc3Qgc2V0dGluZ3M9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhY2tzIix7c3ltYm9sOnBhY2tTeW1ib2wsbmZ0Om5mdFN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PXNldHRpbmdzLGBwYWNrIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgJHtuZnRTeW1ib2x9YCkpe2lmKCFhcGkuYXNzZXJ0KGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ3x8ZWRpdGlvbk5hbWUmJiEoZWRpdGlvbi50b1N0cmluZygpaW4gdW5kZXJNYW5hZ2VtZW50LmVkaXRpb25NYXBwaW5nKSwibXVzdCBwcm92aWRlIGEgbmFtZSBmb3IgdGhlIG5ldyBlZGl0aW9uIikpcmV0dXJuITE7aWYoIWF3YWl0IHRyYW5zZmVyRmVlKHBhcmFtcy5yZWdpc3RlckZlZSwibnVsbCIsaXNTaWduZWRXaXRoQWN0aXZlS2V5KSlyZXR1cm4hMTtjb25zdCBuZXdTZXR0aW5ncz17YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpwYWNrU3ltYm9sLG5mdDpuZnRTeW1ib2wsZWRpdGlvbjplZGl0aW9uLGNhcmRzUGVyUGFjazpjYXJkc1BlclBhY2ssZm9pbENoYW5jZTpmb2lsQ2hhbmNlLGNhdGVnb3J5Q2hhbmNlOmNhdGVnb3J5Q2hhbmNlLHJhcml0eUNoYW5jZTpyYXJpdHlDaGFuY2UsdGVhbUNoYW5jZTp0ZWFtQ2hhbmNlLG51bVJvbGxzOm51bVJvbGxzLGlzRmluYWxpemVkOiExfTtpZighKGVkaXRpb24udG9TdHJpbmcoKWluIHVuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZykpe2NvbnN0IG5ld01hcHBpbmc9e25leHRUeXBlSWQ6MCxlZGl0aW9uTmFtZTplZGl0aW9uTmFtZSxjYXRlZ29yeVJPOiExLHJhcml0eVJPOiExLHRlYW1STzohMSxuYW1lUk86ITF9O3VuZGVyTWFuYWdlbWVudC5lZGl0aW9uTWFwcGluZ1tlZGl0aW9uLnRvU3RyaW5nKCldPW5ld01hcHBpbmcsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWFuYWdlZE5mdHMiLHVuZGVyTWFuYWdlbWVudCl9cmV0dXJuIGF3YWl0IGFwaS5kYi5pbnNlcnQoInBhY2tzIixuZXdTZXR0aW5ncyksYXBpLmVtaXQoInJlZ2lzdGVyUGFjayIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6cGFja1N5bWJvbCxuZnQ6bmZ0U3ltYm9sfSksITB9fX19fX1yZXR1cm4hMX0sYWN0aW9ucy5jcmVhdGVOZnQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25hbWU6bmFtZSxvcmdOYW1lOm9yZ05hbWUscHJvZHVjdE5hbWU6cHJvZHVjdE5hbWUsc3ltYm9sOnN5bWJvbCx1cmw6dXJsLGlzRm9pbFJlYWRPbmx5OmlzRm9pbFJlYWRPbmx5LGlzVHlwZVJlYWRPbmx5OmlzVHlwZVJlYWRPbmx5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKHZvaWQgMD09PWlzRm9pbFJlYWRPbmx5fHwiYm9vbGVhbiI9PXR5cGVvZiBpc0ZvaWxSZWFkT25seSkmJih2b2lkIDA9PT1pc1R5cGVSZWFkT25seXx8ImJvb2xlYW4iPT10eXBlb2YgaXNUeXBlUmVhZE9ubHkpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBuZnRQYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJwYXJhbXMiLHt9KSx7bmZ0Q3JlYXRpb25GZWU6bmZ0Q3JlYXRpb25GZWV9PW5mdFBhcmFtcyxoYXNFbm91Z2hCYWxhbmNlPWF3YWl0IHZlcmlmeVRva2VuQmFsYW5jZShuZnRDcmVhdGlvbkZlZSwiQkVFIixhcGkuc2VuZGVyKTtpZihhcGkuYXNzZXJ0KGhhc0Vub3VnaEJhbGFuY2UsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgTkZUIGNyZWF0aW9uIikpe2xldCBuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PW5mdCwic3ltYm9sIGFscmVhZHkgZXhpc3RzIikmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImNyZWF0ZSIse25hbWU6bmFtZSxzeW1ib2w6c3ltYm9sLG9yZ05hbWU6b3JnTmFtZSxwcm9kdWN0TmFtZTpwcm9kdWN0TmFtZSx1cmw6dXJsLGF1dGhvcml6ZWRJc3N1aW5nQWNjb3VudHM6W10sYXV0aG9yaXplZElzc3VpbmdDb250cmFjdHM6WyJwYWNrbWFuYWdlciJdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pLGFwaS5hc3NlcnQobnVsbCE9PW5mdCwiZXJyb3IgY3JlYXRpbmcgTkZUIikpKXtjb25zdCBmaW5hbElzRm9pbFJlYWRPbmx5PXZvaWQgMD09PWlzRm9pbFJlYWRPbmx5fHxpc0ZvaWxSZWFkT25seSxmaW5hbElzVHlwZVJlYWRPbmx5PXZvaWQgMD09PWlzVHlwZVJlYWRPbmx5fHxpc1R5cGVSZWFkT25seTthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImFkZFByb3BlcnR5Iix7c3ltYm9sOnN5bWJvbCxuYW1lOiJlZGl0aW9uIix0eXBlOiJudW1iZXIiLGlzUmVhZE9ubHk6ITAsYXV0aG9yaXplZEVkaXRpbmdBY2NvdW50czpbXSxhdXRob3JpemVkRWRpdGluZ0NvbnRyYWN0czpbInBhY2ttYW5hZ2VyIl0saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwiYWRkUHJvcGVydHkiLHtzeW1ib2w6c3ltYm9sLG5hbWU6ImZvaWwiLHR5cGU6Im51bWJlciIsaXNSZWFkT25seTpmaW5hbElzRm9pbFJlYWRPbmx5LGF1dGhvcml6ZWRFZGl0aW5nQ29udHJhY3RzOlsicGFja21hbmFnZXIiXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJuZnQiLCJhZGRQcm9wZXJ0eSIse3N5bWJvbDpzeW1ib2wsbmFtZToidHlwZSIsdHlwZToibnVtYmVyIixpc1JlYWRPbmx5OmZpbmFsSXNUeXBlUmVhZE9ubHksYXV0aG9yaXplZEVkaXRpbmdDb250cmFjdHM6WyJwYWNrbWFuYWdlciJdLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2NvbnN0IHByb3BlcnR5Q291bnQ9T2JqZWN0LmtleXMobmZ0LnByb3BlcnRpZXMpLmxlbmd0aDtpZihhcGkuYXNzZXJ0KDM9PT1wcm9wZXJ0eUNvdW50LCJORlQgY3JlYXRlZCBidXQgZXJyb3IgYWRkaW5nIGRhdGEgcHJvcGVydGllcyIpKXthd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsInNldEdyb3VwQnkiLHtzeW1ib2w6c3ltYm9sLHByb3BlcnRpZXM6WyJlZGl0aW9uIiwiZm9pbCIsInR5cGUiXSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSk7Y29uc3QgbmV3UmVjb3JkPXtuZnQ6c3ltYm9sLGZlZVBvb2w6IjAiLGVkaXRpb25NYXBwaW5nOnt9fTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJtYW5hZ2VkTmZ0cyIsbmV3UmVjb3JkKSxuZnQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJuZnRzIix7c3ltYm9sOnN5bWJvbH0pO2NvbnN0IGdyb3VwQnlDb3VudD1uZnQuZ3JvdXBCeS5sZW5ndGg7YXBpLmFzc2VydCgzPT09Z3JvdXBCeUNvdW50LCJORlQgY3JlYXRlZCB3aXRoIGRhdGEgcHJvcGVydGllcywgYnV0IGVycm9yIHNldHRpbmcgZ3JvdXBCeSIpJiZhcGkuZW1pdCgiY3JlYXRlTmZ0Iix7c3ltYm9sOnN5bWJvbH0pfX19fX07Y29uc3QgZ2VuZXJhdGVSYW5kb21JbnN0YW5jZT0oc2V0dGluZ3MsbmZ0U3ltYm9sLHRvLHR5cGVzKT0+e2NvbnN0IGZvaWw9ZG9SYW5kb21Sb2xsKHNldHRpbmdzLmZvaWxDaGFuY2UpO2xldCBjYW5kaWRhdGVUeXBlcz1bXSxyb2xsQ291bnQ9MDtmb3IoOzA9PT1jYW5kaWRhdGVUeXBlcy5sZW5ndGgmJnJvbGxDb3VudDxzZXR0aW5ncy5udW1Sb2xsczspe2NvbnN0IGNhdGVnb3J5PWRvUmFuZG9tUm9sbChzZXR0aW5ncy5jYXRlZ29yeUNoYW5jZSkscmFyaXR5PWRvUmFuZG9tUm9sbChzZXR0aW5ncy5yYXJpdHlDaGFuY2UpLHRlYW09ZG9SYW5kb21Sb2xsKHNldHRpbmdzLnRlYW1DaGFuY2UpO2NhbmRpZGF0ZVR5cGVzPXR5cGVzLmZpbHRlcigodD0+dC5jYXRlZ29yeT09PWNhdGVnb3J5JiZ0LnJhcml0eT09PXJhcml0eSYmdC50ZWFtPT09dGVhbSkpLHJvbGxDb3VudCs9MX1jb25zdCB0eXBlPWNhbmRpZGF0ZVR5cGVzLmxlbmd0aD4wP2NhbmRpZGF0ZVR5cGVzW01hdGguZmxvb3IoYXBpLnJhbmRvbSgpKmNhbmRpZGF0ZVR5cGVzLmxlbmd0aCldLnR5cGVJZDowO3JldHVybntzeW1ib2w6bmZ0U3ltYm9sLGZyb21UeXBlOiJjb250cmFjdCIsdG86dG8sZmVlU3ltYm9sOiJCRUUiLHByb3BlcnRpZXM6e2VkaXRpb246c2V0dGluZ3MuZWRpdGlvbixmb2lsOmZvaWwsdHlwZTp0eXBlfX19O2FjdGlvbnMub3Blbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7cGFja1N5bWJvbDpwYWNrU3ltYm9sLG5mdFN5bWJvbDpuZnRTeW1ib2wscGFja3M6cGFja3MsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChwYWNrU3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHBhY2tTeW1ib2wmJm5mdFN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBuZnRTeW1ib2wmJnZvaWQgMCE9PXBhY2tzJiYibnVtYmVyIj09dHlwZW9mIHBhY2tzJiZOdW1iZXIuaXNJbnRlZ2VyKHBhY2tzKSYmcGFja3M+PTEmJnBhY2tzPD05OTksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHNldHRpbmdzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYWNrcyIse3N5bWJvbDpwYWNrU3ltYm9sLG5mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1zZXR0aW5ncywicGFjayBkb2VzIG5vdCBvcGVuIHRoaXMgTkZUIikpe2NvbnN0IGhhc0Vub3VnaFBhY2tzPWF3YWl0IHZlcmlmeVRva2VuQmFsYW5jZShwYWNrcyxwYWNrU3ltYm9sLGFwaS5zZW5kZXIpO2lmKGFwaS5hc3NlcnQoaGFzRW5vdWdoUGFja3MsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHBhY2tzIikpe2NvbnN0IG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6bmZ0U3ltYm9sfSksdW5kZXJNYW5hZ2VtZW50PWF3YWl0IGFwaS5kYi5maW5kT25lKCJtYW5hZ2VkTmZ0cyIse25mdDpuZnRTeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1uZnQsIk5GVCBzeW1ib2wgbXVzdCBleGlzdCIpJiZhcGkuYXNzZXJ0KG51bGwhPT11bmRlck1hbmFnZW1lbnQsIk5GVCBub3QgdW5kZXIgbWFuYWdlbWVudCIpKXtjb25zdCBudW1OZnRzPXBhY2tzKnNldHRpbmdzLmNhcmRzUGVyUGFjaztpZighYXBpLmFzc2VydChudW1OZnRzPD02MCwidW5hYmxlIHRvIG9wZW4gdGhhdCBtYW55IHBhY2tzIGF0IG9uY2UiKSlyZXR1cm4hMTtjb25zdCBuZnRQYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJuZnQiLCJwYXJhbXMiLHt9KSx7bmZ0SXNzdWFuY2VGZWU6bmZ0SXNzdWFuY2VGZWV9PW5mdFBhcmFtcyxwcm9wZXJ0eUNvdW50PU9iamVjdC5rZXlzKG5mdC5wcm9wZXJ0aWVzKS5sZW5ndGgsdG90YWxJc3N1YW5jZUZlZT1hcGkuQmlnTnVtYmVyKG5mdElzc3VhbmNlRmVlLkJFRSkubXVsdGlwbGllZEJ5KHByb3BlcnR5Q291bnQrMSkubXVsdGlwbGllZEJ5KG51bU5mdHMpLGNhbkFmZm9yZElzc3VhbmNlPWFwaS5CaWdOdW1iZXIodW5kZXJNYW5hZ2VtZW50LmZlZVBvb2wpLmd0ZSh0b3RhbElzc3VhbmNlRmVlKTtpZihhcGkuYXNzZXJ0KGNhbkFmZm9yZElzc3VhbmNlLCJjb250cmFjdCBjYW5ub3QgYWZmb3JkIGlzc3VhbmNlIikpe2NvbnN0IHR5cGVzPWF3YWl0IGFwaS5kYi5maW5kKCJ0eXBlcyIse25mdDpuZnRTeW1ib2wsZWRpdGlvbjpzZXR0aW5ncy5lZGl0aW9ufSwwLDAsW3tpbmRleDoidHlwZUlkIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtpZighYXBpLmFzc2VydCh0eXBlcy5sZW5ndGg+PTEsIk5GVCBtdXN0IGhhdmUgYXQgbGVhc3QgMSBpbnN0YW5jZSB0eXBlIikpcmV0dXJuITE7bGV0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDpwYWNrU3ltYm9sLHF1YW50aXR5OnBhY2tzLnRvU3RyaW5nKCksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pO2lmKCFhcGkuYXNzZXJ0KGlzVG9rZW5UcmFuc2ZlclZlcmlmaWVkKHJlcyxhcGkuc2VuZGVyLCJudWxsIixwYWNrU3ltYm9sLHBhY2tzLnRvU3RyaW5nKCksInRyYW5zZmVyIiksInVuYWJsZSB0byB0cmFuc2ZlciBwYWNrIHRva2VucyIpKXJldHVybiExO2xldCBpc3N1ZUNvdW50ZXI9MCx2ZXJpZmllZENvdW50PTAsaW5zdGFuY2VzPVtdO2Zvcig7aXNzdWVDb3VudGVyPG51bU5mdHM7KWluc3RhbmNlcy5wdXNoKGdlbmVyYXRlUmFuZG9tSW5zdGFuY2Uoc2V0dGluZ3MsbmZ0U3ltYm9sLGFwaS5zZW5kZXIsdHlwZXMpKSxpc3N1ZUNvdW50ZXIrPTEsMTA9PT1pbnN0YW5jZXMubGVuZ3RoJiYocmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibmZ0IiwiaXNzdWVNdWx0aXBsZSIse2luc3RhbmNlczppbnN0YW5jZXMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pLHZlcmlmaWVkQ291bnQrPWNvdW50TmZ0SXNzdWFuY2UocmVzLCJwYWNrbWFuYWdlciIsYXBpLnNlbmRlcixuZnRTeW1ib2wpLGluc3RhbmNlcz1bXSk7cmV0dXJuIGluc3RhbmNlcy5sZW5ndGg+MCYmKHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm5mdCIsImlzc3VlTXVsdGlwbGUiLHtpbnN0YW5jZXM6aW5zdGFuY2VzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSx2ZXJpZmllZENvdW50Kz1jb3VudE5mdElzc3VhbmNlKHJlcywicGFja21hbmFnZXIiLGFwaS5zZW5kZXIsbmZ0U3ltYm9sKSksdW5kZXJNYW5hZ2VtZW50LmZlZVBvb2w9Y2FsY3VsYXRlQmFsYW5jZSh1bmRlck1hbmFnZW1lbnQuZmVlUG9vbCx0b3RhbElzc3VhbmNlRmVlLDgsITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1hbmFnZWROZnRzIix1bmRlck1hbmFnZW1lbnQpLCEhYXBpLmFzc2VydCh2ZXJpZmllZENvdW50PT09bnVtTmZ0cyxgdW5hYmxlIHRvIGlzc3VlIGFsbCBORlQgaW5zdGFuY2VzOyAke3ZlcmlmaWVkQ291bnR9IG9mICR7bnVtTmZ0c30gaXNzdWVkYCl9fX19fXJldHVybiExfTs="}}}
RE: beedollar Smart Contract