{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"mining","params":"","code":"Y29uc3QgTUFYX0RJR0lUUz0yMCxQUk9QRVJUWV9PUFM9e0FERDp7YWRkOih4LHkpPT5hcGkuQmlnTnVtYmVyKHgpLnBsdXMoeSkscmVtb3ZlOih4LHkpPT5hcGkuQmlnTnVtYmVyKHgpLm1pbnVzKHkpLGRlZmF1bHRWYWx1ZTowfSxNVUxUSVBMWTp7YWRkOih4LHkpPT5hcGkuQmlnTnVtYmVyKHgpLm11bHRpcGxpZWRCeSh5KS5kcCgyMCkscmVtb3ZlOih4LHkpPT5hcGkuQmlnTnVtYmVyKHgpLmRpdmlkZWRCeSh5KS5kcCgyMCksZGVmYXVsdFZhbHVlOjF9fSxNSU5JTkdfUE9XRVJfRklFTERfSU5ERVg9Il9taW5pbmdQb3dlciI7YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJtaW5pbmdQb3dlciIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoIm1pbmluZ1Bvd2VyIixbImlkIiwicG93ZXIiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwb29scyIsWyJpZCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInRva2VuUG9vbHMiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibmZ0VG9rZW5Qb29scyIsWyJzeW1ib2wiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBwYXJhbXM9e3Bvb2xDcmVhdGlvbkZlZToiMTAwMCIscG9vbFVwZGF0ZUZlZToiMzAwIixtYXhMb3R0ZXJpZXNQZXJCbG9jazoyMCxtYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrOjFlNCxwcm9jZXNzUXVlcnlMaW1pdDoxZTN9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7cGFyYW1zLnVwZGF0ZUluZGV4fHwoYXdhaXQgYXBpLmRiLmFkZEluZGV4ZXMoIm1pbmluZ1Bvd2VyIixbe25hbWU6ImJ5UG9vbElkQW5kQWNjb3VudCIsaW5kZXg6e2lkOjEsYWNjb3VudDoxfX1dKSxwYXJhbXMudXBkYXRlSW5kZXg9MSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcykpfX0sYWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0e3Bvb2xDcmVhdGlvbkZlZTpwb29sQ3JlYXRpb25GZWUscG9vbFVwZGF0ZUZlZTpwb29sVXBkYXRlRmVlLG1heExvdHRlcmllc1BlckJsb2NrOm1heExvdHRlcmllc1BlckJsb2NrLG1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s6bWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jayxwcm9jZXNzUXVlcnlMaW1pdDpwcm9jZXNzUXVlcnlMaW1pdH09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKHBvb2xDcmVhdGlvbkZlZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBwb29sQ3JlYXRpb25GZWUmJiFhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihwb29sQ3JlYXRpb25GZWUpLmd0ZSgwKSwiaW52YWxpZCBwb29sQ3JlYXRpb25GZWUiKSlyZXR1cm47cGFyYW1zLnBvb2xDcmVhdGlvbkZlZT1wb29sQ3JlYXRpb25GZWV9aWYocG9vbFVwZGF0ZUZlZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBwb29sVXBkYXRlRmVlJiYhYXBpLkJpZ051bWJlcihwb29sVXBkYXRlRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHBvb2xVcGRhdGVGZWUpLmd0ZSgwKSwiaW52YWxpZCBwb29sVXBkYXRlRmVlIikpcmV0dXJuO3BhcmFtcy5wb29sVXBkYXRlRmVlPXBvb2xVcGRhdGVGZWV9aWYobWF4TG90dGVyaWVzUGVyQmxvY2spe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobWF4TG90dGVyaWVzUGVyQmxvY2spJiZtYXhMb3R0ZXJpZXNQZXJCbG9jaz49MSwiaW52YWxpZCBtYXhMb3R0ZXJpZXNQZXJCbG9jayIpKXJldHVybjtwYXJhbXMubWF4TG90dGVyaWVzUGVyQmxvY2s9bWF4TG90dGVyaWVzUGVyQmxvY2t9aWYobWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jayl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrKSYmbWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jaz49MSwiaW52YWxpZCBtYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrIikpcmV0dXJuO3BhcmFtcy5tYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrPW1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2t9aWYocHJvY2Vzc1F1ZXJ5TGltaXQpe2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIocHJvY2Vzc1F1ZXJ5TGltaXQpJiZwcm9jZXNzUXVlcnlMaW1pdD49MSwiaW52YWxpZCBwcm9jZXNzUXVlcnlMaW1pdCIpKXJldHVybjtwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQ9cHJvY2Vzc1F1ZXJ5TGltaXR9YXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfTtjb25zdCBmaW5kQW5kUHJvY2Vzc0FsbD1hc3luYyhjb250cmFjdE5hbWUsdGFibGUscXVlcnksY2FsbGJhY2spPT57bGV0IG9mZnNldD0wLHJlc3VsdHM9W10sZG9uZT0hMTtmb3IoOyFkb25lOylpZihyZXN1bHRzPWF3YWl0IGFwaS5kYi5maW5kSW5UYWJsZShjb250cmFjdE5hbWUsdGFibGUscXVlcnksMWUzLG9mZnNldCkscmVzdWx0cyl7Zm9yKGxldCBpPTA7aTxyZXN1bHRzLmxlbmd0aDtpKz0xKWF3YWl0IGNhbGxiYWNrKHJlc3VsdHNbaV0pO3Jlc3VsdHMubGVuZ3RoPDFlMz9kb25lPSEwOm9mZnNldCs9MWUzfX07YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVOZnRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpe2lmKCFhcGkuYXNzZXJ0KHByb3BlcnRpZXMmJkFycmF5LmlzQXJyYXkocHJvcGVydGllcyksImludmFsaWQgbmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQocHJvcGVydGllcy5sZW5ndGg+MCYmcHJvcGVydGllcy5sZW5ndGg8PTQsIm5mdFRva2VuTWluZXIgcHJvcGVydGllcyBzaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0IikpcmV0dXJuITE7Zm9yKGxldCBpPTA7aTxwcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwcm9wPXByb3BlcnRpZXNbaV0scHJvcEtleXM9T2JqZWN0LmtleXMocHJvcCk7Zm9yKGxldCBqPTA7ajxwcm9wS2V5cy5sZW5ndGg7ais9MSl7Y29uc3QgcHJvcEtleT1wcm9wS2V5c1tqXTtpZigib3AiPT09cHJvcEtleSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBwcm9wLm9wJiZQUk9QRVJUWV9PUFNbcHJvcC5vcF0sIm5mdFRva2VuTWluZXIgcHJvcGVydGllcyBvcCBzaG91bGQgYmUgQUREIG9yIE1VTFRJUExZIikpcmV0dXJuITF9ZWxzZSBpZigibmFtZSI9PT1wcm9wS2V5KXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHByb3AubmFtZSYmcHJvcC5uYW1lLmxlbmd0aDw9MTYsIm5mdFRva2VuTWluZXIgcHJvcGVydGllcyBuYW1lIHNob3VsZCBiZSBhIHN0cmluZyBvZiBsZW5ndGggPD0gMTYiKSlyZXR1cm4hMX1lbHNle2lmKCJidXJuQ2hhbmdlIiE9PXByb3BLZXkpcmV0dXJuIGFwaS5hc3NlcnQoITEsIm5mdFRva2VuTWluZXIgcHJvcGVydGllcyBmaWVsZCBpbnZhbGlkIiksITE7e2lmKCFhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2YgcHJvcC5idXJuQ2hhbmdlJiYic3RyaW5nIj09dHlwZW9mIHByb3AuYnVybkNoYW5nZS5zeW1ib2wmJmFwaS5CaWdOdW1iZXIocHJvcC5idXJuQ2hhbmdlLnF1YW50aXR5KS5pc0Zpbml0ZSgpJiZhcGkuQmlnTnVtYmVyKHByb3AuYnVybkNoYW5nZS5xdWFudGl0eSkuaXNQb3NpdGl2ZSgpLCJuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMgYnVybkNoYW5nZSBpbnZhbGlkIikpcmV0dXJuITE7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cHJvcC5idXJuQ2hhbmdlLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KHRva2VuLCJuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMgYnVybkNoYW5nZSBzeW1ib2wgbm90IGZvdW5kIikpcmV0dXJuITF9fX19cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVOZnRUeXBlTWFwKHR5cGVNYXAscHJvcGVydGllcyl7aWYoIWFwaS5hc3NlcnQodHlwZU1hcCYmIm9iamVjdCI9PXR5cGVvZiB0eXBlTWFwLCJpbnZhbGlkIG5mdFRva2VuTWluZXIgdHlwZU1hcCIpKXJldHVybiExO2NvbnN0IHR5cGVzPU9iamVjdC5rZXlzKHR5cGVNYXApO2ZvcihsZXQgaj0wO2o8dHlwZXMubGVuZ3RoO2orPTEpe2NvbnN0IHR5cGVDb25maWc9dHlwZU1hcFt0eXBlc1tqXV07aWYoIWFwaS5hc3NlcnQoQXJyYXkuaXNBcnJheSh0eXBlQ29uZmlnKSYmdHlwZUNvbmZpZy5sZW5ndGg9PT1wcm9wZXJ0aWVzLmxlbmd0aCwibmZ0VG9rZW5NaW5lciB0eXBlQ29uZmlnIGxlbmd0aCBtaXNtYXRjaCIpKXJldHVybiExO2ZvcihsZXQgaz0wO2s8dHlwZUNvbmZpZy5sZW5ndGg7ays9MSl7Y29uc3QgdHlwZVByb3BlcnR5PWFwaS5CaWdOdW1iZXIodHlwZUNvbmZpZ1trXSk7aWYoIWFwaS5hc3NlcnQoIXR5cGVQcm9wZXJ0eS5pc05hTigpJiZ0eXBlUHJvcGVydHkuaXNGaW5pdGUoKSwibmZ0VG9rZW5NaW5lciB0eXBlQ29uZmlnIGludmFsaWQiKSlyZXR1cm4hMTtpZigiTVVMVElQTFkiPT09cHJvcGVydGllc1trXS5vcCYmIWFwaS5hc3NlcnQodHlwZVByb3BlcnR5Lmd0ZSguMDEpJiZ0eXBlUHJvcGVydHkubHRlKDEwMCksIm5mdFRva2VuTWluZXIgdHlwZUNvbmZpZyBNVUxUSVBMWSBwcm9wZXJ0eSBzaG91bGQgYmUgYmV0d2VlbiAwLjAxIGFuZCAxMDAiKSlyZXR1cm4hMX19cmV0dXJuITB9YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVUb2tlbk1pbmVycyh0b2tlbk1pbmVycyxuZnRUb2tlbk1pbmVyKXtpZighYXBpLmFzc2VydCh0b2tlbk1pbmVycyYmQXJyYXkuaXNBcnJheSh0b2tlbk1pbmVycyksInRva2VuTWluZXJzIGludmFsaWQiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydCh0b2tlbk1pbmVycy5sZW5ndGg+PTEmJnRva2VuTWluZXJzLmxlbmd0aDw9Mnx8bmZ0VG9rZW5NaW5lciYmMD09PXRva2VuTWluZXJzLmxlbmd0aCwib25seSAxIG9yIDIgdG9rZW5NaW5lcnMgYWxsb3dlZCIpKXJldHVybiExO2NvbnN0IHRva2VuTWluZXJTeW1ib2xzPW5ldyBTZXQ7Zm9yKGxldCBpPTA7aTx0b2tlbk1pbmVycy5sZW5ndGg7aSs9MSl7Y29uc3QgdG9rZW5NaW5lckNvbmZpZz10b2tlbk1pbmVyc1tpXTtpZighYXBpLmFzc2VydCh0b2tlbk1pbmVyQ29uZmlnJiZ0b2tlbk1pbmVyQ29uZmlnLnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiB0b2tlbk1pbmVyQ29uZmlnLnN5bWJvbCwidG9rZW5NaW5lcnMgaW52YWxpZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KCF0b2tlbk1pbmVyU3ltYm9scy5oYXModG9rZW5NaW5lckNvbmZpZy5zeW1ib2wpLCJ0b2tlbk1pbmVycyBjYW5ub3QgaGF2ZSBkdXBsaWNhdGUgc3ltYm9scyIpKXJldHVybiExO3Rva2VuTWluZXJTeW1ib2xzLmFkZCh0b2tlbk1pbmVyQ29uZmlnLnN5bWJvbCk7Y29uc3R7c3ltYm9sOnN5bWJvbH09dG9rZW5NaW5lckNvbmZpZyx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZighYXBpLmFzc2VydCh0b2tlbiYmdG9rZW4uc3Rha2luZ0VuYWJsZWQsInRva2VuTWluZXJzIG11c3QgaGF2ZSBzdGFraW5nIGVuYWJsZWQiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKHRva2VuTWluZXJDb25maWcubXVsdGlwbGllcikmJnRva2VuTWluZXJDb25maWcubXVsdGlwbGllcj49MSYmdG9rZW5NaW5lckNvbmZpZy5tdWx0aXBsaWVyPD0xMDAsInRva2VuTWluZXIgbXVsdGlwbGllciBtdXN0IGJlIGFuIGludGVnZXIgZnJvbSAxIHRvIDEwMCIpKXJldHVybiExfWlmKG5mdFRva2VuTWluZXIpe2lmKCFhcGkuYXNzZXJ0KG5mdFRva2VuTWluZXIuc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIG5mdFRva2VuTWluZXIuc3ltYm9sLCJuZnRUb2tlbk1pbmVyIGludmFsaWQiKSlyZXR1cm4hMTtjb25zdHtzeW1ib2w6c3ltYm9sLHR5cGVNYXA6dHlwZU1hcCxwcm9wZXJ0aWVzOnByb3BlcnRpZXMsdHlwZUZpZWxkOnR5cGVGaWVsZCxlcXVpcEZpZWxkOmVxdWlwRmllbGQsbWluaW5nUG93ZXJGaWVsZDptaW5pbmdQb3dlckZpZWxkfT1uZnRUb2tlbk1pbmVyLG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQobmZ0JiZuZnQuZGVsZWdhdGlvbkVuYWJsZWQsIm5mdFRva2VuTWluZXIgbXVzdCBoYXZlIGRlbGVnYXRpb24gZW5hYmxlZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHR5cGVGaWVsZCYmInN0cmluZyI9PXR5cGVvZiB0eXBlRmllbGQsInR5cGVGaWVsZCBtdXN0IGJlIGEgc3RyaW5nIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQobmZ0LnByb3BlcnRpZXNbdHlwZUZpZWxkXSYmInN0cmluZyI9PT1uZnQucHJvcGVydGllc1t0eXBlRmllbGRdLnR5cGUsIm5mdFRva2VuTWluZXIgbXVzdCBoYXZlIHN0cmluZyB0eXBlIHByb3BlcnR5IikpcmV0dXJuITE7aWYodm9pZCAwIT09ZXF1aXBGaWVsZCl7aWYoIWFwaS5hc3NlcnQoZXF1aXBGaWVsZCYmInN0cmluZyI9PXR5cGVvZiBlcXVpcEZpZWxkLCJlcXVpcEZpZWxkIG11c3QgYmUgYSBzdHJpbmciKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChuZnQucHJvcGVydGllc1tlcXVpcEZpZWxkXSYmInN0cmluZyI9PT1uZnQucHJvcGVydGllc1tlcXVpcEZpZWxkXS50eXBlLCJuZnRUb2tlbk1pbmVyIG11c3QgaGF2ZSBzdHJpbmcgZXF1aXAgcHJvcGVydHkiKSlyZXR1cm4hMX1pZih2b2lkIDAhPT1taW5pbmdQb3dlckZpZWxkKXtpZighYXBpLmFzc2VydChtaW5pbmdQb3dlckZpZWxkJiYic3RyaW5nIj09dHlwZW9mIG1pbmluZ1Bvd2VyRmllbGQsIm1pbmluZ1Bvd2VyRmllbGQgbXVzdCBiZSBhIHN0cmluZyIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KG5mdC5wcm9wZXJ0aWVzW21pbmluZ1Bvd2VyRmllbGRdJiYic3RyaW5nIj09PW5mdC5wcm9wZXJ0aWVzW21pbmluZ1Bvd2VyRmllbGRdLnR5cGUsIm5mdFRva2VuTWluZXIgbXVzdCBoYXZlIHN0cmluZyBtaW5pbmdQb3dlciBwcm9wZXJ0eSIpKXJldHVybiExfWlmKCFhd2FpdCB2YWxpZGF0ZU5mdFByb3BlcnRpZXMocHJvcGVydGllcykpcmV0dXJuITE7aWYoIXZhbGlkYXRlTmZ0VHlwZU1hcCh0eXBlTWFwLHByb3BlcnRpZXMpKXJldHVybiExfXJldHVybiEwfWFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG9rZW5NaW5lcnNDaGFuZ2Uob2xkVG9rZW5NaW5lcnMsdG9rZW5NaW5lcnMsb2xkTmZ0VG9rZW5NaW5lcixuZnRUb2tlbk1pbmVyKXtpZighYXBpLmFzc2VydCh0b2tlbk1pbmVycy5sZW5ndGg9PT1vbGRUb2tlbk1pbmVycy5sZW5ndGgsImNhbm5vdCBjaGFuZ2Ugd2hpY2ggdG9rZW5zIGFyZSBpbiB0b2tlbk1pbmVycyIpKXJldHVybiExO2xldCBjaGFuZ2VkPSExO2ZvcihsZXQgaT0wO2k8dG9rZW5NaW5lcnMubGVuZ3RoO2krPTEpe2NvbnN0IG9sZENvbmZpZz1vbGRUb2tlbk1pbmVyc1tpXSxuZXdDb25maWc9dG9rZW5NaW5lcnNbaV07aWYoIWFwaS5hc3NlcnQob2xkQ29uZmlnLnN5bWJvbD09PW5ld0NvbmZpZy5zeW1ib2wsImNhbm5vdCBjaGFuZ2Ugd2hpY2ggdG9rZW5zIGFyZSBpbiB0b2tlbk1pbmVycyIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIobmV3Q29uZmlnLm11bHRpcGxpZXIpJiZuZXdDb25maWcubXVsdGlwbGllcj49MSYmbmV3Q29uZmlnLm11bHRpcGxpZXI8PTEwMCwidG9rZW5NaW5lciBtdWx0aXBsaWVyIG11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDEgdG8gMTAwIikpcmV0dXJuITE7b2xkQ29uZmlnLm11bHRpcGxpZXIhPT1uZXdDb25maWcubXVsdGlwbGllciYmKGNoYW5nZWQ9ITApfWlmKCFhcGkuYXNzZXJ0KCEhb2xkTmZ0VG9rZW5NaW5lcj09ISFuZnRUb2tlbk1pbmVyLCJjYW5ub3QgY2hhbmdlIG5mdFRva2VuTWluZXIgdG9rZW4iKSlyZXR1cm4hMTtpZihuZnRUb2tlbk1pbmVyKXtpZighYXBpLmFzc2VydChvbGROZnRUb2tlbk1pbmVyLnN5bWJvbD09PW5mdFRva2VuTWluZXIuc3ltYm9sLCJjYW5ub3QgY2hhbmdlIG5mdFRva2VuTWluZXIgdG9rZW4iKSlyZXR1cm4hMTtjb25zdHt0eXBlTWFwOnR5cGVNYXAscHJvcGVydGllczpwcm9wZXJ0aWVzLHR5cGVGaWVsZDp0eXBlRmllbGQsZXF1aXBGaWVsZDplcXVpcEZpZWxkLG1pbmluZ1Bvd2VyRmllbGQ6bWluaW5nUG93ZXJGaWVsZH09bmZ0VG9rZW5NaW5lcjtpZighYXBpLmFzc2VydCh0eXBlRmllbGQmJiJzdHJpbmciPT10eXBlb2YgdHlwZUZpZWxkJiZ0eXBlRmllbGQ9PT1vbGROZnRUb2tlbk1pbmVyLnR5cGVGaWVsZCwiY2Fubm90IGNoYW5nZSBuZnRUb2tlbk1pbmVyIHR5cGVGaWVsZCIpKXJldHVybiExO2lmKG9sZE5mdFRva2VuTWluZXIuZXF1aXBGaWVsZCl7aWYoIWFwaS5hc3NlcnQoZXF1aXBGaWVsZCYmInN0cmluZyI9PXR5cGVvZiBlcXVpcEZpZWxkJiZlcXVpcEZpZWxkPT09b2xkTmZ0VG9rZW5NaW5lci5lcXVpcEZpZWxkLCJjYW5ub3QgY2hhbmdlIG5mdFRva2VuTWluZXIgZXF1aXBGaWVsZCIpKXJldHVybiExfWVsc2UgaWYoIWFwaS5hc3NlcnQoIWVxdWlwRmllbGQsImNhbm5vdCBjaGFuZ2UgbmZ0VG9rZW5NaW5lciBlcXVpcEZpZWxkIikpcmV0dXJuITE7aWYob2xkTmZ0VG9rZW5NaW5lci5taW5pbmdQb3dlckZpZWxkKXtpZighYXBpLmFzc2VydChtaW5pbmdQb3dlckZpZWxkJiYic3RyaW5nIj09dHlwZW9mIG1pbmluZ1Bvd2VyRmllbGQmJm1pbmluZ1Bvd2VyRmllbGQ9PT1vbGROZnRUb2tlbk1pbmVyLm1pbmluZ1Bvd2VyRmllbGQsImNhbm5vdCBjaGFuZ2UgbmZ0VG9rZW5NaW5lciBtaW5pbmdQb3dlckZpZWxkIikpcmV0dXJuITF9ZWxzZSBpZighYXBpLmFzc2VydCghbWluaW5nUG93ZXJGaWVsZCwiY2Fubm90IGNoYW5nZSBuZnRUb2tlbk1pbmVyIG1pbmluZ1Bvd2VyRmllbGQiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydCh0eXBlTWFwJiYib2JqZWN0Ij09dHlwZW9mIHR5cGVNYXAsImludmFsaWQgbmZ0VG9rZW5NaW5lciB0eXBlTWFwIikpcmV0dXJuITE7aWYoIWF3YWl0IHZhbGlkYXRlTmZ0UHJvcGVydGllcyhwcm9wZXJ0aWVzKSlyZXR1cm4hMTtpZihwcm9wZXJ0aWVzLmxlbmd0aCE9PW9sZE5mdFRva2VuTWluZXIucHJvcGVydGllcy5sZW5ndGgpY2hhbmdlZD0hMDtlbHNlIGZvcihsZXQgaT0wO2k8cHJvcGVydGllcy5sZW5ndGg7aSs9MSl7Y29uc3QgcHJvcD1wcm9wZXJ0aWVzW2ldLG9sZFByb3A9b2xkTmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzW2ldO3Byb3Aub3AhPT1vbGRQcm9wLm9wJiYoY2hhbmdlZD0hMCl9aWYoIXZhbGlkYXRlTmZ0VHlwZU1hcCh0eXBlTWFwLHByb3BlcnRpZXMpKXJldHVybiExO2NvbnN0IG9sZFR5cGVzPU9iamVjdC5rZXlzKG9sZE5mdFRva2VuTWluZXIudHlwZU1hcCk7Zm9yKGxldCBpPTA7aTxvbGRUeXBlcy5sZW5ndGg7aSs9MSl7Y29uc3Qgb2xkVHlwZT1vbGRUeXBlc1tpXSxvbGRUeXBlQ29uZmlnPW9sZE5mdFRva2VuTWluZXIudHlwZU1hcFtvbGRUeXBlXSx0eXBlQ29uZmlnPXR5cGVNYXBbb2xkVHlwZV07aWYoIWFwaS5hc3NlcnQodHlwZUNvbmZpZywidHlwZUNvbmZpZyB0eXBlcyBtdXN0IGJlIGEgc3VwZXJzZXQgb2Ygb2xkIHR5cGVDb25maWcgdHlwZXMiKSlyZXR1cm4hMTtmb3IobGV0IGo9MDtqPHR5cGVDb25maWcubGVuZ3RoO2orPTEpb2xkVHlwZUNvbmZpZ1tqXSE9PXR5cGVDb25maWdbal0mJihjaGFuZ2VkPSEwKX19cmV0dXJue2NoYW5nZWQ6Y2hhbmdlZH19ZnVuY3Rpb24gY29tcHV0ZU1pbmluZ1Bvd2VyKG1pbmluZ1Bvd2VyLHRva2VuTWluZXJzLG5mdFRva2VuTWluZXIpe2xldCBwb3dlcj1hcGkuQmlnTnVtYmVyKDApO2ZvcihsZXQgaT0wO2k8dG9rZW5NaW5lcnMubGVuZ3RoO2krPTEpbWluaW5nUG93ZXIuYmFsYW5jZXNbaV0mJihwb3dlcj1wb3dlci5wbHVzKGFwaS5CaWdOdW1iZXIobWluaW5nUG93ZXIuYmFsYW5jZXNbaV0pLm11bHRpcGxpZWRCeSh0b2tlbk1pbmVyc1tpXS5tdWx0aXBsaWVyKSkpO2lmKG5mdFRva2VuTWluZXImJm1pbmluZ1Bvd2VyLm5mdEJhbGFuY2VzKXtsZXQgbmZ0UG93ZXI9YXBpLkJpZ051bWJlcigxKTtmb3IobGV0IGk9MDtpPG5mdFRva2VuTWluZXIucHJvcGVydGllcy5sZW5ndGg7aSs9MSluZnRQb3dlcj1uZnRQb3dlci5tdWx0aXBsaWVkQnkobWluaW5nUG93ZXIubmZ0QmFsYW5jZXNbaV0pLmRwKDIwKTtuZnRQb3dlci5pc0Zpbml0ZSgpfHwobmZ0UG93ZXI9YXBpLkJpZ051bWJlcigwKSksbWluaW5nUG93ZXIubmZ0QmFsYW5jZXMuX21pbmluZ1Bvd2VyJiYobmZ0UG93ZXI9bmZ0UG93ZXIucGx1cyhtaW5pbmdQb3dlci5uZnRCYWxhbmNlcy5fbWluaW5nUG93ZXIpKSxwb3dlcj1wb3dlci5wbHVzKG5mdFBvd2VyKX1yZXR1cm4gcG93ZXIuaXNQb3NpdGl2ZSgpJiZwb3dlci5pc0Zpbml0ZSgpP3Bvd2VyOmFwaS5CaWdOdW1iZXIoMCl9YXN5bmMgZnVuY3Rpb24gdXBkYXRlTWluaW5nUG93ZXIocG9vbCx0b2tlbixhY2NvdW50LHN0YWtlZFF1YW50aXR5LGRlbGVnYXRlZFF1YW50aXR5LHVwZGF0ZVBvb2xUaW1lc3RhbXApe2xldCBtaW5pbmdQb3dlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWluaW5nUG93ZXIiLHtpZDpwb29sLmlkLGFjY291bnQ6YWNjb3VudH0pLHN0YWtlPWFwaS5CaWdOdW1iZXIoc3Rha2VkUXVhbnRpdHkpLG9sZE1pbmluZ1Bvd2VyPWFwaS5CaWdOdW1iZXIoMCk7c3Rha2U9c3Rha2UucGx1cyhkZWxlZ2F0ZWRRdWFudGl0eSk7Y29uc3QgdG9rZW5JbmRleD1wb29sLnRva2VuTWluZXJzLmZpbmRJbmRleCh0PT50LnN5bWJvbD09PXRva2VuKTtpZihtaW5pbmdQb3dlcil7aWYodXBkYXRlUG9vbFRpbWVzdGFtcCYmbWluaW5nUG93ZXIudXBkYXRlUG9vbFRpbWVzdGFtcCE9PXVwZGF0ZVBvb2xUaW1lc3RhbXApe2ZvcihsZXQgaT0wO2k8cG9vbC50b2tlbk1pbmVycy5sZW5ndGg7aSs9MSltaW5pbmdQb3dlci5iYWxhbmNlc1tpXT0iMCI7aWYobWluaW5nUG93ZXIubmZ0QmFsYW5jZXMpe21pbmluZ1Bvd2VyLm5mdEJhbGFuY2VzPXt9O2NvbnN0e25mdEJhbGFuY2VzOm5mdEJhbGFuY2VzfT1taW5pbmdQb3dlcjtmb3IobGV0IGo9MDtqPHBvb2wubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aDtqKz0xKXtjb25zdCBwcm9wZXJ0eT1wb29sLm5mdFRva2VuTWluZXIucHJvcGVydGllc1tqXSxvcEluZm89UFJPUEVSVFlfT1BTW3Byb3BlcnR5Lm9wXTtuZnRCYWxhbmNlc1tqXT1vcEluZm8uZGVmYXVsdFZhbHVlfX19ZWxzZSBtaW5pbmdQb3dlci5iYWxhbmNlc1t0b2tlbkluZGV4XXx8KG1pbmluZ1Bvd2VyLmJhbGFuY2VzW3Rva2VuSW5kZXhdPSIwIik7b2xkTWluaW5nUG93ZXI9Y29tcHV0ZU1pbmluZ1Bvd2VyKG1pbmluZ1Bvd2VyLHBvb2wudG9rZW5NaW5lcnMscG9vbC5uZnRUb2tlbk1pbmVyKSxtaW5pbmdQb3dlci5iYWxhbmNlc1t0b2tlbkluZGV4XT1zdGFrZS5wbHVzKG1pbmluZ1Bvd2VyLmJhbGFuY2VzW3Rva2VuSW5kZXhdKX1lbHNle2NvbnN0IGJhbGFuY2VzPXt9O2JhbGFuY2VzW3Rva2VuSW5kZXhdPXN0YWtlLG1pbmluZ1Bvd2VyPXtpZDpwb29sLmlkLGFjY291bnQ6YWNjb3VudCxiYWxhbmNlczpiYWxhbmNlcyxwb3dlcjp7JG51bWJlckRlY2ltYWw6IjAifX0sbWluaW5nUG93ZXI9YXdhaXQgYXBpLmRiLmluc2VydCgibWluaW5nUG93ZXIiLG1pbmluZ1Bvd2VyKX1jb25zdCBuZXdNaW5pbmdQb3dlcj1jb21wdXRlTWluaW5nUG93ZXIobWluaW5nUG93ZXIscG9vbC50b2tlbk1pbmVycyxwb29sLm5mdFRva2VuTWluZXIpO3JldHVybiBtaW5pbmdQb3dlci5wb3dlcj17JG51bWJlckRlY2ltYWw6bmV3TWluaW5nUG93ZXJ9LHVwZGF0ZVBvb2xUaW1lc3RhbXAmJihtaW5pbmdQb3dlci51cGRhdGVQb29sVGltZXN0YW1wPXVwZGF0ZVBvb2xUaW1lc3RhbXApLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1pbmluZ1Bvd2VyIixtaW5pbmdQb3dlciksbmV3TWluaW5nUG93ZXIubWludXMob2xkTWluaW5nUG93ZXIpfWZ1bmN0aW9uIGdldE5mdEFjY291bnQobmZ0KXtyZXR1cm4ibWluaW5nIj09PW5mdC5kZWxlZ2F0ZWRUby5hY2NvdW50JiYiYyI9PT1uZnQuZGVsZWdhdGVkVG8ub3duZWRCeT9uZnQuYWNjb3VudDoidSI9PT1uZnQuZGVsZWdhdGVkVG8ub3duZWRCeT9uZnQuZGVsZWdhdGVkVG8uYWNjb3VudDpudWxsfWZ1bmN0aW9uIHNhbml0aXplTmZ0TWluaW5nUG93ZXIobmZ0TWluaW5nUG93ZXIpe2xldCBleHRyYU5mdE1pbmluZ1Bvd2VyPWFwaS5CaWdOdW1iZXIobmZ0TWluaW5nUG93ZXIpO3JldHVybiFleHRyYU5mdE1pbmluZ1Bvd2VyLmlzTmFOKCkmJmV4dHJhTmZ0TWluaW5nUG93ZXIuaXNGaW5pdGUoKXx8KGV4dHJhTmZ0TWluaW5nUG93ZXI9YXBpLkJpZ051bWJlcigwKSksZXh0cmFOZnRNaW5pbmdQb3dlci5kcCgyMCl9YXN5bmMgZnVuY3Rpb24gdXBkYXRlTmZ0TWluaW5nUG93ZXIocG9vbCxuZnQsYWRkLHVwZGF0ZVBvb2xUaW1lc3RhbXAsYWNjb3VudE92ZXJyaWRlKXtjb25zdCBhY2NvdW50PWFjY291bnRPdmVycmlkZXx8Z2V0TmZ0QWNjb3VudChuZnQpO2lmKCFhY2NvdW50KXJldHVybiBhcGkuQmlnTnVtYmVyKDApO2xldCBtaW5pbmdQb3dlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWluaW5nUG93ZXIiLHtpZDpwb29sLmlkLGFjY291bnQ6YWNjb3VudH0pLG9sZE1pbmluZ1Bvd2VyPWFwaS5CaWdOdW1iZXIoMCksZXh0cmFOZnRNaW5pbmdQb3dlcj1hcGkuQmlnTnVtYmVyKDApO2NvbnN0e3R5cGVNYXA6dHlwZU1hcCxwcm9wZXJ0aWVzOnByb3BlcnRpZXMsdHlwZUZpZWxkOnR5cGVGaWVsZCxlcXVpcEZpZWxkOmVxdWlwRmllbGQsbWluaW5nUG93ZXJGaWVsZDptaW5pbmdQb3dlckZpZWxkfT1wb29sLm5mdFRva2VuTWluZXIsbmZ0VHlwZT1uZnQucHJvcGVydGllc1t0eXBlRmllbGRdLHR5cGVQcm9wZXJ0aWVzPXR5cGVNYXBbbmZ0VHlwZV07aWYobWluaW5nUG93ZXJGaWVsZCYmKGV4dHJhTmZ0TWluaW5nUG93ZXI9c2FuaXRpemVOZnRNaW5pbmdQb3dlcihuZnQucHJvcGVydGllc1ttaW5pbmdQb3dlckZpZWxkXSkpLG1pbmluZ1Bvd2VyKXttaW5pbmdQb3dlci5uZnRCYWxhbmNlc3x8KG1pbmluZ1Bvd2VyLm5mdEJhbGFuY2VzPXt9KSxtaW5pbmdQb3dlci5lcXVpcHBlZE5mdHN8fChtaW5pbmdQb3dlci5lcXVpcHBlZE5mdHM9e30pO2NvbnN0IG9sZEV4dHJhTmZ0TWluaW5nUG93ZXI9MDtsZXQgZXF1aXBwZWROZnQ9bWluaW5nUG93ZXIuZXF1aXBwZWROZnRzW25mdC5faWRdO2lmKCFlcXVpcHBlZE5mdCl7aWYoZXF1aXBGaWVsZCYmIWFkZClyZXR1cm4gYXBpLkJpZ051bWJlcigwKTtlcXVpcHBlZE5mdD17dHlwZTpuZnRUeXBlfSxtaW5pbmdQb3dlci5lcXVpcHBlZE5mdHNbbmZ0Ll9pZF09ZXF1aXBwZWROZnR9Y29uc3R7bmZ0QmFsYW5jZXM6bmZ0QmFsYW5jZXN9PW1pbmluZ1Bvd2VyO2ZvcihsZXQgaT0wO2k8cHJvcGVydGllcy5sZW5ndGg7aSs9MSl7Y29uc3QgcHJvcGVydHk9cHJvcGVydGllc1tpXSxvcEluZm89UFJPUEVSVFlfT1BTW3Byb3BlcnR5Lm9wXTtuZnRCYWxhbmNlc1tpXSYmbWluaW5nUG93ZXIudXBkYXRlUG9vbFRpbWVzdGFtcD09PXVwZGF0ZVBvb2xUaW1lc3RhbXB8fChuZnRCYWxhbmNlc1tpXT1vcEluZm8uZGVmYXVsdFZhbHVlKX1pZihtaW5pbmdQb3dlckZpZWxkJiZtaW5pbmdQb3dlci51cGRhdGVQb29sVGltZXN0YW1wIT09dXBkYXRlUG9vbFRpbWVzdGFtcCYmKG5mdEJhbGFuY2VzLl9taW5pbmdQb3dlcj1hcGkuQmlnTnVtYmVyKDApKSxvbGRNaW5pbmdQb3dlcj1jb21wdXRlTWluaW5nUG93ZXIobWluaW5nUG93ZXIscG9vbC50b2tlbk1pbmVycyxwb29sLm5mdFRva2VuTWluZXIpLHR5cGVQcm9wZXJ0aWVzKWZvcihsZXQgaT0wO2k8cHJvcGVydGllcy5sZW5ndGg7aSs9MSl7Y29uc3QgcHJvcGVydHk9cHJvcGVydGllc1tpXSxvcEluZm89UFJPUEVSVFlfT1BTW3Byb3BlcnR5Lm9wXTtuZnRCYWxhbmNlc1tpXT1hZGQ/b3BJbmZvLmFkZChuZnRCYWxhbmNlc1tpXSx0eXBlUHJvcGVydGllc1tpXSk6b3BJbmZvLnJlbW92ZShuZnRCYWxhbmNlc1tpXSx0eXBlUHJvcGVydGllc1tpXSl9bWluaW5nUG93ZXJGaWVsZCYmKG5mdEJhbGFuY2VzLl9taW5pbmdQb3dlcnx8KG5mdEJhbGFuY2VzLl9taW5pbmdQb3dlcj1hcGkuQmlnTnVtYmVyKDApKSxhZGQ/KGVxdWlwcGVkTmZ0LmV4dHJhTWluaW5nUG93ZXI9ZXh0cmFOZnRNaW5pbmdQb3dlcixuZnRCYWxhbmNlcy5fbWluaW5nUG93ZXI9YXBpLkJpZ051bWJlcihuZnRCYWxhbmNlcy5fbWluaW5nUG93ZXIpLm1pbnVzKG9sZEV4dHJhTmZ0TWluaW5nUG93ZXIpLnBsdXMoZXh0cmFOZnRNaW5pbmdQb3dlcikpOm5mdEJhbGFuY2VzLl9taW5pbmdQb3dlcj1hcGkuQmlnTnVtYmVyKG5mdEJhbGFuY2VzLl9taW5pbmdQb3dlcikubWludXMoZXh0cmFOZnRNaW5pbmdQb3dlcikpfWVsc2V7Y29uc3QgbmZ0QmFsYW5jZXM9e30sZXF1aXBwZWROZnQ9e3R5cGU6bmZ0VHlwZX07Zm9yKGxldCBpPTA7aTxwcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwcm9wZXJ0eT1wcm9wZXJ0aWVzW2ldLG9wSW5mbz1QUk9QRVJUWV9PUFNbcHJvcGVydHkub3BdO2lmKCFhZGQpcmV0dXJuIGFwaS5hc3NlcnQoITEsInVuZXhwZWN0ZWQgY29uZGl0aW9uOiByZW1vdmUgd2l0aG91dCBwcmV2aW91cyBtaW5pbmdQb3dlciIpLGFwaS5CaWdOdW1iZXIoMCk7bmZ0QmFsYW5jZXNbaV09dHlwZVByb3BlcnRpZXM/b3BJbmZvLmFkZChvcEluZm8uZGVmYXVsdFZhbHVlLHR5cGVQcm9wZXJ0aWVzW2ldKTpvcEluZm8uZGVmYXVsdFZhbHVlfW1pbmluZ1Bvd2VyRmllbGQmJihuZnRCYWxhbmNlcy5fbWluaW5nUG93ZXI9ZXh0cmFOZnRNaW5pbmdQb3dlcixlcXVpcHBlZE5mdC5leHRyYU1pbmluZ1Bvd2VyPWV4dHJhTmZ0TWluaW5nUG93ZXIpO2NvbnN0IGVxdWlwcGVkTmZ0cz17fTtlcXVpcHBlZE5mdHNbbmZ0Ll9pZF09ZXF1aXBwZWROZnQsbWluaW5nUG93ZXI9e2lkOnBvb2wuaWQsYWNjb3VudDphY2NvdW50LGJhbGFuY2VzOnt9LG5mdEJhbGFuY2VzOm5mdEJhbGFuY2VzLHBvd2VyOnskbnVtYmVyRGVjaW1hbDoiMCJ9LGVxdWlwcGVkTmZ0czplcXVpcHBlZE5mdHN9LG1pbmluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5pbnNlcnQoIm1pbmluZ1Bvd2VyIixtaW5pbmdQb3dlcil9Y29uc3QgbmV3TWluaW5nUG93ZXI9Y29tcHV0ZU1pbmluZ1Bvd2VyKG1pbmluZ1Bvd2VyLHBvb2wudG9rZW5NaW5lcnMscG9vbC5uZnRUb2tlbk1pbmVyKTtyZXR1cm4gbWluaW5nUG93ZXIucG93ZXI9eyRudW1iZXJEZWNpbWFsOm5ld01pbmluZ1Bvd2VyfSxtaW5pbmdQb3dlci51cGRhdGVQb29sVGltZXN0YW1wPXVwZGF0ZVBvb2xUaW1lc3RhbXAsYWRkfHxkZWxldGUgbWluaW5nUG93ZXIuZXF1aXBwZWROZnRzW25mdC5faWRdLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1pbmluZ1Bvd2VyIixtaW5pbmdQb3dlciksbmV3TWluaW5nUG93ZXIubWludXMob2xkTWluaW5nUG93ZXIpfWFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU5mdE1pbmluZ1Bvd2VyRnJvbVByb3BlcnR5VXBkYXRlKHBvb2wsbmZ0LGFjY291bnRPdmVycmlkZSl7Y29uc3QgYWNjb3VudD1hY2NvdW50T3ZlcnJpZGV8fGdldE5mdEFjY291bnQobmZ0KTtpZighYWNjb3VudClyZXR1cm4gYXBpLkJpZ051bWJlcigwKTtsZXQgbWluaW5nUG93ZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1pbmluZ1Bvd2VyIix7aWQ6cG9vbC5pZCxhY2NvdW50OmFjY291bnR9KSxvbGRNaW5pbmdQb3dlcj1hcGkuQmlnTnVtYmVyKDApLGV4dHJhTmZ0TWluaW5nUG93ZXI9YXBpLkJpZ051bWJlcigwKTtjb25zdHt0eXBlRmllbGQ6dHlwZUZpZWxkLGVxdWlwRmllbGQ6ZXF1aXBGaWVsZCxtaW5pbmdQb3dlckZpZWxkOm1pbmluZ1Bvd2VyRmllbGR9PXBvb2wubmZ0VG9rZW5NaW5lcixuZnRUeXBlPW5mdC5wcm9wZXJ0aWVzW3R5cGVGaWVsZF07aWYoIW1pbmluZ1Bvd2VyRmllbGQpcmV0dXJuIGFwaS5CaWdOdW1iZXIoMCk7aWYoZXh0cmFOZnRNaW5pbmdQb3dlcj1zYW5pdGl6ZU5mdE1pbmluZ1Bvd2VyKG5mdC5wcm9wZXJ0aWVzW21pbmluZ1Bvd2VyRmllbGRdKSxtaW5pbmdQb3dlcil7bWluaW5nUG93ZXIubmZ0QmFsYW5jZXN8fChtaW5pbmdQb3dlci5uZnRCYWxhbmNlcz17fSksbWluaW5nUG93ZXIuZXF1aXBwZWROZnRzfHwobWluaW5nUG93ZXIuZXF1aXBwZWROZnRzPXt9KTtsZXQgb2xkRXh0cmFOZnRNaW5pbmdQb3dlcj0wLGVxdWlwcGVkTmZ0PW1pbmluZ1Bvd2VyLmVxdWlwcGVkTmZ0c1tuZnQuX2lkXTtpZihlcXVpcHBlZE5mdClvbGRFeHRyYU5mdE1pbmluZ1Bvd2VyPWVxdWlwcGVkTmZ0LmV4dHJhTWluaW5nUG93ZXI7ZWxzZXtpZihlcXVpcEZpZWxkKXJldHVybiBhcGkuQmlnTnVtYmVyKDApO2VxdWlwcGVkTmZ0PXt0eXBlOm5mdFR5cGV9LG1pbmluZ1Bvd2VyLmVxdWlwcGVkTmZ0c1tuZnQuX2lkXT1lcXVpcHBlZE5mdH1jb25zdHtuZnRCYWxhbmNlczpuZnRCYWxhbmNlc309bWluaW5nUG93ZXI7b2xkTWluaW5nUG93ZXI9Y29tcHV0ZU1pbmluZ1Bvd2VyKG1pbmluZ1Bvd2VyLHBvb2wudG9rZW5NaW5lcnMscG9vbC5uZnRUb2tlbk1pbmVyKSxuZnRCYWxhbmNlcy5fbWluaW5nUG93ZXJ8fChuZnRCYWxhbmNlcy5fbWluaW5nUG93ZXI9YXBpLkJpZ051bWJlcigwKSksZXF1aXBwZWROZnQuZXh0cmFNaW5pbmdQb3dlcj1leHRyYU5mdE1pbmluZ1Bvd2VyLG5mdEJhbGFuY2VzLl9taW5pbmdQb3dlcj1hcGkuQmlnTnVtYmVyKG5mdEJhbGFuY2VzLl9taW5pbmdQb3dlcikubWludXMob2xkRXh0cmFOZnRNaW5pbmdQb3dlcikucGx1cyhleHRyYU5mdE1pbmluZ1Bvd2VyKX1lbHNle2NvbnN0IG5mdEJhbGFuY2VzPXt9LGVxdWlwcGVkTmZ0PXt0eXBlOm5mdFR5cGV9O25mdEJhbGFuY2VzLl9taW5pbmdQb3dlcj1leHRyYU5mdE1pbmluZ1Bvd2VyLGVxdWlwcGVkTmZ0LmV4dHJhTWluaW5nUG93ZXI9ZXh0cmFOZnRNaW5pbmdQb3dlcjtjb25zdCBlcXVpcHBlZE5mdHM9e307ZXF1aXBwZWROZnRzW25mdC5faWRdPWVxdWlwcGVkTmZ0LG1pbmluZ1Bvd2VyPXtpZDpwb29sLmlkLGFjY291bnQ6YWNjb3VudCxiYWxhbmNlczp7fSxuZnRCYWxhbmNlczpuZnRCYWxhbmNlcyxwb3dlcjp7JG51bWJlckRlY2ltYWw6IjAifSxlcXVpcHBlZE5mdHM6ZXF1aXBwZWROZnRzfSxtaW5pbmdQb3dlcj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJtaW5pbmdQb3dlciIsbWluaW5nUG93ZXIpfWNvbnN0IG5ld01pbmluZ1Bvd2VyPWNvbXB1dGVNaW5pbmdQb3dlcihtaW5pbmdQb3dlcixwb29sLnRva2VuTWluZXJzLHBvb2wubmZ0VG9rZW5NaW5lcik7cmV0dXJuIG1pbmluZ1Bvd2VyLnBvd2VyPXskbnVtYmVyRGVjaW1hbDpuZXdNaW5pbmdQb3dlcn0sYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWluaW5nUG93ZXIiLG1pbmluZ1Bvd2VyKSxuZXdNaW5pbmdQb3dlci5taW51cyhvbGRNaW5pbmdQb3dlcil9YXN5bmMgZnVuY3Rpb24gaW5pdE1pbmluZ1Bvd2VyKHBvb2wsdXBkYXRlUG9vbFRpbWVzdGFtcCxwYXJhbXMsdG9rZW4sbGFzdElkKXtsZXQgYmFsYW5jZXMsYWRqdXN0ZWRQb3dlcj1hcGkuQmlnTnVtYmVyKDApLG9mZnNldD0wLGxhc3RJZFByb2Nlc3NlZD1sYXN0SWQsY29tcGxldGU9ITE7Zm9yKDshY29tcGxldGUmJm9mZnNldDxwYXJhbXMubWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jazspe2JhbGFuY2VzPWF3YWl0IGFwaS5kYi5maW5kSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHtzeW1ib2w6dG9rZW4sX2lkOnskZ3Q6bGFzdElkfX0scGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0LG9mZnNldCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxiYWxhbmNlcy5sZW5ndGg7aSs9MSl7Y29uc3QgYmFsYW5jZT1iYWxhbmNlc1tpXTtpZihhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KDApfHxhcGkuQmlnTnVtYmVyKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikuZ3QoMCkpe2NvbnN0IGFkanVzdGVkPWF3YWl0IHVwZGF0ZU1pbmluZ1Bvd2VyKHBvb2wsdG9rZW4sYmFsYW5jZS5hY2NvdW50LGJhbGFuY2Uuc3Rha2UsYmFsYW5jZS5kZWxlZ2F0aW9uc0luLHVwZGF0ZVBvb2xUaW1lc3RhbXApO2FkanVzdGVkUG93ZXI9YWRqdXN0ZWRQb3dlci5wbHVzKGFkanVzdGVkKX1sYXN0SWRQcm9jZXNzZWQ9YmFsYW5jZS5faWR9YmFsYW5jZXMubGVuZ3RoPHBhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdCYmKGNvbXBsZXRlPSEwKSxvZmZzZXQrPXBhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdH1yZXR1cm57YWRqdXN0ZWRQb3dlcjphZGp1c3RlZFBvd2VyLG5leHRJZDpsYXN0SWRQcm9jZXNzZWQsY29tcGxldGU6Y29tcGxldGV9fWFzeW5jIGZ1bmN0aW9uIGluaXROZnRNaW5pbmdQb3dlcihwb29sLHVwZGF0ZVBvb2xUaW1lc3RhbXAscGFyYW1zLG5mdFRva2VuTWluZXIsbGFzdElkKXtsZXQgbmZ0cyxhZGp1c3RlZFBvd2VyPWFwaS5CaWdOdW1iZXIoMCksb2Zmc2V0PTAsbGFzdElkUHJvY2Vzc2VkPWxhc3RJZCxjb21wbGV0ZT0hMTtjb25zdHtzeW1ib2w6c3ltYm9sLGVxdWlwRmllbGQ6ZXF1aXBGaWVsZH09bmZ0VG9rZW5NaW5lcjtmb3IoOyFjb21wbGV0ZSYmb2Zmc2V0PHBhcmFtcy5tYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrOyl7Y29uc3QgbmZ0UXVlcnk9e19pZDp7JGd0Omxhc3RJZH19O2VxdWlwRmllbGQ/bmZ0UXVlcnlbInByb3BlcnRpZXMuIitlcXVpcEZpZWxkXT17JGV4aXN0czohMCwkbmU6IiJ9OihuZnRRdWVyeS5kZWxlZ2F0ZWRUbz17JG5lOm51bGx9LG5mdFF1ZXJ5WyJkZWxlZ2F0ZWRUby51bmRlbGVnYXRlQXQiXT17JGVxOm51bGx9KSxuZnRzPWF3YWl0IGFwaS5kYi5maW5kSW5UYWJsZSgibmZ0IixzeW1ib2wrImluc3RhbmNlcyIsbmZ0UXVlcnkscGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0LG9mZnNldCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxuZnRzLmxlbmd0aDtpKz0xKXtjb25zdCBuZnQ9bmZ0c1tpXTtpZighZXF1aXBGaWVsZHx8bmZ0LnByb3BlcnRpZXNbZXF1aXBGaWVsZF0pe2NvbnN0IGFkanVzdGVkPWF3YWl0IHVwZGF0ZU5mdE1pbmluZ1Bvd2VyKHBvb2wsbmZ0LCEwLHVwZGF0ZVBvb2xUaW1lc3RhbXAsZXF1aXBGaWVsZD9uZnQucHJvcGVydGllc1tlcXVpcEZpZWxkXTpudWxsKTthZGp1c3RlZFBvd2VyPWFkanVzdGVkUG93ZXIucGx1cyhhZGp1c3RlZCl9bGFzdElkUHJvY2Vzc2VkPW5mdC5faWR9bmZ0cy5sZW5ndGg8cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0JiYoY29tcGxldGU9ITApLG9mZnNldCs9cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0fXJldHVybnthZGp1c3RlZFBvd2VyOmFkanVzdGVkUG93ZXIsbmV4dElkOmxhc3RJZFByb2Nlc3NlZCxjb21wbGV0ZTpjb21wbGV0ZX19YXN5bmMgZnVuY3Rpb24gcmVzdW1lUG93ZXJVcGRhdGUocG9vbCxwYXJhbXMpe2xldHtpblByb2dyZXNzOmluUHJvZ3Jlc3MsdG9rZW5JbmRleDp0b2tlbkluZGV4LG5mdFRva2VuSW5kZXg6bmZ0VG9rZW5JbmRleCxsYXN0SWQ6bGFzdElkfT1wb29sLnVwZGF0aW5nO2NvbnN0e3VwZGF0ZVBvb2xUaW1lc3RhbXA6dXBkYXRlUG9vbFRpbWVzdGFtcH09cG9vbC51cGRhdGluZztpZighaW5Qcm9ncmVzcylyZXR1cm47aWYodG9rZW5JbmRleDxwb29sLnRva2VuTWluZXJzLmxlbmd0aCl7Y29uc3QgdG9rZW5Db25maWc9cG9vbC50b2tlbk1pbmVyc1t0b2tlbkluZGV4XSx7YWRqdXN0ZWRQb3dlcjphZGp1c3RlZFBvd2VyLG5leHRJZDpuZXh0SWQsY29tcGxldGU6Y29tcGxldGV9PWF3YWl0IGluaXRNaW5pbmdQb3dlcihwb29sLHVwZGF0ZVBvb2xUaW1lc3RhbXAscGFyYW1zLHRva2VuQ29uZmlnLnN5bWJvbCxsYXN0SWQpO3Bvb2wudG90YWxQb3dlcj1hcGkuQmlnTnVtYmVyKHBvb2wudG90YWxQb3dlcikucGx1cyhhZGp1c3RlZFBvd2VyKSxjb21wbGV0ZT8obGFzdElkPTAsdG9rZW5JbmRleCs9MSk6bGFzdElkPW5leHRJZH1lbHNlIGlmKHBvb2wubmZ0VG9rZW5NaW5lciYmbmZ0VG9rZW5JbmRleDwxKXtjb25zdHtuZnRUb2tlbk1pbmVyOm5mdFRva2VuTWluZXJ9PXBvb2wse2FkanVzdGVkUG93ZXI6YWRqdXN0ZWRQb3dlcixuZXh0SWQ6bmV4dElkLGNvbXBsZXRlOmNvbXBsZXRlfT1hd2FpdCBpbml0TmZ0TWluaW5nUG93ZXIocG9vbCx1cGRhdGVQb29sVGltZXN0YW1wLHBhcmFtcyxuZnRUb2tlbk1pbmVyLGxhc3RJZCk7cG9vbC50b3RhbFBvd2VyPWFwaS5CaWdOdW1iZXIocG9vbC50b3RhbFBvd2VyKS5wbHVzKGFkanVzdGVkUG93ZXIpLGNvbXBsZXRlPyhsYXN0SWQ9MCxuZnRUb2tlbkluZGV4Kz0xKTpsYXN0SWQ9bmV4dElkfXRva2VuSW5kZXghPT1wb29sLnRva2VuTWluZXJzLmxlbmd0aHx8cG9vbC5uZnRUb2tlbk1pbmVyJiYxIT09bmZ0VG9rZW5JbmRleHx8KGluUHJvZ3Jlc3M9ITEsdG9rZW5JbmRleD0wLG5mdFRva2VuSW5kZXg9MCk7Y29uc3R7dXBkYXRpbmc6dXBkYXRpbmd9PXBvb2w7dXBkYXRpbmcuaW5Qcm9ncmVzcz1pblByb2dyZXNzLHVwZGF0aW5nLnRva2VuSW5kZXg9dG9rZW5JbmRleCx1cGRhdGluZy5uZnRUb2tlbkluZGV4PW5mdFRva2VuSW5kZXgsdXBkYXRpbmcubGFzdElkPWxhc3RJZCxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCl9ZnVuY3Rpb24gZ2VuZXJhdGVQb29sSWQocG9vbCl7Y29uc3QgdG9rZW5NaW5lclN0cmluZz1wb29sLmV4dGVybmFsQ29udHJhY3QmJnBvb2wuZXh0ZXJuYWxNaW5lcnM/IkVYVC0iK3Bvb2wuZXh0ZXJuYWxNaW5lcnMucmVwbGFjZSgiOiIsIiIpOnBvb2wudG9rZW5NaW5lcnMubWFwKHQ9PnQuc3ltYm9sLnJlcGxhY2UoIi4iLCItIikpLnNvcnQoKS5qb2luKCIsIiksbmZ0VG9rZW5NaW5lclN0cmluZz1wb29sLm5mdFRva2VuTWluZXI/IjoiK3Bvb2wubmZ0VG9rZW5NaW5lci5zeW1ib2w6IiI7cmV0dXJuYCR7cG9vbC5taW5lZFRva2VuLnJlcGxhY2UoIi4iLCItIil9OiR7dG9rZW5NaW5lclN0cmluZ30ke25mdFRva2VuTWluZXJTdHJpbmd9YH1hc3luYyBmdW5jdGlvbiBydW5Mb3R0ZXJ5KHBvb2wscGFyYW1zKXtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSx3aW5uaW5nTnVtYmVycz1bXSxtaW5lZFRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnBvb2wubWluZWRUb2tlbn0pLHdpbm5pbmdBbW91bnQ9YXBpLkJpZ051bWJlcihwb29sLmxvdHRlcnlBbW91bnQpLmRpdmlkZWRCeShwb29sLmxvdHRlcnlXaW5uZXJzKS50b0ZpeGVkKG1pbmVkVG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCk7aWYocG9vbC5leHRlcm5hbENvbnRyYWN0KXtpZigibWFya2V0cG9vbHMiPT09cG9vbC5leHRlcm5hbENvbnRyYWN0KXtjb25zdCBtYXJrZXRwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibWFya2V0cG9vbHMiLCJwb29scyIse3Rva2VuUGFpcjpwb29sLmV4dGVybmFsTWluZXJzfSk7Zm9yKGxldCBpPTA7aTxwb29sLmxvdHRlcnlXaW5uZXJzO2krPTEpd2lubmluZ051bWJlcnNbaV09YXBpLkJpZ051bWJlcihtYXJrZXRwb29sLnRvdGFsU2hhcmVzKS5tdWx0aXBsaWVkQnkoYXBpLnJhbmRvbSgpKX19ZWxzZSBmb3IobGV0IGk9MDtpPHBvb2wubG90dGVyeVdpbm5lcnM7aSs9MSl3aW5uaW5nTnVtYmVyc1tpXT1hcGkuQmlnTnVtYmVyKHBvb2wudG90YWxQb3dlcikubXVsdGlwbGllZEJ5KGFwaS5yYW5kb20oKSk7bGV0IG1pbmluZ1Bvd2VycyxvZmZzZXQ9MCxjdW11bGF0aXZlUG93ZXI9YXBpLkJpZ051bWJlcigwKSxuZXh0Q3VtdWxhdGl2ZVBvd2VyPWFwaS5CaWdOdW1iZXIoMCksY29tcHV0ZWRXaW5uZXJzPTA7Y29uc3Qgd2lubmVycz1bXTtmb3IoO2NvbXB1dGVkV2lubmVyczxwb29sLmxvdHRlcnlXaW5uZXJzOyl7aWYocG9vbC5leHRlcm5hbENvbnRyYWN0KXtpZigibWFya2V0cG9vbHMiPT09cG9vbC5leHRlcm5hbENvbnRyYWN0KXttaW5pbmdQb3dlcnM9YXdhaXQgYXBpLmRiLmZpbmRJblRhYmxlKCJtYXJrZXRwb29scyIsImxpcXVpZGl0eVBvc2l0aW9ucyIse3Rva2VuUGFpcjpwb29sLmV4dGVybmFsTWluZXJzfSxwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQsb2Zmc2V0LFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGk9MDtpPG1pbmluZ1Bvd2Vycy5sZW5ndGg7aSs9MSltaW5pbmdQb3dlcnNbaV0ucG93ZXI9eyRudW1iZXJEZWNpbWFsOmFwaS5CaWdOdW1iZXIobWluaW5nUG93ZXJzW2ldLnNoYXJlcykudG9GaXhlZChtaW5lZFRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApfX19ZWxzZSBtaW5pbmdQb3dlcnM9YXdhaXQgYXBpLmRiLmZpbmQoIm1pbmluZ1Bvd2VyIix7aWQ6cG9vbC5pZCxwb3dlcjp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0scGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0LG9mZnNldCxbe2luZGV4OiJwb3dlciIsZGVzY2VuZGluZzohMH0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxtaW5pbmdQb3dlcnMubGVuZ3RoO2krPTEpe2NvbnN0IG1pbmluZ1Bvd2VyPW1pbmluZ1Bvd2Vyc1tpXTtuZXh0Q3VtdWxhdGl2ZVBvd2VyPWN1bXVsYXRpdmVQb3dlci5wbHVzKG1pbmluZ1Bvd2VyLnBvd2VyLiRudW1iZXJEZWNpbWFsKTtmb3IobGV0IGo9MDtqPHBvb2wubG90dGVyeVdpbm5lcnM7ais9MSl7Y29uc3QgY3VycmVudFdpbm5pbmdOdW1iZXI9d2lubmluZ051bWJlcnNbal07Y3VtdWxhdGl2ZVBvd2VyLmx0ZShjdXJyZW50V2lubmluZ051bWJlcikmJm5leHRDdW11bGF0aXZlUG93ZXIuZ3QoY3VycmVudFdpbm5pbmdOdW1iZXIpJiYoY29tcHV0ZWRXaW5uZXJzKz0xLHdpbm5lcnMucHVzaCh7d2lubmVyOm1pbmluZ1Bvd2VyLmFjY291bnQsd2lubmluZ051bWJlcjpjdXJyZW50V2lubmluZ051bWJlcix3aW5uaW5nQW1vdW50Ondpbm5pbmdBbW91bnR9KSl9Y3VtdWxhdGl2ZVBvd2VyPW5leHRDdW11bGF0aXZlUG93ZXJ9aWYoY29tcHV0ZWRXaW5uZXJzPT09cG9vbC5sb3R0ZXJ5V2lubmVyc3x8bWluaW5nUG93ZXJzLmxlbmd0aDxwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQpYnJlYWs7b2Zmc2V0Kz1wYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXR9YXBpLmVtaXQoIm1pbmluZ0xvdHRlcnkiLHtwb29sSWQ6cG9vbC5pZCx3aW5uZXJzOndpbm5lcnN9KTtmb3IobGV0IGk9MDtpPHdpbm5lcnMubGVuZ3RoO2krPTEpe2NvbnN0IHdpbm5lcj13aW5uZXJzW2ldO2F3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwiaXNzdWUiLHt0bzp3aW5uZXIud2lubmVyLHN5bWJvbDptaW5lZFRva2VuLnN5bWJvbCxxdWFudGl0eTp3aW5uaW5nQW1vdW50fSl9cG9vbC5uZXh0TG90dGVyeVRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnBsdXMoMzYwMCpwb29sLmxvdHRlcnlJbnRlcnZhbEhvdXJzKjFlMykudG9OdW1iZXIoKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCl9YWN0aW9ucy5zZXRBY3RpdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkLGFjdGl2ZTphY3RpdmUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IHBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7aWQ6aWR9KTtpZighYXBpLmFzc2VydChwb29sLCJwb29sIGlkIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCBtaW5lZFRva2VuT2JqZWN0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnBvb2wubWluZWRUb2tlbn0pO2lmKCFhcGkuYXNzZXJ0KG1pbmVkVG9rZW5PYmplY3QmJihtaW5lZFRva2VuT2JqZWN0Lmlzc3Vlcj09PWFwaS5zZW5kZXJ8fCJCRUUiPT09bWluZWRUb2tlbk9iamVjdC5zeW1ib2wmJmFwaS5zZW5kZXI9PT1hcGkub3duZXIpLCJtdXN0IGJlIGlzc3VlciBvZiBtaW5lZFRva2VuIikpcmV0dXJuO2NvbnN0e25mdFRva2VuTWluZXI6bmZ0VG9rZW5NaW5lcn09cG9vbDtpZihuZnRUb2tlbk1pbmVyKXtjb25zdCBuZnRUb2tlblBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm5mdFRva2VuUG9vbHMiLHtzeW1ib2w6bmZ0VG9rZW5NaW5lci5zeW1ib2wsaWQ6cG9vbC5pZH0pO2lmKGFjdGl2ZSYmIW5mdFRva2VuUG9vbCl7Y29uc3Qgb3RoZXJOZnRUb2tlblBvb2xzPWF3YWl0IGFwaS5kYi5maW5kKCJuZnRUb2tlblBvb2xzIix7c3ltYm9sOm5mdFRva2VuTWluZXIuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQoIW90aGVyTmZ0VG9rZW5Qb29sc3x8b3RoZXJOZnRUb2tlblBvb2xzLmxlbmd0aDwyLCJjYW4gaGF2ZSBhdCBtb3N0IDIgYWN0aXZlIG5mdCB0b2tlbiBwb29scyBmb3IgbmZ0IHRva2VuIikpcmV0dXJuO2F3YWl0IGFwaS5kYi5pbnNlcnQoIm5mdFRva2VuUG9vbHMiLHtzeW1ib2w6bmZ0VG9rZW5NaW5lci5zeW1ib2wsaWQ6cG9vbC5pZH0pfWVsc2UhYWN0aXZlJiZuZnRUb2tlblBvb2wmJmF3YWl0IGFwaS5kYi5yZW1vdmUoIm5mdFRva2VuUG9vbHMiLG5mdFRva2VuUG9vbCl9cG9vbC5hY3RpdmU9ISFhY3RpdmU7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIik7cG9vbC5uZXh0TG90dGVyeVRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnBsdXMoMzYwMCpwb29sLmxvdHRlcnlJbnRlcnZhbEhvdXJzKjFlMykudG9OdW1iZXIoKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCl9LGFjdGlvbnMudXBkYXRlUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7aWQ6aWQsbG90dGVyeVdpbm5lcnM6bG90dGVyeVdpbm5lcnMsbG90dGVyeUludGVydmFsSG91cnM6bG90dGVyeUludGVydmFsSG91cnMsbG90dGVyeUFtb3VudDpsb3R0ZXJ5QW1vdW50LHRva2VuTWluZXJzOnRva2VuTWluZXJzLG5mdFRva2VuTWluZXI6bmZ0VG9rZW5NaW5lcixjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtwb29sVXBkYXRlRmVlOnBvb2xVcGRhdGVGZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZD0hKCFhcGkuQmlnTnVtYmVyKHBvb2xVcGRhdGVGZWUpLmx0ZSgwKSYmYXBpLnNlbmRlciE9PWFwaS5vd25lcil8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUocG9vbFVwZGF0ZUZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHVwZGF0ZSBmZWUiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoaWQmJiJzdHJpbmciPT10eXBlb2YgaWQmJmxvdHRlcnlBbW91bnQmJiJzdHJpbmciPT10eXBlb2YgbG90dGVyeUFtb3VudCYmIWFwaS5CaWdOdW1iZXIobG90dGVyeUFtb3VudCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihsb3R0ZXJ5QW1vdW50KS5ndCgwKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGxvdHRlcnlXaW5uZXJzKSYmbG90dGVyeVdpbm5lcnM+PTEmJmxvdHRlcnlXaW5uZXJzPD0yMCwiaW52YWxpZCBsb3R0ZXJ5V2lubmVyczogaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDIwIG9ubHkiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGxvdHRlcnlJbnRlcnZhbEhvdXJzKSYmbG90dGVyeUludGVydmFsSG91cnM+PTEmJmxvdHRlcnlJbnRlcnZhbEhvdXJzPD03MjAsImludmFsaWQgbG90dGVyeUludGVydmFsSG91cnM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCA3MjAgb25seSIpKXtjb25zdCBwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOmlkfSk7aWYoYXBpLmFzc2VydChwb29sLCJwb29sIGlkIG5vdCBmb3VuZCIpKXtjb25zdCBtaW5lZFRva2VuT2JqZWN0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnBvb2wubWluZWRUb2tlbn0pO2lmKGFwaS5hc3NlcnQobWluZWRUb2tlbk9iamVjdCYmKG1pbmVkVG9rZW5PYmplY3QuaXNzdWVyPT09YXBpLnNlbmRlcnx8IkJFRSI9PT1taW5lZFRva2VuT2JqZWN0LnN5bWJvbCYmYXBpLnNlbmRlcj09PWFwaS5vd25lciksIm11c3QgYmUgaXNzdWVyIG9mIG1pbmVkVG9rZW4iKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGxvdHRlcnlBbW91bnQpLmRwKCk8PW1pbmVkVG9rZW5PYmplY3QucHJlY2lzaW9uLCJtaW5lZFRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgbG90dGVyeUFtb3VudCIpKXtpZihjYWxsaW5nQ29udHJhY3RJbmZvKXBvb2wubG90dGVyeVdpbm5lcnM9bG90dGVyeVdpbm5lcnMscG9vbC5sb3R0ZXJ5SW50ZXJ2YWxIb3Vycz1sb3R0ZXJ5SW50ZXJ2YWxIb3Vycyxwb29sLmxvdHRlcnlBbW91bnQ9bG90dGVyeUFtb3VudDtlbHNle2NvbnN0IHZhbGlkTWluZXJzQ2hhbmdlPWF3YWl0IHZhbGlkYXRlVG9rZW5NaW5lcnNDaGFuZ2UocG9vbC50b2tlbk1pbmVycyx0b2tlbk1pbmVycyxwb29sLm5mdFRva2VuTWluZXIsbmZ0VG9rZW5NaW5lcik7aWYodmFsaWRNaW5lcnNDaGFuZ2Upe3Bvb2wubG90dGVyeVdpbm5lcnM9bG90dGVyeVdpbm5lcnMscG9vbC5sb3R0ZXJ5SW50ZXJ2YWxIb3Vycz1sb3R0ZXJ5SW50ZXJ2YWxIb3Vycyxwb29sLmxvdHRlcnlBbW91bnQ9bG90dGVyeUFtb3VudCxwb29sLnRva2VuTWluZXJzPXRva2VuTWluZXJzLHBvb2wubmZ0VG9rZW5NaW5lcj1uZnRUb2tlbk1pbmVyO2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpO3ZhbGlkTWluZXJzQ2hhbmdlLmNoYW5nZWQmJihwb29sLnVwZGF0aW5nLnVwZGF0ZVBvb2xUaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS50b051bWJlcigpLHBvb2wudXBkYXRpbmcuaW5Qcm9ncmVzcz0hMCxwb29sLnVwZGF0aW5nLnRva2VuSW5kZXg9MCxwb29sLnVwZGF0aW5nLm5mdFRva2VuSW5kZXg9MCxwb29sLnVwZGF0aW5nLmxhc3RJZD0wLHBvb2wudG90YWxQb3dlcj0iMCIpLHBvb2wubmV4dExvdHRlcnlUaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5wbHVzKDM2MDAqbG90dGVyeUludGVydmFsSG91cnMqMWUzKS50b051bWJlcigpfX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCksYXBpLnNlbmRlciE9PWFwaS5vd25lciYmYXBpLkJpZ051bWJlcihwb29sVXBkYXRlRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6cG9vbFVwZGF0ZUZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSl9fX19LGFjdGlvbnMuY2hhbmdlTmZ0UHJvcGVydHk9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkLHR5cGU6dHlwZSxwcm9wZXJ0eU5hbWU6cHJvcGVydHlOYW1lLGNoYW5nZUFtb3VudDpjaGFuZ2VBbW91bnQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydChpZCYmInN0cmluZyI9PXR5cGVvZiBpZCYmdHlwZSYmInN0cmluZyI9PXR5cGVvZiB0eXBlJiZwcm9wZXJ0eU5hbWUmJiJzdHJpbmciPT10eXBlb2YgcHJvcGVydHlOYW1lJiZjaGFuZ2VBbW91bnQmJiJzdHJpbmciPT10eXBlb2YgY2hhbmdlQW1vdW50JiYhYXBpLkJpZ051bWJlcihjaGFuZ2VBbW91bnQpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoY2hhbmdlQW1vdW50KS5pc0Zpbml0ZSgpLCJpbnZhbGlkIHBhcmFtcyIpKXJldHVybjtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IHBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7aWQ6aWR9KTtpZighYXBpLmFzc2VydChwb29sLCJwb29sIGlkIG5vdCBmb3VuZCIpKXJldHVybjtjb25zdCBwcm9wZXJ0eUluZGV4PXBvb2wubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmZpbmRJbmRleChwPT5wLm5hbWU9PT1wcm9wZXJ0eU5hbWUpLHByb3BlcnR5PXBvb2wubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzW3Byb3BlcnR5SW5kZXhdO2lmKCFhcGkuYXNzZXJ0KHByb3BlcnR5JiZwcm9wZXJ0eS5idXJuQ2hhbmdlLCJwcm9wZXJ0eSBub3QgZW5hYmxlZCBmb3IgYnVybiBjaGFuZ2UiKSlyZXR1cm47Y29uc3QgdHlwZVByb3BlcnRpZXM9cG9vbC5uZnRUb2tlbk1pbmVyLnR5cGVNYXBbdHlwZV07aWYoIWFwaS5hc3NlcnQodHlwZVByb3BlcnRpZXMsInR5cGUgbm90IGZvdW5kIikpcmV0dXJuO2NvbnN0IGJ1cm5TeW1ib2w9cHJvcGVydHkuYnVybkNoYW5nZS5zeW1ib2wsdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6YnVyblN5bWJvbH0pLGZlZT1hcGkuQmlnTnVtYmVyKGNoYW5nZUFtb3VudCkuYWJzKCkubXVsdGlwbGllZEJ5KHByb3BlcnR5LmJ1cm5DaGFuZ2UucXVhbnRpdHkpO2lmKCFhcGkuYXNzZXJ0KGZlZS5kcCgpPD10b2tlbi5wcmVjaXNpb24sImZlZSBwcmVjaXNpb24gbWlzbWF0Y2ggZm9yIGFtb3VudCAiK2ZlZSkpcmV0dXJuO2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6YnVyblN5bWJvbH0pLGF1dGhvcml6ZWQ9YXBpLkJpZ051bWJlcihmZWUpLmx0ZSgwKXx8YmFsYW5jZSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmd0ZShmZWUpO2lmKCFhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsYHlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgdXBkYXRlIGZlZSBvZiAke2ZlZX0gJHtidXJuU3ltYm9sfWApKXJldHVybjtpZih0eXBlUHJvcGVydGllc1twcm9wZXJ0eUluZGV4XT1hcGkuQmlnTnVtYmVyKHR5cGVQcm9wZXJ0aWVzW3Byb3BlcnR5SW5kZXhdKS5wbHVzKGNoYW5nZUFtb3VudCksIXZhbGlkYXRlTmZ0VHlwZU1hcChwb29sLm5mdFRva2VuTWluZXIudHlwZU1hcCxwb29sLm5mdFRva2VuTWluZXIucHJvcGVydGllcykpcmV0dXJuO2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpO3Bvb2wudXBkYXRpbmcudXBkYXRlUG9vbFRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnRvTnVtYmVyKCkscG9vbC51cGRhdGluZy5pblByb2dyZXNzPSEwLHBvb2wudXBkYXRpbmcudG9rZW5JbmRleD0wLHBvb2wudXBkYXRpbmcubmZ0VG9rZW5JbmRleD0wLHBvb2wudXBkYXRpbmcubGFzdElkPTAscG9vbC50b3RhbFBvd2VyPSIwIixhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCksYXBpLkJpZ051bWJlcihmZWUpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDpidXJuU3ltYm9sLHF1YW50aXR5OmZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSl9LGFjdGlvbnMuY3JlYXRlUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7bG90dGVyeVdpbm5lcnM6bG90dGVyeVdpbm5lcnMsbG90dGVyeUludGVydmFsSG91cnM6bG90dGVyeUludGVydmFsSG91cnMsbG90dGVyeUFtb3VudDpsb3R0ZXJ5QW1vdW50LG1pbmVkVG9rZW46bWluZWRUb2tlbix0b2tlbk1pbmVyczp0b2tlbk1pbmVycyxuZnRUb2tlbk1pbmVyOm5mdFRva2VuTWluZXIsZXh0ZXJuYWxNaW5lcnM6ZXh0ZXJuYWxNaW5lcnMsY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7cG9vbENyZWF0aW9uRmVlOnBvb2xDcmVhdGlvbkZlZX09cGFyYW1zO2lmKCEodm9pZCAwPT09ZXh0ZXJuYWxNaW5lcnN8fGFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBleHRlcm5hbE1pbmVycywiZXh0ZXJuYWxNaW5lcnMgbXVzdCBiZSBhIHN0cmluZyIpJiZhcGkuYXNzZXJ0KGNhbGxpbmdDb250cmFjdEluZm8sIm11c3QgYmUgY2FsbGVkIGZyb20gYSBjb250cmFjdCIpKSlyZXR1cm47Y29uc3QgdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hKCFhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShwb29sQ3JlYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChtaW5lZFRva2VuJiYic3RyaW5nIj09dHlwZW9mIG1pbmVkVG9rZW4mJmxvdHRlcnlBbW91bnQmJiJzdHJpbmciPT10eXBlb2YgbG90dGVyeUFtb3VudCYmIWFwaS5CaWdOdW1iZXIobG90dGVyeUFtb3VudCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihsb3R0ZXJ5QW1vdW50KS5ndCgwKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChtaW5lZFRva2VuLmxlbmd0aD4wJiZtaW5lZFRva2VuLmxlbmd0aDw9MTAsImludmFsaWQgc3ltYm9sOiB1cHBlcmNhc2UgbGV0dGVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwIikmJmFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihsb3R0ZXJ5V2lubmVycykmJmxvdHRlcnlXaW5uZXJzPj0xJiZsb3R0ZXJ5V2lubmVyczw9MjAsImludmFsaWQgbG90dGVyeVdpbm5lcnM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCAyMCBvbmx5IikmJmFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihsb3R0ZXJ5SW50ZXJ2YWxIb3VycykmJmxvdHRlcnlJbnRlcnZhbEhvdXJzPj0xJiZsb3R0ZXJ5SW50ZXJ2YWxIb3Vyczw9NzIwLCJpbnZhbGlkIGxvdHRlcnlJbnRlcnZhbEhvdXJzOiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgNzIwIG9ubHkiKSl7Y29uc3QgbWluZWRUb2tlbk9iamVjdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDptaW5lZFRva2VufSk7aWYoYXBpLmFzc2VydChtaW5lZFRva2VuT2JqZWN0LCJtaW5lZFRva2VuIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQobWluZWRUb2tlbk9iamVjdC5pc3N1ZXI9PT1hcGkuc2VuZGVyfHwiQkVFIj09PW1pbmVkVG9rZW5PYmplY3Quc3ltYm9sJiZhcGkuc2VuZGVyPT09YXBpLm93bmVyLCJtdXN0IGJlIGlzc3VlciBvZiBtaW5lZFRva2VuIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihsb3R0ZXJ5QW1vdW50KS5kcCgpPD1taW5lZFRva2VuT2JqZWN0LnByZWNpc2lvbiwibWluZWRUb2tlbiBwcmVjaXNpb24gbWlzbWF0Y2ggZm9yIGxvdHRlcnlBbW91bnQiKSYmKGNhbGxpbmdDb250cmFjdEluZm98fGF3YWl0IHZhbGlkYXRlVG9rZW5NaW5lcnModG9rZW5NaW5lcnMsbmZ0VG9rZW5NaW5lcikpKXtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSxuZXdQb29sPXttaW5lZFRva2VuOm1pbmVkVG9rZW4sbG90dGVyeVdpbm5lcnM6bG90dGVyeVdpbm5lcnMsbG90dGVyeUludGVydmFsSG91cnM6bG90dGVyeUludGVydmFsSG91cnMsbG90dGVyeUFtb3VudDpsb3R0ZXJ5QW1vdW50LHRva2VuTWluZXJzOnRva2VuTWluZXJzfHxbXSxuZnRUb2tlbk1pbmVyOm5mdFRva2VuTWluZXIsYWN0aXZlOiExLG5leHRMb3R0ZXJ5VGltZXN0YW1wOmFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkucGx1cygzNjAwKmxvdHRlcnlJbnRlcnZhbEhvdXJzKjFlMykudG9OdW1iZXIoKSx0b3RhbFBvd2VyOiIwIn07aWYoY2FsbGluZ0NvbnRyYWN0SW5mbyl7aWYoIWFwaS5hc3NlcnQoIW5mdFRva2VuTWluZXIsImV4dGVybmFsIG5mdFRva2VuTWluZXIgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQiKSlyZXR1cm47bmV3UG9vbC5leHRlcm5hbENvbnRyYWN0PWNhbGxpbmdDb250cmFjdEluZm8ubmFtZSxuZXdQb29sLmV4dGVybmFsTWluZXJzPWV4dGVybmFsTWluZXJzfW5ld1Bvb2wuaWQ9Z2VuZXJhdGVQb29sSWQobmV3UG9vbCk7Y29uc3QgZXhpc3RpbmdQb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOm5ld1Bvb2wuaWR9KTtpZihhcGkuYXNzZXJ0KCFleGlzdGluZ1Bvb2wsInBvb2wgYWxyZWFkeSBleGlzdHMiKSl7aWYodG9rZW5NaW5lcnMpZm9yKGxldCBpPTA7aTx0b2tlbk1pbmVycy5sZW5ndGg7aSs9MSl7Y29uc3QgdG9rZW5Db25maWc9dG9rZW5NaW5lcnNbaV07YXdhaXQgYXBpLmRiLmluc2VydCgidG9rZW5Qb29scyIse3N5bWJvbDp0b2tlbkNvbmZpZy5zeW1ib2wsaWQ6bmV3UG9vbC5pZH0pfW5ld1Bvb2wudXBkYXRpbmc9e2luUHJvZ3Jlc3M6ITAsdXBkYXRlUG9vbFRpbWVzdGFtcDphcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnRvTnVtYmVyKCksdG9rZW5JbmRleDowLG5mdFRva2VuSW5kZXg6MCxsYXN0SWQ6MH07Y29uc3QgaW5zZXJ0ZWRQb29sPWF3YWl0IGFwaS5kYi5pbnNlcnQoInBvb2xzIixuZXdQb29sKTthcGkuc2VuZGVyIT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OnBvb2xDcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXBpLmVtaXQoImNyZWF0ZVBvb2wiLHtpZDppbnNlcnRlZFBvb2wuaWR9KX19fX0sYWN0aW9ucy5jaGVja1BlbmRpbmdMb3R0ZXJpZXM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSksdXBkYXRpbmdMb3R0ZXJpZXM9YXdhaXQgYXBpLmRiLmZpbmQoInBvb2xzIix7InVwZGF0aW5nLmluUHJvZ3Jlc3MiOiEwfSxwYXJhbXMubWF4TG90dGVyaWVzUGVyQmxvY2ssMCxbe2luZGV4OiJpZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGk9MDtpPHVwZGF0aW5nTG90dGVyaWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwb29sPXVwZGF0aW5nTG90dGVyaWVzW2ldO2F3YWl0IHJlc3VtZVBvd2VyVXBkYXRlKHBvb2wscGFyYW1zKX1jb25zdCBwZW5kaW5nTG90dGVyaWVzPWF3YWl0IGFwaS5kYi5maW5kKCJwb29scyIse2FjdGl2ZTohMCwidXBkYXRpbmcuaW5Qcm9ncmVzcyI6ITEsbmV4dExvdHRlcnlUaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0scGFyYW1zLm1heExvdHRlcmllc1BlckJsb2NrLDAsW3tpbmRleDoiaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxwZW5kaW5nTG90dGVyaWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwb29sPXBlbmRpbmdMb3R0ZXJpZXNbaV07YXdhaXQgcnVuTG90dGVyeShwb29sLHBhcmFtcyl9fX0sYWN0aW9ucy5oYW5kbGVTdGFrZUNoYW5nZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksZGVsZWdhdGVkOmRlbGVnYXRlZCxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQ7YXBpLmFzc2VydChjYWxsaW5nQ29udHJhY3RJbmZvJiYidG9rZW5zIj09PWNhbGxpbmdDb250cmFjdEluZm8ubmFtZSwibXVzdCBiZSBjYWxsZWQgZnJvbSB0b2tlbnMgY29udHJhY3QiKSYmYXdhaXQgZmluZEFuZFByb2Nlc3NBbGwoIm1pbmluZyIsInRva2VuUG9vbHMiLHtzeW1ib2w6c3ltYm9sfSxhc3luYyB0b2tlblBvb2w9Pntjb25zdCBwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOnRva2VuUG9vbC5pZH0pO2xldCBhZGp1c3RlZDthZGp1c3RlZD1kZWxlZ2F0ZWQ/YXdhaXQgdXBkYXRlTWluaW5nUG93ZXIocG9vbCxzeW1ib2wsYWNjb3VudCwwLHF1YW50aXR5KTphd2FpdCB1cGRhdGVNaW5pbmdQb3dlcihwb29sLHN5bWJvbCxhY2NvdW50LHF1YW50aXR5LDApLHBvb2wudG90YWxQb3dlcj1hZGp1c3RlZC5wbHVzKHBvb2wudG90YWxQb3dlciksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHBvb2wpfSl9LGFjdGlvbnMuaGFuZGxlTmZ0Q2hhbmdlPWFzeW5jKCk9Pnt9LGFjdGlvbnMuaGFuZGxlTmZ0RGVsZWdhdGlvbkNoYW5nZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuZnQ6bmZ0LGFkZDphZGQsY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2FwaS5hc3NlcnQoY2FsbGluZ0NvbnRyYWN0SW5mbyYmIm5mdCI9PT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsIm11c3QgYmUgY2FsbGVkIGZyb20gbmZ0IGNvbnRyYWN0IikmJmF3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJtaW5pbmciLCJuZnRUb2tlblBvb2xzIix7c3ltYm9sOnN5bWJvbH0sYXN5bmMgdG9rZW5Qb29sPT57Y29uc3QgcG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHtpZDp0b2tlblBvb2wuaWR9KTtpZihwb29sLnVwZGF0aW5nLmluUHJvZ3Jlc3MmJnBvb2wudXBkYXRpbmcudG9rZW5JbmRleD09PXBvb2wudG9rZW5NaW5lcnMubGVuZ3RoJiZwb29sLnVwZGF0aW5nLmxhc3RJZDxuZnQuX2lkKXJldHVybjtpZighcG9vbC5hY3RpdmUpcmV0dXJuO2lmKCFwb29sLm5mdFRva2VuTWluZXIpcmV0dXJuO2NvbnN0e2VxdWlwRmllbGQ6ZXF1aXBGaWVsZCx0eXBlRmllbGQ6dHlwZUZpZWxkLHR5cGVNYXA6dHlwZU1hcCxtaW5pbmdQb3dlckZpZWxkOm1pbmluZ1Bvd2VyRmllbGR9PXBvb2wubmZ0VG9rZW5NaW5lcjtpZihlcXVpcEZpZWxkKXJldHVybjtpZih0eXBlTWFwW25mdC5wcm9wZXJ0aWVzW3R5cGVGaWVsZF1dfHxtaW5pbmdQb3dlckZpZWxkKXtjb25zdCBhZGp1c3RlZD1hd2FpdCB1cGRhdGVOZnRNaW5pbmdQb3dlcihwb29sLG5mdCxhZGQscG9vbC51cGRhdGluZy51cGRhdGVQb29sVGltZXN0YW1wKTtwb29sLnRvdGFsUG93ZXI9YWRqdXN0ZWQucGx1cyhwb29sLnRvdGFsUG93ZXIpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvb2xzIixwb29sKX19KX0sYWN0aW9ucy5oYW5kbGVOZnRTZXRQcm9wZXJ0eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxuZnQ6bmZ0LHByb3BlcnR5TmFtZTpwcm9wZXJ0eU5hbWUsb2xkVmFsdWU6b2xkVmFsdWUsY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoY2FsbGluZ0NvbnRyYWN0SW5mbyYmIm5mdCI9PT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUsIm11c3QgYmUgY2FsbGVkIGZyb20gbmZ0IGNvbnRyYWN0Iikpe2NvbnN0IG5ld1ZhbHVlPW5mdC5wcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV07aWYob2xkVmFsdWU9PT1uZXdWYWx1ZSlyZXR1cm47YXdhaXQgZmluZEFuZFByb2Nlc3NBbGwoIm1pbmluZyIsIm5mdFRva2VuUG9vbHMiLHtzeW1ib2w6c3ltYm9sfSxhc3luYyB0b2tlblBvb2w9Pntjb25zdCBwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOnRva2VuUG9vbC5pZH0pO2lmKHBvb2wudXBkYXRpbmcuaW5Qcm9ncmVzcyYmcG9vbC51cGRhdGluZy50b2tlbkluZGV4PT09cG9vbC50b2tlbk1pbmVycy5sZW5ndGgmJnBvb2wudXBkYXRpbmcubGFzdElkPG5mdC5faWQpcmV0dXJuO2lmKCFwb29sLmFjdGl2ZSlyZXR1cm47aWYoIXBvb2wubmZ0VG9rZW5NaW5lcilyZXR1cm47Y29uc3R7ZXF1aXBGaWVsZDplcXVpcEZpZWxkLG1pbmluZ1Bvd2VyRmllbGQ6bWluaW5nUG93ZXJGaWVsZH09cG9vbC5uZnRUb2tlbk1pbmVyO2lmKGVxdWlwRmllbGQmJnByb3BlcnR5TmFtZT09PWVxdWlwRmllbGQpe2lmKG9sZFZhbHVlJiZhcGkuaXNWYWxpZEFjY291bnROYW1lKG9sZFZhbHVlKSl7Y29uc3QgYWRqdXN0ZWQ9YXdhaXQgdXBkYXRlTmZ0TWluaW5nUG93ZXIocG9vbCxuZnQsITEscG9vbC51cGRhdGluZy51cGRhdGVQb29sVGltZXN0YW1wLG9sZFZhbHVlKTtwb29sLnRvdGFsUG93ZXI9YWRqdXN0ZWQucGx1cyhwb29sLnRvdGFsUG93ZXIpfWlmKG5ld1ZhbHVlJiZhcGkuaXNWYWxpZEFjY291bnROYW1lKG5ld1ZhbHVlKSl7Y29uc3QgYWRqdXN0ZWQ9YXdhaXQgdXBkYXRlTmZ0TWluaW5nUG93ZXIocG9vbCxuZnQsITAscG9vbC51cGRhdGluZy51cGRhdGVQb29sVGltZXN0YW1wLG5ld1ZhbHVlKTtwb29sLnRvdGFsUG93ZXI9YWRqdXN0ZWQucGx1cyhwb29sLnRvdGFsUG93ZXIpfX1lbHNlIGlmKG1pbmluZ1Bvd2VyRmllbGQmJnByb3BlcnR5TmFtZT09PW1pbmluZ1Bvd2VyRmllbGQmJighZXF1aXBGaWVsZHx8YXBpLmlzVmFsaWRBY2NvdW50TmFtZShuZnQucHJvcGVydGllc1tlcXVpcEZpZWxkXSkpKXtjb25zdCBhZGp1c3RlZD1hd2FpdCB1cGRhdGVOZnRNaW5pbmdQb3dlckZyb21Qcm9wZXJ0eVVwZGF0ZShwb29sLG5mdCxlcXVpcEZpZWxkP25mdC5wcm9wZXJ0aWVzW2VxdWlwRmllbGRdOm51bGwpO3Bvb2wudG90YWxQb3dlcj1hZGp1c3RlZC5wbHVzKHBvb2wudG90YWxQb3dlcil9YXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHBvb2wpfSl9fTs="}}}
Mining Smart Contract
3 years ago in #hive-engine by hive-engine (44)
$0.75
- Past Payouts $0.75
- - Author $0.38
- - Curators $0.37
Your content has been voted as a part of Encouragement program. Keep up the good work!
Use Ecency daily to boost your growth on platform!
Support Ecency
Vote for new Proposal
Delegate HP and earn more