Market Smart Contract

in #hive-engine4 months ago

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"market","params":"","code":"Y29uc3QgSElWRV9QRUdHRURfU1lNQk9MPSJTV0FQLkhJVkUiLEhJVkVfUEVHR0VEX1NZTUJPTF9QUkVTSUNJT049OCxDT05UUkFDVF9OQU1FPSJtYXJrZXQiLEFDQ09VTlRfQkxBQ0tMSVNUPXtzdW5zZXRqZXN1czoxLHdhaXRpbmdmb3Jsb3ZlOjEsdGhlbmlnaHRzOjEsdGhlZGF5czoxfSxnZXRNZXRyaWM9YXN5bmMgc3ltYm9sPT57bGV0IG1ldHJpYz1hd2FpdCBhcGkuZGIuZmluZE9uZSgibWV0cmljcyIse3N5bWJvbDpzeW1ib2x9KTtpZihudWxsPT09bWV0cmljKXttZXRyaWM9e30sbWV0cmljLnN5bWJvbD1zeW1ib2wsbWV0cmljLnZvbHVtZT0iMCIsbWV0cmljLnZvbHVtZUV4cGlyYXRpb249MCxtZXRyaWMubGFzdFByaWNlPSIwIixtZXRyaWMubG93ZXN0QXNrPSIwIixtZXRyaWMuaGlnaGVzdEJpZD0iMCIsbWV0cmljLmxhc3REYXlQcmljZT0iMCIsbWV0cmljLmxhc3REYXlQcmljZUV4cGlyYXRpb249MCxtZXRyaWMucHJpY2VDaGFuZ2VIaXZlPSIwIixtZXRyaWMucHJpY2VDaGFuZ2VQZXJjZW50PSIwIjtyZXR1cm4gYXdhaXQgYXBpLmRiLmluc2VydCgibWV0cmljcyIsbWV0cmljKX1yZXR1cm4gbWV0cmljfSx1cGRhdGVWb2x1bWVNZXRyaWM9YXN5bmMoc3ltYm9sLHF1YW50aXR5LGFkZD0hMCk9Pntjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSx0aW1lc3RhbXBTZWM9YmxvY2tEYXRlLmdldFRpbWUoKS8xZTMsbWV0cmljPWF3YWl0IGdldE1ldHJpYyhzeW1ib2wpOyEwPT09YWRkPyhtZXRyaWMudm9sdW1lRXhwaXJhdGlvbjx0aW1lc3RhbXBTZWMmJihtZXRyaWMudm9sdW1lPSIwLjAwMCIpLG1ldHJpYy52b2x1bWU9YXBpLkJpZ051bWJlcihtZXRyaWMudm9sdW1lKS5wbHVzKHF1YW50aXR5KS50b0ZpeGVkKDgpLG1ldHJpYy52b2x1bWVFeHBpcmF0aW9uPWJsb2NrRGF0ZS5zZXRVVENEYXRlKGJsb2NrRGF0ZS5nZXRVVENEYXRlKCkrMSkvMWUzKTptZXRyaWMudm9sdW1lPWFwaS5CaWdOdW1iZXIobWV0cmljLnZvbHVtZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQoOCksYXBpLkJpZ051bWJlcihtZXRyaWMudm9sdW1lKS5sdCgwKSYmKG1ldHJpYy52b2x1bWU9IjAuMDAwIiksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWV0cmljcyIsbWV0cmljKX0sdXBkYXRlUHJpY2VNZXRyaWNzPWFzeW5jKHN5bWJvbCxwcmljZSk9Pntjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSx0aW1lc3RhbXBTZWM9YmxvY2tEYXRlLmdldFRpbWUoKS8xZTMsbWV0cmljPWF3YWl0IGdldE1ldHJpYyhzeW1ib2wpO21ldHJpYy5sYXN0UHJpY2U9cHJpY2UsbWV0cmljLmxhc3REYXlQcmljZUV4cGlyYXRpb248dGltZXN0YW1wU2VjPyhtZXRyaWMubGFzdERheVByaWNlPXByaWNlLG1ldHJpYy5sYXN0RGF5UHJpY2VFeHBpcmF0aW9uPWJsb2NrRGF0ZS5zZXRVVENEYXRlKGJsb2NrRGF0ZS5nZXRVVENEYXRlKCkrMSkvMWUzLG1ldHJpYy5wcmljZUNoYW5nZUhpdmU9IjAiLG1ldHJpYy5wcmljZUNoYW5nZVBlcmNlbnQ9IjAlIik6KG1ldHJpYy5wcmljZUNoYW5nZUhpdmU9YXBpLkJpZ051bWJlcihwcmljZSkubWludXMobWV0cmljLmxhc3REYXlQcmljZSkudG9GaXhlZCg4KSxtZXRyaWMucHJpY2VDaGFuZ2VQZXJjZW50PWFwaS5CaWdOdW1iZXIobWV0cmljLnByaWNlQ2hhbmdlSGl2ZSkuZGl2aWRlZEJ5KG1ldHJpYy5sYXN0RGF5UHJpY2UpLm11bHRpcGxpZWRCeSgxMDApLnRvRml4ZWQoMikrIiUiKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJtZXRyaWNzIixtZXRyaWMpfSx1cGRhdGVCaWRNZXRyaWM9YXN5bmMgc3ltYm9sPT57Y29uc3QgbWV0cmljPWF3YWl0IGdldE1ldHJpYyhzeW1ib2wpLGJ1eU9yZGVyQm9vaz1hd2FpdCBhcGkuZGIuZmluZCgiYnV5Qm9vayIse3N5bWJvbDpzeW1ib2x9LDEsMCxbe2luZGV4OiJwcmljZURlYyIsZGVzY2VuZGluZzohMH1dKTtidXlPcmRlckJvb2subGVuZ3RoPjA/bWV0cmljLmhpZ2hlc3RCaWQ9YnV5T3JkZXJCb29rWzBdLnByaWNlOm1ldHJpYy5oaWdoZXN0QmlkPSIwIixhd2FpdCBhcGkuZGIudXBkYXRlKCJtZXRyaWNzIixtZXRyaWMpfSx1cGRhdGVBc2tNZXRyaWM9YXN5bmMgc3ltYm9sPT57Y29uc3QgbWV0cmljPWF3YWl0IGdldE1ldHJpYyhzeW1ib2wpLHNlbGxPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoInNlbGxCb29rIix7c3ltYm9sOnN5bWJvbH0sMSwwLFt7aW5kZXg6InByaWNlRGVjIixkZXNjZW5kaW5nOiExfV0pO3NlbGxPcmRlckJvb2subGVuZ3RoPjA/bWV0cmljLmxvd2VzdEFzaz1zZWxsT3JkZXJCb29rWzBdLnByaWNlOm1ldHJpYy5sb3dlc3RBc2s9IjAiLGF3YWl0IGFwaS5kYi51cGRhdGUoIm1ldHJpY3MiLG1ldHJpYyl9LHVwZGF0ZVRyYWRlc0hpc3Rvcnk9YXN5bmModHlwZSxidXllcixzZWxsZXIsc3ltYm9sLHF1YW50aXR5LHByaWNlLHZvbHVtZSxidXlUeElkLHNlbGxUeElkKT0+e2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLHRpbWVzdGFtcFNlYz1ibG9ja0RhdGUuZ2V0VGltZSgpLzFlMyx0aW1lc3RhbXBNaW51czI0aHJzPWJsb2NrRGF0ZS5zZXRVVENEYXRlKGJsb2NrRGF0ZS5nZXRVVENEYXRlKCktMSkvMWUzO2xldCB0cmFkZXNUb0RlbGV0ZT1hd2FpdCBhcGkuZGIuZmluZCgidHJhZGVzSGlzdG9yeSIse3N5bWJvbDpzeW1ib2wsdGltZXN0YW1wOnskbHQ6dGltZXN0YW1wTWludXMyNGhyc319KSxuYlRyYWRlc1RvRGVsZXRlPXRyYWRlc1RvRGVsZXRlLmxlbmd0aDtmb3IoO25iVHJhZGVzVG9EZWxldGU+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlRyYWRlc1RvRGVsZXRlO2luZGV4Kz0xKXtjb25zdCB0cmFkZT10cmFkZXNUb0RlbGV0ZVtpbmRleF07YXdhaXQgdXBkYXRlVm9sdW1lTWV0cmljKHRyYWRlLnN5bWJvbCx0cmFkZS52b2x1bWUsITEpLGF3YWl0IGFwaS5kYi5yZW1vdmUoInRyYWRlc0hpc3RvcnkiLHRyYWRlKX10cmFkZXNUb0RlbGV0ZT1hd2FpdCBhcGkuZGIuZmluZCgidHJhZGVzSGlzdG9yeSIse3N5bWJvbDpzeW1ib2wsdGltZXN0YW1wOnskbHQ6dGltZXN0YW1wTWludXMyNGhyc319KSxuYlRyYWRlc1RvRGVsZXRlPXRyYWRlc1RvRGVsZXRlLmxlbmd0aH1jb25zdCBuZXdUcmFkZT17fTtuZXdUcmFkZS50eXBlPXR5cGUsbmV3VHJhZGUuYnV5ZXI9YnV5ZXIsbmV3VHJhZGUuc2VsbGVyPXNlbGxlcixuZXdUcmFkZS5zeW1ib2w9c3ltYm9sLG5ld1RyYWRlLnF1YW50aXR5PXF1YW50aXR5LG5ld1RyYWRlLnByaWNlPXByaWNlLG5ld1RyYWRlLnRpbWVzdGFtcD10aW1lc3RhbXBTZWMsbmV3VHJhZGUudm9sdW1lPXZvbHVtZSxuZXdUcmFkZS5idXlUeElkPWJ1eVR4SWQsbmV3VHJhZGUuc2VsbFR4SWQ9c2VsbFR4SWQsYXdhaXQgYXBpLmRiLmluc2VydCgidHJhZGVzSGlzdG9yeSIsbmV3VHJhZGUpLGF3YWl0IHVwZGF0ZVByaWNlTWV0cmljcyhzeW1ib2wscHJpY2UpfSxjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpLHJlbW92ZUJhZE9yZGVycz1hc3luYygpPT57bGV0IG5iT3JkZXJzVG9EZWxldGU9MCxuYk9yZGVyc0RlbGV0ZWQ9MCxvcmRlcnNUb0RlbGV0ZT1hd2FpdCBhcGkuZGIuZmluZCgiYnV5Qm9vayIse3Rva2Vuc0xvY2tlZDp7JGluOlsiMC4wMDAwMDAwMCJdfX0sMWUzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihuYk9yZGVyc1RvRGVsZXRlPW9yZGVyc1RvRGVsZXRlLmxlbmd0aDtuYk9yZGVyc1RvRGVsZXRlPjAmJm5iT3JkZXJzRGVsZXRlZDw1ZTM7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJPcmRlcnNUb0RlbGV0ZTtpbmRleCs9MSl7bmJPcmRlcnNEZWxldGVkKz0xO2NvbnN0IG9yZGVyPW9yZGVyc1RvRGVsZXRlW2luZGV4XTthd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixvcmRlciksYXdhaXQgdXBkYXRlQmlkTWV0cmljKG9yZGVyLnN5bWJvbCl9b3JkZXJzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHt0b2tlbnNMb2NrZWQ6eyRpbjpbIjAuMDAwMDAwMDAiXX19LDFlMywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSxuYk9yZGVyc1RvRGVsZXRlPW9yZGVyc1RvRGVsZXRlLmxlbmd0aH19LHJlbW92ZUJsYWNrbGlzdGVkT3JkZXJzPWFzeW5jKHR5cGUsdGFyZ2V0QWNjb3VudCk9Pntjb25zdCB0YWJsZT0iYnV5Ij09PXR5cGU/ImJ1eUJvb2siOiJzZWxsQm9vayI7bGV0IG5iT3JkZXJzVG9EZWxldGU9MCxuYk9yZGVyc0RlbGV0ZWQ9MCxvcmRlcnNUb0RlbGV0ZT1hd2FpdCBhcGkuZGIuZmluZCh0YWJsZSx7YWNjb3VudDp0YXJnZXRBY2NvdW50fSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKG5iT3JkZXJzVG9EZWxldGU9b3JkZXJzVG9EZWxldGUubGVuZ3RoO25iT3JkZXJzVG9EZWxldGU+MCYmbmJPcmRlcnNEZWxldGVkPDVlMzspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYk9yZGVyc1RvRGVsZXRlO2luZGV4Kz0xKXtuYk9yZGVyc0RlbGV0ZWQrPTE7Y29uc3Qgb3JkZXI9b3JkZXJzVG9EZWxldGVbaW5kZXhdO2F3YWl0IGFwaS5kYi5yZW1vdmUodGFibGUsb3JkZXIpLCJzZWxsIj09PXR5cGU/YXdhaXQgdXBkYXRlQXNrTWV0cmljKG9yZGVyLnN5bWJvbCk6YXdhaXQgdXBkYXRlQmlkTWV0cmljKG9yZGVyLnN5bWJvbCl9b3JkZXJzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQodGFibGUse2FjY291bnQ6dGFyZ2V0QWNjb3VudH0sMWUzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pLG5iT3JkZXJzVG9EZWxldGU9b3JkZXJzVG9EZWxldGUubGVuZ3RofX0scmVtb3ZlRXhwaXJlZE9yZGVycz1hc3luYyB0YWJsZT0+e2NvbnN0IHRpbWVzdGFtcFNlYz1hcGkuQmlnTnVtYmVyKG5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpKS5kaXZpZGVkQnkoMWUzKS50b051bWJlcigpO2xldCBuYk9yZGVyc1RvRGVsZXRlPTAsb3JkZXJzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQodGFibGUse2V4cGlyYXRpb246eyRsdGU6dGltZXN0YW1wU2VjfX0pO2ZvcihuYk9yZGVyc1RvRGVsZXRlPW9yZGVyc1RvRGVsZXRlLmxlbmd0aDtuYk9yZGVyc1RvRGVsZXRlPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJPcmRlcnNUb0RlbGV0ZTtpbmRleCs9MSl7Y29uc3Qgb3JkZXI9b3JkZXJzVG9EZWxldGVbaW5kZXhdO2xldCBxdWFudGl0eSxzeW1ib2w7ImJ1eUJvb2siPT09dGFibGU/KHN5bWJvbD0iU1dBUC5ISVZFIixxdWFudGl0eT1vcmRlci50b2tlbnNMb2NrZWQpOihzeW1ib2w9b3JkZXIuc3ltYm9sLHF1YW50aXR5PW9yZGVyLnF1YW50aXR5KSxhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMob3JkZXIuYWNjb3VudCxzeW1ib2wscXVhbnRpdHksInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKHRhYmxlLG9yZGVyKSwiYnV5Qm9vayI9PT10YWJsZT8oYXBpLmVtaXQoIm9yZGVyRXhwaXJlZCIse3R5cGU6ImJ1eSIsdHhJZDpvcmRlci50eElkfSksYXdhaXQgdXBkYXRlQXNrTWV0cmljKG9yZGVyLnN5bWJvbCkpOihhcGkuZW1pdCgib3JkZXJFeHBpcmVkIix7dHlwZToic2VsbCIsdHhJZDpvcmRlci50eElkfSksYXdhaXQgdXBkYXRlQmlkTWV0cmljKG9yZGVyLnN5bWJvbCkpfW9yZGVyc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKHRhYmxlLHtleHBpcmF0aW9uOnskbHRlOnRpbWVzdGFtcFNlY319KSxuYk9yZGVyc1RvRGVsZXRlPW9yZGVyc1RvRGVsZXRlLmxlbmd0aH19O2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PnshMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygiYnV5Qm9vayIpPyhhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImJ1eUJvb2siLFsic3ltYm9sIiwiYWNjb3VudCIsInByaWNlRGVjIiwiZXhwaXJhdGlvbiIsInR4SWQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJzZWxsQm9vayIsWyJzeW1ib2wiLCJhY2NvdW50IiwicHJpY2VEZWMiLCJleHBpcmF0aW9uIiwidHhJZCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInRyYWRlc0hpc3RvcnkiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibWV0cmljcyIsWyJzeW1ib2wiXSkpOihhd2FpdCByZW1vdmVCYWRPcmRlcnMoKSxhd2FpdCByZW1vdmVCbGFja2xpc3RlZE9yZGVycygiYnV5Iiwid2FpdGluZ2ZvcmxvdmUiKSxhd2FpdCByZW1vdmVCbGFja2xpc3RlZE9yZGVycygic2VsbCIsIndhaXRpbmdmb3Jsb3ZlIikpfSxhY3Rpb25zLmNhbmNlbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHR5cGU6dHlwZSxpZDppZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLGZpbmFsQWNjb3VudD12b2lkIDA9PT1hY2NvdW50fHwibnVsbCIhPT1hcGkuc2VuZGVyP2FwaS5zZW5kZXI6YWNjb3VudDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5fHwibnVsbCI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0eXBlJiZbImJ1eSIsInNlbGwiXS5pbmNsdWRlcyh0eXBlKSYmaWQsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRhYmxlPSJidXkiPT09dHlwZT8iYnV5Qm9vayI6InNlbGxCb29rIjtsZXQgb3JkZXI9bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIGlkJiZpZC5sZW5ndGg8NTA/b3JkZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGUse3R4SWQ6aWR9KToibnVtYmVyIj09dHlwZW9mIGlkJiZOdW1iZXIuaXNJbnRlZ2VyKGlkKSYmaWQ+MCYmKG9yZGVyPWF3YWl0IGFwaS5kYi5maW5kT25lKHRhYmxlLHtfaWQ6aWR9KSksYXBpLmFzc2VydChudWxsIT09b3JkZXIsIm9yZGVyIGRvZXMgbm90IGV4aXN0IG9yIGludmFsaWQgcGFyYW1zIikmJm9yZGVyLmFjY291bnQ9PT1maW5hbEFjY291bnQpe2xldCBxdWFudGl0eSxzeW1ib2w7ImJ1eSI9PT10eXBlPyhzeW1ib2w9IlNXQVAuSElWRSIscXVhbnRpdHk9b3JkZXIudG9rZW5zTG9ja2VkKTooc3ltYm9sPW9yZGVyLnN5bWJvbCxxdWFudGl0eT1vcmRlci5xdWFudGl0eSksYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGZpbmFsQWNjb3VudCxzeW1ib2wscXVhbnRpdHksInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKHRhYmxlLG9yZGVyKSwic2VsbCI9PT10eXBlP2F3YWl0IHVwZGF0ZUFza01ldHJpYyhvcmRlci5zeW1ib2wpOmF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhvcmRlci5zeW1ib2wpfX19O2NvbnN0IGZpbmRNYXRjaGluZ1NlbGxPcmRlcnM9YXN5bmMob3JkZXIsdG9rZW5QcmVjaXNpb24pPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscHJpY2VEZWM6cHJpY2VEZWN9PW9yZGVyLGJ1eU9yZGVyPW9yZGVyO2xldCBvZmZzZXQ9MCx2b2x1bWVUcmFkZWQ9MDthd2FpdCByZW1vdmVFeHBpcmVkT3JkZXJzKCJzZWxsQm9vayIpO2xldCBzZWxsT3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJzZWxsQm9vayIse3N5bWJvbDpzeW1ib2wscHJpY2VEZWM6eyRsdGU6cHJpY2VEZWN9fSwxZTMsb2Zmc2V0LFt7aW5kZXg6InByaWNlRGVjIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtkb3tjb25zdCBuYk9yZGVycz1zZWxsT3JkZXJCb29rLmxlbmd0aDtsZXQgaW5jPTA7Zm9yKDtpbmM8bmJPcmRlcnMmJmFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucXVhbnRpdHkpLmd0KDApOyl7Y29uc3Qgc2VsbE9yZGVyPXNlbGxPcmRlckJvb2tbaW5jXTtpZihhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5sdGUoc2VsbE9yZGVyLnF1YW50aXR5KSl7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgpO2lmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndChidXlPcmRlci50b2tlbnNMb2NrZWQpJiYocXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoYnV5T3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkuZ3QoMCksInRoZSBvcmRlciBjYW5ub3QgYmUgZmlsbGVkIikpe2xldCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQsc3ltYm9sLGJ1eU9yZGVyLnF1YW50aXR5LCJ1c2VyIik7cmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYnV5T3JkZXIudHhJZCksYXBpLmRlYnVnKGFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhidXlPcmRlci5xdWFudGl0eSkpLHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsIlNXQVAuSElWRSIscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYnV5T3JkZXIudHhJZCksYXBpLmRlYnVnKHNlbGxPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKTtjb25zdCBxdHlMZWZ0U2VsbE9yZGVyPWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnF1YW50aXR5KS5taW51cyhidXlPcmRlci5xdWFudGl0eSkudG9GaXhlZCh0b2tlblByZWNpc2lvbiksbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHF0eUxlZnRTZWxsT3JkZXIpLnRvRml4ZWQoOCk7YXBpLkJpZ051bWJlcihxdHlMZWZ0U2VsbE9yZGVyKS5ndCgwKSYmYXBpLkJpZ051bWJlcihuYlRva2Vuc1RvRmlsbE9yZGVyKS5ndGUoIjAuMDAwMDAwMDEiKT8oc2VsbE9yZGVyLnF1YW50aXR5PXF0eUxlZnRTZWxsT3JkZXIsYXdhaXQgYXBpLmRiLnVwZGF0ZSgic2VsbEJvb2siLHNlbGxPcmRlcikpOihhcGkuQmlnTnVtYmVyKHF0eUxlZnRTZWxsT3JkZXIpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsc3ltYm9sLHF0eUxlZnRTZWxsT3JkZXIsInVzZXIiKSxhcGkuZW1pdCgib3JkZXJDbG9zZWQiLHthY2NvdW50OnNlbGxPcmRlci5hY2NvdW50LHR5cGU6InNlbGwiLHR4SWQ6c2VsbE9yZGVyLnR4SWR9KSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSk7Y29uc3QgdG9rZW5zVG9VbmxvY2s9YXBpLkJpZ051bWJlcihidXlPcmRlci50b2tlbnNMb2NrZWQpLm1pbnVzKHF0eVRva2Vuc1RvU2VuZCkudG9GaXhlZCg4KTthcGkuQmlnTnVtYmVyKHRva2Vuc1RvVW5sb2NrKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQsIlNXQVAuSElWRSIsdG9rZW5zVG9VbmxvY2ssInVzZXIiKSxhd2FpdCB1cGRhdGVUcmFkZXNIaXN0b3J5KCJidXkiLGFjY291bnQsc2VsbE9yZGVyLmFjY291bnQsc3ltYm9sLGJ1eU9yZGVyLnF1YW50aXR5LHNlbGxPcmRlci5wcmljZSxxdHlUb2tlbnNUb1NlbmQsYnV5T3JkZXIudHhJZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eVRva2Vuc1RvU2VuZCksYnV5T3JkZXIucXVhbnRpdHk9IjAiLGF3YWl0IGFwaS5kYi5yZW1vdmUoImJ1eUJvb2siLGJ1eU9yZGVyKSxhcGkuZW1pdCgib3JkZXJDbG9zZWQiLHthY2NvdW50OmJ1eU9yZGVyLmFjY291bnQsdHlwZToiYnV5Iix0eElkOmJ1eU9yZGVyLnR4SWR9KX19ZWxzZXtsZXQgcXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgpO2lmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndChidXlPcmRlci50b2tlbnNMb2NrZWQpJiYocXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucXVhbnRpdHkpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIitidXlPcmRlci50eElkKSxhcGkuZGVidWcoYWNjb3VudCksYXBpLmRlYnVnKHN5bWJvbCksYXBpLmRlYnVnKHNlbGxPcmRlci5xdWFudGl0eSkpLHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsIlNXQVAuSElWRSIscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYnV5T3JkZXIudHhJZCksYXBpLmRlYnVnKHNlbGxPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSxhcGkuZW1pdCgib3JkZXJDbG9zZWQiLHthY2NvdW50OnNlbGxPcmRlci5hY2NvdW50LHR5cGU6InNlbGwiLHR4SWQ6c2VsbE9yZGVyLnR4SWR9KSxidXlPcmRlci50b2tlbnNMb2NrZWQ9YXBpLkJpZ051bWJlcihidXlPcmRlci50b2tlbnNMb2NrZWQpLm1pbnVzKHF0eVRva2Vuc1RvU2VuZCkudG9GaXhlZCg4KSxidXlPcmRlci5xdWFudGl0eT1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5taW51cyhzZWxsT3JkZXIucXVhbnRpdHkpLnRvRml4ZWQodG9rZW5QcmVjaXNpb24pO2NvbnN0IG5iVG9rZW5zVG9GaWxsT3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgpO2FwaS5CaWdOdW1iZXIobmJUb2tlbnNUb0ZpbGxPcmRlcikubHQoIjAuMDAwMDAwMDEiKSYmKGF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LCJTV0FQLkhJVkUiLGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCwidXNlciIpLGJ1eU9yZGVyLnF1YW50aXR5PSIwIixhd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixidXlPcmRlciksYXBpLmVtaXQoIm9yZGVyQ2xvc2VkIix7YWNjb3VudDpidXlPcmRlci5hY2NvdW50LHR5cGU6ImJ1eSIsdHhJZDpidXlPcmRlci50eElkfSkpLGF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoImJ1eSIsYWNjb3VudCxzZWxsT3JkZXIuYWNjb3VudCxzeW1ib2wsc2VsbE9yZGVyLnF1YW50aXR5LHNlbGxPcmRlci5wcmljZSxxdHlUb2tlbnNUb1NlbmQsYnV5T3JkZXIudHhJZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eVRva2Vuc1RvU2VuZCl9fWluYys9MX1vZmZzZXQrPTFlMyxhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKSYmKHNlbGxPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoInNlbGxCb29rIix7c3ltYm9sOnN5bWJvbCxwcmljZURlYzp7JGx0ZTpwcmljZURlY319LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pKX13aGlsZShzZWxsT3JkZXJCb29rLmxlbmd0aD4wJiZhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKSk7YXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkuZ3QoMCkmJmF3YWl0IGFwaS5kYi51cGRhdGUoImJ1eUJvb2siLGJ1eU9yZGVyKSxhcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkuZ3QoMCkmJmF3YWl0IHVwZGF0ZVZvbHVtZU1ldHJpYyhzeW1ib2wsdm9sdW1lVHJhZGVkKSxhd2FpdCB1cGRhdGVBc2tNZXRyaWMoc3ltYm9sKSxhd2FpdCB1cGRhdGVCaWRNZXRyaWMoc3ltYm9sKX0sZmluZE1hdGNoaW5nQnV5T3JkZXJzPWFzeW5jKG9yZGVyLHRva2VuUHJlY2lzaW9uKT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHByaWNlRGVjOnByaWNlRGVjfT1vcmRlcixzZWxsT3JkZXI9b3JkZXI7bGV0IG9mZnNldD0wLHZvbHVtZVRyYWRlZD0wO2F3YWl0IHJlbW92ZUV4cGlyZWRPcmRlcnMoImJ1eUJvb2siKTtsZXQgYnV5T3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJidXlCb29rIix7c3ltYm9sOnN5bWJvbCxwcmljZURlYzp7JGd0ZTpwcmljZURlY319LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITB9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Rve2NvbnN0IG5iT3JkZXJzPWJ1eU9yZGVyQm9vay5sZW5ndGg7bGV0IGluYz0wO2Zvcig7aW5jPG5iT3JkZXJzJiZhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCk7KXtjb25zdCBidXlPcmRlcj1idXlPcmRlckJvb2tbaW5jXTtpZihhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkubHRlKGJ1eU9yZGVyLnF1YW50aXR5KSl7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgpO2lmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndChidXlPcmRlci50b2tlbnNMb2NrZWQpJiYocXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShzZWxsT3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIitzZWxsT3JkZXIudHhJZCksYXBpLmRlYnVnKGJ1eU9yZGVyLmFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhzZWxsT3JkZXIucXVhbnRpdHkpKSxyZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQsIlNXQVAuSElWRSIscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrc2VsbE9yZGVyLnR4SWQpLGFwaS5kZWJ1ZyhhY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKTtjb25zdCBxdHlMZWZ0QnV5T3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkubWludXMoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKHRva2VuUHJlY2lzaW9uKSxidXlPcmRlcnRva2Vuc0xvY2tlZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKDgpLG5iVG9rZW5zVG9GaWxsT3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHF0eUxlZnRCdXlPcmRlcikudG9GaXhlZCg4KTthcGkuQmlnTnVtYmVyKHF0eUxlZnRCdXlPcmRlcikuZ3QoMCkmJmFwaS5CaWdOdW1iZXIobmJUb2tlbnNUb0ZpbGxPcmRlcikuZ3RlKCIwLjAwMDAwMDAxIik/KGJ1eU9yZGVyLnF1YW50aXR5PXF0eUxlZnRCdXlPcmRlcixidXlPcmRlci50b2tlbnNMb2NrZWQ9YnV5T3JkZXJ0b2tlbnNMb2NrZWQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYnV5Qm9vayIsYnV5T3JkZXIpKTooYXBpLkJpZ051bWJlcihidXlPcmRlcnRva2Vuc0xvY2tlZCkuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LCJTV0FQLkhJVkUiLGJ1eU9yZGVydG9rZW5zTG9ja2VkLCJ1c2VyIiksYXBpLmVtaXQoIm9yZGVyQ2xvc2VkIix7YWNjb3VudDpidXlPcmRlci5hY2NvdW50LHR5cGU6ImJ1eSIsdHhJZDpidXlPcmRlci50eElkfSksYXdhaXQgYXBpLmRiLnJlbW92ZSgiYnV5Qm9vayIsYnV5T3JkZXIpKSxhd2FpdCB1cGRhdGVUcmFkZXNIaXN0b3J5KCJzZWxsIixidXlPcmRlci5hY2NvdW50LGFjY291bnQsc3ltYm9sLHNlbGxPcmRlci5xdWFudGl0eSxidXlPcmRlci5wcmljZSxxdHlUb2tlbnNUb1NlbmQsYnV5T3JkZXIudHhJZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eVRva2Vuc1RvU2VuZCksc2VsbE9yZGVyLnF1YW50aXR5PTAsYXdhaXQgYXBpLmRiLnJlbW92ZSgic2VsbEJvb2siLHNlbGxPcmRlciksYXBpLmVtaXQoIm9yZGVyQ2xvc2VkIix7YWNjb3VudDpzZWxsT3JkZXIuYWNjb3VudCx0eXBlOiJzZWxsIix0eElkOnNlbGxPcmRlci50eElkfSl9fWVsc2V7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoYnV5T3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCk7aWYocXR5VG9rZW5zVG9TZW5kPmJ1eU9yZGVyLnRva2Vuc0xvY2tlZCYmKHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoYnV5T3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSwidXNlciIpO3Jlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKCJUWElEOiAiK3NlbGxPcmRlci50eElkKSxhcGkuZGVidWcoYnV5T3JkZXIuYWNjb3VudCksYXBpLmRlYnVnKHN5bWJvbCksYXBpLmRlYnVnKGJ1eU9yZGVyLnF1YW50aXR5KSkscmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LCJTV0FQLkhJVkUiLHF0eVRva2Vuc1RvU2VuZCwidXNlciIpLHJlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKCJUWElEOiAiK3NlbGxPcmRlci50eElkKSxhcGkuZGVidWcoYWNjb3VudCksYXBpLmRlYnVnKCJTV0FQLkhJVkUiKSxhcGkuZGVidWcocXR5VG9rZW5zVG9TZW5kKSk7Y29uc3QgYnV5T3JkZXJ0b2tlbnNMb2NrZWQ9YXBpLkJpZ051bWJlcihidXlPcmRlci50b2tlbnNMb2NrZWQpLm1pbnVzKHF0eVRva2Vuc1RvU2VuZCkudG9GaXhlZCg4KTthcGkuQmlnTnVtYmVyKGJ1eU9yZGVydG9rZW5zTG9ja2VkKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGJ1eU9yZGVyLmFjY291bnQsIlNXQVAuSElWRSIsYnV5T3JkZXJ0b2tlbnNMb2NrZWQsInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixidXlPcmRlciksYXBpLmVtaXQoIm9yZGVyQ2xvc2VkIix7YWNjb3VudDpidXlPcmRlci5hY2NvdW50LHR5cGU6ImJ1eSIsdHhJZDpidXlPcmRlci50eElkfSksc2VsbE9yZGVyLnF1YW50aXR5PWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnF1YW50aXR5KS5taW51cyhidXlPcmRlci5xdWFudGl0eSkudG9GaXhlZCh0b2tlblByZWNpc2lvbik7Y29uc3QgbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHNlbGxPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4KTthcGkuQmlnTnVtYmVyKG5iVG9rZW5zVG9GaWxsT3JkZXIpLmx0KCIwLjAwMDAwMDAxIikmJihhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYWNjb3VudCxzeW1ib2wsc2VsbE9yZGVyLnF1YW50aXR5LCJ1c2VyIiksc2VsbE9yZGVyLnF1YW50aXR5PSIwIixhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSxhcGkuZW1pdCgib3JkZXJDbG9zZWQiLHthY2NvdW50OnNlbGxPcmRlci5hY2NvdW50LHR5cGU6InNlbGwiLHR4SWQ6c2VsbE9yZGVyLnR4SWR9KSksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgic2VsbCIsYnV5T3JkZXIuYWNjb3VudCxhY2NvdW50LHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSxidXlPcmRlci5wcmljZSxxdHlUb2tlbnNUb1NlbmQsYnV5T3JkZXIudHhJZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eVRva2Vuc1RvU2VuZCl9fWluYys9MX1vZmZzZXQrPTFlMyxhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCkmJihidXlPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHtzeW1ib2w6c3ltYm9sLHByaWNlRGVjOnskZ3RlOnByaWNlRGVjfX0sMWUzLG9mZnNldCxbe2luZGV4OiJwcmljZURlYyIsZGVzY2VuZGluZzohMH0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSkpfXdoaWxlKGJ1eU9yZGVyQm9vay5sZW5ndGg+MCYmYXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLmd0KDApKTthcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCkmJmF3YWl0IGFwaS5kYi51cGRhdGUoInNlbGxCb29rIixzZWxsT3JkZXIpLGFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5ndCgwKSYmYXdhaXQgdXBkYXRlVm9sdW1lTWV0cmljKHN5bWJvbCx2b2x1bWVUcmFkZWQpLGF3YWl0IHVwZGF0ZUFza01ldHJpYyhzeW1ib2wpLGF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhzeW1ib2wpfTthY3Rpb25zLmJ1eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHR4SWQ6dHhJZCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHByaWNlOnByaWNlLGV4cGlyYXRpb246ZXhwaXJhdGlvbixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLGZpbmFsQWNjb3VudD12b2lkIDA9PT1hY2NvdW50fHwibnVsbCIhPT1hcGkuc2VuZGVyP2FwaS5zZW5kZXI6YWNjb3VudCxmaW5hbFR4SWQ9dm9pZCAwPT09dHhJZHx8Im51bGwiIT09YXBpLnNlbmRlcj9hcGkudHJhbnNhY3Rpb25JZDp0eElkO2lmKDEhPT1BQ0NPVU5UX0JMQUNLTElTVFtmaW5hbEFjY291bnRdJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5fHwibnVsbCI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChwcmljZSYmInN0cmluZyI9PXR5cGVvZiBwcmljZSYmIWFwaS5CaWdOdW1iZXIocHJpY2UpLmlzTmFOKCkmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJiJTV0FQLkhJVkUiIT09c3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCkmJmZpbmFsVHhJZCYmInN0cmluZyI9PXR5cGVvZiBmaW5hbFR4SWQmJmZpbmFsVHhJZC5sZW5ndGg+MCYmKHZvaWQgMD09PWV4cGlyYXRpb258fGV4cGlyYXRpb24mJk51bWJlci5pc0ludGVnZXIoZXhwaXJhdGlvbikmJmV4cGlyYXRpb24+MCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4mJmFwaS5CaWdOdW1iZXIocHJpY2UpLmd0KDApJiZjb3VudERlY2ltYWxzKHByaWNlKTw9OCYmY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmJUb2tlbnNUb0xvY2s9YXBpLkJpZ051bWJlcihwcmljZSkubXVsdGlwbGllZEJ5KHF1YW50aXR5KS50b0ZpeGVkKDgpO2lmKGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuYlRva2Vuc1RvTG9jaykuZ3RlKCIwLjAwMDAwMDAxIiksIm9yZGVyIGNhbm5vdCBiZSBwbGFjZWQgYXMgaXQgY2Fubm90IGJlIGZpbGxlZCIpKXtjb25zdCByZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtmcm9tOmZpbmFsQWNjb3VudCxzeW1ib2w6IlNXQVAuSElWRSIscXVhbnRpdHk6bmJUb2tlbnNUb0xvY2ssdG86Im1hcmtldCJ9KTtpZih2b2lkIDA9PT1yZXMuZXJyb3JzJiZyZXMuZXZlbnRzJiZ2b2lkIDAhPT1yZXMuZXZlbnRzLmZpbmQoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJiJ0cmFuc2ZlclRvQ29udHJhY3QiPT09ZWwuZXZlbnQmJmVsLmRhdGEuZnJvbT09PWZpbmFsQWNjb3VudCYmIm1hcmtldCI9PT1lbC5kYXRhLnRvJiZlbC5kYXRhLnF1YW50aXR5PT09bmJUb2tlbnNUb0xvY2smJiJTV0FQLkhJVkUiPT09ZWwuZGF0YS5zeW1ib2wpKXtjb25zdCB0aW1lc3RhbXBTZWM9YXBpLkJpZ051bWJlcihuZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSkuZGl2aWRlZEJ5KDFlMykudG9OdW1iZXIoKSxvcmRlcj17fTtvcmRlci50eElkPWZpbmFsVHhJZCxvcmRlci50aW1lc3RhbXA9dGltZXN0YW1wU2VjLG9yZGVyLmFjY291bnQ9ZmluYWxBY2NvdW50LG9yZGVyLnN5bWJvbD1zeW1ib2wsb3JkZXIucXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLG9yZGVyLnByaWNlPWFwaS5CaWdOdW1iZXIocHJpY2UpLnRvRml4ZWQoOCksb3JkZXIucHJpY2VEZWM9eyRudW1iZXJEZWNpbWFsOm9yZGVyLnByaWNlfSxvcmRlci50b2tlbnNMb2NrZWQ9bmJUb2tlbnNUb0xvY2ssb3JkZXIuZXhwaXJhdGlvbj12b2lkIDA9PT1leHBpcmF0aW9ufHxleHBpcmF0aW9uPjI1OTJlMz90aW1lc3RhbXBTZWMrMjU5MmUzOnRpbWVzdGFtcFNlYytleHBpcmF0aW9uO2NvbnN0IG9yZGVySW5EYj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJidXlCb29rIixvcmRlcik7YXdhaXQgZmluZE1hdGNoaW5nU2VsbE9yZGVycyhvcmRlckluRGIsdG9rZW4ucHJlY2lzaW9uKX19fX19LGFjdGlvbnMuc2VsbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHR4SWQ6dHhJZCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHByaWNlOnByaWNlLGV4cGlyYXRpb246ZXhwaXJhdGlvbixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLGZpbmFsQWNjb3VudD12b2lkIDA9PT1hY2NvdW50fHwibnVsbCIhPT1hcGkuc2VuZGVyP2FwaS5zZW5kZXI6YWNjb3VudCxmaW5hbFR4SWQ9dm9pZCAwPT09dHhJZHx8Im51bGwiIT09YXBpLnNlbmRlcj9hcGkudHJhbnNhY3Rpb25JZDp0eElkO2lmKDEhPT1BQ0NPVU5UX0JMQUNLTElTVFtmaW5hbEFjY291bnRdJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5fHwibnVsbCI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChwcmljZSYmInN0cmluZyI9PXR5cGVvZiBwcmljZSYmIWFwaS5CaWdOdW1iZXIocHJpY2UpLmlzTmFOKCkmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJiJTV0FQLkhJVkUiIT09c3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCkmJmZpbmFsVHhJZCYmInN0cmluZyI9PXR5cGVvZiBmaW5hbFR4SWQmJmZpbmFsVHhJZC5sZW5ndGg+MCYmKHZvaWQgMD09PWV4cGlyYXRpb258fGV4cGlyYXRpb24mJk51bWJlci5pc0ludGVnZXIoZXhwaXJhdGlvbikmJmV4cGlyYXRpb24+MCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4mJmFwaS5CaWdOdW1iZXIocHJpY2UpLmd0KDApJiZjb3VudERlY2ltYWxzKHByaWNlKTw9OCYmY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHByaWNlKS5tdWx0aXBsaWVkQnkocXVhbnRpdHkpLnRvRml4ZWQoOCk7aWYoYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG5iVG9rZW5zVG9GaWxsT3JkZXIpLmd0ZSgiMC4wMDAwMDAwMSIpLCJvcmRlciBjYW5ub3QgYmUgcGxhY2VkIGFzIGl0IGNhbm5vdCBiZSBmaWxsZWQiKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXJUb0NvbnRyYWN0Iix7ZnJvbTpmaW5hbEFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0bzoibWFya2V0In0pO2lmKHZvaWQgMD09PXJlcy5lcnJvcnMmJnJlcy5ldmVudHMmJnZvaWQgMCE9PXJlcy5ldmVudHMuZmluZChlbD0+InRva2VucyI9PT1lbC5jb250cmFjdCYmInRyYW5zZmVyVG9Db250cmFjdCI9PT1lbC5ldmVudCYmZWwuZGF0YS5mcm9tPT09ZmluYWxBY2NvdW50JiYibWFya2V0Ij09PWVsLmRhdGEudG8mJmVsLmRhdGEucXVhbnRpdHk9PT1xdWFudGl0eSYmZWwuZGF0YS5zeW1ib2w9PT1zeW1ib2wpKXtjb25zdCB0aW1lc3RhbXBTZWM9YXBpLkJpZ051bWJlcihuZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSkuZGl2aWRlZEJ5KDFlMykudG9OdW1iZXIoKSxvcmRlcj17fTtvcmRlci50eElkPWZpbmFsVHhJZCxvcmRlci50aW1lc3RhbXA9dGltZXN0YW1wU2VjLG9yZGVyLmFjY291bnQ9ZmluYWxBY2NvdW50LG9yZGVyLnN5bWJvbD1zeW1ib2wsb3JkZXIucXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLG9yZGVyLnByaWNlPWFwaS5CaWdOdW1iZXIocHJpY2UpLnRvRml4ZWQoOCksb3JkZXIucHJpY2VEZWM9eyRudW1iZXJEZWNpbWFsOm9yZGVyLnByaWNlfSxvcmRlci5leHBpcmF0aW9uPXZvaWQgMD09PWV4cGlyYXRpb258fGV4cGlyYXRpb24+MjU5MmUzP3RpbWVzdGFtcFNlYysyNTkyZTM6dGltZXN0YW1wU2VjK2V4cGlyYXRpb247Y29uc3Qgb3JkZXJJbkRiPWF3YWl0IGFwaS5kYi5pbnNlcnQoInNlbGxCb29rIixvcmRlcik7YXdhaXQgZmluZE1hdGNoaW5nQnV5T3JkZXJzKG9yZGVySW5EYix0b2tlbi5wcmVjaXNpb24pfX19fX0sYWN0aW9ucy5tYXJrZXRCdXk9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsZmluYWxBY2NvdW50PXZvaWQgMD09PWFjY291bnR8fCJudWxsIiE9PWFwaS5zZW5kZXI/YXBpLnNlbmRlcjphY2NvdW50O2lmKDEhPT1BQ0NPVU5UX0JMQUNLTElTVFtmaW5hbEFjY291bnRdJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5fHwibnVsbCI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCkpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4mJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD04LCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCByZXN1bHQ9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtmcm9tOmZpbmFsQWNjb3VudCxzeW1ib2w6IlNXQVAuSElWRSIscXVhbnRpdHk6cXVhbnRpdHksdG86Im1hcmtldCJ9KTtpZih2b2lkIDA9PT1yZXN1bHQuZXJyb3JzJiZyZXN1bHQuZXZlbnRzJiZ2b2lkIDAhPT1yZXN1bHQuZXZlbnRzLmZpbmQoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJiJ0cmFuc2ZlclRvQ29udHJhY3QiPT09ZWwuZXZlbnQmJmVsLmRhdGEuZnJvbT09PWZpbmFsQWNjb3VudCYmIm1hcmtldCI9PT1lbC5kYXRhLnRvJiZlbC5kYXRhLnF1YW50aXR5PT09cXVhbnRpdHkmJiJTV0FQLkhJVkUiPT09ZWwuZGF0YS5zeW1ib2wpKXtsZXQgaGl2ZVJlbWFpbmluZz1xdWFudGl0eSxvZmZzZXQ9MCx2b2x1bWVUcmFkZWQ9MDthd2FpdCByZW1vdmVFeHBpcmVkT3JkZXJzKCJzZWxsQm9vayIpO2xldCBzZWxsT3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJzZWxsQm9vayIse3N5bWJvbDpzeW1ib2x9LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Rve2NvbnN0IG5iT3JkZXJzPXNlbGxPcmRlckJvb2subGVuZ3RoO2xldCBpbmM9MDtmb3IoO2luYzxuYk9yZGVycyYmYXBpLkJpZ051bWJlcihoaXZlUmVtYWluaW5nKS5ndCgwKTspe2NvbnN0IHNlbGxPcmRlcj1zZWxsT3JkZXJCb29rW2luY10scXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoaGl2ZVJlbWFpbmluZykuZGl2aWRlZEJ5KHNlbGxPcmRlci5wcmljZSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTtpZihhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkubHRlKHNlbGxPcmRlci5xdWFudGl0eSkmJmFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSl7aWYoYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIoaGl2ZVJlbWFpbmluZykuZ3QoMCksInRoZSBvcmRlciBjYW5ub3QgYmUgZmlsbGVkIikpe2xldCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGZpbmFsQWNjb3VudCxzeW1ib2wscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIik7cmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhmaW5hbEFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKSxyZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKHNlbGxPcmRlci5hY2NvdW50LCJTV0FQLkhJVkUiLGhpdmVSZW1haW5pbmcsInVzZXIiKSxyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKHNlbGxPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhoaXZlUmVtYWluaW5nKSk7Y29uc3QgcXR5TGVmdFNlbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHF0eUxlZnRTZWxsT3JkZXIpLnRvRml4ZWQoOCk7YXBpLkJpZ051bWJlcihxdHlMZWZ0U2VsbE9yZGVyKS5ndCgwKSYmYXBpLkJpZ051bWJlcihuYlRva2Vuc1RvRmlsbE9yZGVyKS5ndGUoIjAuMDAwMDAwMDEiKT8oc2VsbE9yZGVyLnF1YW50aXR5PXF0eUxlZnRTZWxsT3JkZXIsYXdhaXQgYXBpLmRiLnVwZGF0ZSgic2VsbEJvb2siLHNlbGxPcmRlcikpOihhcGkuQmlnTnVtYmVyKHF0eUxlZnRTZWxsT3JkZXIpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsc3ltYm9sLHF0eUxlZnRTZWxsT3JkZXIsInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgiYnV5IixmaW5hbEFjY291bnQsc2VsbE9yZGVyLmFjY291bnQsc3ltYm9sLHF0eVRva2Vuc1RvU2VuZCxzZWxsT3JkZXIucHJpY2UsaGl2ZVJlbWFpbmluZyxhcGkudHJhbnNhY3Rpb25JZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKGhpdmVSZW1haW5pbmcpLGhpdmVSZW1haW5pbmc9IjAifX1lbHNlIGlmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSl7bGV0IHF0eUhpdmVUb1NlbmQ9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShzZWxsT3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCk7aWYoYXBpLkJpZ051bWJlcihxdHlIaXZlVG9TZW5kKS5ndChoaXZlUmVtYWluaW5nKSYmKHF0eUhpdmVUb1NlbmQ9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShzZWxsT3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5SGl2ZVRvU2VuZCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIoaGl2ZVJlbWFpbmluZykuZ3QoMCksInRoZSBvcmRlciBjYW5ub3QgYmUgZmlsbGVkIikpe2xldCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGZpbmFsQWNjb3VudCxzeW1ib2wsc2VsbE9yZGVyLnF1YW50aXR5LCJ1c2VyIik7cmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhmaW5hbEFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhzZWxsT3JkZXIucXVhbnRpdHkpKSxyZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKHNlbGxPcmRlci5hY2NvdW50LCJTV0FQLkhJVkUiLHF0eUhpdmVUb1NlbmQsInVzZXIiKSxyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKHNlbGxPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhxdHlIaXZlVG9TZW5kKSksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2VsbEJvb2siLHNlbGxPcmRlciksaGl2ZVJlbWFpbmluZz1hcGkuQmlnTnVtYmVyKGhpdmVSZW1haW5pbmcpLm1pbnVzKHF0eUhpdmVUb1NlbmQpLnRvRml4ZWQoOCksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgiYnV5IixmaW5hbEFjY291bnQsc2VsbE9yZGVyLmFjY291bnQsc3ltYm9sLHNlbGxPcmRlci5xdWFudGl0eSxzZWxsT3JkZXIucHJpY2UscXR5SGl2ZVRvU2VuZCxhcGkudHJhbnNhY3Rpb25JZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eUhpdmVUb1NlbmQpfX1pbmMrPTF9b2Zmc2V0Kz0xZTMsYXBpLkJpZ051bWJlcihoaXZlUmVtYWluaW5nKS5ndCgwKSYmKHNlbGxPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoInNlbGxCb29rIix7c3ltYm9sOnN5bWJvbH0sMWUzLG9mZnNldCxbe2luZGV4OiJwcmljZURlYyIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSkpfXdoaWxlKHNlbGxPcmRlckJvb2subGVuZ3RoPjAmJmFwaS5CaWdOdW1iZXIoaGl2ZVJlbWFpbmluZykuZ3QoMCkpO2FwaS5CaWdOdW1iZXIoaGl2ZVJlbWFpbmluZykuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhmaW5hbEFjY291bnQsIlNXQVAuSElWRSIsaGl2ZVJlbWFpbmluZywidXNlciIpLGFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5ndCgwKSYmYXdhaXQgdXBkYXRlVm9sdW1lTWV0cmljKHN5bWJvbCx2b2x1bWVUcmFkZWQpLGF3YWl0IHVwZGF0ZUFza01ldHJpYyhzeW1ib2wpLGF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhzeW1ib2wpfX19fSxhY3Rpb25zLm1hcmtldFNlbGw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsZmluYWxBY2NvdW50PXZvaWQgMD09PWFjY291bnR8fCJudWxsIiE9PWFwaS5zZW5kZXI/YXBpLnNlbmRlcjphY2NvdW50O2lmKDEhPT1BQ0NPVU5UX0JMQUNLTElTVFtmaW5hbEFjY291bnRdJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5fHwibnVsbCI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNXQVAuSElWRSIhPT1zeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCkpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4mJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHJlc3VsdD1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyVG9Db250cmFjdCIse2Zyb206ZmluYWxBY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86Im1hcmtldCJ9KTtpZih2b2lkIDA9PT1yZXN1bHQuZXJyb3JzJiZyZXN1bHQuZXZlbnRzJiZ2b2lkIDAhPT1yZXN1bHQuZXZlbnRzLmZpbmQoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJiJ0cmFuc2ZlclRvQ29udHJhY3QiPT09ZWwuZXZlbnQmJmVsLmRhdGEuZnJvbT09PWZpbmFsQWNjb3VudCYmIm1hcmtldCI9PT1lbC5kYXRhLnRvJiZlbC5kYXRhLnF1YW50aXR5PT09cXVhbnRpdHkmJmVsLmRhdGEuc3ltYm9sPT09c3ltYm9sKSl7bGV0IHRva2Vuc1JlbWFpbmluZz1xdWFudGl0eSxvZmZzZXQ9MCx2b2x1bWVUcmFkZWQ9MDthd2FpdCByZW1vdmVFeHBpcmVkT3JkZXJzKCJidXlCb29rIik7bGV0IGJ1eU9yZGVyQm9vaz1hd2FpdCBhcGkuZGIuZmluZCgiYnV5Qm9vayIse3N5bWJvbDpzeW1ib2x9LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITB9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Rve2NvbnN0IG5iT3JkZXJzPWJ1eU9yZGVyQm9vay5sZW5ndGg7bGV0IGluYz0wO2Zvcig7aW5jPG5iT3JkZXJzJiZhcGkuQmlnTnVtYmVyKHRva2Vuc1JlbWFpbmluZykuZ3QoMCk7KXtjb25zdCBidXlPcmRlcj1idXlPcmRlckJvb2tbaW5jXTtpZihhcGkuQmlnTnVtYmVyKHRva2Vuc1JlbWFpbmluZykubHRlKGJ1eU9yZGVyLnF1YW50aXR5KSl7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkodG9rZW5zUmVtYWluaW5nKS50b0ZpeGVkKDgpO2lmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndChidXlPcmRlci50b2tlbnNMb2NrZWQpJiYocXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeSh0b2tlbnNSZW1haW5pbmcpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LHN5bWJvbCx0b2tlbnNSZW1haW5pbmcsInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKGJ1eU9yZGVyLmFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1Zyh0b2tlbnNSZW1haW5pbmcpKSxyZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGZpbmFsQWNjb3VudCwiU1dBUC5ISVZFIixxdHlUb2tlbnNUb1NlbmQsInVzZXIiKSxyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKGZpbmFsQWNjb3VudCksYXBpLmRlYnVnKCJTV0FQLkhJVkUiKSxhcGkuZGVidWcocXR5VG9rZW5zVG9TZW5kKSk7Y29uc3QgcXR5TGVmdEJ1eU9yZGVyPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucXVhbnRpdHkpLm1pbnVzKHRva2Vuc1JlbWFpbmluZykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLGJ1eU9yZGVydG9rZW5zTG9ja2VkPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIudG9rZW5zTG9ja2VkKS5taW51cyhxdHlUb2tlbnNUb1NlbmQpLnRvRml4ZWQoOCksbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkocXR5TGVmdEJ1eU9yZGVyKS50b0ZpeGVkKDgpO2FwaS5CaWdOdW1iZXIocXR5TGVmdEJ1eU9yZGVyKS5ndCgwKSYmYXBpLkJpZ051bWJlcihuYlRva2Vuc1RvRmlsbE9yZGVyKS5ndGUoIjAuMDAwMDAwMDEiKT8oYnV5T3JkZXIucXVhbnRpdHk9cXR5TGVmdEJ1eU9yZGVyLGJ1eU9yZGVyLnRva2Vuc0xvY2tlZD1idXlPcmRlcnRva2Vuc0xvY2tlZCxhd2FpdCBhcGkuZGIudXBkYXRlKCJidXlCb29rIixidXlPcmRlcikpOihhcGkuQmlnTnVtYmVyKGJ1eU9yZGVydG9rZW5zTG9ja2VkKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGJ1eU9yZGVyLmFjY291bnQsIlNXQVAuSElWRSIsYnV5T3JkZXJ0b2tlbnNMb2NrZWQsInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixidXlPcmRlcikpLGF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoInNlbGwiLGJ1eU9yZGVyLmFjY291bnQsZmluYWxBY2NvdW50LHN5bWJvbCx0b2tlbnNSZW1haW5pbmcsYnV5T3JkZXIucHJpY2UscXR5VG9rZW5zVG9TZW5kLGJ1eU9yZGVyLnR4SWQsYXBpLnRyYW5zYWN0aW9uSWQpLHZvbHVtZVRyYWRlZD1hcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkucGx1cyhxdHlUb2tlbnNUb1NlbmQpLHRva2Vuc1JlbWFpbmluZz0wfX1lbHNle2xldCBxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgpO2lmKHF0eVRva2Vuc1RvU2VuZD5idXlPcmRlci50b2tlbnNMb2NrZWQmJihxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIodG9rZW5zUmVtYWluaW5nKS5ndCgwKSwidGhlIG9yZGVyIGNhbm5vdCBiZSBmaWxsZWQiKSl7bGV0IHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYnV5T3JkZXIuYWNjb3VudCxzeW1ib2wsYnV5T3JkZXIucXVhbnRpdHksInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKGJ1eU9yZGVyLmFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhidXlPcmRlci5xdWFudGl0eSkpLHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoZmluYWxBY2NvdW50LCJTV0FQLkhJVkUiLHF0eVRva2Vuc1RvU2VuZCwidXNlciIpLHJlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKCJUWElEOiAiK2FwaS50cmFuc2FjdGlvbklkKSxhcGkuZGVidWcoZmluYWxBY2NvdW50KSxhcGkuZGVidWcoIlNXQVAuSElWRSIpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKTtjb25zdCBidXlPcmRlcnRva2Vuc0xvY2tlZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKDgpO2FwaS5CaWdOdW1iZXIoYnV5T3JkZXJ0b2tlbnNMb2NrZWQpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYnV5T3JkZXIuYWNjb3VudCwiU1dBUC5ISVZFIixidXlPcmRlcnRva2Vuc0xvY2tlZCwidXNlciIpLGF3YWl0IGFwaS5kYi5yZW1vdmUoImJ1eUJvb2siLGJ1eU9yZGVyKSx0b2tlbnNSZW1haW5pbmc9YXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLm1pbnVzKGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgic2VsbCIsYnV5T3JkZXIuYWNjb3VudCxmaW5hbEFjY291bnQsc3ltYm9sLGJ1eU9yZGVyLnF1YW50aXR5LGJ1eU9yZGVyLnByaWNlLHF0eVRva2Vuc1RvU2VuZCxidXlPcmRlci50eElkLGFwaS50cmFuc2FjdGlvbklkKSx2b2x1bWVUcmFkZWQ9YXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLnBsdXMocXR5VG9rZW5zVG9TZW5kKX19aW5jKz0xfW9mZnNldCs9MWUzLGFwaS5CaWdOdW1iZXIodG9rZW5zUmVtYWluaW5nKS5ndCgwKSYmKGJ1eU9yZGVyQm9vaz1hd2FpdCBhcGkuZGIuZmluZCgiYnV5Qm9vayIse3N5bWJvbDpzeW1ib2x9LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITB9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pKX13aGlsZShidXlPcmRlckJvb2subGVuZ3RoPjAmJmFwaS5CaWdOdW1iZXIodG9rZW5zUmVtYWluaW5nKS5ndCgwKSk7YXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoZmluYWxBY2NvdW50LHN5bWJvbCx0b2tlbnNSZW1haW5pbmcsInVzZXIiKSxhcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkuZ3QoMCkmJmF3YWl0IHVwZGF0ZVZvbHVtZU1ldHJpYyhzeW1ib2wsdm9sdW1lVHJhZGVkKSxhd2FpdCB1cGRhdGVBc2tNZXRyaWMoc3ltYm9sKSxhd2FpdCB1cGRhdGVCaWRNZXRyaWMoc3ltYm9sKX19fX07"}}}