{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"mining","params":"","code":"Y29uc3QgUFJPUEVSVFlfT1BTPXtBREQ6e2FkZDooeCx5KT0+YXBpLkJpZ051bWJlcih4KS5wbHVzKHkpLHJlbW92ZTooeCx5KT0+YXBpLkJpZ051bWJlcih4KS5taW51cyh5KSxkZWZhdWx0VmFsdWU6MH0sTVVMVElQTFk6e2FkZDooeCx5KT0+YXBpLkJpZ051bWJlcih4KS5tdWx0aXBsaWVkQnkoeSkscmVtb3ZlOih4LHkpPT5hcGkuQmlnTnVtYmVyKHgpLmRpdmlkZWRCeSh5KSxkZWZhdWx0VmFsdWU6MX19O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygibWluaW5nUG93ZXIiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJtaW5pbmdQb3dlciIsWyJpZCIsInBvd2VyIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicG9vbHMiLFsiaWQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlblBvb2xzIixbInN5bWJvbCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17cG9vbENyZWF0aW9uRmVlOiIxMDAwIixwb29sVXBkYXRlRmVlOiIzMDAiLG1heExvdHRlcmllc1BlckJsb2NrOjIwLG1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s6MWU0LHByb2Nlc3NRdWVyeUxpbWl0OjFlM307YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygibmZ0VG9rZW5Qb29scyIpfHxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoIm5mdFRva2VuUG9vbHMiLFsic3ltYm9sIl0pfSxhY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47Y29uc3R7cG9vbENyZWF0aW9uRmVlOnBvb2xDcmVhdGlvbkZlZSxwb29sVXBkYXRlRmVlOnBvb2xVcGRhdGVGZWUsbWF4TG90dGVyaWVzUGVyQmxvY2s6bWF4TG90dGVyaWVzUGVyQmxvY2ssbWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9jazptYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrLHByb2Nlc3NRdWVyeUxpbWl0OnByb2Nlc3NRdWVyeUxpbWl0fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYocG9vbENyZWF0aW9uRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvb2xDcmVhdGlvbkZlZSYmIWFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkuZ3RlKDApLCJpbnZhbGlkIHBvb2xDcmVhdGlvbkZlZSIpKXJldHVybjtwYXJhbXMucG9vbENyZWF0aW9uRmVlPXBvb2xDcmVhdGlvbkZlZX1pZihwb29sVXBkYXRlRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvb2xVcGRhdGVGZWUmJiFhcGkuQmlnTnVtYmVyKHBvb2xVcGRhdGVGZWUpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIocG9vbFVwZGF0ZUZlZSkuZ3RlKDApLCJpbnZhbGlkIHBvb2xVcGRhdGVGZWUiKSlyZXR1cm47cGFyYW1zLnBvb2xVcGRhdGVGZWU9cG9vbFVwZGF0ZUZlZX1pZihtYXhMb3R0ZXJpZXNQZXJCbG9jayl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihtYXhMb3R0ZXJpZXNQZXJCbG9jaykmJm1heExvdHRlcmllc1BlckJsb2NrPj0xLCJpbnZhbGlkIG1heExvdHRlcmllc1BlckJsb2NrIikpcmV0dXJuO3BhcmFtcy5tYXhMb3R0ZXJpZXNQZXJCbG9jaz1tYXhMb3R0ZXJpZXNQZXJCbG9ja31pZihtYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrKXtpZighYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKG1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2spJiZtYXhCYWxhbmNlc1Byb2Nlc3NlZFBlckJsb2NrPj0xLCJpbnZhbGlkIG1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2siKSlyZXR1cm47cGFyYW1zLm1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s9bWF4QmFsYW5jZXNQcm9jZXNzZWRQZXJCbG9ja31pZihwcm9jZXNzUXVlcnlMaW1pdCl7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihwcm9jZXNzUXVlcnlMaW1pdCkmJnByb2Nlc3NRdWVyeUxpbWl0Pj0xLCJpbnZhbGlkIHByb2Nlc3NRdWVyeUxpbWl0IikpcmV0dXJuO3BhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdD1wcm9jZXNzUXVlcnlMaW1pdH1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9O2NvbnN0IGZpbmRBbmRQcm9jZXNzQWxsPWFzeW5jKGNvbnRyYWN0TmFtZSx0YWJsZSxxdWVyeSxjYWxsYmFjayk9PntsZXQgb2Zmc2V0PTAscmVzdWx0cz1bXSxkb25lPSExO2Zvcig7IWRvbmU7KWlmKHJlc3VsdHM9YXdhaXQgYXBpLmRiLmZpbmRJblRhYmxlKGNvbnRyYWN0TmFtZSx0YWJsZSxxdWVyeSwxZTMsb2Zmc2V0KSxyZXN1bHRzKXtmb3IobGV0IGk9MDtpPHJlc3VsdHMubGVuZ3RoO2krPTEpYXdhaXQgY2FsbGJhY2socmVzdWx0c1tpXSk7cmVzdWx0cy5sZW5ndGg8MWUzP2RvbmU9ITA6b2Zmc2V0Kz0xZTN9fTthc3luYyBmdW5jdGlvbiB2YWxpZGF0ZU5mdFByb3BlcnRpZXMocHJvcGVydGllcyl7aWYoIWFwaS5hc3NlcnQocHJvcGVydGllcyYmQXJyYXkuaXNBcnJheShwcm9wZXJ0aWVzKSwiaW52YWxpZCBuZnRUb2tlbk1pbmVyIHByb3BlcnRpZXMiKSlyZXR1cm4hMTtpZighYXBpLmFzc2VydChwcm9wZXJ0aWVzLmxlbmd0aD4wJiZwcm9wZXJ0aWVzLmxlbmd0aDw9NCwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQiKSlyZXR1cm4hMTtmb3IobGV0IGk9MDtpPHByb3BlcnRpZXMubGVuZ3RoO2krPTEpe2NvbnN0IHByb3A9cHJvcGVydGllc1tpXSxwcm9wS2V5cz1PYmplY3Qua2V5cyhwcm9wKTtmb3IobGV0IGo9MDtqPHByb3BLZXlzLmxlbmd0aDtqKz0xKXtjb25zdCBwcm9wS2V5PXByb3BLZXlzW2pdO2lmKCJvcCI9PT1wcm9wS2V5KXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHByb3Aub3AmJlBST1BFUlRZX09QU1twcm9wLm9wXSwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIG9wIHNob3VsZCBiZSBBREQgb3IgTVVMVElQTFkiKSlyZXR1cm4hMX1lbHNlIGlmKCJuYW1lIj09PXByb3BLZXkpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcHJvcC5uYW1lJiZwcm9wLm5hbWUubGVuZ3RoPD0xNiwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIG5hbWUgc2hvdWxkIGJlIGEgc3RyaW5nIG9mIGxlbmd0aCA8PSAxNiIpKXJldHVybiExfWVsc2V7aWYoImJ1cm5DaGFuZ2UiIT09cHJvcEtleSlyZXR1cm4gYXBpLmFzc2VydCghMSwibmZ0VG9rZW5NaW5lciBwcm9wZXJ0aWVzIGZpZWxkIGludmFsaWQiKSwhMTt7aWYoIWFwaS5hc3NlcnQoIm9iamVjdCI9PXR5cGVvZiBwcm9wLmJ1cm5DaGFuZ2UmJiJzdHJpbmciPT10eXBlb2YgcHJvcC5idXJuQ2hhbmdlLnN5bWJvbCYmYXBpLkJpZ051bWJlcihwcm9wLmJ1cm5DaGFuZ2UucXVhbnRpdHkpLmlzRmluaXRlKCkmJmFwaS5CaWdOdW1iZXIocHJvcC5idXJuQ2hhbmdlLnF1YW50aXR5KS5pc1Bvc2l0aXZlKCksIm5mdFRva2VuTWluZXIgcHJvcGVydGllcyBidXJuQ2hhbmdlIGludmFsaWQiKSlyZXR1cm4hMTtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwcm9wLmJ1cm5DaGFuZ2Uuc3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQodG9rZW4sIm5mdFRva2VuTWluZXIgcHJvcGVydGllcyBidXJuQ2hhbmdlIHN5bWJvbCBub3QgZm91bmQiKSlyZXR1cm4hMX19fX1yZXR1cm4hMH1mdW5jdGlvbiB2YWxpZGF0ZU5mdFR5cGVNYXAodHlwZU1hcCxwcm9wZXJ0aWVzKXtpZighYXBpLmFzc2VydCh0eXBlTWFwJiYib2JqZWN0Ij09dHlwZW9mIHR5cGVNYXAsImludmFsaWQgbmZ0VG9rZW5NaW5lciB0eXBlTWFwIikpcmV0dXJuITE7Y29uc3QgdHlwZXM9T2JqZWN0LmtleXModHlwZU1hcCk7Zm9yKGxldCBqPTA7ajx0eXBlcy5sZW5ndGg7ais9MSl7Y29uc3QgdHlwZUNvbmZpZz10eXBlTWFwW3R5cGVzW2pdXTtpZighYXBpLmFzc2VydChBcnJheS5pc0FycmF5KHR5cGVDb25maWcpJiZ0eXBlQ29uZmlnLmxlbmd0aD09PXByb3BlcnRpZXMubGVuZ3RoLCJuZnRUb2tlbk1pbmVyIHR5cGVDb25maWcgbGVuZ3RoIG1pc21hdGNoIikpcmV0dXJuITE7Zm9yKGxldCBrPTA7azx0eXBlQ29uZmlnLmxlbmd0aDtrKz0xKXtjb25zdCB0eXBlUHJvcGVydHk9YXBpLkJpZ051bWJlcih0eXBlQ29uZmlnW2tdKTtpZighYXBpLmFzc2VydCghdHlwZVByb3BlcnR5LmlzTmFOKCkmJnR5cGVQcm9wZXJ0eS5pc0Zpbml0ZSgpLCJuZnRUb2tlbk1pbmVyIHR5cGVDb25maWcgaW52YWxpZCIpKXJldHVybiExO2lmKCJNVUxUSVBMWSI9PT1wcm9wZXJ0aWVzW2tdLm9wJiYhYXBpLmFzc2VydCh0eXBlUHJvcGVydHkuZ3RlKC4wMSkmJnR5cGVQcm9wZXJ0eS5sdGUoMTAwKSwibmZ0VG9rZW5NaW5lciB0eXBlQ29uZmlnIE1VTFRJUExZIHByb3BlcnR5IHNob3VsZCBiZSBiZXR3ZWVuIDAuMDEgYW5kIDEwMCIpKXJldHVybiExfX1yZXR1cm4hMH1hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVRva2VuTWluZXJzKHRva2VuTWluZXJzLG5mdFRva2VuTWluZXIpe2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluZXJzJiZBcnJheS5pc0FycmF5KHRva2VuTWluZXJzKSwidG9rZW5NaW5lcnMgaW52YWxpZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluZXJzLmxlbmd0aD49MSYmdG9rZW5NaW5lcnMubGVuZ3RoPD0yfHxuZnRUb2tlbk1pbmVyJiYwPT09dG9rZW5NaW5lcnMubGVuZ3RoLCJvbmx5IDEgb3IgMiB0b2tlbk1pbmVycyBhbGxvd2VkIikpcmV0dXJuITE7Y29uc3QgdG9rZW5NaW5lclN5bWJvbHM9bmV3IFNldDtmb3IobGV0IGk9MDtpPHRva2VuTWluZXJzLmxlbmd0aDtpKz0xKXtjb25zdCB0b2tlbk1pbmVyQ29uZmlnPXRva2VuTWluZXJzW2ldO2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluZXJDb25maWcmJnRva2VuTWluZXJDb25maWcuc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHRva2VuTWluZXJDb25maWcuc3ltYm9sLCJ0b2tlbk1pbmVycyBpbnZhbGlkIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoIXRva2VuTWluZXJTeW1ib2xzLmhhcyh0b2tlbk1pbmVyQ29uZmlnLnN5bWJvbCksInRva2VuTWluZXJzIGNhbm5vdCBoYXZlIGR1cGxpY2F0ZSBzeW1ib2xzIikpcmV0dXJuITE7dG9rZW5NaW5lclN5bWJvbHMuYWRkKHRva2VuTWluZXJDb25maWcuc3ltYm9sKTtjb25zdHtzeW1ib2w6c3ltYm9sfT10b2tlbk1pbmVyQ29uZmlnLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KHRva2VuJiZ0b2tlbi5zdGFraW5nRW5hYmxlZCwidG9rZW5NaW5lcnMgbXVzdCBoYXZlIHN0YWtpbmcgZW5hYmxlZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KE51bWJlci5pc0ludGVnZXIodG9rZW5NaW5lckNvbmZpZy5tdWx0aXBsaWVyKSYmdG9rZW5NaW5lckNvbmZpZy5tdWx0aXBsaWVyPj0xJiZ0b2tlbk1pbmVyQ29uZmlnLm11bHRpcGxpZXI8PTEwMCwidG9rZW5NaW5lciBtdWx0aXBsaWVyIG11c3QgYmUgYW4gaW50ZWdlciBmcm9tIDEgdG8gMTAwIikpcmV0dXJuITF9aWYobmZ0VG9rZW5NaW5lcil7aWYoIWFwaS5hc3NlcnQobmZ0VG9rZW5NaW5lci5zeW1ib2wmJiJzdHJpbmciPT10eXBlb2YgbmZ0VG9rZW5NaW5lci5zeW1ib2wsIm5mdFRva2VuTWluZXIgaW52YWxpZCIpKXJldHVybiExO2NvbnN0e3N5bWJvbDpzeW1ib2wsdHlwZU1hcDp0eXBlTWFwLHByb3BlcnRpZXM6cHJvcGVydGllcyx0eXBlRmllbGQ6dHlwZUZpZWxkfT1uZnRUb2tlbk1pbmVyLG5mdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm5mdCIsIm5mdHMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoIWFwaS5hc3NlcnQobmZ0JiZuZnQuZGVsZWdhdGlvbkVuYWJsZWQsIm5mdFRva2VuTWluZXIgbXVzdCBoYXZlIGRlbGVnYXRpb24gZW5hYmxlZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHR5cGVGaWVsZCYmInN0cmluZyI9PXR5cGVvZiB0eXBlRmllbGQsInR5cGVGaWVsZCBtdXN0IGJlIGEgc3RyaW5nIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQobmZ0LnByb3BlcnRpZXNbdHlwZUZpZWxkXSYmInN0cmluZyI9PT1uZnQucHJvcGVydGllc1t0eXBlRmllbGRdLnR5cGUsIm5mdFRva2VuTWluZXIgbXVzdCBoYXZlIHN0cmluZyB0eXBlIHByb3BlcnR5IikpcmV0dXJuITE7aWYoIWF3YWl0IHZhbGlkYXRlTmZ0UHJvcGVydGllcyhwcm9wZXJ0aWVzKSlyZXR1cm4hMTtpZighdmFsaWRhdGVOZnRUeXBlTWFwKHR5cGVNYXAscHJvcGVydGllcykpcmV0dXJuITF9cmV0dXJuITB9YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVUb2tlbk1pbmVyc0NoYW5nZShvbGRUb2tlbk1pbmVycyx0b2tlbk1pbmVycyxvbGROZnRUb2tlbk1pbmVyLG5mdFRva2VuTWluZXIpe2lmKCFhcGkuYXNzZXJ0KHRva2VuTWluZXJzLmxlbmd0aD09PW9sZFRva2VuTWluZXJzLmxlbmd0aCwiY2Fubm90IGNoYW5nZSB3aGljaCB0b2tlbnMgYXJlIGluIHRva2VuTWluZXJzIikpcmV0dXJuITE7bGV0IGNoYW5nZWQ9ITE7Zm9yKGxldCBpPTA7aTx0b2tlbk1pbmVycy5sZW5ndGg7aSs9MSl7Y29uc3Qgb2xkQ29uZmlnPW9sZFRva2VuTWluZXJzW2ldLG5ld0NvbmZpZz10b2tlbk1pbmVyc1tpXTtpZighYXBpLmFzc2VydChvbGRDb25maWcuc3ltYm9sPT09bmV3Q29uZmlnLnN5bWJvbCwiY2Fubm90IGNoYW5nZSB3aGljaCB0b2tlbnMgYXJlIGluIHRva2VuTWluZXJzIikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihuZXdDb25maWcubXVsdGlwbGllcikmJm5ld0NvbmZpZy5tdWx0aXBsaWVyPj0xJiZuZXdDb25maWcubXVsdGlwbGllcjw9MTAwLCJ0b2tlbk1pbmVyIG11bHRpcGxpZXIgbXVzdCBiZSBhbiBpbnRlZ2VyIGZyb20gMSB0byAxMDAiKSlyZXR1cm4hMTtvbGRDb25maWcubXVsdGlwbGllciE9PW5ld0NvbmZpZy5tdWx0aXBsaWVyJiYoY2hhbmdlZD0hMCl9aWYoIWFwaS5hc3NlcnQoISFvbGROZnRUb2tlbk1pbmVyPT0hIW5mdFRva2VuTWluZXIsImNhbm5vdCBjaGFuZ2UgbmZ0VG9rZW5NaW5lciB0b2tlbiIpKXJldHVybiExO2lmKG5mdFRva2VuTWluZXIpe2lmKCFhcGkuYXNzZXJ0KG9sZE5mdFRva2VuTWluZXIuc3ltYm9sPT09bmZ0VG9rZW5NaW5lci5zeW1ib2wsImNhbm5vdCBjaGFuZ2UgbmZ0VG9rZW5NaW5lciB0b2tlbiIpKXJldHVybiExO2NvbnN0e3R5cGVNYXA6dHlwZU1hcCxwcm9wZXJ0aWVzOnByb3BlcnRpZXMsdHlwZUZpZWxkOnR5cGVGaWVsZH09bmZ0VG9rZW5NaW5lcjtpZighYXBpLmFzc2VydCh0eXBlRmllbGQmJiJzdHJpbmciPT10eXBlb2YgdHlwZUZpZWxkJiZ0eXBlRmllbGQ9PT1vbGROZnRUb2tlbk1pbmVyLnR5cGVGaWVsZCwiY2Fubm90IGNoYW5nZSBuZnRUb2tlbk1pbmVyIHR5cGVGaWVsZCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHR5cGVNYXAmJiJvYmplY3QiPT10eXBlb2YgdHlwZU1hcCwiaW52YWxpZCBuZnRUb2tlbk1pbmVyIHR5cGVNYXAiKSlyZXR1cm4hMTtpZighYXdhaXQgdmFsaWRhdGVOZnRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpKXJldHVybiExO2lmKHByb3BlcnRpZXMubGVuZ3RoIT09b2xkTmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aCljaGFuZ2VkPSEwO2Vsc2UgZm9yKGxldCBpPTA7aTxwcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwcm9wPXByb3BlcnRpZXNbaV0sb2xkUHJvcD1vbGROZnRUb2tlbk1pbmVyLnByb3BlcnRpZXNbaV07cHJvcC5vcCE9PW9sZFByb3Aub3AmJihjaGFuZ2VkPSEwKX1pZighdmFsaWRhdGVOZnRUeXBlTWFwKHR5cGVNYXAscHJvcGVydGllcykpcmV0dXJuITE7Y29uc3Qgb2xkVHlwZXM9T2JqZWN0LmtleXMob2xkTmZ0VG9rZW5NaW5lci50eXBlTWFwKTtmb3IobGV0IGk9MDtpPG9sZFR5cGVzLmxlbmd0aDtpKz0xKXtjb25zdCBvbGRUeXBlPW9sZFR5cGVzW2ldLG9sZFR5cGVDb25maWc9b2xkTmZ0VG9rZW5NaW5lci50eXBlTWFwW29sZFR5cGVdLHR5cGVDb25maWc9dHlwZU1hcFtvbGRUeXBlXTtpZighYXBpLmFzc2VydCh0eXBlQ29uZmlnLCJ0eXBlQ29uZmlnIHR5cGVzIG11c3QgYmUgYSBzdXBlcnNldCBvZiBvbGQgdHlwZUNvbmZpZyB0eXBlcyIpKXJldHVybiExO2ZvcihsZXQgaj0wO2o8dHlwZUNvbmZpZy5sZW5ndGg7ais9MSlvbGRUeXBlQ29uZmlnW2pdIT09dHlwZUNvbmZpZ1tqXSYmKGNoYW5nZWQ9ITApfX1yZXR1cm57Y2hhbmdlZDpjaGFuZ2VkfX1mdW5jdGlvbiBjb21wdXRlTWluaW5nUG93ZXIobWluaW5nUG93ZXIsdG9rZW5NaW5lcnMsbmZ0VG9rZW5NaW5lcil7bGV0IHBvd2VyPWFwaS5CaWdOdW1iZXIoMCk7Zm9yKGxldCBpPTA7aTx0b2tlbk1pbmVycy5sZW5ndGg7aSs9MSltaW5pbmdQb3dlci5iYWxhbmNlc1tpXSYmKHBvd2VyPXBvd2VyLnBsdXMoYXBpLkJpZ051bWJlcihtaW5pbmdQb3dlci5iYWxhbmNlc1tpXSkubXVsdGlwbGllZEJ5KHRva2VuTWluZXJzW2ldLm11bHRpcGxpZXIpKSk7aWYobmZ0VG9rZW5NaW5lciYmbWluaW5nUG93ZXIubmZ0QmFsYW5jZXMpe2xldCBuZnRQb3dlcj1hcGkuQmlnTnVtYmVyKDEpO2ZvcihsZXQgaT0wO2k8bmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKW5mdFBvd2VyPW5mdFBvd2VyLm11bHRpcGxpZWRCeShtaW5pbmdQb3dlci5uZnRCYWxhbmNlc1tpXSk7cG93ZXI9cG93ZXIucGx1cyhuZnRQb3dlcil9cmV0dXJuIHBvd2VyLmlzUG9zaXRpdmUoKSYmcG93ZXIuaXNGaW5pdGUoKT9wb3dlcjphcGkuQmlnTnVtYmVyKDApfWFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU1pbmluZ1Bvd2VyKHBvb2wsdG9rZW4sYWNjb3VudCxzdGFrZWRRdWFudGl0eSxkZWxlZ2F0ZWRRdWFudGl0eSxyZXNldCl7bGV0IG1pbmluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5maW5kT25lKCJtaW5pbmdQb3dlciIse2lkOnBvb2wuaWQsYWNjb3VudDphY2NvdW50fSksc3Rha2U9YXBpLkJpZ051bWJlcihzdGFrZWRRdWFudGl0eSksb2xkTWluaW5nUG93ZXI9YXBpLkJpZ051bWJlcigwKTtzdGFrZT1zdGFrZS5wbHVzKGRlbGVnYXRlZFF1YW50aXR5KTtjb25zdCB0b2tlbkluZGV4PXBvb2wudG9rZW5NaW5lcnMuZmluZEluZGV4KHQ9PnQuc3ltYm9sPT09dG9rZW4pO2lmKG1pbmluZ1Bvd2VyKW1pbmluZ1Bvd2VyLmJhbGFuY2VzW3Rva2VuSW5kZXhdJiYhcmVzZXR8fChtaW5pbmdQb3dlci5iYWxhbmNlc1t0b2tlbkluZGV4XT0iMCIpLG1pbmluZ1Bvd2VyLmJhbGFuY2VzW3Rva2VuSW5kZXhdPXN0YWtlLnBsdXMobWluaW5nUG93ZXIuYmFsYW5jZXNbdG9rZW5JbmRleF0pLG9sZE1pbmluZ1Bvd2VyPW1pbmluZ1Bvd2VyLnBvd2VyLiRudW1iZXJEZWNpbWFsO2Vsc2V7Y29uc3QgYmFsYW5jZXM9e307YmFsYW5jZXNbdG9rZW5JbmRleF09c3Rha2UsbWluaW5nUG93ZXI9e2lkOnBvb2wuaWQsYWNjb3VudDphY2NvdW50LGJhbGFuY2VzOmJhbGFuY2VzLHBvd2VyOnskbnVtYmVyRGVjaW1hbDoiMCJ9fSxtaW5pbmdQb3dlcj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJtaW5pbmdQb3dlciIsbWluaW5nUG93ZXIpfWNvbnN0IG5ld01pbmluZ1Bvd2VyPWNvbXB1dGVNaW5pbmdQb3dlcihtaW5pbmdQb3dlcixwb29sLnRva2VuTWluZXJzLHBvb2wubmZ0VG9rZW5NaW5lcik7cmV0dXJuIG1pbmluZ1Bvd2VyLnBvd2VyPXskbnVtYmVyRGVjaW1hbDpuZXdNaW5pbmdQb3dlcn0sYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWluaW5nUG93ZXIiLG1pbmluZ1Bvd2VyKSxuZXdNaW5pbmdQb3dlci5taW51cyhvbGRNaW5pbmdQb3dlcil9ZnVuY3Rpb24gZ2V0TmZ0QWNjb3VudChuZnQpe3JldHVybiJtaW5pbmciPT09bmZ0LmRlbGVnYXRlZFRvLmFjY291bnQmJiJjIj09PW5mdC5kZWxlZ2F0ZWRUby5vd25lZEJ5P25mdC5hY2NvdW50OiJ1Ij09PW5mdC5kZWxlZ2F0ZWRUby5vd25lZEJ5P25mdC5kZWxlZ2F0ZWRUby5hY2NvdW50Om51bGx9YXN5bmMgZnVuY3Rpb24gdXBkYXRlTmZ0TWluaW5nUG93ZXIocG9vbCxuZnQsdHlwZVByb3BlcnRpZXMsYWRkLHVwZGF0ZVBvb2xUaW1lc3RhbXApe2NvbnN0IGFjY291bnQ9Z2V0TmZ0QWNjb3VudChuZnQpO2lmKCFhY2NvdW50KXJldHVybiAwO2xldCBtaW5pbmdQb3dlcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWluaW5nUG93ZXIiLHtpZDpwb29sLmlkLGFjY291bnQ6YWNjb3VudH0pLG9sZE1pbmluZ1Bvd2VyPWFwaS5CaWdOdW1iZXIoMCk7aWYobWluaW5nUG93ZXIpe21pbmluZ1Bvd2VyLm5mdEJhbGFuY2VzfHwobWluaW5nUG93ZXIubmZ0QmFsYW5jZXM9e30pO2NvbnN0e25mdEJhbGFuY2VzOm5mdEJhbGFuY2VzfT1taW5pbmdQb3dlcjtmb3IobGV0IGk9MDtpPHBvb2wubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwcm9wZXJ0eT1wb29sLm5mdFRva2VuTWluZXIucHJvcGVydGllc1tpXSxvcEluZm89UFJPUEVSVFlfT1BTW3Byb3BlcnR5Lm9wXTtuZnRCYWxhbmNlc1tpXSYmbWluaW5nUG93ZXIudXBkYXRlUG9vbFRpbWVzdGFtcD09PXVwZGF0ZVBvb2xUaW1lc3RhbXB8fChuZnRCYWxhbmNlc1tpXT1vcEluZm8uZGVmYXVsdFZhbHVlKSxuZnRCYWxhbmNlc1tpXT1hZGQ/b3BJbmZvLmFkZChuZnRCYWxhbmNlc1tpXSx0eXBlUHJvcGVydGllc1tpXSk6b3BJbmZvLnJlbW92ZShuZnRCYWxhbmNlc1tpXSx0eXBlUHJvcGVydGllc1tpXSl9b2xkTWluaW5nUG93ZXI9bWluaW5nUG93ZXIucG93ZXIuJG51bWJlckRlY2ltYWx9ZWxzZXtjb25zdCBuZnRCYWxhbmNlcz17fTtmb3IobGV0IGk9MDtpPHBvb2wubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzLmxlbmd0aDtpKz0xKXtjb25zdCBwcm9wZXJ0eT1wb29sLm5mdFRva2VuTWluZXIucHJvcGVydGllc1tpXSxvcEluZm89UFJPUEVSVFlfT1BTW3Byb3BlcnR5Lm9wXTthZGQ/bmZ0QmFsYW5jZXNbaV09b3BJbmZvLmFkZChvcEluZm8uZGVmYXVsdFZhbHVlLHR5cGVQcm9wZXJ0aWVzW2ldKTphcGkuYXNzZXJ0KCExLCJ1bmV4cGVjdGVkIGNvbmRpdGlvbjogcmVtb3ZlIHdpdGhvdXQgcHJldmlvdXMgbWluaW5nUG93ZXIiKX1taW5pbmdQb3dlcj17aWQ6cG9vbC5pZCxhY2NvdW50OmFjY291bnQsYmFsYW5jZXM6e30sbmZ0QmFsYW5jZXM6bmZ0QmFsYW5jZXMscG93ZXI6eyRudW1iZXJEZWNpbWFsOiIwIn19LG1pbmluZ1Bvd2VyPWF3YWl0IGFwaS5kYi5pbnNlcnQoIm1pbmluZ1Bvd2VyIixtaW5pbmdQb3dlcil9Y29uc3QgbmV3TWluaW5nUG93ZXI9Y29tcHV0ZU1pbmluZ1Bvd2VyKG1pbmluZ1Bvd2VyLHBvb2wudG9rZW5NaW5lcnMscG9vbC5uZnRUb2tlbk1pbmVyKTtyZXR1cm4gbWluaW5nUG93ZXIucG93ZXI9eyRudW1iZXJEZWNpbWFsOm5ld01pbmluZ1Bvd2VyfSxtaW5pbmdQb3dlci51cGRhdGVQb29sVGltZXN0YW1wPXVwZGF0ZVBvb2xUaW1lc3RhbXAsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWluaW5nUG93ZXIiLG1pbmluZ1Bvd2VyKSxuZXdNaW5pbmdQb3dlci5taW51cyhvbGRNaW5pbmdQb3dlcil9YXN5bmMgZnVuY3Rpb24gaW5pdE1pbmluZ1Bvd2VyKHBvb2wscGFyYW1zLHRva2VuLGxhc3RJZCl7bGV0IGJhbGFuY2VzLGFkanVzdGVkUG93ZXI9YXBpLkJpZ051bWJlcigwKSxvZmZzZXQ9MCxsYXN0SWRQcm9jZXNzZWQ9bGFzdElkLGNvbXBsZXRlPSExO2Zvcig7IWNvbXBsZXRlJiZvZmZzZXQ8cGFyYW1zLm1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s7KXtiYWxhbmNlcz1hd2FpdCBhcGkuZGIuZmluZEluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7c3ltYm9sOnRva2VuLF9pZDp7JGd0Omxhc3RJZH19LHBhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdCxvZmZzZXQsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8YmFsYW5jZXMubGVuZ3RoO2krPTEpe2NvbnN0IGJhbGFuY2U9YmFsYW5jZXNbaV07aWYoYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5ndCgwKXx8YXBpLkJpZ051bWJlcihiYWxhbmNlLmRlbGVnYXRpb25zSW4pLmd0KDApKXtjb25zdCBhZGp1c3RlZD1hd2FpdCB1cGRhdGVNaW5pbmdQb3dlcihwb29sLHRva2VuLGJhbGFuY2UuYWNjb3VudCxiYWxhbmNlLnN0YWtlLGJhbGFuY2UuZGVsZWdhdGlvbnNJbiwhMCk7YWRqdXN0ZWRQb3dlcj1hZGp1c3RlZFBvd2VyLnBsdXMoYWRqdXN0ZWQpfWxhc3RJZFByb2Nlc3NlZD1iYWxhbmNlLl9pZH1iYWxhbmNlcy5sZW5ndGg8cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0JiYoY29tcGxldGU9ITApLG9mZnNldCs9cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0fXJldHVybnthZGp1c3RlZFBvd2VyOmFkanVzdGVkUG93ZXIsbmV4dElkOmxhc3RJZFByb2Nlc3NlZCxjb21wbGV0ZTpjb21wbGV0ZX19YXN5bmMgZnVuY3Rpb24gaW5pdE5mdE1pbmluZ1Bvd2VyKHBvb2wsdXBkYXRlUG9vbFRpbWVzdGFtcCxwYXJhbXMsbmZ0VG9rZW5NaW5lcixsYXN0SWQpe2xldCBuZnRzLGFkanVzdGVkUG93ZXI9YXBpLkJpZ051bWJlcigwKSxvZmZzZXQ9MCxsYXN0SWRQcm9jZXNzZWQ9bGFzdElkLGNvbXBsZXRlPSExO2Zvcig7IWNvbXBsZXRlJiZvZmZzZXQ8cGFyYW1zLm1heEJhbGFuY2VzUHJvY2Vzc2VkUGVyQmxvY2s7KXtuZnRzPWF3YWl0IGFwaS5kYi5maW5kSW5UYWJsZSgibmZ0IixuZnRUb2tlbk1pbmVyLnN5bWJvbCsiaW5zdGFuY2VzIix7X2lkOnskZ3Q6bGFzdElkfSxkZWxlZ2F0ZWRUbzp7JG5lOm51bGx9fSxwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQsb2Zmc2V0LFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGk9MDtpPG5mdHMubGVuZ3RoO2krPTEpe2NvbnN0IG5mdD1uZnRzW2ldO2lmKG5mdFRva2VuTWluZXIudHlwZU1hcFtuZnQucHJvcGVydGllc1tuZnRUb2tlbk1pbmVyLnR5cGVGaWVsZF1dKXtjb25zdCBhZGp1c3RlZD1hd2FpdCB1cGRhdGVOZnRNaW5pbmdQb3dlcihwb29sLG5mdCxuZnRUb2tlbk1pbmVyLnR5cGVNYXBbbmZ0LnByb3BlcnRpZXNbbmZ0VG9rZW5NaW5lci50eXBlRmllbGRdXSwhMCx1cGRhdGVQb29sVGltZXN0YW1wKTthZGp1c3RlZFBvd2VyPWFkanVzdGVkUG93ZXIucGx1cyhhZGp1c3RlZCl9bGFzdElkUHJvY2Vzc2VkPW5mdC5faWR9bmZ0cy5sZW5ndGg8cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0JiYoY29tcGxldGU9ITApLG9mZnNldCs9cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0fXJldHVybnthZGp1c3RlZFBvd2VyOmFkanVzdGVkUG93ZXIsbmV4dElkOmxhc3RJZFByb2Nlc3NlZCxjb21wbGV0ZTpjb21wbGV0ZX19YXN5bmMgZnVuY3Rpb24gcmVzdW1lUG93ZXJVcGRhdGUocG9vbCxwYXJhbXMpe2xldHtpblByb2dyZXNzOmluUHJvZ3Jlc3MsdG9rZW5JbmRleDp0b2tlbkluZGV4LG5mdFRva2VuSW5kZXg6bmZ0VG9rZW5JbmRleCxsYXN0SWQ6bGFzdElkfT1wb29sLnVwZGF0aW5nO2NvbnN0e3VwZGF0ZVBvb2xUaW1lc3RhbXA6dXBkYXRlUG9vbFRpbWVzdGFtcH09cG9vbC51cGRhdGluZztpZighaW5Qcm9ncmVzcylyZXR1cm47aWYodG9rZW5JbmRleDxwb29sLnRva2VuTWluZXJzLmxlbmd0aCl7Y29uc3QgdG9rZW5Db25maWc9cG9vbC50b2tlbk1pbmVyc1t0b2tlbkluZGV4XSx7YWRqdXN0ZWRQb3dlcjphZGp1c3RlZFBvd2VyLG5leHRJZDpuZXh0SWQsY29tcGxldGU6Y29tcGxldGV9PWF3YWl0IGluaXRNaW5pbmdQb3dlcihwb29sLHBhcmFtcyx0b2tlbkNvbmZpZy5zeW1ib2wsbGFzdElkKTtwb29sLnRvdGFsUG93ZXI9YXBpLkJpZ051bWJlcihwb29sLnRvdGFsUG93ZXIpLnBsdXMoYWRqdXN0ZWRQb3dlciksY29tcGxldGU/KGxhc3RJZD0wLHRva2VuSW5kZXgrPTEpOmxhc3RJZD1uZXh0SWR9ZWxzZSBpZihwb29sLm5mdFRva2VuTWluZXImJm5mdFRva2VuSW5kZXg8MSl7Y29uc3R7bmZ0VG9rZW5NaW5lcjpuZnRUb2tlbk1pbmVyfT1wb29sLHthZGp1c3RlZFBvd2VyOmFkanVzdGVkUG93ZXIsbmV4dElkOm5leHRJZCxjb21wbGV0ZTpjb21wbGV0ZX09YXdhaXQgaW5pdE5mdE1pbmluZ1Bvd2VyKHBvb2wsdXBkYXRlUG9vbFRpbWVzdGFtcCxwYXJhbXMsbmZ0VG9rZW5NaW5lcixsYXN0SWQpO3Bvb2wudG90YWxQb3dlcj1hcGkuQmlnTnVtYmVyKHBvb2wudG90YWxQb3dlcikucGx1cyhhZGp1c3RlZFBvd2VyKSxjb21wbGV0ZT8obGFzdElkPTAsbmZ0VG9rZW5JbmRleCs9MSk6bGFzdElkPW5leHRJZH10b2tlbkluZGV4IT09cG9vbC50b2tlbk1pbmVycy5sZW5ndGh8fHBvb2wubmZ0VG9rZW5NaW5lciYmMSE9PW5mdFRva2VuSW5kZXh8fChpblByb2dyZXNzPSExLHRva2VuSW5kZXg9MCxuZnRUb2tlbkluZGV4PTApO2NvbnN0e3VwZGF0aW5nOnVwZGF0aW5nfT1wb29sO3VwZGF0aW5nLmluUHJvZ3Jlc3M9aW5Qcm9ncmVzcyx1cGRhdGluZy50b2tlbkluZGV4PXRva2VuSW5kZXgsdXBkYXRpbmcubmZ0VG9rZW5JbmRleD1uZnRUb2tlbkluZGV4LHVwZGF0aW5nLmxhc3RJZD1sYXN0SWQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHBvb2wpfWZ1bmN0aW9uIGdlbmVyYXRlUG9vbElkKHBvb2wpe2NvbnN0IHRva2VuTWluZXJTdHJpbmc9cG9vbC50b2tlbk1pbmVycy5tYXAodD0+dC5zeW1ib2wucmVwbGFjZSgiLiIsIi0iKSkuc29ydCgpLmpvaW4oIiwiKSxuZnRUb2tlbk1pbmVyU3RyaW5nPXBvb2wubmZ0VG9rZW5NaW5lcj8iOiIrcG9vbC5uZnRUb2tlbk1pbmVyLnN5bWJvbDoiIjtyZXR1cm5gJHtwb29sLm1pbmVkVG9rZW4ucmVwbGFjZSgiLiIsIi0iKX06JHt0b2tlbk1pbmVyU3RyaW5nfSR7bmZ0VG9rZW5NaW5lclN0cmluZ31gfWFzeW5jIGZ1bmN0aW9uIHJ1bkxvdHRlcnkocG9vbCxwYXJhbXMpe2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLHdpbm5pbmdOdW1iZXJzPVtdLG1pbmVkVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cG9vbC5taW5lZFRva2VufSksd2lubmluZ0Ftb3VudD1hcGkuQmlnTnVtYmVyKHBvb2wubG90dGVyeUFtb3VudCkuZGl2aWRlZEJ5KHBvb2wubG90dGVyeVdpbm5lcnMpLnRvRml4ZWQobWluZWRUb2tlbi5wcmVjaXNpb24pO2ZvcihsZXQgaT0wO2k8cG9vbC5sb3R0ZXJ5V2lubmVycztpKz0xKXdpbm5pbmdOdW1iZXJzW2ldPWFwaS5CaWdOdW1iZXIocG9vbC50b3RhbFBvd2VyKS5tdWx0aXBsaWVkQnkoYXBpLnJhbmRvbSgpKTtsZXQgbWluaW5nUG93ZXJzLG9mZnNldD0wLGN1bXVsYXRpdmVQb3dlcj1hcGkuQmlnTnVtYmVyKDApLG5leHRDdW11bGF0aXZlUG93ZXI9YXBpLkJpZ051bWJlcigwKSxjb21wdXRlZFdpbm5lcnM9MDtjb25zdCB3aW5uZXJzPVtdO2Zvcig7Y29tcHV0ZWRXaW5uZXJzPHBvb2wubG90dGVyeVdpbm5lcnM7KXttaW5pbmdQb3dlcnM9YXdhaXQgYXBpLmRiLmZpbmQoIm1pbmluZ1Bvd2VyIix7aWQ6cG9vbC5pZCxwb3dlcjp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0scGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0LG9mZnNldCxbe2luZGV4OiJwb3dlciIsZGVzY2VuZGluZzohMH0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxtaW5pbmdQb3dlcnMubGVuZ3RoO2krPTEpe2NvbnN0IG1pbmluZ1Bvd2VyPW1pbmluZ1Bvd2Vyc1tpXTtuZXh0Q3VtdWxhdGl2ZVBvd2VyPWN1bXVsYXRpdmVQb3dlci5wbHVzKG1pbmluZ1Bvd2VyLnBvd2VyLiRudW1iZXJEZWNpbWFsKTtmb3IobGV0IGo9MDtqPHBvb2wubG90dGVyeVdpbm5lcnM7ais9MSl7Y29uc3QgY3VycmVudFdpbm5pbmdOdW1iZXI9d2lubmluZ051bWJlcnNbal07Y3VtdWxhdGl2ZVBvd2VyLmx0ZShjdXJyZW50V2lubmluZ051bWJlcikmJm5leHRDdW11bGF0aXZlUG93ZXIuZ3QoY3VycmVudFdpbm5pbmdOdW1iZXIpJiYoY29tcHV0ZWRXaW5uZXJzKz0xLHdpbm5lcnMucHVzaCh7d2lubmVyOm1pbmluZ1Bvd2VyLmFjY291bnQsd2lubmluZ051bWJlcjpjdXJyZW50V2lubmluZ051bWJlcix3aW5uaW5nQW1vdW50Ondpbm5pbmdBbW91bnR9KSl9Y3VtdWxhdGl2ZVBvd2VyPW5leHRDdW11bGF0aXZlUG93ZXJ9aWYoY29tcHV0ZWRXaW5uZXJzPT09cG9vbC5sb3R0ZXJ5V2lubmVyc3x8bWluaW5nUG93ZXJzLmxlbmd0aDxwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQpYnJlYWs7b2Zmc2V0Kz1wYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXR9YXBpLmVtaXQoIm1pbmluZ0xvdHRlcnkiLHtwb29sSWQ6cG9vbC5pZCx3aW5uZXJzOndpbm5lcnN9KTtmb3IobGV0IGk9MDtpPHdpbm5lcnMubGVuZ3RoO2krPTEpe2NvbnN0IHdpbm5lcj13aW5uZXJzW2ldO2F3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwiaXNzdWUiLHt0bzp3aW5uZXIud2lubmVyLHN5bWJvbDptaW5lZFRva2VuLnN5bWJvbCxxdWFudGl0eTp3aW5uaW5nQW1vdW50fSl9cG9vbC5uZXh0TG90dGVyeVRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnBsdXMoMzYwMCpwb29sLmxvdHRlcnlJbnRlcnZhbEhvdXJzKjFlMykudG9OdW1iZXIoKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCl9YWN0aW9ucy5zZXRBY3RpdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkLGFjdGl2ZTphY3RpdmUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikpcmV0dXJuO2NvbnN0IHBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7aWQ6aWR9KTtpZihhcGkuYXNzZXJ0KHBvb2wsInBvb2wgaWQgbm90IGZvdW5kIikpe3Bvb2wuYWN0aXZlPSEhYWN0aXZlO2NvbnN0IG1pbmVkVG9rZW5PYmplY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cG9vbC5taW5lZFRva2VufSk7aWYoYXBpLmFzc2VydChtaW5lZFRva2VuT2JqZWN0JiYobWluZWRUb2tlbk9iamVjdC5pc3N1ZXI9PT1hcGkuc2VuZGVyfHwiQkVFIj09PW1pbmVkVG9rZW5PYmplY3Quc3ltYm9sJiZhcGkuc2VuZGVyPT09YXBpLm93bmVyKSwibXVzdCBiZSBpc3N1ZXIgb2YgbWluZWRUb2tlbiIpKXtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKTtwb29sLm5leHRMb3R0ZXJ5VGltZXN0YW1wPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkucGx1cygzNjAwKnBvb2wubG90dGVyeUludGVydmFsSG91cnMqMWUzKS50b051bWJlcigpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvb2xzIixwb29sKX19fSxhY3Rpb25zLnVwZGF0ZVBvb2w9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkLGxvdHRlcnlXaW5uZXJzOmxvdHRlcnlXaW5uZXJzLGxvdHRlcnlJbnRlcnZhbEhvdXJzOmxvdHRlcnlJbnRlcnZhbEhvdXJzLGxvdHRlcnlBbW91bnQ6bG90dGVyeUFtb3VudCx0b2tlbk1pbmVyczp0b2tlbk1pbmVycyxuZnRUb2tlbk1pbmVyOm5mdFRva2VuTWluZXIsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtwb29sVXBkYXRlRmVlOnBvb2xVcGRhdGVGZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZD0hKCFhcGkuQmlnTnVtYmVyKHBvb2xVcGRhdGVGZWUpLmx0ZSgwKSYmYXBpLnNlbmRlciE9PWFwaS5vd25lcil8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUocG9vbFVwZGF0ZUZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIHVwZGF0ZSBmZWUiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoaWQmJiJzdHJpbmciPT10eXBlb2YgaWQmJmxvdHRlcnlBbW91bnQmJiJzdHJpbmciPT10eXBlb2YgbG90dGVyeUFtb3VudCYmIWFwaS5CaWdOdW1iZXIobG90dGVyeUFtb3VudCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihsb3R0ZXJ5QW1vdW50KS5ndCgwKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGxvdHRlcnlXaW5uZXJzKSYmbG90dGVyeVdpbm5lcnM+PTEmJmxvdHRlcnlXaW5uZXJzPD0yMCwiaW52YWxpZCBsb3R0ZXJ5V2lubmVyczogaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDIwIG9ubHkiKSYmYXBpLmFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGxvdHRlcnlJbnRlcnZhbEhvdXJzKSYmbG90dGVyeUludGVydmFsSG91cnM+PTEmJmxvdHRlcnlJbnRlcnZhbEhvdXJzPD03MjAsImludmFsaWQgbG90dGVyeUludGVydmFsSG91cnM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCA3MjAgb25seSIpKXtjb25zdCBwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse2lkOmlkfSk7aWYoYXBpLmFzc2VydChwb29sLCJwb29sIGlkIG5vdCBmb3VuZCIpKXtjb25zdCBtaW5lZFRva2VuT2JqZWN0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnBvb2wubWluZWRUb2tlbn0pO2lmKGFwaS5hc3NlcnQobWluZWRUb2tlbk9iamVjdCYmKG1pbmVkVG9rZW5PYmplY3QuaXNzdWVyPT09YXBpLnNlbmRlcnx8IkJFRSI9PT1taW5lZFRva2VuT2JqZWN0LnN5bWJvbCYmYXBpLnNlbmRlcj09PWFwaS5vd25lciksIm11c3QgYmUgaXNzdWVyIG9mIG1pbmVkVG9rZW4iKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGxvdHRlcnlBbW91bnQpLmRwKCk8PW1pbmVkVG9rZW5PYmplY3QucHJlY2lzaW9uLCJtaW5lZFRva2VuIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgbG90dGVyeUFtb3VudCIpKXtjb25zdCB2YWxpZE1pbmVyc0NoYW5nZT1hd2FpdCB2YWxpZGF0ZVRva2VuTWluZXJzQ2hhbmdlKHBvb2wudG9rZW5NaW5lcnMsdG9rZW5NaW5lcnMscG9vbC5uZnRUb2tlbk1pbmVyLG5mdFRva2VuTWluZXIpO2lmKHZhbGlkTWluZXJzQ2hhbmdlKXtwb29sLmxvdHRlcnlXaW5uZXJzPWxvdHRlcnlXaW5uZXJzLHBvb2wubG90dGVyeUludGVydmFsSG91cnM9bG90dGVyeUludGVydmFsSG91cnMscG9vbC5sb3R0ZXJ5QW1vdW50PWxvdHRlcnlBbW91bnQscG9vbC50b2tlbk1pbmVycz10b2tlbk1pbmVycyxwb29sLm5mdFRva2VuTWluZXI9bmZ0VG9rZW5NaW5lcjtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKTt2YWxpZE1pbmVyc0NoYW5nZS5jaGFuZ2VkJiYocG9vbC51cGRhdGluZy51cGRhdGVQb29sVGltZXN0YW1wPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkudG9OdW1iZXIoKSxwb29sLnVwZGF0aW5nLmluUHJvZ3Jlc3M9ITAscG9vbC51cGRhdGluZy50b2tlbkluZGV4PTAscG9vbC51cGRhdGluZy5uZnRUb2tlbkluZGV4PTAscG9vbC51cGRhdGluZy5sYXN0SWQ9MCkscG9vbC5uZXh0TG90dGVyeVRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnBsdXMoMzYwMCpsb3R0ZXJ5SW50ZXJ2YWxIb3VycyoxZTMpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHBvb2wpLGFwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIocG9vbFVwZGF0ZUZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OnBvb2xVcGRhdGVGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pfX19fX0sYWN0aW9ucy5jaGFuZ2VOZnRQcm9wZXJ0eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7aWQ6aWQsdHlwZTp0eXBlLHByb3BlcnR5TmFtZTpwcm9wZXJ0eU5hbWUsY2hhbmdlQW1vdW50OmNoYW5nZUFtb3VudCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KGlkJiYic3RyaW5nIj09dHlwZW9mIGlkJiZ0eXBlJiYic3RyaW5nIj09dHlwZW9mIHR5cGUmJnByb3BlcnR5TmFtZSYmInN0cmluZyI9PXR5cGVvZiBwcm9wZXJ0eU5hbWUmJmNoYW5nZUFtb3VudCYmInN0cmluZyI9PXR5cGVvZiBjaGFuZ2VBbW91bnQmJiFhcGkuQmlnTnVtYmVyKGNoYW5nZUFtb3VudCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihjaGFuZ2VBbW91bnQpLmlzRmluaXRlKCksImludmFsaWQgcGFyYW1zIikpcmV0dXJuO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgcG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHtpZDppZH0pO2lmKCFhcGkuYXNzZXJ0KHBvb2wsInBvb2wgaWQgbm90IGZvdW5kIikpcmV0dXJuO2NvbnN0IHByb3BlcnR5SW5kZXg9cG9vbC5uZnRUb2tlbk1pbmVyLnByb3BlcnRpZXMuZmluZEluZGV4KHA9PnAubmFtZT09PXByb3BlcnR5TmFtZSkscHJvcGVydHk9cG9vbC5uZnRUb2tlbk1pbmVyLnByb3BlcnRpZXNbcHJvcGVydHlJbmRleF07aWYoIWFwaS5hc3NlcnQocHJvcGVydHkmJnByb3BlcnR5LmJ1cm5DaGFuZ2UsInByb3BlcnR5IG5vdCBlbmFibGVkIGZvciBidXJuIGNoYW5nZSIpKXJldHVybjtjb25zdCB0eXBlUHJvcGVydGllcz1wb29sLm5mdFRva2VuTWluZXIudHlwZU1hcFt0eXBlXTtpZighYXBpLmFzc2VydCh0eXBlUHJvcGVydGllcywidHlwZSBub3QgZm91bmQiKSlyZXR1cm47Y29uc3QgYnVyblN5bWJvbD1wcm9wZXJ0eS5idXJuQ2hhbmdlLnN5bWJvbCx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpidXJuU3ltYm9sfSksZmVlPWFwaS5CaWdOdW1iZXIoY2hhbmdlQW1vdW50KS5hYnMoKS5tdWx0aXBsaWVkQnkocHJvcGVydHkuYnVybkNoYW5nZS5xdWFudGl0eSk7aWYoIWFwaS5hc3NlcnQoZmVlLmRwKCk8PXRva2VuLnByZWNpc2lvbiwiZmVlIHByZWNpc2lvbiBtaXNtYXRjaCBmb3IgYW1vdW50ICIrZmVlKSlyZXR1cm47Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpidXJuU3ltYm9sfSksYXV0aG9yaXplZD1hcGkuQmlnTnVtYmVyKGZlZSkubHRlKDApfHxiYWxhbmNlJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3RlKGZlZSk7aWYoIWFwaS5hc3NlcnQoYXV0aG9yaXplZCxgeW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSB1cGRhdGUgZmVlIG9mICR7ZmVlfSAke2J1cm5TeW1ib2x9YCkpcmV0dXJuO2lmKHR5cGVQcm9wZXJ0aWVzW3Byb3BlcnR5SW5kZXhdPWFwaS5CaWdOdW1iZXIodHlwZVByb3BlcnRpZXNbcHJvcGVydHlJbmRleF0pLnBsdXMoY2hhbmdlQW1vdW50KSwhdmFsaWRhdGVOZnRUeXBlTWFwKHBvb2wubmZ0VG9rZW5NaW5lci50eXBlTWFwLHBvb2wubmZ0VG9rZW5NaW5lci5wcm9wZXJ0aWVzKSlyZXR1cm47Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIik7cG9vbC51cGRhdGluZy51cGRhdGVQb29sVGltZXN0YW1wPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkudG9OdW1iZXIoKSxwb29sLnVwZGF0aW5nLmluUHJvZ3Jlc3M9ITAscG9vbC51cGRhdGluZy50b2tlbkluZGV4PTAscG9vbC51cGRhdGluZy5uZnRUb2tlbkluZGV4PTAscG9vbC51cGRhdGluZy5sYXN0SWQ9MCxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCksYXBpLkJpZ051bWJlcihmZWUpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDpidXJuU3ltYm9sLHF1YW50aXR5OmZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSl9LGFjdGlvbnMuY3JlYXRlUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7bG90dGVyeVdpbm5lcnM6bG90dGVyeVdpbm5lcnMsbG90dGVyeUludGVydmFsSG91cnM6bG90dGVyeUludGVydmFsSG91cnMsbG90dGVyeUFtb3VudDpsb3R0ZXJ5QW1vdW50LG1pbmVkVG9rZW46bWluZWRUb2tlbix0b2tlbk1pbmVyczp0b2tlbk1pbmVycyxuZnRUb2tlbk1pbmVyOm5mdFRva2VuTWluZXIsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtwb29sQ3JlYXRpb25GZWU6cG9vbENyZWF0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hKCFhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShwb29sQ3JlYXRpb25GZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZENyZWF0aW9uLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChtaW5lZFRva2VuJiYic3RyaW5nIj09dHlwZW9mIG1pbmVkVG9rZW4mJmxvdHRlcnlBbW91bnQmJiJzdHJpbmciPT10eXBlb2YgbG90dGVyeUFtb3VudCYmIWFwaS5CaWdOdW1iZXIobG90dGVyeUFtb3VudCkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihsb3R0ZXJ5QW1vdW50KS5ndCgwKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChtaW5lZFRva2VuLmxlbmd0aD4wJiZtaW5lZFRva2VuLmxlbmd0aDw9MTAsImludmFsaWQgc3ltYm9sOiB1cHBlcmNhc2UgbGV0dGVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwIikmJmFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihsb3R0ZXJ5V2lubmVycykmJmxvdHRlcnlXaW5uZXJzPj0xJiZsb3R0ZXJ5V2lubmVyczw9MjAsImludmFsaWQgbG90dGVyeVdpbm5lcnM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCAyMCBvbmx5IikmJmFwaS5hc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihsb3R0ZXJ5SW50ZXJ2YWxIb3VycykmJmxvdHRlcnlJbnRlcnZhbEhvdXJzPj0xJiZsb3R0ZXJ5SW50ZXJ2YWxIb3Vyczw9NzIwLCJpbnZhbGlkIGxvdHRlcnlJbnRlcnZhbEhvdXJzOiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgNzIwIG9ubHkiKSl7Y29uc3QgbWluZWRUb2tlbk9iamVjdD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDptaW5lZFRva2VufSk7aWYoYXBpLmFzc2VydChtaW5lZFRva2VuT2JqZWN0LCJtaW5lZFRva2VuIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQobWluZWRUb2tlbk9iamVjdC5pc3N1ZXI9PT1hcGkuc2VuZGVyfHwiQkVFIj09PW1pbmVkVG9rZW5PYmplY3Quc3ltYm9sJiZhcGkuc2VuZGVyPT09YXBpLm93bmVyLCJtdXN0IGJlIGlzc3VlciBvZiBtaW5lZFRva2VuIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihsb3R0ZXJ5QW1vdW50KS5kcCgpPD1taW5lZFRva2VuT2JqZWN0LnByZWNpc2lvbiwibWluZWRUb2tlbiBwcmVjaXNpb24gbWlzbWF0Y2ggZm9yIGxvdHRlcnlBbW91bnQiKSYmYXdhaXQgdmFsaWRhdGVUb2tlbk1pbmVycyh0b2tlbk1pbmVycyxuZnRUb2tlbk1pbmVyKSl7Y29uc3QgYmxvY2tEYXRlPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIiksbmV3UG9vbD17bWluZWRUb2tlbjptaW5lZFRva2VuLGxvdHRlcnlXaW5uZXJzOmxvdHRlcnlXaW5uZXJzLGxvdHRlcnlJbnRlcnZhbEhvdXJzOmxvdHRlcnlJbnRlcnZhbEhvdXJzLGxvdHRlcnlBbW91bnQ6bG90dGVyeUFtb3VudCx0b2tlbk1pbmVyczp0b2tlbk1pbmVycyxuZnRUb2tlbk1pbmVyOm5mdFRva2VuTWluZXIsYWN0aXZlOiExLG5leHRMb3R0ZXJ5VGltZXN0YW1wOmFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkucGx1cygzNjAwKmxvdHRlcnlJbnRlcnZhbEhvdXJzKjFlMykudG9OdW1iZXIoKSx0b3RhbFBvd2VyOiIwIn07bmV3UG9vbC5pZD1nZW5lcmF0ZVBvb2xJZChuZXdQb29sKTtjb25zdCBleGlzdGluZ1Bvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7aWQ6bmV3UG9vbC5pZH0pO2lmKGFwaS5hc3NlcnQoIWV4aXN0aW5nUG9vbCwicG9vbCBhbHJlYWR5IGV4aXN0cyIpKXtmb3IobGV0IGk9MDtpPHRva2VuTWluZXJzLmxlbmd0aDtpKz0xKXtjb25zdCB0b2tlbkNvbmZpZz10b2tlbk1pbmVyc1tpXTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJ0b2tlblBvb2xzIix7c3ltYm9sOnRva2VuQ29uZmlnLnN5bWJvbCxpZDpuZXdQb29sLmlkfSl9bmZ0VG9rZW5NaW5lciYmYXdhaXQgYXBpLmRiLmluc2VydCgibmZ0VG9rZW5Qb29scyIse3N5bWJvbDpuZnRUb2tlbk1pbmVyLnN5bWJvbCxpZDpuZXdQb29sLmlkfSksbmV3UG9vbC51cGRhdGluZz17aW5Qcm9ncmVzczohMCx1cGRhdGVQb29sVGltZXN0YW1wOmFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkudG9OdW1iZXIoKSx0b2tlbkluZGV4OjAsbmZ0VG9rZW5JbmRleDowLGxhc3RJZDowfTtjb25zdCBpbnNlcnRlZFBvb2w9YXdhaXQgYXBpLmRiLmluc2VydCgicG9vbHMiLG5ld1Bvb2wpO2FwaS5zZW5kZXIhPT1hcGkub3duZXImJmFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6cG9vbENyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhcGkuZW1pdCgiY3JlYXRlUG9vbCIse2lkOmluc2VydGVkUG9vbC5pZH0pfX19fSxhY3Rpb25zLmNoZWNrUGVuZGluZ0xvdHRlcmllcz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCkscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx1cGRhdGluZ0xvdHRlcmllcz1hd2FpdCBhcGkuZGIuZmluZCgicG9vbHMiLHsidXBkYXRpbmcuaW5Qcm9ncmVzcyI6ITB9LHBhcmFtcy5tYXhMb3R0ZXJpZXNQZXJCbG9jaywwLFt7aW5kZXg6ImlkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8dXBkYXRpbmdMb3R0ZXJpZXMubGVuZ3RoO2krPTEpe2NvbnN0IHBvb2w9dXBkYXRpbmdMb3R0ZXJpZXNbaV07YXdhaXQgcmVzdW1lUG93ZXJVcGRhdGUocG9vbCxwYXJhbXMpfWNvbnN0IHBlbmRpbmdMb3R0ZXJpZXM9YXdhaXQgYXBpLmRiLmZpbmQoInBvb2xzIix7YWN0aXZlOiEwLCJ1cGRhdGluZy5pblByb2dyZXNzIjohMSxuZXh0TG90dGVyeVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSxwYXJhbXMubWF4TG90dGVyaWVzUGVyQmxvY2ssMCxbe2luZGV4OiJpZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGk9MDtpPHBlbmRpbmdMb3R0ZXJpZXMubGVuZ3RoO2krPTEpe2NvbnN0IHBvb2w9cGVuZGluZ0xvdHRlcmllc1tpXTthd2FpdCBydW5Mb3R0ZXJ5KHBvb2wscGFyYW1zKX19fSxhY3Rpb25zLmhhbmRsZVN0YWtlQ2hhbmdlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxkZWxlZ2F0ZWQ6ZGVsZWdhdGVkLGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDthcGkuYXNzZXJ0KGNhbGxpbmdDb250cmFjdEluZm8mJiJ0b2tlbnMiPT09Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lLCJtdXN0IGJlIGNhbGxlZCBmcm9tIHRva2VucyBjb250cmFjdCIpJiZhd2FpdCBmaW5kQW5kUHJvY2Vzc0FsbCgibWluaW5nIiwidG9rZW5Qb29scyIse3N5bWJvbDpzeW1ib2x9LGFzeW5jIHRva2VuUG9vbD0+e2NvbnN0IHBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7aWQ6dG9rZW5Qb29sLmlkfSk7bGV0IGFkanVzdGVkO2FkanVzdGVkPWRlbGVnYXRlZD9hd2FpdCB1cGRhdGVNaW5pbmdQb3dlcihwb29sLHN5bWJvbCxhY2NvdW50LDAscXVhbnRpdHkpOmF3YWl0IHVwZGF0ZU1pbmluZ1Bvd2VyKHBvb2wsc3ltYm9sLGFjY291bnQscXVhbnRpdHksMCkscG9vbC50b3RhbFBvd2VyPWFkanVzdGVkLnBsdXMocG9vbC50b3RhbFBvd2VyKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwb29scyIscG9vbCl9KX0sYWN0aW9ucy5oYW5kbGVOZnRDaGFuZ2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsbmZ0Om5mdCxhZGQ6YWRkLGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDthcGkuYXNzZXJ0KGNhbGxpbmdDb250cmFjdEluZm8mJiJuZnQiPT09Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lLCJtdXN0IGJlIGNhbGxlZCBmcm9tIG5mdCBjb250cmFjdCIpJiZhd2FpdCBmaW5kQW5kUHJvY2Vzc0FsbCgibWluaW5nIiwibmZ0VG9rZW5Qb29scyIse3N5bWJvbDpzeW1ib2x9LGFzeW5jIHRva2VuUG9vbD0+e2NvbnN0IHBvb2w9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBvb2xzIix7aWQ6dG9rZW5Qb29sLmlkfSk7aWYocG9vbC51cGRhdGluZy5pblByb2dyZXNzJiZwb29sLnVwZGF0aW5nLnRva2VuSW5kZXg9PT1wb29sLnRva2VuTWluZXJzLmxlbmd0aCYmcG9vbC51cGRhdGluZy5sYXN0SWQ8bmZ0Ll9pZClyZXR1cm47Y29uc3QgdHlwZVByb3BlcnRpZXM9cG9vbC5uZnRUb2tlbk1pbmVyLnR5cGVNYXBbbmZ0LnByb3BlcnRpZXNbcG9vbC5uZnRUb2tlbk1pbmVyLnR5cGVGaWVsZF1dO2lmKHR5cGVQcm9wZXJ0aWVzKXtjb25zdCBhZGp1c3RlZD1hd2FpdCB1cGRhdGVOZnRNaW5pbmdQb3dlcihwb29sLG5mdCx0eXBlUHJvcGVydGllcyxhZGQscG9vbC51cGRhdGluZy51cGRhdGVQb29sVGltZXN0YW1wKTtwb29sLnRvdGFsUG93ZXI9YWRqdXN0ZWQucGx1cyhwb29sLnRvdGFsUG93ZXIpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBvb2xzIixwb29sKX19KX07"}}}